EspoCRM Docker Installation: Open Source CRM lokal in 5 Minuten aufsetzen

Von Roland Golla
0 Kommentar
Surreale Darstellung: Docker-Container verwandelt sich in CRM-Dashboard-InterfaceTeilenArtefakteAlles herunterladenEspocrm image seo a11yDokument · MD Espocrm seo metadataDokument · MD Espocrm flux pro image promptDokument · MD Espocrm docker blog postDokument · MD ProjektinhaltBlog PostVon dir erstelltFüge PDFs, Dokumente oder andere Texte hinzu, um sie in diesem Projekt als Referenz zu verwenden.

„Das Default-Passwort geht nicht und der Docker-Container will einfach nicht starten.“ Diese Nachricht haben wir diese Woche wieder bekommen – und sie zeigt ein typisches Problem bei der EspoCRM-Installation mit Docker. Das offizielle Image ist hervorragend dokumentiert, aber die Kombination aus Datenbank-Timing, Environment-Variablen und Volume-Mounts sorgt regelmäßig für Frust. Nach über 15 Jahren Erfahrung in Softwarequalität, Open Source und Remote Consulting zeigen wir euch, wie ihr EspoCRM sauber mit Docker Compose aufsetzt – inklusive aller Stolperfallen und deren Lösungen.

Warum EspoCRM als Self-Hosted CRM?

EspoCRM ist ein Open-Source-CRM-System, das sich besonders für kleine und mittlere Unternehmen eignet. Im Vergleich zu Salesforce, HubSpot oder Vtiger bietet es vollständige Datenhoheit bei Self-Hosting, keine laufenden Lizenzkosten für die Core-Funktionen und ein modernes, aufgeräumtes Interface. Das PHP-basierte System lässt sich über Docker innerhalb weniger Minuten aufsetzen – vorausgesetzt, ihr kennt die richtigen Konfigurationsparameter.

Bei Never Code Alone setzen wir EspoCRM in Consulting-Projekten ein, wenn Kunden eine flexible CRM-Lösung benötigen, die sich ohne Vendor Lock-in an ihre Prozesse anpassen lässt. Die Docker-Installation eignet sich perfekt für lokale Entwicklung, Staging-Umgebungen und kleinere Produktiv-Setups.

Welche Voraussetzungen brauche ich für die EspoCRM Docker Installation?

Bevor ihr startet, prüft folgende Punkte auf eurem System. Docker und Docker Compose müssen installiert und lauffähig sein. Unter Linux, macOS oder WSL2 funktioniert das Setup am zuverlässigsten. Mindestens 2 GB RAM sollten verfügbar sein, da MariaDB und der EspoCRM-Container parallel laufen.

Testet eure Docker-Installation mit:

docker --version
docker compose version

Beide Befehle sollten Versionsnummern ausgeben. Falls Docker Compose als Plugin fehlt, installiert es über eure Paketverwaltung nach. Die alte docker-compose-Syntax mit Bindestrich funktioniert ebenfalls, wir empfehlen aber die aktuelle docker compose-Variante.

Wie erstelle ich die Projektstruktur für EspoCRM?

Legt zunächst ein dediziertes Verzeichnis für eure EspoCRM-Installation an. Eine saubere Struktur erleichtert spätere Backups und Updates erheblich.

mkdir espocrm-docker
cd espocrm-docker
mkdir -p data/db data/app

Das data-Verzeichnis enthält zwei Unterordner: db für die MariaDB-Datenbank und app für die EspoCRM-Anwendungsdateien. Durch das Mapping dieser Ordner als Volumes bleiben eure Daten bei Container-Updates erhalten.

Praxis-Tipp aus unserem Consulting: Benennt das Projektverzeichnis eindeutig, etwa espocrm-projektname oder crm-firmenname. Bei mehreren Docker-Projekten auf einem System verhindert das Verwechslungen.

Wie sieht die docker-compose.yml für EspoCRM aus?

Erstellt im Projektverzeichnis eine docker-compose.yml mit folgendem Inhalt:

services:
  db:
    image: mariadb:10.6
    container_name: espocrm-db
    restart: always
    environment:
      MARIADB_ROOT_PASSWORD: rootpass
      MARIADB_DATABASE: espocrm
      MARIADB_USER: espocrm
      MARIADB_PASSWORD: espopass
    volumes:
      - ./data/db:/var/lib/mysql
    healthcheck:
      test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
      interval: 20s
      start_period: 10s
      timeout: 10s
      retries: 3

  espocrm:
    image: espocrm/espocrm:latest
    container_name: espocrm
    restart: always
    ports:
      - "8080:80"
    environment:
      ESPOCRM_DATABASE_HOST: db
      ESPOCRM_DATABASE_NAME: espocrm
      ESPOCRM_DATABASE_USER: espocrm
      ESPOCRM_DATABASE_PASSWORD: espopass
      ESPOCRM_ADMIN_USERNAME: admin
      ESPOCRM_ADMIN_PASSWORD: changeme
      ESPOCRM_SITE_URL: "http://localhost:8080"
    volumes:
      - ./data/app:/var/www/html
    depends_on:
      db:
        condition: service_healthy

  espocrm-daemon:
    image: espocrm/espocrm:latest
    container_name: espocrm-daemon
    restart: always
    volumes:
      - ./data/app:/var/www/html
    depends_on:
      - espocrm
    entrypoint: docker-daemon.sh

