Self-hosted first · One VPS, zero metered clouds

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.

Free

For trying things out

$0/month

Free forever

  • 1 project
  • 1 team member
  • Community support
Start for free
Most popular

Pro

For serious products

$19/month

or $190/year — save $38

  • Unlimited projects
  • 10 team members
  • Priority support
Get Pro

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.
Alex Rivera
Indie hacker
Example
The org and billing wiring alone saved us weeks. Everything is in our Postgres, which made compliance conversations trivial.
Priya Sharma
CTO, early-stage startup
Example
Predictable costs finally let me price my product sanely. My infra bill is the same in month twelve as it was in month one.
Jonas Weber
Solo founder
Example

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.