# OpenCRM Caddyfile
# ===================
# Wird NUR gebraucht, wenn du den optionalen Caddy-Dienst startest:
#     docker-compose --profile caddy up -d
# Caddy holt und erneuert dann das SSL-Zertifikat automatisch fuer ${DOMAIN}.
# Betreibst du bereits einen eigenen Reverse-Proxy (nginx, NPM, Traefik),
# brauchst du diese Datei nicht - dann laeuft alles ueber deinen Proxy.

{$DOMAIN:localhost} {
    # Reverse proxy to OpenCRM app
    reverse_proxy opencrm:3001

    # Logging
    log {
        output stdout
        format console
    }

    # Security headers
    header {
        # Clickjacking protection
        X-Frame-Options "SAMEORIGIN"
        # XSS protection
        X-Content-Type-Options "nosniff"
        X-XSS-Protection "1; mode=block"
        # Referrer policy
        Referrer-Policy "strict-origin-when-cross-origin"
    }

    # Gzip compression – NUR fuer statische Assets, NICHT fuer /api/*.
    # Komprimierte API-Antworten ermoeglichen die BREACH-Attacke
    # (CVE-2013-3587): aus der Antwortgroesse liessen sich unter bestimmten
    # Bedingungen Geheimnisse aus JSON-Responses ableiten. Statische Dateien
    # sind davon nicht betroffen und bleiben komprimiert.
    @nicht_api not path /api/*
    encode @nicht_api gzip

    # Handle file uploads (increase body limit)
    request_body {
        max_size 50MB
    }
}
