All posts

How to Run a $15K/mo Automation Agency on a $5 Server

Playbook3 September 20269 min readFarouk Pandor

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.

How to Run a $15K/mo Automation Agency on a $5 Server

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.

The stack that actually works

You don’t need Kubernetes. You don’t need AWS. You don’t need a team.

ComponentToolCost
Automation enginen8n Community (self-hosted)$0
ServerHetzner CX21 (2 vCPU / 4 GB RAM)~$5/mo
DatabasePostgreSQL$0
DeploymentDocker Compose or Coolify$0
SSLLet’s Encrypt$0
MonitoringUptimeRobot free tier$0
Error trackingSentry free tier$0
CRMHubSpot Free$0
SchedulingCal.com (open source)$0
EmailResend free tier$0
InvoicingWave or PayPal Invoicing$0
FrontendNext.js on Vercel/Cloudflare Pages$0
The four things that kill self-hosted instances (and how to avoid them)

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.

The pricing math that makes retainers stick

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.

The one thing you must do this week

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.