Hey everyone,
We recently finished migrating 42 active automation workflows from a combined Zapier + Make setup onto a self-hosted n8n instance. Wanted to share the real-world TCO breakdown, architecture choices, and trade-offs for anyone considering the jump.
### The Financial Breakdown (Monthly):
\** Before (SaaS):*\**
* Zapier Pro Tier: $89.00
* Make.com Pro Tier: $159.00
Total SaaS: $248.00 / mo ($2,976.00/yr)**
\** After (Self-Hosted):*\**
* Hetzner CX22 (2 vCPU, 4GB RAM, NVMe): $6.20
* Automated nightly S3 snapshots + Cloudflare Tunnel: $1.50
Total VPS: $7.70 / mo ($92.40/yr)**
* **Net Capital Saved: $240.30 / mo (96.8% TCO reduction)*\*
### The Infrastructure Stack:
Compute : Single Docker Compose stack running n8n + PostgreSQL on Ubuntu 24.04 LTS.
Ingress & Security : Cloudflare Tunnel (`cloudflared`). Zero open inbound ports on the
firewall. SSL and DDoS protection handled automatically by Cloudflare edge.Backups & DR : Automated nightly cron script that dumps Postgres, encrypts the payload,
and pushes it to Cloudflare R2 / S3. Cold recovery tested at under 2 minutes.
### What Improved:
Latency : Webhook response dropped from ~2,100ms (Zapier queue) to ~160ms on direct NVMe.
No "Polling Tax" : In SaaS, polling every 5 minutes eats your billable task quota even if 0 rows changed. On self-hosted, polling every 30 seconds costs $0 extra.
Data Privacy : Payload bodies and sensitive auth headers stay strictly inside private memory.
### The Main Trade-off:
You own the uptime. If the VPS running Docker runs out of disk space from unpruned execution logs, workflows stall. We solved this by setting `EXECUTIONS_DATA_PRUNE=true` and keeping 7 days of execution history.
We documented the entire 4-step migration guide and built a small interactive calculator here if you want to model your own volume:
Happy to answer any questions about the setup, Docker config, or webhook handling in the comments!
[link] [留言]