skip to content
slashtec
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.

Terminal window
# Domain
SUBDOMAIN=n8n
DOMAIN_NAME=example.com
# Data Folder
DATA_FOLDER=/opt/n8n
# N8N
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=zufaelligerkey32zeichen
# Encryption Key – generieren mit: openssl rand -hex 32
N8N_ENCRYPTION_KEY=zufaelligerkey32zeichen
# Timezone
GENERIC_TIMEZONE=Europe/Berlin

Passwö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.

Terminal window
# openssl – überall verfügbar, auch macOS
openssl rand -hex 32
# /dev/urandom – pure Unix, kein Tool nötig
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 32; echo
# pwgen – muss installiert werden
pwgen -s 32 1

docker-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: bridge

Caddyfile

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.

Terminal window
docker compose up -d
docker compose logs -f

Erster Login

Beim ersten login kann man seinen Admin Konto anlegen, und dann kann es auch schon mit den Automatisierungen loslegen.

N8N Login

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.

N8N Dashboard

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.

Terminal window
docker compose pull
docker compose down
docker compose up -d