Own your stack.
Skip the usage bills.
Mission Control is the self-hosted SaaS boilerplate. Auth, orgs, Stripe billing, emails, file storage, background jobs and realtime — all running on a server you control, for a flat monthly bill you can predict.
Deploy with Docker Compose on any VPS. No vendor lock-in.
The modern stack has a rent problem
Every “generous free tier” becomes a line item the month you get traction. There is another way.
The usage-bill treadmill
- Five managed services, five dashboards, five invoices
- Per-seat, per-row, per-request pricing that scales against you
- Your users' data lives in someone else's cloud
The self-hosted way
- One Docker Compose file on a VPS you control
- A flat server bill that stays flat as you grow
- Postgres, storage and email under your own domain
Everything a SaaS needs, nothing rented
The features you would otherwise stitch together from six paid services — integrated, typed and running on your box.
Auth & orgs
Magic links, Google sign-in and multi-tenant organizations with roles and invitations — powered by Better Auth on your own Postgres.
Stripe billing
Subscriptions wired to organizations out of the box: plans, trials, upgrades and webhooks. Define plans in one config file.
Emails
Transactional email through Resend or any SMTP server. Falls back to console logging in development, so it works on day one.
File storage
Presigned uploads to any S3-compatible store — self-hosted Garage on your VPS, or R2 and S3 when you want them.
Background jobs
Queues, retries and scheduled work running next to your app — no per-invocation pricing, no external job service.
Realtime
Live updates pushed to the browser from your own infrastructure. No connection-hour meters, no third-party websocket bill.
Simple, predictable pricing
Start free, upgrade when you are ready. No per-seat surprises, no usage meters.
Pro
For serious products
or $190/year — save $38
- Unlimited projects
- 10 team members
- Priority support
Built for founders who own their stack
Example quotes below — replace them with your own customers’ words.
“I replaced four SaaS subscriptions with one $8 VPS. Setup to production took a weekend.”
“The org and billing wiring alone saved us weeks. Everything is in our Postgres, which made compliance conversations trivial.”
“Predictable costs finally let me price my product sanely. My infra bill is the same in month twelve as it was in month one.”
Frequently asked questions
Everything you might want to know about Mission Control.
What do I need to deploy this?
A VPS (any provider — Hetzner, DigitalOcean, OVH…) with Docker installed. The included Docker Compose setup runs the app, Postgres and supporting services behind Caddy with automatic HTTPS. A $5–10/month box is plenty to start.
How is this different from managed backends like Supabase?
Managed backends charge you per user, per row or per request, and hold your data in their cloud. Here everything — auth, database, storage, jobs, realtime — runs on infrastructure you own. Your only recurring cost is the server.
Can I still use managed services if I want to?
Yes. Every integration is pluggable: swap the S3-compatible storage for R2 or S3, use Resend instead of SMTP, point DATABASE_URL at a managed Postgres. Self-hosted is the default, not a requirement.
What is included in the codebase?
Next.js App Router with TypeScript, Better Auth with organizations and magic links, Stripe subscriptions, Drizzle ORM with Postgres, transactional email, S3-compatible file uploads, background jobs, realtime updates and an admin panel — all configured from a single config file.
Do I need Stripe to use the free plan?
No. The app runs fully without Stripe keys — billing features simply stay dormant until you add them. Configure Stripe only when you are ready to charge.
Is my payment going to renew automatically?
Paid plans are standard monthly or yearly subscriptions handled by Stripe. You can cancel anytime from the billing page and keep access until the end of the paid period.
Ship your SaaS this weekend
Clone Mission Control, point it at a VPS, and launch with auth, billing and everything else already wired up.