WZ-IT Logo

n8n Installation auf Ubuntu 24.04 mit Caddy und automatischen SSL-Zertifikaten

Timo Wevelsiep
Timo Wevelsiep
#n8n #Ubuntu #SSL #LetsEncrypt #SelfHosted #Workflow #Automation

Sie interessieren sich für das vorgestellte Produkt? Sprechen Sie uns an! Bei WZ-IT übernehmen wir Beratung, Installation, Support, Betrieb, Wartung und Monitoring Ihrer Lösung. Vereinbaren Sie hier Ihr kostenloses und unverbindliches Gespräch: Termin vereinbaren.

n8n ist eine leistungsstarke Open-Source-Workflow-Automatisierungsplattform, die es Ihnen ermöglicht, verschiedene Dienste und APIs miteinander zu verbinden. Als Alternative zu kommerziellen Lösungen wie Zapier oder Make bietet n8n volle Kontrolle über Ihre Automatisierungen und Daten. In dieser Anleitung zeigen wir Ihnen, wie Sie n8n auf einem Ubuntu 24.04 Server mit PostgreSQL-Datenbank installieren und automatisch SSL-Zertifikate von Let's Encrypt mit Caddy einrichten.

Inhaltsverzeichnis

Voraussetzungen

  • Ein Ubuntu 24.04 Server (z.B. ein VPS von Hetzner oder einem anderen Anbieter)
  • Zugriff auf den Server via SSH
  • Domain, die auf den Server zeigt (mind. A Eintrag) (z.B. n8n.example.com)

In unserem Beispiel verwenden wir die Domain n8n-demo.wz-it.com. Sie können diese Domain in der Anleitung durch Ihre eigene Domain ersetzen. Wir haben die Domain mit einem A Eintrag auf die IP-Adresse des Servers gesetzt, auf dem wir n8n installieren möchten.

Schritt 1: Server vorbereiten

Wir melden uns per SSH als root oder einem Benutzer mit sudo-Rechten auf dem Server an und aktualisieren die Paketliste:

apt update && apt upgrade -y

Schritt 2: Docker und Docker Compose installieren

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
rm get-docker.sh

Dieses Skript installiert die neuste Version von Docker und Docker Compose. Schauen Sie sich auch gerne den Inhalt des Skripts an, um zu verstehen, was genau passiert. Generell ist es keine gute Idee, Skripte aus dem Internet blind auszuführen, aber in diesem Fall ist es eine gängige Methode, um Docker zu installieren.

Schritt 3: Benutzer für n8n erstellen

Wir erstellen einen neuen Benutzer, der später für die n8n Installation verwendet wird. Außerdem fügen wir den Benutzer zur Docker-Gruppe hinzu, damit er Docker-Befehle ohne sudo ausführen kann. Dies ist wichtig, da n8n in einem Docker-Container läuft und der Benutzer Zugriff auf die Docker-Ressourcen benötigt.

adduser --system --group --home /opt/n8n n8n
sudo usermod -aG docker n8n

Schritt 4: Verzeichnisstruktur einrichten

Wir wechseln in das Benutzerverzeichnis und erstellen die notwendigen Verzeichnisse:

cd /opt/n8n
sudo -u n8n mkdir -p n8n_data caddy_config local_files
  • n8n_data speichert Verschlüsselungskeys, Logs und Source Control Assets
  • local_files ermöglicht Dateizugriff in Workflows (z.B. Read/Write File Node)
  • caddy_config enthält die Caddy-Konfiguration (Caddyfile)

Hinweis: Workflows, Credentials und Ausführungsdaten werden in der PostgreSQL-Datenbank gespeichert, während das n8n_data Verzeichnis wichtige Systemdaten wie Verschlüsselungskeys enthält.

Schritt 5: Umgebungsvariablen konfigurieren

Erstellen Sie die .env Datei mit den notwendigen Konfigurationen:

sudo -u n8n nano .env

Fügen Sie folgenden Inhalt ein:

DOMAIN_NAME=wz-it.com
SUBDOMAIN=n8n-demo
GENERIC_TIMEZONE=Europe/Berlin
TZ=Europe/Berlin
[email protected]

# Host-Konfiguration
N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
N8N_PORT=5678
N8N_PROTOCOL=https
WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/

