n8n_stack/README.md
dschlueter 82714d9593 docs: Setup-Status im README aktualisieren
Alle initialen Setup-Schritte abgeschlossen: DNS, YunoHost, SSOwat-Bypass,
SMTP, Owner-Account.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 00:49:35 +02:00

4.3 KiB

n8n Stack

Produktionsnaher n8n-Stack auf Docker Compose mit PostgreSQL, Redis und Queue-Mode.

Architektur

Internet → n8n.linix.de:443
  → YunoHost (192.168.179.10) — TLS-Terminierung (Let's Encrypt)
    → nginx lokal :8088 (192.168.179.124)
      → n8n Docker :5678
          ↔ PostgreSQL (n8n-stack-postgres-1)
          ↔ Redis      (n8n-stack-redis-1)
          ← n8n-worker (n8n-stack-n8n-worker-1)

Verzeichnisstruktur

n8n_stack/
├── compose/docker-compose.yml   # Stack-Definition
├── .env                         # Secrets (600, nie committen!)
├── .env.example                 # Vorlage
├── scripts/                     # Hilfsskripte (700)
├── data/                        # Docker-Volumes (gitignoriert)
│   ├── n8n/
│   ├── postgres/
│   └── redis/
├── backups/                     # Backups, max. 2 (gitignoriert)
├── imports/workflows/           # Workflow-JSONs zum Importieren
├── imports/credentials/         # Credentials-Exporte (unverschlüsselt!)
├── local-files/                 # Dateien für n8n-Container (/files)
└── docs/                        # nginx-Configs, Runbooks

Start / Stop / Status

# Start
docker compose -f compose/docker-compose.yml up -d

# Stop
docker compose -f compose/docker-compose.yml down

# Status
docker compose -f compose/docker-compose.yml ps

# Logs
docker compose -f compose/docker-compose.yml logs -f n8n

# Worker skalieren (z.B. auf 2)
docker compose -f compose/docker-compose.yml up -d --scale n8n-worker=2

Update

bash scripts/update-n8n.sh

Führt automatisch ein Backup aus, zieht neue Images und startet den Stack neu.

Backup / Restore

# Backup erstellen (behält immer die letzten 2)
bash scripts/backup-n8n.sh

# Restore aus Backup-Verzeichnis
bash scripts/restore-n8n.sh backups/backup_20240101_120000

Import / Export von Workflows

# Einzelne Workflow-JSON importieren
bash scripts/import-workflow.sh imports/workflows/mein-workflow.json

# Ganzes Verzeichnis importieren
bash scripts/import-workflow.sh imports/workflows/

# Alle Workflows exportieren
bash scripts/export-workflows.sh

Import / Export von Credentials

# Credentials importieren
bash scripts/import-credentials.sh imports/credentials/creds.json

# Credentials exportieren (UNVERSCHLÜSSELT — sicher aufbewahren!)
bash scripts/export-credentials.sh

Wichtig: Credential-Exporte enthalten alle Secrets im Klartext. Export-Dateien nach Gebrauch löschen.

Übernahme fremder n8n-Projekte

  1. Workflow-JSON-Dateien nach imports/workflows/ kopieren
  2. bash scripts/import-workflow.sh imports/workflows/<datei>.json
  3. Falls Credentials mitgeliefert: bash scripts/import-credentials.sh <datei.json>
  4. In der n8n-UI: Credentials der importierten Workflows prüfen und neu verknüpfen

Bei Voll-Exporten (.zip mit mehreren JSONs): entpacken, dann Verzeichnis übergeben.

Deployment auf neuem Host

  1. Repo klonen
  2. .env.example.env kopieren, alle Werte ausfüllen
  3. Neuen N8N_ENCRYPTION_KEY generieren: openssl rand -base64 32
  4. N8N_HOST und WEBHOOK_URL auf die neue Domain anpassen
  5. nginx-Config aus docs/nginx-local-n8n.conf anpassen und aktivieren
  6. YunoHost-Config aus docs/yunohost-nginx-n8n.conf anpassen und installieren
  7. docker compose -f compose/docker-compose.yml up -d

Kritische Hinweise

  • N8N_ENCRYPTION_KEY darf nach dem ersten Start nie geändert werden — eine Änderung macht alle gespeicherten Credentials unbrauchbar. Key steht in .env.
  • .env nie committen (steht in .gitignore).
  • Backup vor jedem Update läuft automatisch via update-n8n.sh.

URLs und Zugangspfade

Was Wert
n8n Web-UI https://n8n.linix.de
Erster Login Beim ersten Aufruf Owner-Account anlegen
Secrets-Datei ./.env (Rechte 600)
Backup-Verzeichnis ./backups/
nginx lokal /etc/nginx/sites-available/n8n (Port 8088)
YunoHost nginx /etc/nginx/conf.d/n8n.linix.de.conf

Setup-Status

  • DNS: n8n.linix.de92.50.108.218
  • YunoHost: Domain + Let's Encrypt
  • YunoHost: my_webapp als SSOwat-Shim installiert, nginx-Proxy auf 192.168.179.124:8088
  • SMTP-Credentials in .env eingetragen
  • Owner-Account angelegt