Tutoriel Linux

Praktischer Leitfaden zur Bereitstellung von n8n mit Docker auf einem Linux-System

Débutant8 min de lecture

Mehr denn je ist die Automatisierung von Aufgaben zu einem entscheidenden Faktor für höhere Produktivität geworden, insbesondere in Linux-Umgebungen, wo das Workflow-Management schnell komplex werden kann. n8n präsentiert sich als ideale, flexible Open-Source-Lösung für die Anbindung von APIs, die Orchestrierung von Webhooks und die Verwaltung komplexer Integrationen – ohne das Rad neu erfinden zu müssen. Docker vereinfacht die Bereitstellung durch die Isolation der Laufzeitumgebung und gewährleistet so einen stabilen und portablen Betrieb unabhängig vom zugrunde liegenden Linux-System. Diese detaillierte Anleitung bietet Schritt-für-Schritt-Anweisungen für die Bereitstellung von n8n mit Docker auf einem Linux-Server, sei es ein dedizierter Rechner oder eine Cloud-Umgebung. Dabei kommen robuste Tools wie PostgreSQL für die Datenbank und Nginx als sicherer Reverse-Proxy zum Einsatz. Dieses Tutorial richtet sich sowohl an Systemadministratoren, die ihre Automatisierungslösungen industrialisieren möchten, als auch an Linux-Enthusiasten, die das Potenzial von Node.js in containerisierten Umgebungen erkunden wollen.

Wesentliche Voraussetzungen für die Installation von n8n mit Docker auf einem Linux-System

Vor Beginn der Bereitstellung ist es entscheidend, eine geeignete Umgebung vorzubereiten, in der alle Komponenten reibungslos funktionieren. Der Linux-Server muss stabil sein, typischerweise Debian oder Ubuntu, da diese für ihre Robustheit und umfassende Kompatibilität mit Docker und den zugehörigen Tools bekannt sind. Docker und Docker Compose müssen installiert sein, da sie den Start der Container steuern, die n8n und seine Abhängigkeiten enthalten.

Um Ihre n8n-Instanz abzusichern, empfiehlt sich ein Reverse-Proxy wie Nginx oder Traefik. Damit können Sie ein SSL/TLS-Zertifikat hinzufügen, das häufig kostenlos über Let’s Encrypt verwaltet wird. Diese Sicherheitsstufe ist unerlässlich, wenn Webhooks oder APIs im Internet bereitgestellt werden, um die Vertraulichkeit und Integrität der Kommunikation zu gewährleisten. Im Produktivbetrieb ist die Verwendung einer PostgreSQL-Datenbank der nativen SQLite-Option vorzuziehen, da sie eine bessere Skalierbarkeit und eine effizientere Verarbeitung zahlreicher Abfragen ermöglicht.

Hier ist die Liste der unbedingt notwendigen Voraussetzungen:

  • Aktueller Linux-Server (Debian 11+, Ubuntu 22.04+ empfohlen)
  • Docker und Docker Compose installieren mit kompatiblen Versionen (Docker 20.10+, Compose 2.x)
  • Reverse-Proxy installiert (Nginx oder Traefik empfohlen)
  • Domänenname, der auf den Server verweist um den SSL-Zugriff und die Konfiguration zu erleichtern
  • PostgreSQL konfiguriert Verwendung von Docker zur Verwaltung der n8n-Datenbank
  • Geeignete Netzwerkkonfiguration Die Ports 80, 443 (HTTP/S) und 5678 (n8n) sind geöffnet und werden bei Bedarf umgeleitet.

Linux-Einsteiger profitieren davon, die Bedeutung dieser Elemente zu verstehen: Docker kapselt Anwendungen in schlanken Containern, die vom Hostsystem isoliert sind, während ein Reverse-Proxy wie Nginx eingehende Zugriffe auf n8n umleitet und sichert. PostgreSQL ist eine leistungsstarke relationale Datenbank, die aufgrund ihrer Robustheit und Kompatibilität mit dem Node.js-Framework, auf dem n8n basiert, für Produktionsumgebungen bevorzugt wird.

Konfigurieren Sie die Docker-Umgebung und passen Sie n8n mit Docker Compose unter Linux an.

Der Clou beim Einsatz von n8n unter Linux liegt in der einfachen Handhabung von Docker Compose. Diese YAML-Datei beschreibt alle Container und ihre Interaktionen in einem lesbaren und bearbeitbaren Format. Die Erstkonfiguration umfasst das Erstellen einer Verzeichnisstruktur speziell für n8n und das Definieren zweier wichtiger Dateien: .env für Umweltvariablen und docker-compose.yml um die Dienste zu orchestrieren.

Ein oft übersehener Aspekt ist die Trennung persistenter Daten. Es müssen drei lokale Ordner erstellt werden: einer für PostgreSQL-Daten, einer für von n8n generierte Dateien und ein dritter für temporäre Dateien oder Auslagerungsdateien. Diese Verzeichnisse werden in ihre jeweiligen Container eingebunden, um Datenverlust bei einem Neustart oder Update zu verhindern.

Beispiel für die Erstellung von Verzeichnissen:

  • mkdir -p /opt/docker-compose/n8n/{postgresql,n8n_data,n8n_files}
  • chmod 777 /opt/docker-compose/n8n/n8n_data (notwendig, um Berechtigungsfehler zu vermeiden)

Die Datei .env enthält Schlüsselvariablen:

  • N8N_HOST : Hostname, den die Benutzeroberfläche anzeigt und zur URL-Generierung verwendet.
  • N8N_WEBHOOK_URL Für die korrekte Funktion von Webhooks ist eine öffentlich zugängliche URL erforderlich.
  • POSTGRES_DB, POSTGRES_USER, POSTGRES_PASSWORT PostgreSQL-Datenbankverbindungsinformationen
  • N8N_GENERIC_TIMEZONE : Zeitzone, die sich auf die Ausführung von Arbeitsabläufen auswirkt

DER docker-compose.yml umfasst zwei Hauptdienstleistungen:

  • postgres : basiert auf dem offiziellen PostgreSQL-Image mit der Konfiguration von Umgebungsvariablen, Volumes für die Persistenz und Integritätsprüfungen
  • n8n Offizielles Docker-Image n8n, Konfiguration von Umgebungsvariablen zur Verbindung der Anwendung mit der Datenbank, Portverwaltung, Volume zur Speicherung von Daten und Dateien, Integritätsabhängigkeit von PostgreSQL

Durch die Konfiguration über diese beiden Dateien erstellen Sie eine Umgebung automatisiert, reproduzierbar und leicht modifizierbarDies ist die kombinierte Stärke von freier Software, Docker und Linux. Diese Methode schützt Sie außerdem vor Abhängigkeitsfehlern oder Versionsinkompatibilitäten.

Starten und Verwalten von Docker-Containern für n8n auf einem Linux-System

Sobald die Umgebung eingerichtet ist, müssen Sie sicherstellen, dass die Berechtigungen der eingebundenen Ordner korrekt sind, damit der n8n-Container keine Probleme beim Schreiben seiner Dateien hat. In den meisten Fällen ist die Einstellung `chmod 777` für den Ordner, der die Daten von n8n enthalten soll, erforderlich. Diese Vorgehensweise ist jedoch mit Risiken verbunden und erfordert ein umfassendes Verständnis der damit verbundenen Möglichkeiten.

Durch Starten der Container mit dem folgenden Befehl können Sie die Hintergrunddienste initiieren und bereitstellen:

  • sudo docker compose up -d

Überwachen Sie den Status der Container über:

  • sudo docker compose ps um die Liste der aktiven Container und deren Status anzuzeigen
  • sudo docker compose logs -f Die Ausgabeprotokolle in Echtzeit anzuzeigen, ist im Problemfall unerlässlich.

Der PostgreSQL-Container muss sich in einem fehlerfreien Zustand befinden, damit n8n korrekt eine Verbindung herstellen und fehlerfrei starten kann. Die Protokolle enthalten Meldungen wie die folgenden:

„Der Editor ist jetzt über folgende Adresse erreichbar: https://n8n.it-connect.local“

Diese Meldung bestätigt, dass der Dienst betriebsbereit ist und über Port 5678 mit dem konfigurierten Domainnamen im Browser erreichbar ist. Die Verwendung eines Log-Managers vereinfacht die Fehlersuche bei der Bereitstellung komplexer Lösungen auf Basis von Node.js, PostgreSQL-Datenbanken und Middleware erheblich.

Konfigurieren Sie einen Nginx-Reverse-Proxy, um n8n unter Linux über HTTPS zu sichern und bereitzustellen.

Ein Reverse-Proxy ist eine grundlegende Komponente für den sicheren Zugriff auf n8n, insbesondere bei der Verwendung von Webhooks oder der Bereitstellung Ihrer Automatisierung im Internet. Nginx ist unter Linux aufgrund seiner geringen Größe, Zuverlässigkeit und einfachen Konfiguration eine optimale Wahl. Anstatt den Docker-Port 5678 direkt freizugeben, fungiert Nginx als Vermittler und ermöglicht die Anwendung eines SSL/TLS-Zertifikats sowie die Verwaltung wichtiger HTTP-Weiterleitungen und -Header.

Hier die wichtigsten Schritte:

  • Installieren Sie Nginx über den Paketmanager, zum Beispiel sudo apt install nginx auf Debian/Ubuntu.
  • Erstellen Sie ein Verzeichnis zum Speichern des selbstsignierten oder von Let’s Encrypt generierten SSL-Zertifikats.
  • Generieren Sie ein Zertifikat mit OpenSSL (oder über Certbot für Let’s Encrypt):

sudo openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/nginx/ssl/n8n.key -out /etc/nginx/ssl/n8n.crt

Die Nginx-Konfiguration muss zwei Serverblöcke enthalten:

  • Ein Block, der auf Port 80 lauscht und eine 301-Weiterleitung zu HTTPS durchführt.
  • Ein HTTPS-Block mit Zertifikat, Unterstützung für die Protokolle TLS 1.2 und 1.3 sowie proxy_pass-Konfiguration. http://127.0.0.1:5678 wobei n8n rotiert.

Die grundlegende Konfigurationsdatei sieht folgendermaßen aus (der Domänenname muss angepasst werden):

Auszug aus der Nginx-Konfiguration:

Server {
    listen 80;
    server_name n8n.example.com;
    return 301 https://$server_name$request_uri;
}

Server {
    listen 443 ssl http2;
    server_name n8n.example.com;

    ssl_certificate /etc/nginx/ssl/n8n.crt;
    ssl_certificate_key /etc/nginx/ssl/n8n.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers off;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    Vermietung / {
        proxy_pass http://127.0.0.1:5678;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        Proxy-Pufferung aus;
        proxy_read_timeout 300s;
    }
}

Aktivierung dieser Website über einen symbolischen Link in /etc/nginx/sites-enabled/ Anschließend ist ein Neuladen von Nginx unerlässlich:

  • sudo ln -s /etc/nginx/sites-available/n8n.example.com /etc/nginx/sites-enabled/
  • sudo systemctl reload nginx

Unter https://n8n.example.com gelangen Sie zur n8n-Verwaltungsoberfläche, die durch HTTPS geschützt ist. Bei einem selbstsignierten Zertifikat kann eine SSL-Zertifikatswarnung erscheinen; dieses Problem lässt sich jedoch über eine anerkannte Zertifizierungsstelle beheben.

Erste Schritte mit n8n: Workflows, Webhooks und API-Integrationen unter Linux verwalten

Sobald n8n installiert und zugänglich ist, ermöglicht die Workflow-Konfiguration die volle Nutzung der Automatisierung. n8n basiert auf Node.js und bietet native Unterstützung für Hunderte von Diensten über deren APIs, wodurch komplexe Automatisierungsketten vereinfacht werden. Zu den wichtigsten Konzepten gehören:

  • Arbeitsabläufe : automatisierte Aufgabenabläufe, die Skripte, API-Aufrufe und verschiedene Auslöser umfassen können.
  • Webhooks : HTTP-Einstiegspunkte, die es ermöglichen, einen Workflow von außen auszulösen; entscheidend für die Reaktion auf externe Ereignisse.
  • Integrationen : Native Konnektoren für MySQL, PostgreSQL, Redis und viele andere, die die Datenverbindung erleichtern.

Praxisbeispiel: Automatische Synchronisierung von CRM-Daten mit einer MySQL-Datenbank nach Empfang eines Webhooks, ausgelöst durch ein Kundenformular. Diese Orchestrierung vermeidet manuelle Fehler, reduziert die Bearbeitungszeit und entlastet die Mitarbeiter.

n8n bietet zudem eine intuitive grafische Oberfläche und sofort einsatzbereite Vorlagen, die über GitHub oder die offizielle Website zugänglich sind und so die Einrichtung auch für Einsteiger beschleunigen. Zur Verbesserung des Warteschlangenmanagements in großen Produktionsworkflows wird die Verwendung von Redis als Zwischenspeicher empfohlen.

Die Synergie zwischen Docker, Linux und n8n vereinfacht traditionell komplexe Bereitstellungen. Diese modulare Architektur erleichtert Updates und Debugging und bietet kontrollierte Skalierbarkeit, um das Wachstum der Automatisierungsnutzung zu unterstützen.