# PostgreSQL Konfiguration
POSTGRES_USER=n8n
POSTGRES_PASSWORD=HIER_SICHERES_PASSWORT_EINFÜGEN
POSTGRES_DB=n8n

Generieren Sie ein sicheres Datenbankpasswort mit folgendem Befehl:

openssl rand -base64 32

Ersetzen Sie:

  • wz-it.com mit Ihrer Domain
  • n8n-demo mit Ihrer gewünschten Subdomain
  • [email protected] mit Ihrer E-Mail-Adresse für Let's Encrypt Benachrichtigungen
  • HIER_SICHERES_PASSWORT_EINFÜGEN mit dem generierten Datenbankpasswort

Die WEBHOOK_URL ist besonders wichtig, da n8n diese für die korrekte Funktion von Webhooks benötigt. Stellen Sie sicher, dass diese auf Ihre tatsächliche Domain mit HTTPS verweist.

Schritt 6: Caddy als Reverse Proxy einrichten

Erstellen Sie die Datei Caddyfile im caddy_config Verzeichnis:

sudo -u n8n nano caddy_config/Caddyfile

Fügen Sie folgenden Inhalt ein:

{
    email [email protected]
}

n8n-demo.wz-it.com {
    reverse_proxy n8n:5678 {
        flush_interval -1
    }
}

Caddy kümmert sich automatisch um die SSL-Zertifikate via Let's Encrypt und leitet den Traffic an den n8n-Dienst weiter. Die flush_interval -1 Einstellung ist wichtig für n8n, um die Verbindung bei langen Workflows nicht zu unterbrechen.

Ersetzen Sie n8n-demo.wz-it.com durch Ihre eigene Domain und [email protected] durch Ihre E-Mail-Adresse.

Schritt 7: Docker Compose Konfiguration

Erstellen Sie die docker-compose.yml:

sudo -u n8n nano docker-compose.yml

Fügen Sie folgenden Inhalt ein:

version: "3.7"
services:
  caddy:
    image: caddy:latest
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - caddy_data:/data
      - ./caddy_config:/config
      - ./caddy_config/Caddyfile:/etc/caddy/Caddyfile
    depends_on:
      - n8n
    networks:
      - n8n-network

  postgres:
    image: postgres:16
    restart: unless-stopped
    environment:
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
      interval: 5s
      timeout: 5s
      retries: 10
    networks:
      - n8n-network

  n8n:
    image: docker.n8n.io/n8nio/n8n:latest
    restart: unless-stopped
    environment:
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
      - TZ=${TZ}
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
      - N8N_RUNNERS_ENABLED=true
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_USER=${POSTGRES_USER}
      - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
    volumes:
      - n8n_data:/home/node/.n8n
      - ./local_files:/files
    depends_on:
      postgres:
        condition: service_healthy
    networks:
      - n8n-network

volumes:
  caddy_data:
  n8n_data:
  postgres_data:

networks:
  n8n-network:
    driver: bridge

Diese Konfiguration enthält:

  • postgres Container mit PostgreSQL 16 für die Datenbank
  • postgres_data Volume für persistente Speicherung der Datenbankdaten
  • n8n_data Volume für Verschlüsselungskeys, Logs und Source Control Assets
  • local_files Verzeichnis für Workflows mit lokalen Dateien
  • caddy_data Volume für SSL-Zertifikate und Caddy-Daten
  • n8n-network für die Kommunikation zwischen den Containern

Schritt 8: n8n starten

Wir starten nun n8n und Caddy mit Docker Compose:

sudo -u n8n docker compose up -d

Überwachen Sie die Logs, um sicherzustellen, dass alles korrekt läuft:

sudo -u n8n docker compose logs -f caddy
sudo -u n8n docker compose logs -f n8n

Wenn alles korrekt läuft, sollten Sie n8n über https://n8n-demo.wz-it.com (bzw. Ihre Domain) erreichen können.

Schritt 9: Erstkonfiguration & Benutzerverwaltung

Beim ersten Aufruf von n8n werden Sie aufgefordert, einen Administrator-Benutzer anzulegen. n8n verwendet ein modernes Benutzer- und Rollenverwaltungssystem, bei dem Sie:

  • Einen Admin-Account mit E-Mail und Passwort erstellen
  • Weitere Benutzer mit verschiedenen Rollen anlegen können
  • Zugriffsrechte für Workflows und Credentials verwalten können
