Skip to content
BotServBotServ
ChatwootKundenserviceHelpdeskSelf-HostingOpen SourceOmnichannelSupport

Chatwoot self-hosted: Kundenservice-Plattform mit KI

Chatwoot self-hosten: Open-Source-Kundenservice mit Omnichannel (Website, WhatsApp, E-Mail). KI-Integration mit Ollama für automatische Antworten.

S

schutzgeist

4 min read
Chatwoot self-hosted

Chatwoot self-hosted: Kundenservice-Plattform mit KI

Was dieser Artikel behandelt

  • Was Chatwoot ist: Open-Source-Kundenservice mit Omnichannel.
  • Docker-Setup und Kanal-Einrichtung (Website, E-Mail, WhatsApp).
  • KI-Integration: Ollama beantwortet Tickets automatisch oder entwirft Antworten.
  • Agenten-Workflows, Automatisierungen, Labels und Routing.
  • Vergleich zu Rocket.Chat-Omnichannel und Intercom.

Einleitung

Chatwoot ist die Open-Source-Alternative zu Intercom/Zendesk: eine Kundenservice-Plattform, die alle Kommunikationskanäle in einer Inbox vereint: Website-Chat-Widget, E-Mail, WhatsApp Business, Telegram, Facebook, sogar Telefon-Integrationen. Agenten bearbeiten alles in einer Oberfläche.

Für KI-Self-Hoster ist Chatwoot die ideale Front für KI-gestützten Support: Nachrichten kommen an → Ollama entwirft Antwort → Agent prüft und sendet (oder KI antwortet automatisch bei einfachen Fällen). Human-in-the-loop by design.

Typische Anwendungsszenarien

  • KI-First-Level-Support: KI beantwortet Standardfragen, Menschen übernehmen komplexe Fälle.
  • Omnichannel-Inbox: Website, WhatsApp, E-Mail, alles landet in einer Queue.
  • Antwort-Entwürfe: Agenten bekommen KI-generierte Entwürfe zur Prüfung (Copilot-Modus).
  • Auto-Kategorisierung: KI labelt Tickets (Bug, Billing, Frage) und routet sie.
  • Übergabe von Bots: Typebot oder eigener Bot eskaliert an Chatwoot.

Installation: Docker

Chatwoot ist eine Rails-App mit Postgres + Redis:

services:
  chatwoot:
    image: chatwoot/chatwoot:latest
    ports: ["127.0.0.1:3000:3000"]
    environment:
      - SECRET_KEY_BASE=langer-zufaelliger-key
      - FRONTEND_URL=https://support.deine-domain.de
      - POSTGRES_HOST=postgres
      - POSTGRES_USERNAME=chatwoot
      - POSTGRES_PASSWORD=geheim
      - POSTGRES_DATABASE=chatwoot
      - REDIS_URL=redis://redis:6379
      - MAILER_SENDER_EMAIL=support@deine-domain.de
      - SMTP_ADDRESS=smtp.dein-server.de
      - SMTP_PORT=587
      - SMTP_USERNAME=...
      - SMTP_PASSWORD=...
    volumes: [chatwoot_data:/app/storage]
    depends_on: [postgres, redis]
    restart: always

  chatwoot-worker:
    image: chatwoot/chatwoot:latest
    command: bundle exec sidekiq -C config/sidekiq.yml
    environment: *same-env-vars*
    volumes: [chatwoot_data:/app/storage]
    depends_on: [postgres, redis]
    restart: always

  postgres:
    image: postgres:16
    environment:
      POSTGRES_USER: chatwoot
      POSTGRES_PASSWORD: geheim
      POSTGRES_DB: chatwoot
    volumes: [pg_data:/var/lib/postgresql/data]
    restart: always

  redis:
    image: redis:7
    volumes: [redis_data:/data]
    restart: always

volumes:
  chatwoot_data:
  pg_data:
  redis_data:

Nach dem Start: docker exec chatwoot bundle exec rails db:prepare für DB-Setup, dann Setup-Wizard.

Kanäle einrichten

  • Website-Livechat: Inbox → Website → Widget-Snippet auf Deine Seite (wie Rocket.Chat Livechat, aber als dedizierte Support-Plattform).
  • E-Mail: Eingehende Mails an support@ werden zu Tickets.
  • WhatsApp Business: Über Twilio/360dialog oder direkt über WhatsApp Cloud API.
  • Telegram: Bot-Token eintragen: Telegram-Nachrichten werden zu Tickets.
  • API-Kanal: Eigene Integrationen per Chatwoot-API.

KI-Integration: Ollama als Support-Agent

Chatwoot hat Webhooks (bei jeder neuen Nachricht) + REST-API (Antworten posten). Der KI-Agent dazwischen:

from flask import Flask, request
import requests
import ollama

app = Flask(__name__)
CW = "https://support.deine-domain.de"
CW_TOKEN = "dein-api-access-token"
client = ollama.Client(host="http://ollama:11434")

