Skip to content
BotServBotServ
TwentyCRMSalesforceSelf-HostingOpen SourceVertriebKundenmanagement

Twenty CRM self-hosted: Salesforce-Alternative für KMU

Twenty self-hosten: Open-Source-CRM als Salesforce-Alternative. Installation, Konfiguration, API und KI-Integration für Vertrieb.

S

schutzgeist

3 min read
Twenty CRM self-hosted

Twenty CRM self-hosted: Salesforce-Alternative für KMU

Was dieser Artikel behandelt

  • Was Twenty ist: modernes Open-Source-CRM, „Salesforce für Entwickler”.
  • Docker-Setup und erste Konfiguration.
  • Datenmodell: Companies, People, Opportunities, Workflows.
  • REST/GraphQL-API für Integrationen.
  • KI-Anbindung: Lead-Scoring und Follow-ups mit Ollama.

Einleitung

Twenty ist das jüngste ernstzunehmende Open-Source-CRM, explizit als „Entwickler-freundliche Salesforce-Alternative” gebaut. React-Frontend, NestJS-Backend, Postgres darunter. Modernes UI, saubere API, aktiv entwickelt.

Für kleine und mittlere Unternehmen, die Kundendaten selbst hosten wollen (DSGVO!), ist Twenty die pragmatischste Wahl: deutlich schlanker als Salesforce/SuiteCRM, aber vollwertig für Vertrieb.

Typische Anwendungsszenarien

  • Vertrieb-Pipeline: Deals, Stages, Aktivitäten, klassisches CRM.
  • Lead-Management: Leads aus Website-Formularen → Twenty → KI qualifiziert.
  • Kunden-360: Alle Interaktionen pro Kunde an einem Ort.
  • KI-gestützte Follow-ups: Ollama schreibt Follow-up-Entwürfe zu offenen Deals.
  • Newsletter-Export: Segmente exportieren für Mail-Workflows.

Installation: Docker

services:
  twenty:
    image: twentycrm/twenty:latest
    ports:
      - "127.0.0.1:3000:3000"
    environment:
      - PG_DATABASE_URL=postgres://twenty:geheim@db:5432/twenty
      - SERVER_URL=https://crm.deine-domain.de
      - FRONT_URL=https://crm.deine-domain.de
      - ACCESS_TOKEN_SECRET=langer-zufaelliger-string
      - LOGIN_TOKEN_SECRET=langer-zufaelliger-string-2
      - REFRESH_TOKEN_SECRET=langer-zufaelliger-string-3
      - FILE_STORAGE_TYPE=local
    volumes: [twenty_data:/app/packages/twenty-server/.local-storage]
    depends_on: [db]
    restart: always

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

volumes:
  twenty_data:
  pg_data:

Nach dem Start: http://localhost:3000 → Sign-up → ersten Workspace anlegen.

Datenmodell

  • Companies: Firmen
  • People: Kontaktpersonen (verlinkt zu Companies)
  • Opportunities: Deals mit Stage-Pipeline (Kanban!)
  • Tasks/Notes: Aktivitäten
  • Custom Objects: Eigene Objekt-Typen definieren

Das Modell ist bewusst Salesforce-ähnlich: Migration und Gedankenübertragung einfach.

API für Integrationen

Twenty hat REST UND GraphQL. API-Key in Settings → APIs:

# Companies listen
curl -H "Authorization: Bearer DEIN_API_KEY" \
  "https://crm.deine-domain.de/rest/companies"

# Person anlegen
curl -X POST -H "Authorization: Bearer DEIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":{"firstName":"Max","lastName":"Mustermann"},
       "emails":{"primaryEmail":"max@firma.de"}}' \
  "https://crm.deine-domain.de/rest/people"

KI-Integration: Lead-Scoring und Follow-ups

import requests
import ollama

TWENTY = "https://crm.deine-domain.de"
HEADERS = {"Authorization": "Bearer DEIN_API_KEY"}
client = ollama.Client(host="http://ollama:11434")

# Offene Opportunities ohne Aktivität seit 7 Tagen
deals = requests.get(f"{TWENTY}/rest/opportunities",
    headers=HEADERS).json()["data"]

