⚡ N8N

n8n im Eigenheim: Smarte Workflows mit Docker Compose

n8n im Eigenheim: Smarte Workflows mit Docker Compose
⚠️ Hinweis: Alle Guides auf smoth.me dienen ausschließlich zu Informations- und Lernzwecken. Die Umsetzung erfolgt auf eigene Gefahr. Wir übernehmen keine Haftung für Schäden, Datenverluste oder Systemausfälle, die durch die Anwendung dieser Anleitungen entstehen können. → Vollständiger Haftungsausschluss

Moin, liebe Home Lab-Enthusiasten und Admins!

Wer kennt das nicht? Immer wiederkehrende Aufgaben, die uns im Alltag oder im Home Lab wertvolle Zeit rauben. Ob das nun das regelmäßige Aufräumen von Downloads, das Prüfen von Server-Status, das Versenden von Benachrichtigungen oder das Synchronisieren von Daten ist – manuell ist das auf Dauer mühsam und fehleranfällig. Genau hier kommt die Prozessautomatisierung ins Spiel, und in meiner Erfahrung gibt es kaum ein mächtigeres und flexibleres Tool für uns im Home Lab als n8n.

Der Heise-Artikel, den ich kürzlich über "Automation Anywhere" gelesen habe, sprach von robotergestützter Prozessautomatisierung. Das klingt natürlich erstmal nach großen Enterprise-Lösungen, aber die Essenz – manuelle Abläufe in smarte Workflows zu verwandeln – ist genau das, was wir auch im Kleinen, in unseren eigenen vier Wänden, erreichen können. Und zwar mit Open Source, viel Kontrolle und ohne horrende Lizenzkosten. Für mich ist n8n der Game-Changer, um genau diese Vision im Home Lab umzusetzen.

Ich selbst nutze n8n seit Jahren auf meinem Proxmox-Server, entweder in einem dedizierten LXC oder als Docker-Container. Die Flexibilität, die es bietet, um Dienste wie Home Assistant, Docker, meine Netzwerkgeräte oder auch externe APIs miteinander zu verknüpfen, ist schlichtweg genial. In diesem Guide zeige ich dir, wie du n8n mit Docker Compose aufsetzt und deine ersten Schritte in die Welt der smarten Workflows machst. Das ist kein Hexenwerk, aber wer das zum ersten Mal einrichtet, stolpert oft über Kleinigkeiten. Keine Sorge, ich habe die meisten davon schon hinter mir und teile meine Learnings mit dir.

Warum n8n im Home Lab?

Im Gegensatz zu vielen kommerziellen RPA-Suiten, die oft überteuert und auf bestimmte Anwendungsfälle zugeschnitten sind, ist n8n eine extrem anpassbare und quelloffene Lösung. Für uns im Home Lab bedeutet das:

  • Kostenersparnis: Keine Lizenzgebühren für die Kernfunktionalität. Du hostest es selbst, du kontrollierst es.
  • Flexibilität: Mit über 400 Integrationen (Nodes) kannst du quasi alles miteinander verbinden – von lokalen Diensten wie Home Assistant und Datenbanken bis hin zu Cloud-Services und APIs.
  • Datenschutz: Deine Daten bleiben bei dir. Da n8n auf deinem eigenen Server läuft, verlassen sensible Informationen dein Netzwerk nicht ungefragt.
  • Lernkurve: Die visuelle Workflow-Erstellung ist intuitiv, erfordert aber ein gewisses Verständnis für Logik und Datenflüsse. Einmal drin, ist es aber extrem mächtig.
  • Community: Eine aktive Community und gute Dokumentation helfen bei Problemen und Inspiration.

Für mich ist n8n das Schweizer Taschenmesser der Automatisierung. Ich nutze es, um morgens den Kaffee zu starten, wenn mein Smart-Home-System erkennt, dass ich wach bin, um meinen Plex-Server bei Bedarf herunterzufahren oder um mir eine Nachricht zu senden, wenn ein bestimmter Docker-Container nicht mehr läuft. Die Möglichkeiten sind schier endlos.

Voraussetzungen

Bevor wir loslegen, stellen wir sicher, dass dein System bereit ist. Du brauchst keine High-End-Hardware, aber ein paar Dinge sind wichtig:

  • Hardware: Ein dedizierter Server, eine VM oder ein LXC auf Proxmox, ein Raspberry Pi 4/5 oder ein Intel NUC. Wichtig ist ausreichend RAM – mindestens 4 GB RAM sind für n8n selbst und das darunterliegende System empfehlenswert. Mit 2 GB geht es auch, aber es wird eng, wenn du viele Workflows hast oder andere Dienste parallel laufen. Eine SSD ist immer ein Plus für die Performance, besonders bei vielen Logs und Workflow-Ausführungen.
  • Betriebssystem: Eine aktuelle Linux-Distribution. Ich persönlich präferiere Ubuntu Server (LTS) oder Debian, da sie stabil sind und eine große Community haben.
  • Software:
    • Docker: Die Container-Plattform, auf der n8n laufen wird.
    • Docker Compose: Um n8n und seine Abhängigkeiten (falls vorhanden) einfach zu definieren und zu starten.
  • Netzwerk: Dein Server sollte eine feste IP-Adresse im lokalen Netzwerk haben. Dies vereinfacht den Zugriff und die Konfiguration. Der Port 5678 (oder ein anderer, den du wählst) muss auf dem Server frei und von deinem Client-PC aus erreichbar sein.
  • Grundkenntnisse: Du solltest dich auf der Linux-Kommandozeile wohlfühlen, grundlegende Docker-Befehle kennen und ein Verständnis für YAML-Dateien mitbringen.

Schritt-für-Schritt-Anleitung: n8n mit Docker Compose aufsetzen

Wir gehen das Ganze Schritt für Schritt durch. Mein Tipp: Nimm dir Zeit und lies die Erklärungen zu den Befehlen, das hilft ungemein, das Gesamtbild zu verstehen.

1. Server vorbereiten

Als Erstes verbinden wir uns mit deinem Server per SSH und bringen alles auf den neuesten Stand. Das ist gute Praxis und verhindert oft Probleme mit veralteten Paketen.

sudo apt update
sudo apt upgrade -y

Danach installieren wir Docker und Docker Compose. Die offizielle Installationsanleitung von Docker ist hier immer die beste Quelle, da sich die Befehle manchmal ändern können. Für Debian/Ubuntu sieht das in der Regel so aus:

# Docker installieren
sudo apt install ca-certificates curl gnupg lsb-release -y
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

# Aktuellen Benutzer zur Docker-Gruppe hinzufügen (optional, aber bequem)
sudo usermod -aG docker $USER
# Logout und wieder einloggen, damit die Gruppenänderung wirksam wird
# oder alternativ: newgrp docker

Wichtig zu wissen: Nach dem Hinzufügen des Benutzers zur Docker-Gruppe musst du dich einmal aus- und wieder einloggen, damit die Änderungen wirksam werden. Alternativ kannst du auch den Befehl newgrp docker ausführen, um die neue Gruppe in deiner aktuellen Shell zu aktivieren. Überprüfe die Installation mit docker run hello-world. Wenn ein "Hello from Docker!" erscheint, ist alles bestens.

2. Projektverzeichnis und Docker Compose-Datei erstellen

Ich lege gerne für jede Anwendung ein eigenes Verzeichnis an. Das hält das System sauber und übersichtlich.

mkdir -p ~/n8n
cd ~/n8n

Jetzt erstellen wir die docker-compose.yml-Datei. Diese Datei ist das Herzstück unserer Docker Compose-Konfiguration. Sie beschreibt, wie unser n8n-Container gestartet werden soll.

nano docker-compose.yml

Füge den folgenden Inhalt in die Datei ein. Ich habe hier eine robuste Konfiguration gewählt, die du für den Start gut verwenden kannst. Achte besonders auf die Umgebungsvariablen!

version: '3.8'

services:
  n8n:
    image: n8nio/n8n
    container_name: n8n
    restart: always
    ports:
      - "5678:5678" # Port für den Zugriff auf n8n
    volumes:
      - ~/.n8n:/home/node/.n8n # Persistente Speicherung der n8n-Daten
    environment:
      # Allgemeine Einstellungen
      - N8N_HOST=localhost # Oder deine Server-IP/Domain, wenn du einen Reverse Proxy nutzt
      - N8N_PORT=5678
      - N8N_PROTOCOL=http # Wenn kein Reverse Proxy mit HTTPS davor ist
      - WEBHOOK_URL=http://:5678/ # WICHTIG: Ersetze 
      - TZ=Europe/Berlin # Zeitzone anpassen

      # Datenbank-Einstellungen (Standard: SQLite, für den Start ausreichend)
      # Wenn du Postgres nutzen möchtest, müsstest du weitere Services hinzufügen
      - DB_TYPE=sqlite
      - DB_SQLITE_VACUUM_ON_STARTUP=true # Datenbank optimieren beim Start

      # Authentifizierung (WICHTIG für Sicherheit!)
      # Aktiviere dies, sobald du n8n extern erreichbar machst
      # - N8N_BASIC_AUTH_ACTIVE=true
      # - N8N_BASIC_AUTH_USER=admin
      # - N8N_BASIC_AUTH_PASSWORD=DeineSicherePasswort123! # UNBEDINGT ÄNDERN!

      # Weitere Einstellungen
      - N8N_METRICS_ENABLED=true # Für Monitoring
      - N8N_EDITOR_BASE_URL=http://:5678/ # Für korrekte Links im Editor

      # Optional: Für mehr Performance bei vielen Workflows
      # - N8N_EXECUTION_MODE=main
      # - N8N_QUEUE_TYPE=redis # Benötigt Redis Service
      # - N8N_DATA_PRUNE_MAX_AGE=720 # Alte Ausführungen nach 30 Tagen löschen (in Stunden)

Mein Tipp: Die Zeile WEBHOOK_URL ist extrem wichtig, besonders wenn du später Webhooks nutzen möchtest (was du definitiv tun wirst!). Ersetze <DEINE_SERVER_IP> durch die tatsächliche IP-Adresse deines Servers. Wenn du später einen Reverse Proxy (wie Nginx Proxy Manager) mit SSL einrichtest, musst du diese Variable und N8N_PROTOCOL entsprechend anpassen. Starte fürs Erste mit HTTP und deiner lokalen IP-Adresse.

Wichtig zu wissen: Die volumes-Zeile ~/.n8n:/home/node/.n8n sorgt dafür, dass deine Workflows, Credentials und n8n-Einstellungen auch nach einem Neustart des Containers oder des Servers erhalten bleiben. Ohne das würden alle deine Workflows bei jedem Neustart verloren gehen. Das ist ein häufiger Fehler bei Docker-Anfängern!

Sicherheitshinweis: Die Zeilen für N8N_BASIC_AUTH_ACTIVE, N8N_BASIC_AUTH_USER und N8N_BASIC_AUTH_PASSWORD habe ich im Beispiel auskommentiert. Sobald du n8n über dein lokales Netzwerk hinaus erreichbar machst (z.B. über einen Reverse Proxy und eine Domain), solltest du diese Zeilen aktivieren und ein extrem sicheres Passwort wählen! Für den reinen lokalen Test kannst du sie vorerst deaktiviert lassen.

3. n8n starten

Speichere die Datei (Strg+O, Enter, Strg+X) und starte n8n mit Docker Compose:

docker compose up -d

Der Parameter -d sorgt dafür, dass der Container im Hintergrund läuft. Überprüfe den Status des Containers:

docker compose ps
docker compose logs n8n

Wenn alles glattgeht, siehst du, dass der n8n-Container läuft und die Logs keine kritischen Fehlermeldungen enthalten.

4. Erster Login und grundlegende Konfiguration

Öffne nun deinen Webbrowser und navigiere zu http://<DEINE_SERVER_IP>:5678. Du solltest die n8n-Oberfläche sehen und wirst aufgefordert, einen ersten Benutzer anzulegen. Folge den Anweisungen, um deinen Admin-Account einzurichten. Danach landest du im n8n-Editor, wo du deine ersten Workflows erstellen kannst.

Dein erster Workflow: Home Assistant Benachrichtigung bei Wetteränderung

Um das Ganze greifbarer zu machen, bauen wir einen einfachen Workflow. Stell dir vor, du möchtest eine Benachrichtigung auf deinem Handy erhalten, wenn es in deiner Gegend anfängt zu regnen. Wir nutzen dafür n8n, einen Wetter-Service und Home Assistant.

Ziel: Prüfe alle 30 Minuten das Wetter und sende eine Home Assistant Notification, wenn Regen erwartet wird.

Vorbereitung in Home Assistant:

Stelle sicher, dass du die Mobile App auf deinem Handy installiert und konfiguriert hast, sodass du Benachrichtigungen empfangen kannst. Du benötigst außerdem ein Long-Lived Access Token von Home Assistant. Gehe dazu in Home Assistant zu deinem Profil (unten links), scrolle ganz nach unten und erstelle ein neues "Long-Lived Access Token". Kopiere es sofort, es wird nur einmal angezeigt!

Workflow in n8n erstellen:

  1. Neuen Workflow erstellen: Klicke im n8n-Editor auf "Add new Workflow".
  2. Start-Node (Trigger):
    • Suche nach der Node "Cron" und füge sie hinzu.
    • Konfiguriere sie so, dass sie alle 30 Minuten ausgelöst wird. Wähle unter "Mode" -> "Every X" und stelle "Value" auf 30 und "Unit" auf "Minutes".
  3. Wetterdaten abrufen:
    • Suche nach der Node "HTTP Request" und füge sie hinzu.
    • Wir nutzen eine einfache Wetter-API. OpenWeatherMap ist hier eine gute Wahl. Du brauchst einen kostenlosen API-Key.
    • Konfiguriere die HTTP Request Node:
      • Method: GET
      • URL: https://api.openweathermap.org/data/2.5/weather?q=DeineStadt,DE&appid=DEIN_OPENWEATHERMAP_API_KEY&units=metric (Ersetze DeineStadt und DEIN_OPENWEATHERMAP_API_KEY)
      • Setze "Response Format" auf "JSON".
  4. Regenprüfung (Logic):
    • Suche nach der Node "IF" und füge sie hinzu.
    • Verbinde die "HTTP Request"-Node mit der "IF"-Node.
    • Konfiguriere die "IF"-Node:
      • Wähle "Value 1": Klicke auf das Zahnrad-Symbol neben dem Feld und wähle "Current Node" -> "HTTP Request" -> "json" -> "weather" -> "0" -> "main". Dies sollte den Haupt-Wetterzustand (z.B. "Rain", "Clouds", "Clear") liefern.
      • Wähle "Operation": "Is equal to"
      • Wähle "Value 2": Rain
  5. Benachrichtigung senden (Action):
    • Verbinde den "True"-Ausgang der "IF"-Node mit einer neuen Node.
    • Suche nach der Node "Home Assistant" und füge sie hinzu.
    • Wichtig: Du musst zuerst eine "Credential" für Home Assistant erstellen. Klicke in der Home Assistant Node auf "Add new credential", gib ihr einen Namen (z.B. "Home Assistant API") und füge deinen Long-Lived Access Token in das Feld "Access Token" ein. Die "Base URL" ist die URL deiner Home Assistant Instanz (z.B. http://deine-homeassistant-ip:8123).
    • Konfiguriere die Home Assistant Node:
      • Resource: Notification
      • Operation: Send
      • Target: mobile_app_dein_handyname (den genauen Namen findest du in den Home Assistant Entwicklerwerkzeugen unter "Dienste" bei notify.mobile_app_...)
      • Title: Es beginnt zu regnen!
      • Message: Pack den Regenschirm ein, in {{ $json.name }} ({{ $json.main.temp }}°C) beginnt es zu regnen! (Hier nutzen wir Daten aus der Wetter-API mit n8n-Ausdrücken)
  6. Workflow aktivieren: Klicke oben rechts auf "Active", um den Workflow zu starten. Du kannst ihn auch manuell über den "Execute Workflow"-Button testen.

Dieser Workflow demonstriert die grundlegende Funktionsweise: Ein Trigger startet den Workflow, Daten werden abgerufen, Logik entscheidet über den weiteren Verlauf und eine Aktion wird ausgeführt. Die Flexibilität, Daten von einer Node zur nächsten zu übergeben ($json), ist dabei ein Kernstück von n8n.

Wichtige n8n-Konzepte für den Start

  • Nodes: Die Bausteine deiner Workflows. Es gibt Trigger-Nodes (starten einen Workflow), Logic-Nodes (entscheiden über den Fluss) und Action-Nodes (führen Aktionen aus).
  • Workflows: Die Kette von verbundenen Nodes, die eine bestimmte Aufgabe automatisieren.
  • Credentials: Hier speicherst du sicher deine API-Schlüssel, Passwörter und Tokens. n8n verschlüsselt diese Daten, sodass sie nicht direkt in deinen Workflows sichtbar sind. Ein absolutes Muss für die Sicherheit.
  • Webhooks: n8n kann Webhooks bereitstellen, die du von externen Diensten aufrufen kannst. Das ist extrem mächtig, um Ereignisse von anderen Systemen (z.B. Home Assistant) zu empfangen und darauf zu reagieren.
  • Ausdrücke (Expressions): Mit {{ $json.some.path }} kannst du Daten aus vorherigen Nodes in nachfolgenden Nodes verwenden. Das ist die Magie, die n8n so flexibel macht.

Häufige Fehler und Lösungen

In meiner Erfahrung stolpert man bei der Einrichtung und den ersten Workflows gerne über die gleichen Probleme. Hier sind ein paar typische Fehler und wie du sie behebst:

1. n8n Container startet nicht oder ist nicht erreichbar

  • Problem: Du kannst die n8n-Oberfläche im Browser nicht erreichen oder der Container beendet sich sofort nach dem Start.
  • Lösung:
    • Portkonflikt: Prüfe, ob Port 5678 (oder der von dir gewählte Port) bereits von einem anderen Dienst auf deinem Server verwendet wird. Nutze sudo netstat -tulnp | grep 5678. Wenn dort etwas angezeigt wird, musst du entweder den Port in deiner docker-compose.yml ändern (z.B. "5679:5678") oder den anderen Dienst beenden.
    • Falsche Docker Compose Syntax: YAML ist sehr empfindlich, was Einrückungen angeht. Schon ein falsches Leerzeichen kann die Datei unlesbar machen. Überprüfe deine docker-compose.yml genau.
    • Container-Logs prüfen: Der wichtigste Schritt! Mit docker compose logs n8n siehst du, was beim Start des Containers passiert. Oft sind dort klare Fehlermeldungen zu finden, z.B. fehlende Berechtigungen oder Konfigurationsfehler.
    • Docker Daemon läuft nicht: Überprüfe mit sudo systemctl status docker, ob der Docker-Dienst überhaupt aktiv ist.

2. Workflows funktionieren nicht wie erwartet

  • Problem: Dein Workflow wird ausgelöst, aber die Aktion wird nicht ausgeführt oder liefert falsche Ergebnisse.
  • Lösung:
    • Workflow-Logs in n8n UI prüfen: Jeder Workflow-Durchlauf wird geloggt. Klicke in n8n auf den Workflow, dann oben rechts auf "Executions". Dort siehst du, welche Nodes erfolgreich waren und welche fehlgeschlagen sind, inklusive Fehlermeldungen und den Input/Output jeder Node. Das ist Gold wert für die Fehlersuche!
    • Test-Ausführungen nutzen: Klicke auf "Execute Workflow" im Editor, um den Workflow manuell zu starten und den Datenfluss schrittweise zu verfolgen. Du siehst dann direkt, welche Daten von Node zu Node fließen.
    • Falsche Credentials: Überprüfe, ob deine API-Schlüssel oder Tokens in den Credentials noch gültig sind und korrekt eingetragen wurden.
    • API-Fehler: Wenn du externe APIs nutzt (wie im Wetter-Beispiel), können die Fehler auch dort liegen. Prüfe die API-Dokumentation und die Rückmeldungen im HTTP Request Node.
    • Logikfehler: Besonders bei "IF"-Nodes oder komplexeren Ausdrücken können Tippfehler oder falsche Annahmen zu Problemen führen. Teste Zwischenschritte und nutze die Debug-Informationen der Nodes.

3. Performance-Probleme oder Speicherplatzmangel

  • Problem: n8n wird langsam, die Oberfläche reagiert träge oder der Speicherplatz auf deinem Server geht zur Neige.
  • Lösung:
    • Zu wenig RAM: n8n kann bei vielen Workflows und aktiven Ausführungen hungrig nach RAM sein. Wenn dein Server nur 2 GB hat, überlege, ob du auf 4 GB oder mehr aufstocken kannst. Dies ist besonders wichtig, wenn du SQLite als Datenbank nutzt, da alles im RAM gehalten wird.
    • Langsame I/O: Wenn dein Server eine langsame SD-Karte oder HDD nutzt, kann das die Performance stark beeinträchtigen, besonders beim Schreiben von Logs und Datenbankzugriffen. Eine SSD ist hier ein großer Vorteil.
    • Zu viele Workflow-Ausführungen speichern: Standardmäßig speichert n8n alle Ausführungen. Wenn du viele Workflows hast, kann das schnell viel Speicherplatz belegen. Du kannst dies in deiner docker-compose.yml über Umgebungsvariablen steuern. Füge z.B. - N8N_DATA_PRUNE_MAX_AGE=720 hinzu, um Ausführungen nach 30 Tagen (720 Stunden) automatisch zu löschen. Ein docker compose down und docker compose up -d ist danach nötig, um die Änderung anzuwenden.
    • Datenbank-Optimierung: Für SQLite kann DB_SQLITE_VACUUM_ON_STARTUP=true helfen, die Datenbank beim Start zu optimieren. Für größere Installationen solltest du über die Migration zu PostgreSQL nachdenken.

Fazit

Herzlichen Glückwunsch! Du hast jetzt deine eigene n8n-Instanz am Laufen und vielleicht sogar schon deinen ersten Workflow gebaut. Das ist der erste Schritt in eine Welt, in der deine Routinen automatisiert werden und du mehr Zeit für die wirklich spannenden Projekte in deinem Home Lab hast.

n8n ist ein unglaublich mächtiges Tool, das dir hilft, die Vision der "smarten Workflows" direkt in deinem Zuhause umzusetzen. Es erfordert ein bisschen Einarbeitung, aber die Investition lohnt sich definitiv. Experimentiere, probiere verschiedene Nodes aus und lass dich von der Community inspirieren. Die Möglichkeiten sind, wie gesagt, nahezu unbegrenzt.

Was sind die nächsten Schritte?

  • Reverse Proxy mit SSL: Richte einen Reverse Proxy (z.B. Nginx Proxy Manager oder Traefik) ein, um n8n über eine Domain mit SSL (Let's Encrypt) sicher erreichbar zu machen. Das ist ein Muss, wenn du

Weitere Guides aus "N8N"

Home Lab Security: Härten deiner Home Assistant & N8N Umgebung
Dieser Guide zeigt dir, wie du deine Home Assistant und N8N Installationen im Home Lab mit bewährten…
Energie-Cockpit: Homelab-Resilienz mit HA & n8n
Lerne, wie du dein Heimlabor mit Home Assistant und n8n energieeffizienter und resilienter machst. S…
smoth.me automatisch befüllen: N8N Workflows für Content-Erstellung & Instagram
Wie ich smoth.me vollautomatisch mit Guides befülle und diese direkt auf Instagram teile – mit zwei …
Daten-Gold schürfen: n8n und Docker für deine Heim-Archive
Lerne, wie du mit n8n und Docker Daten aus öffentlichen Quellen automatisiert abrufst, verarbeitest …