Zwei der nützlichsten Self-Hosted-Tools kombiniert: n8n für Workflow-Automatisierung und Ollama für lokale LLMs. Das Ergebnis ist ein AI-Automatisierungsstack, der vollständig unter deiner Kontrolle läuft — keine Tokens, keine Datenweitergabe, keine API-Kosten.

Das Setup

Beide Dienste laufen per Docker. Ein gemeinsames Netzwerk erlaubt n8n, direkt mit der Ollama-API zu kommunizieren:

services:
  n8n:
    image: n8nio/n8n:latest
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=sicherespasswort
      - WEBHOOK_URL=https://n8n.deinedomain.de
    volumes:
      - n8n_data:/home/node/.n8n
    networks:
      - ai-stack

  ollama:
    image: ollama/ollama:latest
    restart: unless-stopped
    volumes:
      - ollama_data:/root/.ollama
    networks:
      - ai-stack
    # GPU einkommentieren wenn vorhanden:
    # deploy:
    #   resources:
    #     reservations:
    #       devices:
    #         - driver: nvidia
    #           count: all
    #           capabilities: [gpu]

networks:
  ai-stack:

volumes:
  n8n_data:
  ollama_data:
docker compose up -d

# Modell vorabladen
docker exec -it ollama-ollama-1 ollama pull llama3.2

n8n ist unter http://localhost:5678 erreichbar.

n8n mit Ollama verbinden

n8n hat seit Version 1.x einen nativen Ollama-Node. Unter Settings → Credentials → New Credential → Ollama:

  • Base URL: http://ollama:11434 (interner Docker-Hostname)

Alternativ nutzt du den HTTP Request-Node direkt gegen die Ollama-API — mehr Kontrolle über Parameter wie Temperatur und System-Prompt.

Workflow-Beispiele

1. E-Mail-Zusammenfassung

Neue E-Mails per IMAP holen, den Inhalt durch ein LLM schicken und eine Zusammenfassung in ein Notion-Dokument oder Slack-Kanal schreiben.

Trigger: IMAP E-Mail (alle 5 Minuten)
  → Set Node: E-Mail-Body extrahieren + kürzen (max. 4000 Zeichen)
  → Ollama Chat Model: "Fasse diese E-Mail in 3 Sätzen zusammen auf Deutsch: {{$json.body}}"
  → Slack / Notion / Telegram: Zusammenfassung posten

System Prompt-Tipp: Gib dem Modell eine klare Rolle:

Du bist ein präziser Assistent, der E-Mails zusammenfasst. 
Antworte immer auf Deutsch. Nutze maximal 3 Sätze. 
Hebe wichtige Fristen oder Anfragen am Ende hervor.

2. Monitoring-Alert-Klassifizierung

Wenn dein Monitoring (Grafana, Prometheus, Zabbix) einen Alert auslöst, bewertet das LLM automatisch die Dringlichkeit und entscheidet, ob der Oncall-Dienst geweckt werden muss.

Trigger: Webhook (von Grafana Alertmanager)
  → HTTP Request: Letzte Metriken aus Prometheus holen
  → Code Node: Alert-Details + Metriken zusammenstellen
  → Ollama: "Klassifiziere diesen Alert als KRITISCH, WARNUNG oder INFO:
              Alert: {{$json.alertname}}
              Wert: {{$json.value}}
              Schwellwert: {{$json.threshold}}
              Kontext der letzten Stunde: {{$json.metrics}}"
  → Switch Node: KRITISCH → PagerDuty, WARNUNG → Slack, INFO → Nur loggen

Das LLM beurteilt, ob ein Spike um 3 Uhr morgens ein echter Vorfall ist oder reguläres Batch-Verhalten. Weniger False-Positive-Wakeups, besserer Schlaf.

3. Log-Zusammenfassung für den Tagesbericht

Täglich um 08:00 Uhr alle Fehler-Logs der letzten 24 Stunden aggregieren und eine lesbare Zusammenfassung erstellen.

