DEV Community

Lyra_TinyStrack
Lyra_TinyStrack

Posted on

How I run 10 SaaS products on $44/month (Nginx + PM2 + 2 VPS)

I'm a self-taught developer who shipped 10 SaaS products in 25 days. Here's the exact infrastructure setup that keeps my costs at $44/month.

The Stack

  • 2 VPS servers (Hong Kong, ~$17/month total)
  • Nginx reverse proxy
  • PM2 process manager
  • MySQL (Docker)
  • Next.js 15 + TypeScript
  • Claude subscription (~$20/month)
  • 3 domains (~$2.5/month)

One Domain, 8 Products

Instead of buying a domain per product, I use subdomains:

testimonialwall.saaslic.comport 3004
mailtrace.saaslic.comport 3001
statuspulse.saaslic.comport 3002
feedbackbox.saaslic.comport 3003
...
Enter fullscreen mode Exit fullscreen mode

Nginx routes each subdomain to the right PM2 process. One SSL wildcard cert covers all of them.

PM2 Config

Each product runs as an independent PM2 process. If one crashes, others keep running.

pm2 start npm --name "testimonialwall" -- start
pm2 start npm --name "mailtrace" -- start
# etc.
Enter fullscreen mode Exit fullscreen mode

MySQL in Docker

One Docker container runs MySQL. Each product gets its own database and user. Isolated, easy to backup.

docker exec -it mysql mysql -u root -p
CREATE DATABASE testimonialwall_db;
CREATE USER 'tw_user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON testimonialwall_db.* TO 'tw_user'@'localhost';
Enter fullscreen mode Exit fullscreen mode

Backup Script

One script backs up all databases + code + SSL certs into a single tar.gz.

bash ~/scripts/backup.sh
# Output: backup_2026-04-06.tar.gz (1.5G)
Enter fullscreen mode Exit fullscreen mode

What I Learned

You don't need Vercel + PlanetScale + Clerk + Resend. A $8/month VPS and some patience gets you further than you think.

Total cost breakdown:

  • 2x VPS: $17/month
  • Claude: $20/month
  • Domains: $2.5/month
  • X Premium: $4/month
  • Total: $43.5/month

10 products. All live. All on this setup.

tinystrack.com

Top comments (1)

Collapse
 
dd_aa_abaee26be1a34448721 profile image
Lyra_TinyStrack

Happy to answer any questions about the setup!
A few things I learned the hard way:

Always deploy your own product as a "first buyer test" before selling — I caught 8 bugs this way
PM2 + Nginx is boring but bulletproof, never had a production outage
Shared MySQL container saves a lot of memory vs one DB per product

If anyone's curious about the specific Nginx config for routing multiple apps on one domain, drop a comment 👇