n8n cloud bills are fine until you scroll back through your statements and realize you’ve spent $600 a year to run a handful of workflows. That’s around the moment I started looking at self-hosting. The math is wild once you actually run it.
Cloud vs self-host: the real tradeoff
n8n cloud is great for getting started. You sign up, you build, you don’t think about servers. n8n’s team handles updates and uptime. Pricing starts at $20 a month and scales by active workflows and execution count.
Self-hosting is where the savings compound. A Hostinger VPS runs around $8 a month for a setup that comfortably handles dozens of workflows and tens of thousands of executions. The catch is you handle the setup, the updates, and the occasional 3 AM restart. Worth it for me. Not worth it for everyone.
How I run mine
I’m on a Hostinger KVM 2 (8 GB RAM, 2 vCPUs) and it handles about a dozen active workflows plus a bunch of scheduled triggers without breaking a sweat. Setup took me a couple of hours, mostly the parts where I was trying to figure out how to point a domain at the right port.
The Hostinger affiliate link in the calculator is mine, so heads up. Using it doesn’t cost you anything extra and it sends a small commission my way. I’ve been on Hostinger for over a year and would recommend it whether I was earning on it or not.
When n8n cloud actually wins
If your time is worth more than the setup hours, cloud wins. If you’re going to be at sub-100 executions a month forever, cloud wins because Hostinger’s bill is still $5+ even if you’re idle. If you don’t want to debug a server at midnight, cloud wins.
The break-even on self-hosting is real but not instant. The calculator factors your hourly rate into the setup cost. At $50/hour and four setup hours, you’re trading $200 of time for ongoing savings. That pays back in two to four months for most users.
What the calculator doesn’t show you
Self-hosting comes with hidden upsides the cost comparison misses. Unlimited workflows, no execution caps, full control over your data, and the option to run beta or community-only nodes. The downsides are equally hidden. You’re now a sysadmin. You’ll learn what an SSH key is whether you wanted to or not.
FAQ
Is self-hosting hard?
Less than I thought it would be. Hostinger has a one-click n8n template now. You spin up a VPS, click the template, set a strong admin password, and you’re running. Pointing a custom domain at it takes one DNS record and a Caddy config (or Hostinger’s built-in proxy if you go that route).
What if I’m not sure how many executions I run?
Check your n8n cloud dashboard if you’re already there. Otherwise estimate. Each scheduled trigger fires once per schedule. Each webhook fires once per call. Each manual execution is one. Most solo builders sit between 1,000 and 20,000 executions a month.
Does self-hosted n8n have any feature limits?
The reverse, actually. Self-hosted gets community nodes, custom code execution, and a few features the cloud version doesn’t have by default. Cloud has multi-user accounts and a more polished onboarding flow.
What happens if my server goes down?
Your workflows stop running until it’s back up. Most Hostinger VPSes have 99.9% uptime, which works out to about 8 hours of downtime per year. Plan for it if you have mission-critical workflows. For most side-hustle automations, it’s a non-issue.
Run your own numbers
Plug in your real workflow count and execution volume above. The calculator picks the right tier on both sides and shows you the gap. If self-host saves you more than $200 a year, the setup time is worth it.
More workflow walkthroughs and blueprints are on the way. Drop your email if you want them, and in the meantime, build something fun.
More tools I’ve built
If this one’s useful, the rest of the toolbelt might be too:
- Automation ROI Calculator — Before you spend money on n8n, run the ROI on whether the workflow you have in mind is worth building at all.
- Cron Expression Builder — For scheduled workflows. Build the cron in plain English.
- Webhook Tester — Get a free webhook URL and inspect every request that hits it.
