How to Run a $15K/mo Automation Agency on a $5 Server
The exact infrastructure stack, monitoring, and pricing structure Mokoro uses — and why self-hosted open-source automation beats Zapier/Make for serious operators.
The math is not a trick. A Hetzner CX21 costs roughly €4.35/month (~$5 USD). It comfortably runs 10–100 automations per day. At ten retainer clients averaging $1,500/month, that is $15,000 MRR on a $5 infrastructure bill — a 99.7% infrastructure margin.
You don’t need Kubernetes. You don’t need AWS. You don’t need a team.
| Component | Tool | Cost |
|---|---|---|
| Automation engine | n8n Community (self-hosted) | $0 |
| Server | Hetzner CX21 (2 vCPU / 4 GB RAM) | ~$5/mo |
| Database | PostgreSQL | $0 |
| Deployment | Docker Compose or Coolify | $0 |
| SSL | Let’s Encrypt | $0 |
| Monitoring | UptimeRobot free tier | $0 |
| Error tracking | Sentry free tier | $0 |
| CRM | HubSpot Free | $0 |
| Scheduling | Cal.com (open source) | $0 |
| Resend free tier | $0 | |
| Invoicing | Wave or PayPal Invoicing | $0 |
| Frontend | Next.js on Vercel/Cloudflare Pages | $0 |
1. No SSL. Always terminate SSL with Caddy or Nginx. Browsers and webhooks will silently fail against plain HTTP.
2. No backups. Schedule a daily PostgreSQL dump to an external location (Backblaze B2 free tier works). Test the restore at least once a month.
3. No monitoring. UptimeRobot hits your webhook URL every 5 minutes for free. Pair with n8n execution error triggers that Slack-alert you on the first failure, not the 50th.
4. Running as root. Use a non-root user. Put Docker behind a firewall (ufw). Rotate your SSH keys.
A $1,500/month retainer sounds expensive until the client realises they’re paying for insurance:
- You’re monitoring their workflows
- When an API changes, you fix it before they notice
- You’re adding optimisations weekly
- Their team never has to learn the tool
Most clients who fire their agency do so in month 3–4 when the first break happens and nobody is watching. The retainer prevents that exact moment.
Self-host n8n. Point your Docker Compose at the Hetzner box. Deploy your first workflow (the contact-form-to-Slack-to-auto-reply flow). Then you can honestly say “the confirmation email you just received? That was built on the same engine I’ll build for you.”
That demo sells more retainers than any proposal you’ll ever write.
If this was useful, tell us on WhatsApp. Or ship your first automation.