Zum Inhalt

Docker-Konfiguration

ComplianceOS wird als Multi-Stage Docker-Image ausgeliefert. Die empfohlene Methode ist Docker Compose.


docker-compose.yml

Die Standard-Konfiguration:

services:
  complianceos:
    build: .
    ports:
      - "8001:8001"
    volumes:
      - complianceos-data:/app/data
    environment:
      - COMPLIANCEOS_LOG_LEVEL=INFO
      - COMPLIANCEOS_LANG=de
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8001/api/health"]
      interval: 30s
      timeout: 10s
      retries: 3
    restart: unless-stopped

volumes:
  complianceos-data:

Umgebungsvariablen

Variable Standard Beschreibung
COMPLIANCEOS_PORT 8001 Interner Server-Port
COMPLIANCEOS_LOG_LEVEL INFO Log-Level (DEBUG, INFO, WARNING, ERROR)
COMPLIANCEOS_LANG de Oberflächen-Sprache (de oder en)
DATABASE_URL sqlite:///data/complianceos.db Datenbank-Pfad
ENABLE_TEAMMATES false KI-Agent-Orchestrierung (parallele Audit-Execution)
ENABLE_PDF_UPLOAD true PDF-Dokument-Upload
ENABLE_POLICY_GEN true Policy-Generierung aus Vorlagen
ENABLE_DSGVO true DSGVO-Standard einbeziehen

Feature Flags

Alle ENABLE_*-Variablen können auch über die Einstellungen im Browser gesteuert werden. Die Umgebungsvariablen setzen den Initialwert.


Daten-Volume

Alle persistenten Daten werden im Docker Volume complianceos-data gespeichert:

Pfad (im Container) Inhalt
/app/data/complianceos.db SQLite-Datenbank (Audits, Findings, Policies, etc.)
/app/data/uploads/ Hochgeladene Dokumente
/app/data/exports/ Generierte PDF-Exporte

Backup erstellen

# Volume-Inhalt als tar.gz sichern
docker run --rm \
  -v complianceos_complianceos-data:/data \
  -v $(pwd):/backup \
  busybox tar czf /backup/complianceos-backup-$(date +%Y%m%d).tar.gz /data

Backup wiederherstellen

# Container stoppen
docker compose down

# Volume-Inhalt wiederherstellen
docker run --rm \
  -v complianceos_complianceos-data:/data \
  -v $(pwd):/backup \
  busybox tar xzf /backup/complianceos-backup-20260227.tar.gz -C /

# Container starten
docker compose up -d

Container stoppen

Stoppen Sie den Container immer vor einem Restore, um Datenbankkorruption zu vermeiden.


Logs

# Live-Logs verfolgen
docker compose logs -f complianceos

# Letzte 100 Zeilen
docker compose logs --tail 100 complianceos

# Nur Fehler anzeigen
docker compose logs complianceos 2>&1 | grep ERROR

ComplianceOS nutzt strukturiertes JSON-Logging (structlog), optimiert für Log-Aggregation mit Loki, Elasticsearch oder ähnlichen Systemen.


Ressourcen begrenzen

services:
  complianceos:
    deploy:
      resources:
        limits:
          memory: 1G
          cpus: "2.0"
        reservations:
          memory: 256M
          cpus: "0.5"
Ressource Minimum Empfohlen Beschreibung
RAM 256 MB 512 MB - 1 GB Abhängig von Audit-Grösse und gleichzeitigen Nutzern
CPU 0.5 Cores 2 Cores Audit-Execution ist CPU-intensiv
Disk 100 MB 1-5 GB Abhängig von Dokumenten-Uploads und Audit-Historie

Netzwerk-Konfiguration

Anderen Port verwenden

ports:
  - "9000:8001"  # Externer Port 9000 → Interner Port 8001

Nur lokal erreichbar

ports:
  - "127.0.0.1:8001:8001"  # Nur von localhost erreichbar

Hinter Reverse Proxy (nginx)

server {
    listen 443 ssl;
    server_name compliance.ihre-domain.de;

    ssl_certificate /etc/letsencrypt/live/compliance.ihre-domain.de/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/compliance.ihre-domain.de/privkey.pem;

    location / {
        proxy_pass http://localhost:8001;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # SSE (Server-Sent Events) fuer Live-Fortschritt
        proxy_buffering off;
        proxy_cache off;
        proxy_read_timeout 86400s;
    }
}

SSE-Unterstützung

Wenn Sie einen Reverse Proxy verwenden, deaktivieren Sie proxy_buffering für die korrekte Funktion der Live-Fortschrittsanzeige bei Audits.


Upgrade

cd complianceos
git pull
docker compose build
docker compose up -d

ComplianceOS führt Datenbank-Migrationen automatisch beim Start durch. Bestehende Daten bleiben erhalten.


Fehlerbehebung

Container startet nicht

# Detaillierte Logs
docker compose logs complianceos

# Container-Status
docker compose ps

# In laufenden Container einsteigen
docker compose exec complianceos bash

Health-Check schlägt fehl

# Manueller Health-Check
docker compose exec complianceos curl -f http://localhost:8001/api/health

Datenbank-Probleme

# Datenbank-Integritaet pruefen
docker compose exec complianceos python3 -c "
import sqlite3
conn = sqlite3.connect('/app/data/complianceos.db')
result = conn.execute('PRAGMA integrity_check').fetchone()
print('DB Status:', result[0])
tables = conn.execute(\"SELECT name FROM sqlite_master WHERE type='table'\").fetchall()
print('Tabellen:', [t[0] for t in tables])
"