Files
opencrm/docker
duffyduckandClaude Opus 5 0ae6b13d6c Audit-Siegel: Schluessel erreicht jetzt tatsaechlich den Container
Ohne diesen Fix waere das Siegel im Docker-Betrieb wirkungslos geblieben - die
Variable wurde nirgends an den Container durchgereicht. docker-compose.yml
listet die Umgebungsvariablen einzeln auf und speist sie aus der .env im
Projektstamm; ein env_file gibt es nicht, backend/.env wird vom Container also
gar nicht gelesen. Dokumentiert und ergaenzt hatte ich bisher nur
backend/.env.example - also die Datei, die fuer den Container irrelevant ist.

- AUDIT_HMAC_KEY und AUDIT_HMAC_KEY_OLD in docker-compose.yml und in
  docker/docker-compose.yml aufgenommen (beide mit :- Default, damit ohne Wert
  weiterhin fail-safe ungesiegelt geschrieben wird)
- beide Variablen samt Erklaerung in die .env.example im Projektstamm und in
  docker/.env.example uebernommen
- README benennt jetzt explizit, welche Datei fuer welchen Betrieb gilt
  (Stamm-.env bei Docker, backend/.env nur ohne Container)

Verifiziert: `docker-compose config` loest AUDIT_HMAC_KEY korrekt auf.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 19:29:34 +02:00
..
2026-02-08 19:59:49 +01:00
2026-02-08 19:59:49 +01:00
2026-02-08 19:59:49 +01:00

OpenCRM Docker Deployment

Schnellstart

  1. Umgebungsvariablen konfigurieren:

    cd docker
    cp .env.example .env
    nano .env  # Sichere Werte setzen
    
  2. Container starten (erster Start mit RUN_SEED=true):

    docker compose up -d
    

    Beim ersten Start wird automatisch:

    • Auf die Datenbank gewartet
    • Migrationen ausgeführt
    • Seed-Daten geladen (wenn RUN_SEED=true)
  3. Nach erfolgreicher Installation:

    # RUN_SEED in .env auf false setzen
    sed -i 's/RUN_SEED=true/RUN_SEED=false/' .env
    
  4. Anwendung aufrufen:

    • Mit Domain: https://your-domain.com
    • Lokal: http://localhost
  5. Login:

    • E-Mail: admin@admin.com
    • Passwort: admin

Architektur

                    ┌─────────────┐
                    │   Caddy     │
                    │  (SSL/TLS)  │
                    │   :80/:443  │
                    └──────┬──────┘
                           │
                    ┌──────▼──────┐
                    │   OpenCRM   │
                    │   (Node.js) │
                    │    :3001    │
                    └──────┬──────┘
                           │
                    ┌──────▼──────┐
                    │   MariaDB   │
                    │    :3306    │
                    └─────────────┘

Befehle

Container verwalten

# Starten
docker compose up -d

# Stoppen
docker compose down

# Logs anzeigen
docker compose logs -f app

# Neustart
docker compose restart app

Datenbank

# Migration ausführen
docker compose exec app npx prisma migrate deploy

# Seed-Daten laden
docker compose exec app npx tsx prisma/seed.ts

# Prisma Studio (Datenbank-UI)
docker compose exec app npx prisma studio

Backup & Restore

# Backup-Verzeichnis ist unter /app/backups gemountet
# Backups werden über die Anwendung erstellt/wiederhergestellt

Update

# Image neu bauen und Container aktualisieren
docker compose build --no-cache
docker compose up -d
# Migrationen werden automatisch beim Start ausgeführt

Volumes

Volume Beschreibung
mariadb_data Datenbank-Dateien
uploads_data Hochgeladene Dokumente
backups_data Backup-Dateien
caddy_data SSL-Zertifikate
caddy_config Caddy-Konfiguration

SSL-Zertifikat

Caddy holt automatisch ein Let's Encrypt Zertifikat wenn:

  • Die Domain in .env korrekt gesetzt ist
  • Port 80 und 443 von außen erreichbar sind
  • DNS auf den Server zeigt

Für lokale Entwicklung mit DOMAIN=localhost wird ein selbstsigniertes Zertifikat verwendet.

Troubleshooting

Container startet nicht

docker compose logs app

Datenbank-Verbindung fehlgeschlagen

# Warten bis MariaDB bereit ist
docker compose logs db

SSL-Zertifikat Probleme

docker compose logs caddy
# Caddy-Daten zurücksetzen
docker compose down
docker volume rm opencrm_caddy_data opencrm_caddy_config
docker compose up -d