N8N mit Caddy als Reverse Proxy aufsetzen
/ 4 min read
Table of Contents
Diese Anleitung zeigt auf, wie auf einem Server n8n installiert werden kann. n8n ist eine Software um umfangreiche Automatisierung zu realisieren. Dies kann KI gestützt passieren, muss es aber nicht. n8n bietet eine umfangreiche Template Datenbank, mit der man einfach in die ersten Automatisierungen starten kann.
Hier wird das Setup auf einem Linux System unter zu Hilfe nahme von Docker mit Compose Plugin gezeigt. Um den n8n Dienst abzusichern greifen wir auf Caddy als Reverse Proxy zurück der sich auch gleich um die SSL Zertifikats Bereitstellung über Let’s Encrypt kümmert.
Docker Compose wird als Technologie benutzt weil es eine einfache Art des Deployments, Konfiguration und Updates bieten.
Voraussetzungen
Für diese Anleitung wird ein Server mit Linux / BSD oder anderem OS benötigt auf dem Docker zur Verfügung steht. Um Caddy mit Let’s Encrypt einzusetzen muss dieser Server auch aus dem Internet erreichbar sein, mit den Ports 80 und 443 für http oder https.
Wenn der Server installiert ist, Docker und Docker Compose installiert sind, dann sollte noch ein öffentlicher DNS Eintrag gestellt werden der per A / AAAA Record auf die IP des Servers verweist. Dies ist nötig um ein Zertifikat von Let’s Encrypt zu bekommen und mit dem Server per https gesichert über den Browser verbinden zu können.
Verzeichnisstruktur
Wie und wo die Docker Dateien abgelegt werden ist im Prinzip variabel. In diesem Beispiel folgen wir folgender Ordnerstruktur:
/opt/n8n/├── docker-compose.yml├── .env├── Caddyfile├── caddy_config/└── local_files/Die Konfigurationsdateien
.env
In der .env Datei werden Variablen Werte zugeweisen, die in der unten folgenden Docker Compose Datei zugegriffen werden.
# DomainSUBDOMAIN=n8nDOMAIN_NAME=example.com
# Data FolderDATA_FOLDER=/opt/n8n
# N8NN8N_BASIC_AUTH_ACTIVE=trueN8N_BASIC_AUTH_USER=adminN8N_BASIC_AUTH_PASSWORD=zufaelligerkey32zeichen
# Encryption Key – generieren mit: openssl rand -hex 32N8N_ENCRYPTION_KEY=zufaelligerkey32zeichen
# TimezoneGENERIC_TIMEZONE=Europe/BerlinPasswörter und Keys generieren
Keys für die .env Datei lassen sich über die Commandline generieren, aber natürlich auch über Psswortmanager oder andere Methoden.
# openssl – überall verfügbar, auch macOSopenssl rand -hex 32
# /dev/urandom – pure Unix, kein Tool nötigcat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 32; echo
# pwgen – muss installiert werdenpwgen -s 32 1docker-compose.yml
Hier findet sich jetzt die yaml Datei die die Konfiguration der einzelnen Container übernimmt. Hier werden zwei Container erstellt, Caddy und n8n.
In der Konfiguration wird angegeben welchen container man haben möchte (die image Zeile), welche Ports exponiert werden, persistente Daten Verzeichnisse des Containers und Netzwerk Daten.
Im Falle von n8n werden hier auch noch Konfigurationen mitgegeben
services: caddy: image: caddy:latest restart: unless-stopped ports: - "80:80" - "443:443" volumes: - caddy_data:/data - ${DATA_FOLDER}/caddy_config:/config - ${DATA_FOLDER}/Caddyfile:/etc/caddy/Caddyfile networks: - n8n-net
n8n: image: docker.n8n.io/n8nio/n8n restart: unless-stopped environment: - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME} - N8N_PORT=5678 - N8N_PROTOCOL=https - NODE_ENV=production - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/ - GENERIC_TIMEZONE=${GENERIC_TIMEZONE} - N8N_BASIC_AUTH_ACTIVE=${N8N_BASIC_AUTH_ACTIVE} - N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER} - N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD} - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY} volumes: - n8n_data:/home/node/.n8n - ${DATA_FOLDER}/local_files:/files networks: - n8n-net
volumes: caddy_data: n8n_data:
networks: n8n-net: driver: bridgeCaddyfile
Im Caddyfile sind Werte fest verdrahtet und nicht über Variablen aus dem .env File, da dies scheinbar nicht funktioniert.
n8n.example.com { reverse_proxy n8n:5678 { flush_interval -1 }}Deployment
mit folgenden Kommandos kann man nun den ganzen Stack starten. Die zweite Zeile überwacht die Logs so dass man sehen kann, obn alles so läuft wie es soll. Der erste Befehl wird lange brauchen für den Start, da beim ersten mal die Container Images geladen und erst danach gestartet werden.
docker compose up -ddocker compose logs -fErster Login
Beim ersten login kann man seinen Admin Konto anlegen, und dann kann es auch schon mit den Automatisierungen loslegen.
Interessant ist dabei dass man für eventuell angebundene Cloud Dienste oder KI Dienste API Keys zur Authentifizierung hinterlegen um auf diese in seinen Automatisierungen zurückgreifen zu können.
Über die n8n Oberfläche lassen sich direkt Automatisierungs Templates einbinden, die erste Spielereien ermöglichen.
Fazit
Mit dieser Anleitung ist eine n8n Basis Installation zweifelsohne einfach möglich. Die Beispielwerte in den Config Files sind natürlich immer mit eigenen zu ersetzen.
docker compose pulldocker compose downdocker compose up -d