Trigger: Schedule (08:00 Uhr täglich)
  → HTTP Request: Loki oder Elasticsearch nach ERROR-Level-Logs fragen
  → Code Node: Logs auf 8000 Zeichen kürzen + deduplizieren
  → Ollama: "Analysiere diese Server-Logs und erstelle einen Tagesbericht:
              - Häufigste Fehler (Top 3)
              - Neue Fehler die gestern nicht auftraten
              - Empfohlene Maßnahmen
              Logs: {{$json.logs}}"
  → E-Mail / Slack: Bericht versenden

4. Dokumenten-Klassifizierung

Eingehende Dokumente (Rechnungen, Verträge, Tickets) automatisch kategorisieren und in den richtigen Ordner ablegen.

Trigger: FTP/SFTP Watch oder Nextcloud Webhook
  → Read Binary File: Datei lesen
  → HTTP Request: Ollama mit PDF-Text
    Body: {
      "model": "llama3.2",
      "prompt": "Klassifiziere dieses Dokument: RECHNUNG, VERTRAG, TICKET, SONSTIG.
                 Antworte nur mit der Kategorie, ohne Erklärung.\n\n{{$json.content}}"
    }
  → Switch: Je nach Antwort in anderen Ordner verschieben

Modellwahl

Nicht jedes Modell passt zu jedem Task:

Use-CaseEmpfohlenes ModellRAM
Textzusammenfassungllama3.2:3b oder gemma3:4b4 GB
Klassifizierunggemma3:4b4 GB
Strukturierte Ausgabe (JSON)mistral:7b8 GB
Code-Analyseqwen2.5-coder:7b8 GB
Komplexe Analysellama3.1:8b10 GB

Für Automatisierungen ohne Nutzerinteraktion bevorzuge ich kleinere Modelle: schneller, weniger RAM, und für klar definierte Tasks wie Klassifizierung genauso gut wie große Modelle.

Structured Output für zuverlässige Workflows

Das größte Problem mit LLMs in Automatisierungen: die Ausgabe ist unvorhersehbar. Ein Modell antwortet mal mit “KRITISCH”, mal mit “Das ist ein kritischer Fehler”. Der Switch-Node in n8n versteht nur eine Form.

Lösung: Ollama unterstützt strukturierte Ausgabe per JSON-Schema:

{
  "model": "llama3.2",
  "prompt": "Klassifiziere diesen Alert: ...",
  "format": {
    "type": "object",
    "properties": {
      "severity": { "type": "string", "enum": ["CRITICAL", "WARNING", "INFO"] },
      "reason":   { "type": "string" },
      "wakeOncall": { "type": "boolean" }
    },
    "required": ["severity", "reason", "wakeOncall"]
  }
}

Das Modell gibt garantiert valides JSON in dieser Struktur zurück. Im n8n Code-Node lässt sich das direkt parsen:

const result = JSON.parse($input.first().json.response);
return [{ json: result }];

Tipps für den Produktivbetrieb

Timeout beachten: Kleinere Modelle brauchen auf CPU 10–60 Sekunden. n8n’s Standard-HTTP-Timeout ist 30 Sekunden. Bei längeren Anfragen im HTTP Request-Node den Timeout erhöhen oder stream: false setzen.

Kontext begrenzen: LLMs arbeiten mit einem Kontextfenster. Lange Logs oder E-Mails vor dem Senden kürzen — $json.text.slice(0, 4000) ist ein pragmatischer Anfang. Zu lange Eingaben verlangsamen das Modell und bringen weniger gute Ergebnisse.

Retry-Logik: Modell-Timeouts passieren. Im n8n Error-Workflow einen Retry mit exponential backoff einbauen.

Modell vorwärmen: Ollama lädt Modelle bei der ersten Anfrage in den RAM. Bei zeitkritischen Workflows empfiehlt sich ein Warmup-Ping beim Start: ollama run llama3.2 "".

Logging: Jeden Ollama-Call mit Eingabe, Ausgabe und Dauer in eine Tabelle (Airtable, Notion, Postgres) schreiben. Hilft beim Debuggen und beim Tuning der Prompts über Zeit.