iToverDose/Software· 27 MAY 2026 · 12:05

Self-hosted n8n cuts workflow costs by 80% on a $6 VPS

After migrating from Zapier to a €9.20/month self-hosted setup, one developer saved over €350 in a year while gaining full control over automation workflows and data.

DEV Community5 min read0 Comments

A year ago, I moved four critical workflows off Zapier and onto a single Hetzner VPS—cutting costs by over 80% while gaining full control over automation and data. The setup ran four production workflows continuously, with only one minor outage that taught hard lessons about self-hosting best practices.

A lean, stable self-hosted stack

The infrastructure relies on a €4.51/month Hetzner CX22 VPS running Docker with four core services:

  • n8n for workflow automation (latest stable version)
  • PostgreSQL 15 for data persistence
  • Caddy as a reverse proxy with automatic TLS
  • UFW firewall allowing only ports 22, 80, and 443

Backups are handled via borgbackup to a €3.81/month Hetzner Storage Box. The entire stack costs just €9.20 per month—less than one Zapier seat would cost for similar workflow volume.

The Caddy reverse proxy proved essential. While n8n’s built-in HTTP server works for local testing, production webhooks require TLS. Caddy automatically handles ACME certificate provisioning, HTTP-to-HTTPS redirection, and per-domain certificates with minimal configuration—a six-line Caddyfile that requires no further maintenance.

Four real workflows running smoothly

The system handles four distinct automation tasks with varying frequencies:

  • Telegram bot dispatcher: Routes 40 events daily (with spikes up to 200) from a webhook to either a PostgreSQL write or downstream API calls.
  • RSS aggregator to Telegram: Polls 12 feeds every 15 minutes, deduplicates posts using URL hashes in PostgreSQL, and forwards new items to a private channel (~30 posts/day).
  • Form submission to CRM-lite: Receives webhooks from WordPress sites, logs submissions to PostgreSQL, sends confirmation emails, and syncs updates to a Discord channel.
  • Daily reporting cron: Pulls metrics from three internal APIs at 6:00 AM daily, compiles a markdown digest, emails it, and posts it to Slack.

None of these workflows require millisecond latency. Their value lies in consistency and the ability to modify them instantly without navigating vendor restrictions or tier upgrades.

Cost comparison: €9.20 vs. $30-50/month

Over 12 months, the self-hosted setup cost €112 total:

| Item | Monthly | Annual | |------|---------|--------| | Hetzner CX22 VPS | €4.51 | €54.12 | | Hetzner Storage Box (backup) | €3.81 | €45.72 | | Domain registration (.dev) | — | €12.00 | | Total | €9.20 | ~€112 |

Equivalent Zapier costs for similar workflow volume would range from €30 to €50 monthly. This represents a savings of €350 to €500 over a year—not life-changing, but meaningful for solo developers and small teams. The real advantage, however, comes from ownership and control.

The one outage and lessons learned

The only major incident occurred in month four during an n8n major version upgrade. The container started, but every workflow displayed “credentials missing” errors and refused to execute. Root cause analysis revealed that upgrading without pinning the image or testing changes led to a breaking change in credential storage.

Restoring from borg backups took a Saturday afternoon. From this, three key changes were implemented:

  • Pinned n8n to a specific minor version (n8nio/n8n:1.45.x) to avoid unexpected breaking changes.
  • Created a staging environment on a €3/month Hetzner CX21 VPS to test upgrades before applying them to production.
  • Subscribed to the n8n releases RSS feed to receive early warnings about breaking changes.

While a SaaS would have handled the upgrade automatically, this approach shifts control—and responsibility—to the user. Choose your trade-offs carefully.

Why ownership beats savings every time

The €350 annual savings are secondary to the true value: workflows are defined in git-tracked YAML files that belong to you, running on infrastructure you control.

  • Changes are tracked via git commits using n8n’s export feature.
  • Debugging involves running SQL queries in PostgreSQL or inspecting logs directly.
  • Webhook endpoints are updated by editing a Caddyfile and reloading—no support tickets, no rate limits, no “upgrade required” prompts.

On Zapier, the same change process is opaque. Some modifications are free, others require a plan upgrade, and the constraints aren’t always clear until after clicking. With self-hosted n8n, the question shifts from “Can I do this?” to “Is it technically possible?”—and the answer is almost always yes.

Smart upgrades for better reliability

If starting today, I’d make these adjustments:

  • Pin the Docker image immediately. Avoiding “missing shiny feature” for a week is cheaper than an unscheduled weekend restoring from backup.
  • Use managed PostgreSQL instead of the Docker container. Hetzner offers managed PostgreSQL for €11/month with automatic backups, eliminating risks like “container restart ate the WAL.”
  • Offload webhook authentication to Caddy or a gateway. n8n’s built-in auth works for n8n endpoints but creates coupling. A separate gateway is more reusable.
  • Write a runbook before the first outage. Document recovery steps like “How do I restore from borg?” and “Where are the environment files?”—five minutes now saves an hour later.
  • Limit workflows per instance to ten. Memory usage scales with concurrent execution. A runaway loop in one workflow can starve others. If exceeding ten, split into separate n8n instances.

When self-hosting n8n isn’t the right move

This setup excels for personal or small-team automations where downtime in hours—not minutes—is acceptable and data ownership is critical. It falls short in these scenarios:

  • High-availability requirements: If a client depends on 99.95% uptime for webhooks, a single VPS is insufficient. Consider n8n Cloud or a multi-node deployment for redundancy.
  • Regulated data handling: For HIPAA, PCI, or strict GDPR compliance, use a vendor with signed DPAs and audit-ready hosting tiers.
  • Team collaboration: Teams larger than three benefit from n8n Cloud’s RBAC features, which are more polished than the self-hosted alternative.
  • Opportunity cost: If your time is worth more than €30/month and your workflows are simple, Zapier or Make.com may offer better value without operational overhead.

Bottom line: Own your automation

Self-hosting n8n on a €6 VPS isn’t about saving money—it’s about reclaiming control. With workflows defined in code, data stored in PostgreSQL, and infrastructure fully owned, you gain the freedom to iterate, debug, and scale without vendor restrictions. The €112 annual cost is a small price for autonomy in a world where automation tools are increasingly locked behind paywalls and usage limits.

As workflow complexity grows, the line between cost savings and operational efficiency blurs. But for those who value ownership, self-hosting remains the clear path forward.

The next time your automation tool blocks a change or hits a rate limit, ask yourself: Do I want to wait for someone else to fix it? If not, start small, back up often, and take control.

AI summary

Run n8n automation on a €6 VPS for €9.20/month, saving over €350 versus Zapier while retaining full control over workflows and data.

Comments

00
LEAVE A COMMENT
ID #26WGB3

0 / 1200 CHARACTERS

Human check

9 + 2 = ?

Will appear after editor review

Moderation · Spam protection active

No approved comments yet. Be first.