@app.route("/webhook", methods=["POST"])
def webhook():
    data = request.json
    if data.get("event") != "message_created":
        return {"ok": True}
    if data.get("message_type") != "incoming":   # nur Kunden-Nachrichten
        return {"ok": True}

    convo_id = data["conversation"]["id"]
    text = data.get("content", "")

    # Konversations-Kontext aus Chatwoot laden
    msgs = requests.get(
        f"{CW}/api/v1/accounts/1/conversations/{convo_id}/messages",
        headers={"api_access_token": CW_TOKEN}).json()
    history = [{"role": "user" if m["message_type"] == 0 else "assistant",
                "content": m["content"]} for m in msgs["payload"][-10:]]

    resp = client.chat(model="llama3.1:8b", messages=[
        {"role": "system", "content":
         "Du bist Support-Agent. Antworte kurz, hilfreich. "
         "Wenn Du unsicher bist, sag 'Ich leite an einen Kollegen weiter'."}
    ] + history)
    answer = resp["message"]["content"]

    # Antwort als Agent posten
    requests.post(
        f"{CW}/api/v1/accounts/1/conversations/{convo_id}/messages",
        headers={"api_access_token": CW_TOKEN},
        json={"content": answer})
    return {"ok": True}

Copilot- statt Auto-Antwort

Sicherer für Business: KI postet Entwurf als private Note (nicht an den Kunden), Agent prüft und sendet:

# private_note: True → nur intern sichtbar
requests.post(url, json={"content": f"[KI-Entwurf]\n{answer}",
                         "private": True})

Automatisierung in Chatwoot selbst

Eingebaute Automation-Rules (ohne Code):

  • Label-Zuordnung nach Keywords
  • Auto-Assignment an Agenten-Teams
  • SLA-Tracking und Eskalation
  • Canned Responses (vorgefertigte Antworten)

Mit KI-Webhooks erweiterbar: KI labelt → Automation routet.

Sicherheit und Datenschutz

  • DSGVO: On-premise → Kundendaten bleiben bei Dir, der Hauptgrund vs. Intercom/Zendesk.
  • Kundendaten: Support-Chat enthält personenbezogene Daten: HTTPS, Zugriff nur für Agenten.
  • API-Token: Pro Integration eigenen Token.
  • KI-Transparenz: Kunden sollten wissen, ob sie mit KI oder Mensch sprechen (im Bot-Namen/Intro kenntlich machen).

Chatwoot vs. Alternativen

ToolStärkeSchwäche
ChatwootOmnichannel, Agenten-Inbox, KI-fähigRails-App, etwas schwerer
Rocket.ChatTeam-Chat + OmnichannelSupport-Features schwächer
IntercomAusgereifteste KI-FeaturesCloud, sehr teuer
TypebotNo-Code-FlowsKeine Agenten-Inbox

Key Takeaways:

  • Chatwoot = Open-Source-Intercom: Omnichannel-Support (Website, Mail, WhatsApp) in einer Inbox.
  • Webhooks + API → Ollama beantwortet Tickets oder entwirft Antworten für Agenten.
  • Human-in-the-loop: Copilot-Modus (KI-Entwurf → Mensch prüft) ist der sichere Weg.
  • Self-hosted → Kundendaten bleiben bei Dir (DSGVO).
  • Die beste Open-Source-Wahl für echten Kundenservice mit KI.

FAQ

Kann die KI komplett automatisch antworten?

Ja technisch (Webhook → Ollama → Antwort posten). Empfohlen ist aber der Copilot-Modus: KI schreibt private Entwürfe, Agent prüft und sendet. Für Kundenservice sicherer.

Welche Kanäle?

Website-Widget, E-Mail, WhatsApp Business, Telegram, Facebook, Instagram, SMS, Voice, alles in einer Inbox. Die Kern-Stärke von Chatwoot.

Chatwoot oder Rocket.Chat für Support?

Chatwoot ist eine dedizierte Support-Plattform (Tickets, Agenten, SLAs, Routing). Rocket.Chat ist ein Team-Chat mit Omnichannel als Feature. Für reinen Kundenservice: Chatwoot. Für Team-Chat + gelegentlichen Support: Rocket.Chat.

Ressourcen?

Rails + Postgres + Redis + Sidekiq-Worker: ~1,5-2 GB RAM. Etwas schwerer als ein einzelner Container, aber für einen VPS/Mini-PC okay.

Kostenlos?

Community Edition: Open Source, kostenlos, alle Kern-Features. Cloud-Version mit Hosting und Enterprise-Features kostet, für Self-Hoster nicht nötig.

WhatsApp-Anbindung?

Ja, über die offizielle WhatsApp Business Cloud API oder BSPs wie Twilio/360dialog. WhatsApp-Nachrichten werden zu Tickets, Agenten/KI antworten aus der Inbox.

Quellen und weiterführende Literatur

Zurück zum KI Blog
Share:

Ähnliche Beiträge