Twenty CRM Installation auf Ubuntu 24.04 mit Caddy und automatischen SSL-Zertifikaten
Sie interessieren sich für das vorgestellte Produkt?
Sprechen Sie uns an! Bei WZ-IT übernehmen wir Beratung, Installation, Support, Betrieb, Wartung und Monitoring Ihrer Lösung.
Vereinbaren Sie hier Ihr kostenloses und unverbindliches Gespräch:
Termin vereinbaren.
Twenty CRM ist eine moderne, schlanke Alternative zu umfangreichen CRM-Systemen wie Odoo. Als Open-Source-Lösung ermöglicht es Ihnen, die volle Kontrolle über Ihre Kundendaten zu behalten und gleichzeitig von einer benutzerfreundlichen, modernen Oberfläche zu profitieren. In dieser Anleitung zeigen wir Ihnen, wie Sie Twenty CRM auf einem Ubuntu 24.04 Server installieren und automatisch SSL-Zertifikate von Let's Encrypt mit Caddy einrichten.
Voraussetzungen
- Ein Ubuntu 24.04 Server (z.B. ein VPS von Hetzner oder einem anderen Anbieter)
- Zugriff auf den Server via SSH
- Domain, die auf den Server zeigt (mind. A Eintrag) (z.B.
crm.example.com
)
In unserem Beispiel verwenden wir die Domain crm-demo.wz-it.com
. Sie können diese Domain in der Anleitung durch Ihre eigene Domain ersetzen. Wir haben die Domain mit einem A Eintrag auf die IP-Adresse des Servers gesetzt, auf dem wir Twenty CRM installieren möchten. Hier ein Auszug aus der DNS-Konfiguration:

Schritt 1: Server vorbereiten
Wir melden uns per SSH als root oder einem Benutzer mit sudo-Rechten auf dem Server an und aktualisieren die Paketliste:
apt update && apt upgrade -y
Schritt 2: Docker und Docker Compose installieren
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
rm get-docker.sh
Dieses Skript installiert die neuste Version von Docker und Docker Compose. Schauen Sie sich auch gerne den Inhalt des Skripts an, um zu verstehen, was genau passiert. Generell ist es keine gute Idee, Skripte aus dem Internet blind auszuführen, aber in diesem Fall ist es eine gängige Methode, um Docker zu installieren.
Schritt 3: Benutzer für Twenty CRM erstellen
Wir erstellen einen neuen Benutzer, der später für die Twenty CRM Installation verwendet wird. Außerdem fügen wir den Benutzer zur Docker-Gruppe hinzu, damit er Docker-Befehle ohne sudo ausführen kann. Dies ist wichtig, da Twenty CRM in Docker-Containern läuft und der Benutzer Zugriff auf die Docker-Ressourcen benötigt.
adduser --system --group --home /opt/twenty twenty
sudo usermod -aG docker twenty
Schritt 4: Twenty CRM Installation vorbereiten
Wir wechseln in das Benutzerverzeichnis und erstellen die notwendigen Dateien für Twenty CRM:
cd /opt/twenty
Zuerst erstellen wir die Docker Compose Konfiguration:
sudo -u twenty nano docker-compose.yml
Fügen Sie folgenden Inhalt ein:
name: twenty
services:
server:
image: 'twentycrm/twenty:${TAG:-latest}'
volumes:
- server-local-data:/app/packages/twenty-server/.local-storage
environment:
NODE_PORT: 3000
PG_DATABASE_URL: 'postgres://${PG_DATABASE_USER:-postgres}:${PG_DATABASE_PASSWORD:-postgres}@${PG_DATABASE_HOST:-db}:${PG_DATABASE_PORT:-5432}/postgres'
SERVER_URL: '${SERVER_URL}'
REDIS_URL: '${REDIS_URL:-redis://redis:6379}'
DISABLE_DB_MIGRATIONS: '${DISABLE_DB_MIGRATIONS}'
DISABLE_CRON_JOBS_REGISTRATION: '${DISABLE_CRON_JOBS_REGISTRATION}'
STORAGE_TYPE: '${STORAGE_TYPE}'
APP_SECRET: '${APP_SECRET:-replace_me_with_a_random_string}'
depends_on:
db:
condition: service_healthy
healthcheck:
test: 'curl --fail http://localhost:3000/healthz'
interval: 5s
timeout: 5s
retries: 20
restart: always
networks:
- twenty-network
worker:
image: 'twentycrm/twenty:${TAG:-latest}'
command:
- yarn
- 'worker:prod'
environment:
PG_DATABASE_URL: 'postgres://${PG_DATABASE_USER:-postgres}:${PG_DATABASE_PASSWORD:-postgres}@${PG_DATABASE_HOST:-db}:${PG_DATABASE_PORT:-5432}/postgres'
SERVER_URL: '${SERVER_URL}'
REDIS_URL: '${REDIS_URL:-redis://redis:6379}'
DISABLE_DB_MIGRATIONS: 'true'
DISABLE_CRON_JOBS_REGISTRATION: 'true'
STORAGE_TYPE: '${STORAGE_TYPE}'
APP_SECRET: '${APP_SECRET:-replace_me_with_a_random_string}'
depends_on:
db:
condition: service_healthy
server:
condition: service_healthy
restart: always
networks:
- twenty-network
db:
image: 'postgres:16'
volumes:
- 'db-data:/var/lib/postgresql/data'
environment:
POSTGRES_USER: '${PG_DATABASE_USER:-postgres}'
POSTGRES_PASSWORD: '${PG_DATABASE_PASSWORD:-postgres}'
healthcheck:
test: 'pg_isready -U ${PG_DATABASE_USER:-postgres} -h localhost -d postgres'
interval: 5s
timeout: 5s
retries: 10
restart: always
networks:
- twenty-network
redis:
image: redis
restart: always
command:
- '--maxmemory-policy'
- noeviction
networks:
- twenty-network
caddy:
image: caddy
ports:
- "80:80"
- "443:443"
volumes:
- ./caddy/data/:/data/
- ./caddy/config/:/config/
- ./caddy/Caddyfile:/etc/caddy/Caddyfile
restart: always
networks:
- twenty-network
volumes:
db-data: null
server-local-data: null
networks:
twenty-network:
driver: bridge
Schritt 5: Umgebungsvariablen konfigurieren
Erstellen Sie die .env
Datei mit den notwendigen Konfigurationen:
sudo -u twenty nano .env
Fügen Sie folgenden Inhalt ein:
TAG=v1.2 # Ersetzen Sie dies durch die gewünschte Version von Twenty CRM, z.B. v1.2
APP_SECRET=HIER_GENERIERTES_SECRET_EINFÜGEN
PG_DATABASE_USER=postgres
PG_DATABASE_PASSWORD=HIER_SICHERES_PASSWORT_EINFÜGEN
PG_DATABASE_HOST=db
PG_DATABASE_PORT=5432
DISABLE_DB_MIGRATIONS=false
DISABLE_CRON_JOBS_REGISTRATION=false
REDIS_URL=redis://redis:6379
SERVER_URL=https://crm-demo.wz-it.com
STORAGE_TYPE=local
Generieren Sie ein sicheres APP_SECRET und Datenbankpasswort mit folgenden Befehlen:
# APP_SECRET generieren
openssl rand -base64 32
# Sicheres Datenbankpasswort generieren
openssl rand -base64 32
Ersetzen Sie:
HIER_GENERIERTES_SECRET_EINFÜGEN
mit dem generierten APP_SECRETHIER_SICHERES_PASSWORT_EINFÜGEN
mit dem generierten Datenbankpassworthttps://crm-demo.wz-it.com
bei SERVER_URL mit Ihrer eigenen Domain (z.B.https://crm.ihre-domain.de
)
Schritt 6: Caddy als Reverse Proxy einrichten
Erstellen Sie die Verzeichnisse für Caddy und die Konfigurationsdatei:
sudo -u twenty mkdir -p /opt/twenty/caddy
Erstellen Sie die Datei Caddyfile
im Caddy-Verzeichnis:
sudo -u twenty nano /opt/twenty/caddy/Caddyfile
Fügen Sie folgenden Inhalt ein:
{
email [email protected] # Ihre E-Mail-Adresse für Let's Encrypt Benachrichtigungen
}
crm-demo.wz-it.com { # Ersetzen Sie dies durch Ihre Domain
reverse_proxy http://server:3000
}
Ersetzen Sie crm-demo.wz-it.com
durch Ihre eigene Domain und [email protected]
durch Ihre E-Mail-Adresse. Die E-Mail-Adresse wird für die Let's Encrypt Zertifikatsregistrierung verwendet.
Schritt 7: Twenty CRM starten
Wir starten nun Twenty CRM mit Docker Compose:
sudo -u twenty docker compose up -d
Twenty CRM wird nun gestartet und sollte nach wenigen Minuten über HTTPS erreichbar sein. Sie können dies überprüfen, indem Sie Ihre Domain in Ihrem Browser aufrufen (in unserem Beispiel wäre das https://crm-demo.wz-it.com
, bei Ihnen entsprechend die Domain, die Sie in der Caddyfile konfiguriert haben).
Troubleshooting: Manuelle Datenbank-Initialisierung
Falls Sie sich nicht einloggen können oder Datenbankfehler auftreten, müssen Sie möglicherweise die Datenbank manuell initialisieren:
# In den Server-Container wechseln
sudo -u twenty docker compose exec server bash
# In das richtige Verzeichnis wechseln
cd /app/packages/twenty-server
# Datenbank initialisieren
yarn database:init:prod
Wenn Sie nach der Installation von ts-node
gefragt werden, bestätigen Sie mit y
. Die Ausgabe sollte etwa so aussehen:
Need to install the following packages:
[email protected]
Ok to proceed? (y) y
Performed 'create schema "public"' successfully
Performed 'create schema "core"' successfully
Performed 'create extension "uuid-ossp"' successfully
Nach erfolgreicher Initialisierung verlassen Sie den Container mit exit
und starten Sie den Server neu:
sudo -u twenty docker compose restart server
Schritt 8: Initial Setup
Nach erfolgreichem Start können Sie Twenty CRM über Ihre Domain aufrufen. Sie werden zur Login-Seite weitergeleitet:

Beim ersten Aufruf werden Sie durch das Initial Setup geführt, wo Sie Ihren Admin-Account erstellen können:

Nach der Einrichtung haben Sie Zugriff auf das moderne Twenty CRM Dashboard.

Firewall-Konfiguration
Wenn Sie eine Firewall auf Ihrem Server eingerichtet haben, stellen Sie sicher, dass die Ports 80 (HTTP) und 443 (HTTPS) geöffnet sind. Dies ist notwendig, damit Caddy die Anfragen über HTTP und HTTPS entgegennehmen kann.
Fazit
Mit dieser Anleitung haben Sie Twenty CRM erfolgreich auf einem Ubuntu 24.04 Server installiert und mit Caddy ein SSL-Zertifikat von Let's Encrypt eingerichtet. Twenty CRM bietet eine moderne, benutzerfreundliche Alternative zu komplexeren CRM-Systemen wie Odoo und ist besonders für kleinere bis mittelgroße Unternehmen geeignet, die eine schlanke CRM-Lösung suchen.
Weitere Informationen und Dokumentation finden Sie auf der offiziellen Twenty CRM Website: https://twenty.com/ und im GitHub Repository: https://github.com/twentyhq/twenty.