Personal art vault for Freeze Dry inscriptions. Index, store, and serve your on-chain artwork from your own server.
git clone https://github.com/freezedry-protocol/freezedry-gallery
cd freezedry-gallery
npm install
node setup.js # interactive setup — enter your wallet, done
npm startOpen http://localhost:3000 — your gallery is live.
- Scans Solana for artworks inscribed by your wallet
- Fetches blobs from the Freeze Dry CDN (or reconstructs from chain)
- Stores everything locally in SQLite
- Serves a gallery UI on your own domain
- Short URLs for sharing individual pieces
Your gallery discovers inscriptions through two paths:
- Registry API — fast lookup from
freezedry.art(convenience) - On-chain Job PDAs — reads Solana directly (always works, even if freezedry.art is down)
Blobs are fetched from:
- CDN —
cdn.freezedry.art(fast, public, no auth) - Chain reconstruct — reads memo transactions directly from Solana (guaranteed, always works)
No gossip protocol. No identity keys. No wallet or SOL needed. Just HTTP and RPC reads.
Copy .env.example to .env:
WALLETS=YourWalletAddress,OptionalSecondWallet
GALLERY_NAME=My Gallery
PORT=3000
HELIUS_API_KEY=your-key-here # optional, free at helius.devCreate aliases for easy sharing:
# Create alias
curl -X POST http://localhost:3000/api/alias \
-H 'Content-Type: application/json' \
-d '{"slug": "sunset", "hash": "sha256:abc..."}'
# Share: yourdomain.com/a/sunset| Endpoint | Purpose |
|---|---|
GET / |
Gallery grid |
GET /art.html?hash=... |
Single artwork detail |
GET /a/:slug |
Short URL → artwork |
GET /blob/:hash |
Raw blob download |
GET /api/artworks |
JSON artwork list |
GET /api/config |
Gallery config |
POST /api/scan |
Trigger manual rescan |
POST /api/alias |
Create short URL |
Any VPS works. $5/mo is plenty.
# Install Node.js 18+
# Clone repo, npm install, configure .env
# Run with PM2 or systemd:
pm2 start src/index.js --name gallery
# or
systemctl enable freezedry-galleryPoint your domain with nginx reverse proxy:
server {
server_name art.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:3000;
}
}You don't need a powerful server — the gallery uses ~50MB of RAM. Pick whatever fits your budget:
| Provider | Cost | Notes |
|---|---|---|
| Oracle Cloud | Free forever | 1 GB RAM, 1 CPU — more than enough. Always Free tier |
| DigitalOcean | $4/mo | Basic droplet. Simple UI, good docs |
| Hetzner | $4/mo | Great value in EU/US |
| Vultr | $3.50/mo | Cheapest paid option |
| Railway / Render | Free tier | No SSH needed, deploy from GitHub |
| Home server | $0 | Raspberry Pi, old laptop, anything with Node.js |
No wallet, no private keys, no SOL needed. Just a public wallet address and a server.
| Other costs | |
|---|---|
| Helius API key | $0 (free tier, optional) |
| Domain | $12/yr (optional — works fine on IP) |
Your art is on Solana. This gallery is just a viewer. If you stop running it, your art is still on-chain and reconstructable by anyone with an RPC endpoint. Start a new gallery, re-scan, and everything comes back.
MIT