feat: complete n8n stack setup
Docker Compose stack (n8n, PostgreSQL 16, Redis 7, 1 worker) with: - nginx local proxy on port 8088, YunoHost TLS termination config - helper scripts: backup/restore/import/export/update - .env.example, README with architecture, ops commands, to-do list Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
78aa8da747
commit
87cd005352
12 changed files with 586 additions and 2 deletions
142
README.md
142
README.md
|
|
@ -1,3 +1,141 @@
|
|||
# n8n_stack
|
||||
# n8n Stack
|
||||
|
||||
Das Projekt installiert und konfiguriert einen vollständigen, produktionsnahen n8n-Stack auf einem Ubuntu-Linux-System.
|
||||
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
|
||||
|
||||
```bash
|
||||
# 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
|
||||
bash scripts/update-n8n.sh
|
||||
```
|
||||
|
||||
Führt automatisch ein Backup aus, zieht neue Images und startet den Stack neu.
|
||||
|
||||
## Backup / Restore
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
```bash
|
||||
# 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` |
|
||||
|
||||
## To-do (manuell auf YunoHost)
|
||||
|
||||
- [ ] DNS: `n8n.linix.de` → `92.50.108.218` (A-Record beim DNS-Provider)
|
||||
- [ ] YunoHost: Domain hinzufügen: `sudo yunohost domain add n8n.linix.de`
|
||||
- [ ] YunoHost: Let's Encrypt: `sudo yunohost domain cert install n8n.linix.de`
|
||||
- [ ] YunoHost: `docs/yunohost-nginx-n8n.conf` → `/etc/nginx/conf.d/n8n.linix.de.conf` kopieren, dann `sudo nginx -t && sudo systemctl reload nginx`
|
||||
- [ ] SMTP-Credentials in `.env` eintragen (`SMTP_USER`, `SMTP_PASSWORD`)
|
||||
- [ ] Ersten Owner-Account in n8n anlegen (https://n8n.linix.de beim ersten Aufruf)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue