Automatisiertes Deployment eines produktiven n8n-Stacks auf einem Hetzner VPS mit Terraform & Docker Compose.
Compose-first: Der Kern dieses Projekts sind die Docker-Compose-Dateien in n8n-deployment/services/.
Terraform und Deploy-Skripte sind optional für vollständige Automatisierung.
Der Fokus liegt auf:
- flexible Infrastruktur 🌍 (Hetzner + Cloudflare DNS via Terraform)
- automatisierter Service-Bereitstellung 🤖
- Secret-Generierung und Basis-Hardening 🔐
- optionalem Full-Setup mit Auth/Monitoring/Backups 📈
n8npostgresqlredisswag(Reverse Proxy + TLS via Let's Encrypt / Cloudflare DNS)
autheliauptime-kumadockgedockerproxy- S3-kompatible Backups via
restic(z. B. AWS S3 oder Cloudflare R2)
simple: schlanker Stack (n8n + DB + Redis + Swag + Basic Auth)full: erweitert um Auth, Monitoring, Dockge und Backups
Die Auswahl erfolgt über scripts/00-setup-local.sh (Prompt: Deployment Mode (simple/full)) oder per Flag bei scripts/02-deploy-services.sh (--simple / --full).
- macOS oder Linux
terraformssh,scp(optionalrsync)openssl- Hetzner Cloud API Token
- Cloudflare API Token (DNS Edit)
- bestehende Domain in Cloudflare
Wenn du nur den Stack betreiben willst:
- Nutze direkt die Compose-Dateien unter
n8n-deployment/services/ - Nutze
n8n-deployment/.env.exampleals Vorlage und erstelle darausn8n-deployment/.env - Starte die gewünschten Services per Docker Compose
Terraform ist dafür nicht zwingend notwendig.
- Lokale Konfiguration erzeugen:
./scripts/00-setup-local.sh- Infrastruktur bereitstellen (Server + DNS):
./scripts/01-deploy-infra.sh- Services deployen:
./scripts/02-deploy-services.shOptional explizit:
./scripts/02-deploy-services.sh --simple
./scripts/02-deploy-services.sh --full- Terraform erstellt Hetzner-Server und Cloudflare-DNS-Einträge
- Secrets werden lokal generiert (
n8n-deployment/.env) - Deployment-Dateien werden auf den Server synchronisiert
- Server-Setup erstellt Auth-Konfiguration (mode-abhängig)
- Docker-Services werden in definierter Reihenfolge gestartet
- Cronjobs für Wartung (und Backups im Full-Mode) werden eingerichtet
infra/ Terraform (Server + DNS)
scripts/ lokale Orchestrierung
00-setup-local.sh
01-deploy-infra.sh
02-deploy-services.sh
maintenance/
n8n-deployment/ Artefakte, die auf den Server gehen
services/ Compose-Stacks je Service
scripts/manual/ Start/Stop/Restore auf Server
scripts/maintenance/ Backup/Prune auf Server
-
Lokal:
scripts/00-setup-local.shscripts/01-deploy-infra.shscripts/02-deploy-services.shscripts/maintenance/destroy-infra.shscripts/maintenance/reset-server.sh(destruktiv)
-
Server-seitig (
~/n8n-deployment):scripts/manual/start.shscripts/manual/stop.shscripts/maintenance/backup.sh(Full-Mode)scripts/maintenance/prune.sh
- Generierte Secrets liegen in
infra/.env,infra/backend.confundn8n-deployment/.env. - Diese Dateien enthalten sensible Daten und gehören nicht in Versionskontrolle.
- Relevante Passwörter/Secrets werden beim Setup neu generiert; nach einem Redeploy sind alte Werte in der Regel nicht mehr gültig.
reset-server.shunddestroy-infra.shverursachen Datenverlust.