Hetzner Cloud CX22 (Falkenstein)
├── Docker
│ ├── n8n (latest stable)
│ ├── postgres:15
│ └── caddy (with automatic TLS)
├── UFW (22, 80, 443 only)
└── borgbackup → Hetzner Storage Box (€3.81/mo)
Hetzner Cloud CX22 (Falkenstein)
├── Docker
│ ├── n8n (latest stable)
│ ├── postgres:15
│ └── caddy (with automatic TLS)
├── UFW (22, 80, 443 only)
└── borgbackup → Hetzner Storage Box (€3.81/mo)
Hetzner Cloud CX22 (Falkenstein)
├── Docker
│ ├── n8n (latest stable)
│ ├── postgres:15
│ └── caddy (with automatic TLS)
├── UFW (22, 80, 443 only)
└── borgbackup → Hetzner Storage Box (€3.81/mo) - Telegram bot dispatcher. Inbound webhook → routing logic → either a Postgres write or a downstream service call. About 40 events/day average, occasional 200-event spikes.
- RSS aggregator → Telegram channel. Polls 12 feeds every 15 min, dedupes by URL hash in Postgres, posts new items to a private channel. ~30 posts/day.
- Form submission → CRM-lite. A few WordPress sites hit a webhook on form submit; n8n writes to Postgres, sends an email confirmation, and logs to a Discord channel for me.
- Daily reporting cron. Pulls metrics from three internal APIs at 06:00, builds a markdown digest, emails it, also posts it to Slack. - Pinned n8n image to a specific minor version (n8nio/n8n:1.45.x).
- Added a "staging" branch on a second Hetzner VPS (€3/mo CX21) that gets the upgrade first.
- Subscribed to the n8n releases RSS feed so I see breaking changes before I pull. - Pin the image from day one. Whatever the cost in "missing the new shiny feature for a week" is dwarfed by the cost of an unscheduled Saturday.
- Use external Postgres, not the docker-compose one. Hetzner offers managed Postgres now. €11/mo, automatic backups, no "my container restarted and ate the WAL" risk. I'd take the €11 hit gladly.
- Don't put auth on the webhook receivers via n8n itself. Put it at Caddy or a separate gateway. n8n's auth model exists, but you can't reuse it for non-n8n endpoints, and you'll regret the coupling.
- Write the runbook first, not after the first outage. "How do I restore from borg," "how do I roll the credentials key," "where are the env files" — five minutes to write, an hour to rediscover when stressed.
- Don't put more than 10 workflows on one box. Memory usage scales with concurrent execution, and a runaway loop in one workflow will starve the others. If you go past 10, split into two n8n instances, not one. - If a client depends on the webhook receiver having 99.95% uptime, this single-box setup is wrong. Use n8n Cloud or a multi-node deployment.
- If the workflows touch regulated data (HIPAA, PCI, GDPR's stricter applications), don't reach for the cheapest box. Use a vendor who'll sign a DPA and an audit-ready hosting tier.
- If you're a team of more than three and people need fine-grained access, n8n self-host's RBAC is workable but not great. The Cloud tier handles teams better.
- If your time is worth more than €30/month, and the workflows are simple enough that Zapier or Make.com handles them without ceremony, the savings aren't worth the operating load. Pay for the SaaS. - ☐ Set published: true
- ☐ Add cover image (1000×420 — Hetzner ANGE + n8n logo composite? or just terminal screenshot)
- ☐ Tags: n8n, selfhosted, automation, devops — Dev.to limits to 4
- ☐ Canonical URL: leave blank (Dev.to is canonical)
- ☐ Once published, share Fiverr profile URL in bio (not in body of article)
- ☐ Comment-engagement plan: monitor for first 24h, reply to every comment, no defensive corrections - Article #1 (race condition Python Telegram bot) — already published 2026-05-20
- [[devto-article-01]] memory — engagement tracking
- [[twitter-rules]] — no Dev.to URL in Twitter body for first 30 days