Zurück zum Blog

Incident Report: Chatbot-Ausfall durch Docker-Upgrade

Was ist passiert?

Am 9. Juli 2026 hat ein routinemäßiges Docker Engine Update auf dem Produktivserver (ssh2.matzka.cloud) eine unerwartete Kaskade ausgelöst: Der Chatbot auf matzka.cloud konnte keine Verbindung mehr zur Vektordatenbank (Qdrant) herstellen und beantwortete inhaltliche Fragen nur noch mit einer Fehlermeldung.

Die Symptome

Der erste Hinweis war ein TimeoutError in den n8n-Logs — direkt in der Embedding-Funktion:

TimeoutError
  at Object.wrapOpenAIClientError
  at .../langchain/openai/src/embeddings.ts:258

Der Chatbot beantwortete einfache Grüße noch korrekt, weil diese keinen Vektorsuch-Schritt benötigen. Sobald eine inhaltliche Frage gestellt wurde, lief der Embedding-Aufruf in einen Timeout. Ohne Vektor kein Qdrant-Lookup, kein Kontext, keine Antwort.

Die Architektur

Der n8n-Chatbot-Workflow auf dem Server nutzt:

  • Qdrant (lokal auf dem Server) als Vektordatenbank
  • LiteLLM auf dem lokalen KI-Rechner (Win11, RTX 4070 Ti) als OpenAI-kompatibler Proxy
  • Ollama für die eigentlichen Modelle: Qwen3:14b (LLM) und nomic-embed-cpu (Embeddings)
  • Headscale (selbst-gehostetes Tailscale-VPN) für die Verbindung Server → Win11

Für jede Nutzeranfrage läuft: Frage → Embedding generieren (Win11) → Qdrant-Suche (lokal) → LLM-Antwort (Win11).

Die Ursache

Das Docker Engine Update hat dazu geführt, dass der Tailscale-Daemon (tailscaled) auf dem Server seine gecachten WireGuard-Keys für den Win11-Peer verloren hat.

Das Heimtückische: tailscale ping funktionierte weiterhin — es nutzt ein internes Disco-Protokoll, das den TUN-Adapter umgeht. Alle regulären IP-Pakete (TCP, ICMP) wurden von Win11 hingegen still gedroppt.

Ein tcpdump auf dem Tailscale-Interface zeigte es deutlich: SYN-Pakete gingen raus, kein SYN-ACK kam zurück. Alle Ports auf Win11 waren vom Server aus unerreichbar — trotz korrekter Headscale-ACL, deaktivierter Windows Firewall und aktivierter Tailscale-Option "Allow incoming connections".

Der entscheidende Hinweis: In der Headscale-Node-Liste zeigte der Server als "Last seen" den Vortag — obwohl er als online markiert war.

Die Nebenprobleme

Durch den erzwungenen Neustart des Win11-Rechners (als Diagnoseschritt) entstanden zwei weitere Probleme:

WSL2-Kernel-Crash: Docker Desktop startete nicht mehr:

Wsl/Service/RegisterDistro/CreateVm/HCS/ERROR_FILE_NOT_FOUND

Fix: wsl --update — aktualisiert den WSL2-Kernel und behebt den häufigsten Fall nach ungeplanten Neustarts.

LiteLLM Virtual Key verloren: Die Neuinstallation von Docker Desktop setzte die LiteLLM-Postgres-Datenbank zurück. Alle zuvor erstellten Virtual Keys waren weg, n8n erhielt 401-Fehler. Fix: Den Master Key direkt als API-Key konfigurieren.

Die Lösung (in Reihenfolge)

  1. wsl --update auf Win11 → Docker Desktop startet wieder
  2. systemctl restart tailscaled auf dem Server → frische WireGuard-Keys von Headscale
  3. LiteLLM Master Key in n8n-Konfiguration eintragen
  4. n8n neu starten

Lektionen

tailscale ping lügt. Es beweist nur Disco-Protokoll-Konnektivität, nicht IP-Erreichbarkeit. Für echte Tests: curl oder Test-NetConnection direkt auf einen Service-Port.

Nach jedem Docker-Upgrade auf dem Server: tailscaled neu starten und Win11-Erreichbarkeit prüfen:

systemctl restart tailscaled
curl -s --max-time 5 http://100.64.0.3:4000/health

Virtual Keys sind flüchtig. LiteLLM Virtual Keys in PostgreSQL überleben keine Docker-Desktop-Neuinstallation. Für Produktionssysteme den Master Key direkt verwenden.

Gesamtausfall

Ca. 4 Stunden — Chatbot beantwortete in dieser Zeit nur generische Grüße, inhaltliche Fragen schlugen fehl.