n8n Benutzer-Registrierung

Nach der Einrichtung haben Sie Zugriff auf die n8n Oberfläche und können mit dem Erstellen Ihrer ersten Workflows beginnen.

n8n Dashboard

Wichtige Hinweise:

  • Die WEBHOOK_URL muss korrekt auf Ihre Domain mit HTTPS verweisen
  • Für produktive Umgebungen sollten Sie regelmäßige Backups einrichten
  • Bei vielen Workflows empfiehlt sich der Queue Mode mit Redis

Firewall-Konfiguration

Wenn Sie eine Firewall auf Ihrem Server eingerichtet haben, stellen Sie sicher, dass die Ports 80 (HTTP) und 443 (HTTPS) geöffnet sind. Dies ist notwendig, damit Caddy die Anfragen über HTTP und HTTPS entgegennehmen kann. Sie können dies mit ufw tun oder über die Firewall Ihres Cloud-Anbieters konfigurieren.

ufw allow 80
ufw allow 443
ufw enable

Backup & Updates

Backup

Für regelmäßige Backups sollten Sie sowohl die PostgreSQL-Datenbank als auch das n8n_data Volume sichern:

PostgreSQL Datenbank Backup:

# Backup erstellen
sudo -u n8n docker compose exec postgres pg_dump -U n8n n8n > /opt/n8n/backups/n8n-db-backup-$(date +%Y%m%d).sql

# Oder als komprimiertes Backup
sudo -u n8n docker compose exec postgres pg_dump -U n8n n8n | gzip > /opt/n8n/backups/n8n-db-backup-$(date +%Y%m%d).sql.gz

n8n Data Volume Backup:

sudo -u n8n docker run --rm -v n8n_n8n_data:/data -v /opt/n8n/backups:/backup ubuntu tar czf /backup/n8n-data-backup-$(date +%Y%m%d).tar.gz /data

Zusätzlich können Sie Workflows und Credentials über die n8n UI exportieren.

Updates

Um n8n auf die neueste Version zu aktualisieren, führen Sie folgende Befehle aus:

cd /opt/n8n
sudo -u n8n docker compose pull
sudo -u n8n docker compose down
sudo -u n8n docker compose up -d

Wichtig: Erstellen Sie immer ein Backup, bevor Sie Updates durchführen!

Fazit

Mit dieser Anleitung haben Sie n8n erfolgreich auf einem Ubuntu 24.04 Server mit PostgreSQL-Datenbank installiert und mit Caddy ein SSL-Zertifikat von Let's Encrypt eingerichtet. Die Verwendung von PostgreSQL bietet bessere Performance und Skalierbarkeit im Vergleich zur Standard-SQLite-Installation, besonders bei höherer Last und vielen gleichzeitigen Workflows.

n8n bietet eine große Auswahl an Integrationen und kann als Alternative zu kommerziellen Workflow-Automatisierungstools wie Zapier oder Make verwendet werden. Weitere Informationen und eine vollständige Dokumentation finden Sie auf der offiziellen n8n Website: https://docs.n8n.io/.

Diese Installation ist produktionsbereit. Für Umgebungen mit sehr hoher Last empfehlen sich zusätzliche Konfigurationen wie:

  • Redis für Queue Mode mit mehreren Workers
  • Externe Speicher für Dateien (z.B. S3)
  • SSO/OIDC-Integration für Unternehmen
  • Load Balancer für mehrere n8n-Instanzen

Quellen

Diese Anleitung basiert auf der offiziellen n8n Dokumentation:

Lassen Sie uns über Ihr Projekt sprechen

Ob konkrete IT-Herausforderung oder einfach eine Idee – wir freuen uns auf den Austausch. In einem kurzen Gespräch prüfen wir gemeinsam, ob und wie Ihr Projekt zu WZ-IT passt.

Vertraut von führenden Unternehmen

NextGymParitelEVADXBRekorderARGEKeymateAphyNegosh

Um das Formular abzusenden, brauchen wir ihr Einverständnis, um das Captcha anzuzeigen.

Mit dem Klicken auf den Button akzeptieren Sie unsere Datenschutzbestimmungen und die Cookie-Richtlinie von Cloudflare.