Skip to content

dmuiX/n8n-deployment-on-hetzner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

130 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

n8n Deployment on Hetzner VPS 🚀

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 📈

Architektur 🧱

Basis-Services ⚙️

  • n8n
  • postgresql
  • redis
  • swag (Reverse Proxy + TLS via Let's Encrypt / Cloudflare DNS)

Full-Mode zusätzlich 🧩

  • authelia
  • uptime-kuma
  • dockge
  • dockerproxy
  • S3-kompatible Backups via restic (z. B. AWS S3 oder Cloudflare R2)

Deployment-Modi 🎛️

  • 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).

Voraussetzungen (lokal) 🛠️

  • macOS oder Linux
  • terraform
  • ssh, scp (optional rsync)
  • openssl
  • Hetzner Cloud API Token
  • Cloudflare API Token (DNS Edit)
  • bestehende Domain in Cloudflare

Schnellstart ⚡

Compose-first (empfohlen)

Wenn du nur den Stack betreiben willst:

  • Nutze direkt die Compose-Dateien unter n8n-deployment/services/
  • Nutze n8n-deployment/.env.example als Vorlage und erstelle daraus n8n-deployment/.env
  • Starte die gewünschten Services per Docker Compose

Terraform ist dafür nicht zwingend notwendig.

Vollautomatisiert (optional)

  1. Lokale Konfiguration erzeugen:
./scripts/00-setup-local.sh
  1. Infrastruktur bereitstellen (Server + DNS):
./scripts/01-deploy-infra.sh
  1. Services deployen:
./scripts/02-deploy-services.sh

Optional explizit:

./scripts/02-deploy-services.sh --simple
./scripts/02-deploy-services.sh --full

Was automatisch passiert 🔄

  • 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

Projektstruktur 🗂️

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

Wichtige Skripte 📜

  • Lokal:

    • scripts/00-setup-local.sh
    • scripts/01-deploy-infra.sh
    • scripts/02-deploy-services.sh
    • scripts/maintenance/destroy-infra.sh
    • scripts/maintenance/reset-server.sh (destruktiv)
  • Server-seitig (~/n8n-deployment):

    • scripts/manual/start.sh
    • scripts/manual/stop.sh
    • scripts/maintenance/backup.sh (Full-Mode)
    • scripts/maintenance/prune.sh

Sicherheit / Hinweise 🛡️

  • Generierte Secrets liegen in infra/.env, infra/backend.conf und n8n-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.sh und destroy-infra.sh verursachen Datenverlust.

About

This repo contains an automated n8n Docker Compose deployment on Hetzner

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors