Installation des n8n AI Starter Kits mit Ollama
Das Self-hosted AI Starter Kit ist eine Docker-Compose-Vorlage des n8n-Teams zum Erstellen von KI-Workflows, die vollständig auf Ihrem eigenen Server laufen. Prompts und Dokumente werden von einem lokalen Sprachmodell verarbeitet und nicht an externe KI-Dienste gesendet.
Das Kit besteht aus vier Komponenten:
- n8n, die Plattform zur Workflow-Automatisierung mit KI-Nodes;
- Ollama, das offene Sprachmodelle lokal ausführt;
- Qdrant, eine Vektordatenbank zum Speichern und Durchsuchen von Dokument-Embeddings;
- PostgreSQL, die Datenbank für n8n.
Das offizielle Kit wird von seinen Autoren als nur für Testzwecke gedacht gekennzeichnet. Zum Zeitpunkt der Erstellung dieser Anleitung weist es, wenn es wie in seiner README beschrieben ausgeführt wird, auf einem Server mit öffentlicher IP-Adresse mehrere Probleme auf: n8n, Ollama und Qdrant sind aus dem Internet erreichbar, Ollama und Qdrant besitzen keine Authentifizierung, die Secrets in der Konfiguration sind bei jeder Installation identisch, und der Demo-Workflow wird nicht importiert. Diese Anleitung installiert das Kit unverändert und behebt all das mit einer separaten Override-Datei, sodass Sie das Kit weiterhin aus seinem Repository aktualisieren können.
Diese Anleitung wurde für Ubuntu 24.04 LTS, n8n 2.47.3, Ollama 0.40.16, Qdrant 1.20.0, Docker 29 und Docker Compose v5 geschrieben.
Bevor Sie beginnen
Sie benötigen:
- einen Server mit Ubuntu 24.04 LTS und Root-Zugriff per SSH;
- mindestens 15 GB freien Speicherplatz: Die Docker-Images belegen etwa 11 GB und das Standardmodell Llama 3.2 etwa 2 GB;
- eine Domain oder Subdomain für n8n, zum Beispiel
n8n.example.com, mit einem A-Record, der auf die IPv4-Adresse des Servers zeigt.
Ohne GPU läuft das Modell auf der CPU und antwortet langsam. Für den regelmäßigen Einsatz wählen Sie einen Server mit NVIDIA-GPU.
Alle folgenden Befehle werden als root ausgeführt. Wenn Sie als normaler Benutzer mit sudo-Rechten arbeiten, stellen Sie jedem Befehl sudo voran.
Docker installieren
Installieren Sie Docker Engine und das Compose-Plugin aus dem offiziellen Docker-Repository:
apt update && apt install -y ca-certificates curl git install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc chmod a+r /etc/apt/keyrings/docker.asc
Fügen Sie das Repository hinzu:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" > /etc/apt/sources.list.d/docker.list
Installieren Sie die Pakete und prüfen Sie die Versionen:
apt update apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker --version docker compose version
Das Kit herunterladen
Klonen Sie das Repository nach /opt und erstellen Sie die Konfigurationsdatei aus der Beispieldatei:
cd /opt git clone https://github.com/n8n-io/self-hosted-ai-starter-kit.git cd self-hosted-ai-starter-kit cp .env.example .env
Die Standard-Secrets ersetzen
Die Beispieldatei enthält feste Werte, etwa password für PostgreSQL und super-secret-key für den Verschlüsselungsschlüssel von n8n. Sie sind in jeder Kopie des Kits gleich, ersetzen Sie sie daher durch zufällige Werte:
sed -i "s/^POSTGRES_PASSWORD=.*/POSTGRES_PASSWORD=$(openssl rand -hex 24)/" .env sed -i "s/^N8N_ENCRYPTION_KEY=.*/N8N_ENCRYPTION_KEY=$(openssl rand -hex 32)/" .env sed -i "s/^N8N_USER_MANAGEMENT_JWT_SECRET=.*/N8N_USER_MANAGEMENT_JWT_SECRET=$(openssl rand -hex 32)/" .env chmod 600 .env
N8N_ENCRYPTION_KEY verschlüsselt die Zugangsdaten (Credentials), die Sie in n8n speichern. N8N_USER_MANAGEMENT_JWT_SECRET signiert Benutzersitzungen.
Kopieren Sie die Datei .env an einen sicheren Ort außerhalb des Servers, zum Beispiel in einen Passwortmanager. Ohne N8N_ENCRYPTION_KEY lassen sich in n8n gespeicherte Zugangsdaten nach einer Wiederherstellung nicht mehr entschlüsseln.
Ports schließen und HTTPS hinzufügen
In der Datei docker-compose.yml des Kits sind n8n (Port 5678), Ollama (11434) und Qdrant (6333) auf allen Netzwerkschnittstellen veröffentlicht. Docker legt für veröffentlichte Ports eigene Firewall-Regeln an, die UFW umgehen. Auf einem Server mit öffentlicher IP-Adresse bedeutet das: Jeder kann den n8n-Editor über unverschlüsseltes HTTP öffnen und die APIs von Ollama und Qdrant nutzen, die keine Authentifizierung besitzen.
Anstatt docker-compose.yml zu bearbeiten, erstellen Sie daneben die Datei docker-compose.override.yml. Docker Compose liest diese Datei automatisch und wendet sie auf die Hauptdatei an. Die eigenen Dateien des Kits bleiben unverändert, sodass ein Update aus dem Repository Ihre Einstellungen nicht überschreibt.
Erstellen Sie /opt/self-hosted-ai-starter-kit/docker-compose.override.yml und ersetzen Sie n8n.example.com durch Ihre Domain:
services: n8n: ports: !override - "127.0.0.1:5678:5678" environment: - N8N_HOST=n8n.example.com - N8N_PROTOCOL=https - N8N_PROXY_HOPS=1 - N8N_WEBHOOK_URL=https://n8n.example.com/ ollama-cpu: ports: !reset [] ollama-gpu: ports: !reset [] qdrant: ports: !reset [] caddy: image: caddy:2 restart: unless-stopped networks: ['demo'] ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile:ro - caddy_data:/data - caddy_config:/config volumes: caddy_data: caddy_config:
Das ändert diese Datei:
- n8n lauscht nur auf
127.0.0.1, und Benutzer erreichen es über Caddy per HTTPS; - Ollama und Qdrant werden überhaupt nicht veröffentlicht, n8n erreicht sie über das interne Docker-Netzwerk unter den Namen
ollamaundqdrant; - Caddy wird als Reverse-Proxy hinzugefügt, der ein Let's-Encrypt-Zertifikat bezieht und erneuert, sofern die Domain auf den Server zeigt und die Ports 80 und 443 offen sind;
- die Daten-Volumes für n8n, PostgreSQL, Qdrant und Ollama bleiben so, wie sie in der
docker-compose.ymldes Kits definiert sind; die Override-Datei ändert sie nicht.
Die Zeile networks: ['demo'] ist erforderlich. Alle Dienste des Kits laufen im Netzwerk demo, und ohne diese Zeile kann Caddy n8n nicht erreichen und gibt den Fehler 502 zurück.
N8N_WEBHOOK_URL legt die Adresse fest, die n8n für Webhooks verwendet, einschließlich des Chat-Fensters im Editor. Die Domain muss von dem Rechner aus, auf dem Sie n8n öffnen, auf Ihren Server aufgelöst werden. Ist das nicht der Fall, zeigt der Chat nur die Meldung „Failed to receive response" an, ohne DNS als Ursache zu nennen.
Erstellen Sie /opt/self-hosted-ai-starter-kit/Caddyfile mit Ihrer Domain:
n8n.example.com { reverse_proxy n8n:5678 }
Prüfen Sie die zusammengeführte Konfiguration:
docker compose --profile cpu config | grep -A4 "ports:"
Aufgelistet sein sollten nur n8n auf 127.0.0.1:5678 und Caddy auf den Ports 80 und 443.
Die Firewall konfigurieren
Die Override-Datei hält die internen Dienste des Kits bereits aus dem Netzwerk heraus. UFW blockiert den gesamten übrigen eingehenden Datenverkehr zum Server, mit Ausnahme von SSH, HTTP und HTTPS. Erlauben Sie diese und aktivieren Sie UFW:
ufw allow OpenSSH ufw allow 80/tcp ufw allow 443/tcp ufw --force enable
Das Kit starten
Starten Sie den Stack im CPU-Modus:
docker compose --profile cpu up -d
Beim ersten Start lädt Docker etwa 11 GB an Images herunter, und ein separater Container lädt das Modell Llama 3.2 herunter. Das dauert je nach Verbindungsgeschwindigkeit eine Weile. Prüfen Sie, ob das Modell vorhanden ist:
docker exec ollama ollama list
Die Liste sollte llama3.2:latest enthalten.
Prüfen Sie, dass auf dem Server nur die erwarteten Ports offen sind:
ss -tlnp
Die Ports 80 und 443 sollten auf allen Schnittstellen offen sein, Port 5678 nur auf 127.0.0.1. Die Ports 11434 und 6333 dürfen nicht in der Liste erscheinen.
Das Kit verwendet PostgreSQL 16. Im n8n-Log kann eine Warnung erscheinen, dass diese Version außerhalb des unterstützten Bereichs liegt. Diese Warnung beeinträchtigt die Funktion von n8n nicht.
Den Demo-Workflow importieren
Das Kit enthält einen Demo-Workflow und zwei Demo-Zugangsdaten. Sie sollten eigentlich beim ersten Start importiert werden, doch zum Zeitpunkt der Erstellung besteht die Importprüfung in der docker-compose.yml des Kits nie, sodass nichts importiert wird. Führen Sie den Import manuell aus:
docker compose --profile cpu run --rm n8n-import -c "n8n import:credentials --separate --input=/demo-data/credentials" docker compose --profile cpu run --rm n8n-import -c "n8n import:workflow --separate --input=/demo-data/workflows"
Die Option -c ist erforderlich: Der Dienst n8n-import startet eine Shell, und ohne -c schlägt der Befehl mit der Fehlermeldung „can't open 'n8n'" fehl.
Das Owner-Konto erstellen
Öffnen Sie https://n8n.example.com in Ihrem Browser und erstellen Sie das Owner-Konto: Geben Sie Ihre E-Mail-Adresse, Ihren Vor- und Nachnamen sowie ein Passwort mit mindestens 8 Zeichen, mindestens einer Ziffer und mindestens einem Großbuchstaben ein. Nach der ersten Anmeldung zeigt n8n möglicherweise eine kurze Umfrage und das Angebot eines kostenlosen Lizenzschlüssels für einige Funktionen der Community Edition an. Beides ist optional.
Die Übersichtsseite listet den importierten Demo workflow auf.

Die Demo-Zugangsdaten korrigieren
Die Demo-Zugangsdaten wurden mit dem Standardschlüssel aus .env.example verschlüsselt. Nachdem Sie N8N_ENCRYPTION_KEY ersetzt haben, kann n8n sie nicht mehr entschlüsseln, daher müssen beide erneut ausgefüllt werden. Die Einstellungen werden mit Ihrem eigenen Schlüssel verschlüsselt gespeichert.
Öffnen Sie Overview, wechseln Sie zum Tab Credentials und öffnen Sie Local Ollama service. Die Verbindung schlägt fehl, und das Feld Base URL zeigt http://localhost:11434. Innerhalb des n8n-Containers ist localhost n8n selbst, nicht Ollama.

Setzen Sie Base URL auf http://ollama:11434, lassen Sie API Key leer und klicken Sie auf Save. n8n testet die Verbindung und zeigt Connection tested successfully an.

Öffnen Sie Local QdrantApi database. Setzen Sie Qdrant URL auf http://qdrant:6333, lassen Sie API Key leer und klicken Sie auf Save.

Den Demo-Workflow testen
Öffnen Sie Demo workflow. Er enthält drei Nodes: Chat Trigger empfängt eine Nachricht, Basic LLM Chain reicht sie an das Modell weiter, und Ollama Chat Model sendet sie an Llama 3.2 in Ollama.

Klicken Sie unten auf der Arbeitsfläche (Canvas) auf Open chat und senden Sie eine kurze Frage. Die Nodes werden während der Ausführung des Workflows grün, und die Antwort des Modells erscheint im Chat. Die erste Antwort dauert länger, weil Ollama das Modell in den Arbeitsspeicher lädt.

Zeigt der Chat „Failed to receive response" an und startet der Workflow nicht, prüfen Sie, ob die Domain in N8N_WEBHOOK_URL von Ihrem Rechner aus auf Ihren Server aufgelöst wird.
Eine NVIDIA-GPU verwenden
Verfügt der Server über eine NVIDIA-GPU, kann das Kit Ollama darauf ausführen. Dafür benötigt Docker das NVIDIA Container Toolkit. Wenn Sie die GPU auf diesem Server noch nicht mit Docker verwendet haben, installieren Sie es zuerst gemäß der Ollama-Docker-Anleitung.
Starten Sie das Kit anschließend mit dem Profil gpu-nvidia statt cpu:
docker compose --profile gpu-nvidia up -d
Die obige Override-Datei schließt den Ollama-Port für dieses Profil bereits. Verwenden Sie dasselbe Profil in allen weiteren Befehlen. Zum Beispiel den Demo-Import mit dem GPU-Profil:
docker compose --profile gpu-nvidia run --rm n8n-import -c "n8n import:credentials --separate --input=/demo-data/credentials" docker compose --profile gpu-nvidia run --rm n8n-import -c "n8n import:workflow --separate --input=/demo-data/workflows"
Und das Update:
cd /opt/self-hosted-ai-starter-kit git pull docker compose --profile gpu-nvidia pull docker compose --profile gpu-nvidia up -d
Das Kit aktualisieren
Um die Dateien und Images des Kits zu aktualisieren, führen Sie die Befehle mit dem von Ihnen verwendeten Profil aus:
cd /opt/self-hosted-ai-starter-kit git pull docker compose --profile cpu pull docker compose --profile cpu up -d
Ihre Dateien docker-compose.override.yml, Caddyfile und .env sind nicht Teil des Repositorys, daher ändert git pull sie nicht.
Wie geht es weiter?
Das Kit ist bereit für Ihre eigenen KI-Workflows. Von hier aus können Sie:
- weitere Modelle mit
docker exec ollama ollama pullgefolgt vom Modellnamen herunterladen und sie im Node Ollama Chat Model auswählen; - Qdrant nutzen, um Ihre eigenen Dokumente mit den Vector-Store-Nodes in n8n zu durchsuchen;
- Ihre Dienste anbinden und Workflows erstellen, die sie mit dem lokalen Modell kombinieren.
Für eine allgemeine n8n-Installation ohne KI-Komponenten lesen Sie die Anleitung Installation von n8n mit Docker und PostgreSQL. Sie erklärt auch, wie Sie eine n8n-Datenbank sichern und wiederherstellen.