An open-source, white-labeled media app that lets anyone sell digital content with Bitcoin Lightning payments. Fork it, brand it, deploy it. SatsRail handles the payment rail — you own everything else.
One codebase. Infinite deployments. Each instance is a standalone platform with its own brand, domain, categories, and content library.
Clone the repo, run Docker, and you have a content platform. Setup wizard gets you live in minutes. No infrastructure expertise needed.
Your name, your colors, your domain. Every deployment is fully branded. SatsRail branding never appears on your platform.
Customers pay over Lightning. Funds go directly to the creator's wallet. No intermediary ever touches the money.
End-to-end encrypted. Non-custodial. Instant.
Creator uploads content. The media URL is encrypted with AES-256-GCM using a product-specific key from SatsRail.
Customer clicks buy, scans a Lightning QR code, and pays. Sats go directly to the creator's wallet in seconds.
SatsRail confirms payment and returns the decryption key plus a signed macaroon for persistent access.
The browser decrypts the content URL client-side using Web Crypto API. The plain URL never touches the server.
Built-in admin dashboard, encryption, customer accounts, and more.
Video, audio, articles, photo sets, podcasts. Host on your CDN (Bunny.net, Vimeo, YouTube unlisted) — the app encrypts the access URL, not the file.
Each creator gets a branded channel page with bio, social links, and theme. Managed by you or fully independent with their own SatsRail keys.
Media URLs encrypted at rest. Decryption keys only released after confirmed Lightning payment. Keys rotate per-product with automatic re-encryption.
Every purchase returns a signed macaroon — a ticket that proves payment and grants re-access without re-paying. Configurable expiry (30 days, 90 days, lifetime).
Manage channels, media, categories, team members, and instance settings. Role-based access for owners and managers.
Pseudonymous signup — nickname and password, no email required. Favorites, purchase history, payment-gated comments, and content flagging.
No exotic frameworks. No vendor lock-in. Standard tools, clean architecture, strict TypeScript throughout.
Deploy in 3 commands
Setup wizard launches at localhost:3000
Start managed. Graduate to independent. Or go direct from day one.
You run the channel. The creator provides content and you handle uploads, pricing, and tech. Payments flow through your SatsRail account.
Creator gets their own SatsRail API keys. Payments go directly to their wallet. Full dashboard access to manage their own channel.
The media app is content-agnostic. What you sell is your business.
Premium video content, courses, behind-the-scenes footage. Host on Bunny.net or Vimeo, sell through your platform.
Sell albums, exclusive tracks, live recordings. Direct to fans with instant payouts — no label, no distributor.
Gate tutorials, courses, and guides behind Lightning payments. No institutional platform taking a cut of your revenue.
Sell investigative pieces, reports, and exclusive newsletters. Micropayments make per-article pricing viable.
Exclusive episodes, early access, ad-free feeds. Listeners pay per episode or per series — you set the terms.
Sell photo sets, exclusive galleries, and high-resolution downloads. Payment unlocks the content — no DRM headaches.
Content URLs are never exposed in API responses. Encrypted blobs are delivered to the browser on page load. The decryption key is only released after confirmed Lightning payment.
Military-grade encryption
Signed access tickets
Auto re-encryption
Browser-side decryption
Docker, Vercel, or bare metal. Your infrastructure, your choice.
One command. Includes MongoDB, auto-generated secrets, and setup wizard. Production-ready with docker-compose.
docker compose up -d
One-click deploy with MongoDB Atlas. Native Next.js runtime, edge functions, auto-scaling. Zero server management.
Connect MongoDB Atlas + deployNode.js + MongoDB on your own hardware. Full control over infrastructure, backups, and scaling.
npm run build && npm start
The media app consumes SatsRail's merchant API for product management, checkout sessions, encryption key delivery, and payment verification. You get a SatsRail API key, the app handles the rest.
| Endpoint | Purpose |
|---|---|
POST /products |
Create product with auto-generated encryption key |
GET /products/:id/key |
Fetch encryption key for media URL |
POST /checkout/sessions |
Initiate Lightning payment checkout |
POST /access/verify |
Verify macaroon, return decryption key |
POST /rotate_key |
Rotate product key (triggers webhook) |
Open source. Non-custodial. Encrypted. White-labeled. Deploy in minutes.
MIT License • Next.js 15 • Docker ready • SatsRail API powered