Every bootstrapped founder faces the same infrastructure question: platform-as-a-service makes launching easy, but at ten products the bill becomes your second employee — $5–20 per service per month, multiplied across databases, queues, cron jobs, and worker processes. The alternative we've run for years, across dozens of client systems: one well-configured virtual private server, Docker Compose, and a solid reverse proxy. This stack runs an entire product portfolio for the price of a single managed database. This guide is the exact setup we use — the pieces, the price, the security, and the honest ceiling on the approach.
| Layer | Choice | Why | Cost |
|---|---|---|---|
| VPS | Hetzner CX line (or DigitalOcean/Vultr) | 2 vCPU / 4GB handles 10 small products; Hetzner is the price leader | $5–20/mo |
| Reverse proxy / TLS | Caddy | Automatic HTTPS with zero config — one line per site | Free |
| Containers | Docker + Docker Compose | Each product is a service with pinned versions; `docker compose up` is the deploy | Free |
| Database | One shared Postgres (separate DBs per product) | One instance, isolated schemas — cheaper than per-app DBs | Free (on-box) |
| Cache / queues | One shared Redis | Cache, sessions, and simple job queues for all products | Free (on-box) |
| Source & CI | GitHub (private repos) + GitHub Actions | Push to main → build → ship via webhook or SSH | Free |
| Monitoring | UptimeRobot (free tier) + health endpoints; Prometheus optional | Alerts when something's down; status pages for customers | Free |
| Backups | restic or borg to Backblaze B2 / S3 | Differential, encrypted, automated nightly | ~$1–3/mo |
| Brevo / Resend SMTP | Transactional + marketing mail from your domain | Free–$15/mo | |
| Total | $10–45/mo |
One domain, one wildcard: product1.example.com, product2.example.com. Caddy watches your DNS records and issues Let's Encrypt certificates automatically. Each product is a Compose service; Caddy routes by hostname to the right container. Customers never see ports or infrastructure — and you never pay a platform fee per environment. A minimal example that runs two apps and Postgres:
# Caddyfile — automatic HTTPS per subdomain
product1.example.com {
reverse_proxy app1:3000
}
product2.example.com {
reverse_proxy app2:8080
}
# compose.yaml — one command starts everything
services:
caddy:
image: caddy:2
ports: ["80:80", "443:443"]
volumes: ["./Caddyfile:/etc/caddy/Caddyfile",
"caddy_data:/data"]
app1: { build: ./app1, ports: ["3000:3000"] }
app2: { build: ./app2, ports: ["8080:8080"] }
postgres:
image: postgres:16
volumes: ["pgdata:/var/lib/postgresql/data"]
environment: { POSTGRES_PASSWORD: "${PG_PASS}" }
redis:
image: redis:7
Deploy becomes: git push → CI builds → SSH in → docker compose pull && docker compose up -d. If you've ever priced managed Postgres, managed Redis, and per-app hosting, you already know the savings: this stack replaces five to ten separate bills with one server invoice, and everything runs on hardware you control.
"One server, all products" concentrates risk, so the security baseline is not optional:
sudo..env) outside the repo, never committed; rotate credentials when a contractor leaves.This is the perfect setup for: micro-SaaS portfolios (ten small revenue streams), internal tools (no-code MVPs that outgrew their platform), side projects with paying users, and agencies hosting client apps. It's the wrong setup for: single products needing guaranteed isolation or compliance isolation (HIPAA/PCI workloads want their own boxes and audit trails), regional multi-site deployments, or anything where an hour of unplanned downtime is a revenue catastrophe — at that point the managed platforms' reliability is the product you're buying. For managed vs. bare-metal trade-offs, our Hostinger vs. DigitalOcean comparison walks through hosting providers that fit this pattern at different budgets, and the real cost of custom software guide explains what you're really paying for when you buy managed infrastructure.
You don't need a dashboard wall. Four cheap signals cover a solo founder: uptime (UptimeRobot pings a /healthz endpoint per product every minute — alert by email/SMS on failure), disk and memory (a cron check or a free tier of a server monitor), nightly backup success/failure (restic's exit code wired to an email), and error rates (application logs — docker compose logs plus a simple log collector when you outgrow grep). Document the five runbooks you'll actually need — disk full, container crash, certificate renewal, restore-from-backup, DNS move — and you've got 90% of the ops coverage of a platform team, for the cost of one evening writing them down.
The beauty of the stack is that it's the same architecture at every size. A product that outgrows the shared box moves to its own VPS with its own compose file, then to a cluster, without redesign — because it was built as a self-contained service from day one. Ten products become fifty the same way you got to ten: one service, one domain, one compose file at a time, on the same $10–45/month foundation you started with. That's the whole point of a solo founder stack — infrastructure that costs almost nothing, scales by duplication, and never asks you to choose between your tenth idea and your hosting bill.
Novaboro architects and hardens solo-founder infrastructure every week — one VPS running a full product portfolio, with security, backups, and monitoring configured before launch. Fixed price, no monthly retainer, and a handover document you can actually follow.
Get an Infra QuoteNovaboro is a software development and product intelligence firm serving 40+ companies since 2018 — including many bootstrapped founders running exactly this stack. We build, deploy, and support products on infrastructure that doesn't eat the business. 98% client retention; 24/7 operational support.
Prices reflect published provider tiers as of October 2026 and will drift; the architecture pattern is what matters, not the exact cents. Always verify current pricing before choosing a provider.