# OpenCRM Docker Deployment ## Schnellstart 1. **Umgebungsvariablen konfigurieren:** ```bash cd docker cp .env.example .env nano .env # Sichere Werte setzen ``` 2. **Container starten (erster Start mit RUN_SEED=true):** ```bash 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:** ```bash # 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 ```bash # Starten docker compose up -d # Stoppen docker compose down # Logs anzeigen docker compose logs -f app # Neustart docker compose restart app ``` ### Datenbank ```bash # 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 ```bash # Backup-Verzeichnis ist unter /app/backups gemountet # Backups werden über die Anwendung erstellt/wiederhergestellt ``` ### Update ```bash # 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 ```bash docker compose logs app ``` ### Datenbank-Verbindung fehlgeschlagen ```bash # Warten bis MariaDB bereit ist docker compose logs db ``` ### SSL-Zertifikat Probleme ```bash docker compose logs caddy # Caddy-Daten zurücksetzen docker compose down docker volume rm opencrm_caddy_data opencrm_caddy_config docker compose up -d ```