Die healthcheck-Konfiguration beim Datenbank-Container ist entscheidend. Der EspoCRM-Container wartet durch condition: service_healthy darauf, dass MariaDB vollständig initialisiert ist. Ohne diesen Check startet EspoCRM häufig, bevor die Datenbank bereit ist – was zu den berüchtigten Connection-Fehlern führt.

Wie lautet das Default-Passwort und wie ändere ich es?

Das Standard-Login für eine frische EspoCRM-Installation lautet:

  • Username: admin
  • Password: changeme

Falls ihr in der docker-compose.yml eigene Werte für ESPOCRM_ADMIN_USERNAME und ESPOCRM_ADMIN_PASSWORD gesetzt habt, verwendet diese stattdessen. Die Environment-Variablen greifen nur bei der Erstinstallation – bei existierendem data/app-Verzeichnis werden sie ignoriert.

Passwort über CLI ändern:

docker compose exec espocrm php command.php set-password admin neuespasswort

Sicherheitshinweis: Ändert das Passwort sofort nach der Installation. Für Produktiv-Umgebungen empfehlen wir mindestens 16 Zeichen mit Sonderzeichen.

Wie starte ich die EspoCRM Container?

Mit der fertigen docker-compose.yml startet ihr das gesamte Setup mit einem Befehl:

docker compose up -d

Docker lädt automatisch die benötigten Images herunter und startet die Container im Hintergrund. Die Initialisierung dauert beim ersten Start etwa 30-60 Sekunden.

Prüft den Status mit:

docker compose logs -f

Wartet, bis ihr in den Logs seht, dass der Apache-Server gestartet ist. Anschließend erreicht ihr EspoCRM unter http://localhost:8080.

Typische Log-Einträge bei erfolgreicher Installation:

espocrm    | [info] Starting apache2
espocrm-daemon | Starting daemon

Was tun bei Verbindungsproblemen zur Datenbank?

Der häufigste Fehler ist php_network_getaddresses: getaddrinfo failed oder Connection refused. Diese Meldungen bedeuten, dass der EspoCRM-Container die Datenbank nicht erreichen kann.

Erste Maßnahme – Container komplett stoppen und neu starten:

docker compose down
docker compose up -d

Falls das Problem bestehen bleibt, prüft die Netzwerk-Konfiguration:

docker network ls
docker network inspect espocrm-docker_default

Beide Container müssen im selben Netzwerk sein. Bei depends_on mit condition: service_healthy wartet Docker automatisch auf die Datenbank-Bereitschaft.

Für hartnäckige Fälle hilft ein vollständiger Reset:

docker compose down -v
rm -rf data/db data/app
mkdir -p data/db data/app
docker compose up -d

Achtung: -v löscht auch die benannten Volumes. Dieser Befehl setzt die gesamte Installation zurück.

Wie sichere ich EspoCRM Daten und erstelle Backups?

Regelmäßige Backups sind bei Self-Hosted-Lösungen eure Verantwortung. Für EspoCRM müsst ihr zwei Bereiche sichern: die Datenbank und die Anwendungsdateien.

Datenbank-Backup erstellen:

docker compose exec db mysqldump -u root -prootpass espocrm > backup_$(date +%Y%m%d).sql

Anwendungsdateien sichern:

tar -czvf espocrm_files_$(date +%Y%m%d).tar.gz data/app

Für Produktiv-Umgebungen empfehlen wir automatisierte Backups via Cronjob oder Systemd-Timer. Das data/app-Verzeichnis enthält eure Konfiguration unter data/config.php, hochgeladene Dateien und Custom-Anpassungen.

Backup-Strategie aus der Praxis: Tägliche Datenbank-Dumps, wöchentliche Vollbackups der Anwendungsdateien, Aufbewahrung für mindestens 30 Tage.

Wie aktualisiere ich EspoCRM auf eine neue Version?

Updates bei Docker-basierten Installationen sind deutlich einfacher als bei klassischen Setups. Der EspoCRM-Container enthält ein automatisches Upgrade-Script.

Update-Prozess:

docker compose pull
docker compose up -d
docker compose logs -f

In den Logs seht ihr den Upgrade-Prozess:

Run "upgrade" action.
Start upgrading process from version X.X.X.
Upgrade process is finished. EspoCRM version is Y.Y.Y.