for deal in deals["opportunities"]:
    prompt = f"""Deal: {deal['name']}
Stage: {deal['stage']}
Betrag: {deal.get('amount',{}).get('amountMicros',0)/1e6}€
Letzte Aktivität: {deal.get('updatedAt')}

Schreibe einen kurzen, freundlichen Follow-up-E-Mail-Entwurf (3-4 Sätze)."""

    draft = client.chat(model="llama3.1:8b",
        messages=[{"role":"user","content":prompt}])["message"]["content"]

    # Als Task/Note an den Deal hängen
    requests.post(f"{TWENTY}/rest/notes", headers=HEADERS, json={
        "title": "KI-Follow-up-Vorschlag",
        "body": draft,
        "targets": [{"opportunityId": deal["id"]}],
    })

n8n-Integration

Twenty hat Webhooks (Settings → Webhooks → bei Objekt-Events HTTP-Call). Typischer Flow:

Twenty-Webhook: neuer Lead
    │
    ▼
Ollama: Lead-Daten anreichern (Branche schätzen, Priorität)
    │
    ▼
Twenty-API: Felder aktualisieren + Task für Vertrieb anlegen
    │
    ▼
Wenn Score > X → Slack/Telegram-Alert an Sales

Sicherheit

  • Secrets: Die drei Token-Secrets in .env müssen lang und zufällig sein.
  • HTTPS: Reverse Proxy (Caddy): CRM enthält sensible Kundendaten.
  • API-Keys: Pro Integration eigenen Key, in Twenty revokierbar.
  • DSGVO: On-premise = keine AVV mit US-Anbieter nötig, großer Pluspunkt gegenüber Salesforce/HubSpot.

Twenty vs. Alternativen

CRMStärkeSchwäche
TwentyModernes UI, Open Source, dev-freundlichJung, weniger Features als SuiteCRM
SuiteCRMReif, mächtigAltes UI, schwerfällig
HubSpotMarketing-IntegrationCloud, teuer, Daten bei US-Anbieter
SalesforceBranchenstandardTeuer, komplex, Cloud
NocoDBLeichter als CRMKein echtes CRM-Modell
  • IRC-Coding.de: Programmier-Tutorials: GraphQL, REST-APIs.
  • NocoDB: Für leichtere Daten-Hubs.
  • Chatwoot: Kundenservice-Pendant.
  • n8n: Workflow-Automatisierung.
  • Docker: Container-Grundlagen.

Key Takeaways:

  • Twenty = modernes Open-Source-CRM, „entwicklerfreundliches Salesforce”.
  • Docker + Postgres, saubere REST/GraphQL-API, Kanban-Pipeline.
  • On-premise → DSGVO-freundlich ohne AVV.
  • KI-Integration: Lead-Scoring, Follow-up-Entwürfe, Daten-Anreicherung.
  • Für KMU der beste Open-Source-CRM-Einstieg.

FAQ

Ist Twenty produktionsreif?

Für KMU-Vertrieb ja: Kern-Features (Companies, People, Pipeline, Tasks) sind stabil. Es ist jünger als SuiteCRM, also weniger Edge-Case-Features, aber sehr aktiv entwickelt.

Kann ich aus Salesforce/HubSpot migrieren?

Ja, per CSV-Import (UI) oder API. Das Datenmodell ist Salesforce-ähnlich, was die Migration vereinfacht. Für große Migrationen: API-Skript.

E-Mail-Integration?

Ja: Twenty kann Gmail/Outlook per OAuth anbinden und E-Mails automatisch den richtigen Kontakten zuordnen. Kalender-Sync ebenfalls.

Eigene Felder/Objekte?

Ja: Custom Fields und Custom Objects sind ein Kernfeature. Damit lässt sich Twenty auch für Nicht-Standard-CRM-Zwecke nutzen (z. B. Partner-Management, Projekte).

Ressourcen?

~1-1,5 GB RAM für die App + Postgres. Läuft problemlos neben anderen Self-Hosted-Diensten auf einem VPS oder Mini-PC.

Mobile App?

Responsive Web-UI funktioniert auf Mobilgeräten; eine native App gibt es (noch) nicht, das ist einer der bekannten Gaps gegenüber Salesforce.

Quellen und weiterführende Literatur

Zurück zum KI Blog
Share:

Ähnliche Beiträge