Docker installieren#
System aktualisieren#
apt update && apt upgrade -y && apt install ca-certificates curl -yDocker-Paketquelle einrichten#
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.listDocker und Docker Compose installieren#
apt update && apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -yDockge installieren#
Dockge einrichten#
Dockge ist eine Weboberfläche, mit der du Docker-Compose-Stacks bequem im Browser verwaltest. Dieser Befehl legt die Verzeichnisse an und startet Dockge:
mkdir -p /opt/stacks /opt/dockge && cd /opt/dockge && curl -fsSL https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml -o compose.yaml && docker compose up -dDockge öffnen#
Öffne Dockge im Browser und lege direkt dein Admin-Konto an:
http://IP-deines-Servers:5001n8n einrichten#
Stack anlegen#
Klicke in Dockge auf + Compose und gib unter „Allgemein“ den Stack-Namen n8n ein.
compose.yaml einfügen#
services:
n8n:
image: docker.n8n.io/n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
depends_on:
n8n-db:
condition: service_healthy
ports:
- 127.0.0.1:5678:5678
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=n8n-db
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
- DB_POSTGRESDB_USER=${POSTGRES_USER}
- DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
- N8N_HOST=${N8N_DOMAIN}
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://${N8N_DOMAIN}/
- GENERIC_TIMEZONE=Europe/Berlin
- TZ=Europe/Berlin
volumes:
- ./data/n8n:/home/node/.n8n
networks:
- internal
- default
n8n-db:
image: postgres:17
container_name: n8n-db
restart: unless-stopped
environment:
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
volumes:
- ./data/postgres:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 10s
timeout: 5s
retries: 5
networks:
- internal
networks:
internal:n8n ist damit nur auf dem Server selbst erreichbar. Von außen kommst du über einen Reverse Proxy mit HTTPS darauf, mehr dazu weiter unten.
Umgebungsvariablen in der .env festlegen#
Trag unten rechts im Feld für die .env diese Werte ein:
N8N_DOMAIN=n8n.deine-domain.de
N8N_ENCRYPTION_KEY=hier-ein-langer-zufallswert
POSTGRES_DB=n8n
POSTGRES_USER=n8n
POSTGRES_PASSWORD=dein-datenbank-passwortSichere Zufallswerte erzeugst du so:
openssl rand -hex 32N8N_ENCRYPTION_KEY gut, zum Beispiel in deinem Passwortmanager. Mit ihm verschlüsselt n8n alle gespeicherten Zugangsdaten. Geht er verloren, kannst du sie nach einem Umzug oder einer Wiederherstellung nicht mehr nutzen.Stack starten#
Klicke auf Speichern und dann auf Deploy.
n8n erreichbar machen#
Über einen Reverse Proxy mit HTTPS#
Leite deine Domain n8n.deine-domain.de über einen Reverse Proxy mit HTTPS auf http://127.0.0.1:5678 weiter, zum Beispiel mit CloudPanel, dem Nginx Proxy Manager oder Traefik. Das ist der empfohlene Weg, denn Webhooks von außen funktionieren nur so.
Zum Testen per SSH-Tunnel#
Willst du n8n erst einmal ausprobieren, geht es auch ohne Domain. Bau von deinem Rechner aus einen SSH-Tunnel auf:
ssh -L 5678:localhost:5678 root@IP-deines-ServersSolange die Verbindung offen ist, erreichst du n8n unter http://localhost:5678.
Erste Anmeldung#
Beim ersten Aufruf legst du direkt dein Owner-Konto an, also den Hauptbenutzer mit allen Rechten. Danach kannst du deinen ersten Workflow erstellen.
n8n aktualisieren#
cd /opt/stacks/n8n && docker compose pull && docker compose up -dSchau vor größeren Updates kurz in die Versionshinweise von n8n. Bei neuen Hauptversionen ändern sich manchmal Einstellungen.