Für Produktiv-Umgebungen empfehlen wir, die Image-Version explizit zu pinnen statt latest zu verwenden. Ändert in der docker-compose.yml:

image: espocrm/espocrm:9.1.5

So kontrolliert ihr den Update-Zeitpunkt und könnt vorher in einer Staging-Umgebung testen.

Wichtig: Erstellt vor jedem Update ein Backup. Bei größeren Versionssprüngen können Datenbank-Migrationen fehlschlagen – ein aktuelles Backup ermöglicht schnelle Wiederherstellung.

Welche Erweiterungen und Addons gibt es für EspoCRM?

Die Core-Installation deckt grundlegende CRM-Funktionen ab: Kontakte, Unternehmen, Leads, Opportunities und Aufgaben. Für erweiterte Anforderungen bietet EspoCRM kostenpflichtige Extensions.

Das Advanced Pack (empfohlen für Business-Nutzung) enthält Reporting, Workflows und BPMN-Designer. Das Sales Pack erweitert um Produkte, Angebote und Rechnungen. Beide Extensions sind über die Admin-Oberfläche installierbar.

Community-Extensions findet ihr im offiziellen Forum und auf GitHub. Installation via CLI:

docker compose exec espocrm php command.php extension --file=/path/to/extension.zip

Für Custom-Entwicklung bietet EspoCRM eine saubere API und Dependency Injection. Die Dokumentation unter docs.espocrm.com ist umfangreich und aktuell.

Wie unterscheidet sich EspoCRM von anderen Open-Source-CRMs?

Im Vergleich zu SuiteCRM und Vtiger positioniert sich EspoCRM als leichtgewichtige Alternative mit modernem Interface. SuiteCRM bietet mehr Enterprise-Features, hat aber eine steilere Lernkurve und komplexere Codebasis. Vtiger fokussiert zunehmend auf die Cloud-Version und vernachlässigt die Self-Hosted-Variante.

EspoCRM-Vorteile: Schnelle Installation, intuitive Oberfläche, gute API-Dokumentation, aktive Entwicklung.

EspoCRM-Limitierungen: Manche Features nur in kostenpflichtigen Packs, kleinere Community als SuiteCRM, weniger Third-Party-Integrationen.

Entscheidungshilfe: Für KMUs mit überschaubaren Anforderungen und Fokus auf Benutzerfreundlichkeit ist EspoCRM eine ausgezeichnete Wahl. Für komplexe Enterprise-Szenarien mit vielen Integrationen kann SuiteCRM die bessere Option sein.

Best Practices aus über 15 Jahren Consulting-Erfahrung

Bei Never Code Alone haben wir EspoCRM in verschiedenen Projekten implementiert. Hier die wichtigsten Learnings:

Produktiv-Setup mit SSL: Verwendet einen Reverse Proxy wie Traefik oder Nginx vor dem EspoCRM-Container. Die offizielle Dokumentation bietet fertige Compose-Beispiele für beide Varianten.

Performance-Optimierung: Aktiviert OPcache in der PHP-Konfiguration. Bei vielen gleichzeitigen Nutzern hilft ein separater Redis-Container für Session-Handling.

Monitoring: Integriert die Container in eure bestehende Überwachung. Healthchecks liefern Status-Informationen, die sich über Prometheus/Grafana visualisieren lassen.

Custom-Entwicklung: Nutzt Extensions für eure Anpassungen statt Core-Files zu modifizieren. So bleiben Updates problemlos möglich.

Direkte Unterstützung für euer Team

Ihr plant eine EspoCRM-Integration und benötigt Unterstützung bei der Architektur oder Custom-Entwicklung? Mit über 15 Jahren Expertise in Softwarequalität und Remote Consulting helfen wir euch gerne weiter.

Kontakt: roland@nevercodealone.de

Gemeinsam implementieren wir eine CRM-Lösung, die zu euren Prozessen passt – keine theoretischen Frameworks, sondern praktische Lösungen, die im Alltag funktionieren.

Fazit: EspoCRM Docker Setup in der Praxis

Die Docker-Installation von EspoCRM ist nach initialer Konfiguration robust und wartungsarm. Die häufigsten Probleme entstehen durch fehlendes Datenbank-Timing oder falsche Volume-Pfade – beides lässt sich mit der hier gezeigten Compose-Konfiguration vermeiden.

Startet heute: Klont die Konfiguration, passt die Passwörter an und habt in fünf Minuten ein lauffähiges CRM-System. Die Erkenntnisse, die ihr bei der lokalen Installation gewinnt, helfen euch später bei Produktiv-Deployments.

Never Code Alone – Gemeinsam für bessere Software-Qualität!

0 Kommentar

Tutorials und Top Posts

Gib uns Feedback

Diese Seite benutzt Cookies. Ein Akzeptieren hilft uns die Seite zu verbessern. Ok Mehr dazu