From 78aa8da747f05159c5e59ef26740821d3b11ae9e Mon Sep 17 00:00:00 2001 From: dschlueter Date: Tue, 5 May 2026 16:57:06 +0200 Subject: [PATCH] docs: update INITIAL_PROMPT with system-specific configuration Add nginx integration details, domain/URL as .env variable, SMTP config, worker scaling, n8n user management, backup retention, and multi-host portability requirements. Co-Authored-By: Claude Sonnet 4.6 --- INITIAL_PROMPT.md | 127 +++++++++++++++++++++++++--------------------- 1 file changed, 69 insertions(+), 58 deletions(-) diff --git a/INITIAL_PROMPT.md b/INITIAL_PROMPT.md index ed6a467..8a37d06 100644 --- a/INITIAL_PROMPT.md +++ b/INITIAL_PROMPT.md @@ -1,85 +1,96 @@ -Du arbeitest auf meinem Linux-System und sollst einen vollständigen, produktionsnahen n8n-Stack installieren und konfigurieren. Zumindest die Stack-Anteile, die viel Speicher verbrauchen, sollen im Verzeichnis /home/dschlueter/nvme2n1p7_home/n8n_stack liegen. +Du arbeitest auf meinem Linux-System und sollst einen vollständigen, produktionsnahen n8n-Stack installieren und konfigurieren. Alle Stack-Anteile sollen im Verzeichnis /home/dschlueter/nvme2n1p7_home/n8n_stack liegen (separate NVMe-Partition mit ausreichend Platz). Ziel: -Ich möchte danach komplette n8n-Projekte von Dritten übernehmen, lokal speichern, importieren, verwalten, sichern und ausführen können. Das System soll robust, updatefähig und nachvollziehbar dokumentiert sein. +Ich möchte danach komplette n8n-Projekte von Dritten übernehmen, lokal speichern, importieren, verwalten, sichern und ausführen können. Das System soll robust, updatefähig und nachvollziehbar dokumentiert sein. Der Stack soll auch auf anderen Rechnern (vHosts im Rechenzentrum) installierbar sein — alle standortspezifischen Parameter daher in der .env-Datei. Wichtige Arbeitsregeln: 1. Führe zuerst eine Bestandsaufnahme meines Systems durch und gib einen Umsetzungsplan aus, bevor du Änderungen machst. 2. Prüfe OS, Distribution, Docker, Docker Compose, Firewall, freie Ports, verfügbare Domain/Subdomain, Reverse-Proxy-Situation, RAM, CPU, Plattenplatz und Benutzerrechte. -3. Wenn Informationen fehlen, frage gezielt nach oder lege eine sinnvolle Standardkonfiguration in einer CONFIG-Sektion offen. -4. Nimm nur idempotente Änderungen vor und erstelle vor riskanten Änderungen Backups vorhandener Konfigurationen. -5. Dokumentiere alle erzeugten Dateien und Befehle in einer Markdown-Datei im Projektordner. +3. Nimm nur idempotente Änderungen vor und erstelle vor riskanten Änderungen Backups vorhandener Konfigurationen. +4. Dokumentiere alle erzeugten Dateien und Befehle in einer Markdown-Datei im Projektordner. + +Bekannte Systemkonfiguration: +- Reverse Proxy: nginx läuft bereits auf diesem System (Ports 80 und 443 sind belegt) + → n8n als neuen Server-Block in die bestehende nginx-Konfiguration integrieren + → n8n läuft intern auf Port 5678, nginx proxied darauf; kein zweiter Proxy +- Erreichbarkeit: https://linix.de (IP 92.50.108.218), Portweiterleitung vom Router +- Domain/URL: in .env konfigurierbar (N8N_HOST, N8N_PROTOCOL), Standard: n8n.linix.de +- TLS: Let's Encrypt über bestehenden nginx +- SMTP: IMAP/SMTP-Server auf linix.de — Zugangsdaten in .env konfigurierbar Technische Zielarchitektur: - Deployment mit Docker Compose -- n8n als Hauptservice -- Postgres als Datenbank +- n8n als Hauptservice (image: n8nio/n8n:latest) +- PostgreSQL als Datenbank (stable latest) - Redis für Queue-Mode -- mindestens ein n8n-Worker -- Reverse Proxy mit HTTPS -- persistente Volumes -- separater Projektordner, z. B. ~/stacks/n8n -- .env-Datei für Konfiguration -- automatischer Start nach Reboot -- Healthchecks, sinnvolle Restart-Policy -- Zeitzone Europe/Berlin -- sichere Dateirechte -- keine Demo-Konfiguration +- n8n-Worker: initial 1, skalierbar per N8N_WORKER_REPLICAS in .env +- Persistente Volumes (bind mounts in data/ unterhalb des Projektordners) +- .env-Datei für alle standortspezifischen Parameter +- Automatischer Start nach Reboot (restart: unless-stopped) +- Healthchecks und sinnvolle Restart-Policy +- Zeitzone: Europe/Berlin +- Sichere Dateirechte (600 für .env, 700 für Skripte) +- Keine Demo-Konfiguration + +Zugriffsschutz: +- n8n eigenes User-Management (EXECUTIONS_MODE=queue, N8N_USER_MANAGEMENT_DISABLED=false) +- Owner-Account wird beim ersten Start über die n8n-Web-UI eingerichtet +- SMTP für Einladungen und Passwort-Reset konfigurieren Funktionsanforderungen: -- Ich muss Workflow-JSON-Dateien importieren können -- Ich muss Credentials und Workflows per CLI exportieren und importieren können -- Lege dafür Hilfsskripte an: - - import-workflow.sh - - import-credentials.sh - - export-workflows.sh - - export-credentials.sh - - backup-n8n.sh - - restore-n8n.sh -- Erstelle Ordner für: - - backups/ +- Workflow-JSON-Dateien importieren (primär einzelne JSONs, ggf. auch Voll-Exporte) +- Credentials und Workflows per CLI exportieren und importieren +- Hilfsskripte (alle idempotent, Pfade relativ zum Projektverzeichnis): + - scripts/import-workflow.sh (einzelne JSON-Datei oder Verzeichnis) + - scripts/import-credentials.sh + - scripts/export-workflows.sh + - scripts/export-credentials.sh + - scripts/backup-n8n.sh (sichert DB + n8n-Daten + Compose-Dateien) + - scripts/restore-n8n.sh + - scripts/update-n8n.sh (führt backup-n8n.sh aus, dann docker compose pull + up) +- Verzeichnisstruktur: + - backups/ (gitignoriert; Retention: immer die letzten 2 Backups behalten) - imports/workflows/ - imports/credentials/ - - local-files/ - - compose/ + - local-files/ (für Dateien, die n8n-Container lesen sollen) + - compose/ (docker-compose.yml und Overrides) + - scripts/ - docs/ + - data/ (gitignoriert; bind-mount-Ziel für alle Volumes) Sicherheitsanforderungen: -- generiere starke zufällige Secrets -- verwende eine feste N8N_ENCRYPTION_KEY-Konfiguration -- setze sichere Datei- und Verzeichnisrechte -- exponiere nur notwendige Ports -- falls bereits ein Reverse Proxy existiert, integriere n8n dort statt einen zweiten Proxy unnötig parallel zu betreiben -- dokumentiere klar, welche Daten unverschlüsselt exportiert werden können und welche Risiken das hat +- Generiere starke zufällige Secrets (DB-Passwort, N8N_ENCRYPTION_KEY, Redis-Passwort) +- N8N_ENCRYPTION_KEY darf nach dem ersten Start nie geändert werden — dokumentiere das prominent +- Nur Port 5678 intern; extern läuft alles über nginx auf 443 +- Dokumentiere klar: Credential-Exporte sind unverschlüsselt — Exportverzeichnis schützen Betriebsanforderungen: -- richte Logs, Update-Hinweise und Wartungsbefehle ein -- prüfe den Stack nach dem Start mit health/status checks -- teste, dass n8n erreichbar ist -- teste, dass ein Workflow-Import grundsätzlich möglich ist -- richte ein Beispiel für CLI-Import/Export ein -- richte ein Backup-Konzept für Datenbank, n8n-Daten und Compose-Dateien ein +- update-n8n.sh sichert automatisch vor jedem Update +- Backup-Retention: nach jedem Backup die ältesten löschen, sodass immer genau 2 übrig bleiben +- Logs, Update-Hinweise und Wartungsbefehle dokumentieren +- Stack nach Start mit health/status checks prüfen +- Beispiel für CLI-Import/Export einrichten Erwartetes Ergebnis: 1. Vollständig installierter und laufender n8n-Stack -2. Alle Konfigurationsdateien erstellt -3. Alle Skripte funktionsfähig -4. README.md mit: - - Architektur - - Pfaden +2. Alle Konfigurationsdateien erstellt (.env, compose/docker-compose.yml, nginx-Server-Block) +3. Alle Skripte funktionsfähig und getestet +4. .env.example als sichere Vorlage (ohne Secrets, mit Kommentaren) +5. README.md mit: + - Architektur und Datenfluss + - Pfaden und Verzeichnisstruktur - Start/Stop/Update-Befehlen - - Backup/Restore + - Backup/Restore (inkl. Retention-Hinweis) - Import/Export von Workflows und Credentials - Hinweise zur Übernahme fremder n8n-Projekte -5. Abschließend eine kompakte Übergabe mit: - - verwendeten URLs - - Zugangspfad - - wichtigen Secrets-Dateien bzw. Speicherorten - - To-do-Punkten, falls manuell noch Domain/DNS erforderlich ist + - Deployment auf neuem Host (was in .env anpassen) +6. Abschließend eine kompakte Übergabe mit: + - URL und Zugangspfad + - Speicherort der Secrets + - To-do-Punkten für DNS/Domain falls manuell erforderlich Bevor du Änderungen machst: -- analysiere zuerst mein System -- formuliere dann einen konkreten Plan -- führe danach die Installation und Konfiguration Schritt für Schritt aus -- zeige mir am Ende alle erzeugten Dateien - +- Analysiere zuerst das System (Docker-Version, nginx-Konfiguration, freie Ports, Plattenplatz) +- Formuliere dann einen konkreten Plan +- Führe danach die Installation und Konfiguration Schritt für Schritt aus +- Zeige mir am Ende alle erzeugten Dateien