Docker-Deployment¶
Die AI Compliance Suite wird als Docker-Compose-Stack ausgeliefert. Das Image liegt public auf GitHub Container Registry — kein Login, kein PAT, keine Registrierung.
Voraussetzungen¶
- Docker 24+ und Docker-Compose v2 (
docker compose version) - Freie Ports 8443 (HTTPS-UI) und 8082 (HTTP-Redirect)
- ≥ 2 GB RAM, ≥ 10 GB freier Plattenplatz
Quickstart¶
# 1. docker-compose.yml holen
curl -O https://raw.githubusercontent.com/martinzeifang/aics-public/main/docker-compose.yml
# 2. Stack starten
docker compose up -d
# 3. Im Browser öffnen
# https://localhost:8443
Beim ersten Start erzeugt der Container:
- ein zufälliges JWT-Secret
- ein Self-Signed TLS-Zertifikat
- einen Initial-Admin mit zufälligem Passwort → in den Logs nachschauen:
docker compose logs aics_web | grep -i "initial admin"
Mit lokaler KI (Ollama)¶
COMPOSE_PROFILES=ai docker compose up -d
Der Ollama-Container zieht beim ersten Start ein Default-Modell (~5 GB). Modelle werden in der App unter Admin → KI-Modelle verwaltet.
Konfiguration (.env)¶
Für Produktivumgebungen leg eine .env-Datei neben die docker-compose.yml:
# Für Browser-Zugriff zugelassene Origins (komma-getrennt)
CORS_ORIGINS=https://aics.example.com:8443
# Image-Pinning (Production: nicht 'latest', sondern ein Release-Tag)
AICS_IMAGE_TAG=v0.1.0
# Demo-Admin beim ersten Start anlegen? In Produktion auf false.
AICS_DEMO_MODE=false
Stack neu starten:
docker compose up -d
Update¶
# Neueres Image ziehen + Stack neu hochfahren
docker compose pull
docker compose up -d
Rollback: AICS_IMAGE_TAG in .env auf das vorherige Tag setzen und
docker compose up -d erneut ausführen.
Backup¶
Alle Persistenten Daten liegen in Named Volumes (aics_data,
aics_certs, aics_backups, aics_logs). Backup als Tarball:
docker run --rm \
-v ai-compliance-suite_aics_data:/data:ro \
-v "$PWD":/backup \
alpine tar czf /backup/aics-data-$(date +%F).tgz -C / data
Restore: Volume leeren und Tarball entpacken — Service vorher stoppen.
Logs¶
docker compose logs -f aics_web # live folgen
docker compose logs --tail=200 aics_web
docker compose logs aics_web | grep -i error
TLS mit echtem Zertifikat¶
Ersetze den Inhalt des Volumes aics_certs durch deine fullchain.pem
und privkey.pem (z. B. via Let's Encrypt + certbot-Container) und
starte den Nginx-Container neu:
docker compose restart aics_nginx
Troubleshooting¶
| Symptom | Ursache | Lösung |
|---|---|---|
port 8443 already in use |
Anderer Service auf 8443 | Port in docker-compose.yml mappen: "9443:8443" |
| Browser zeigt „nicht sicher" | Self-Signed-Cert | Akzeptieren oder echtes Cert installieren |
| Login schlägt fehl | Initial-Passwort vergessen | docker compose logs aics_web | grep "initial admin" |
| Container neu, leere DB | Volume entfernt | Backup einspielen (siehe oben) |
Lizenz¶
Der Stack startet im Demo-Modus mit eingebauter Demo-Lizenz (30 Tage, alle Module außer Gutachten). Für Produktivnutzung siehe Lizenz-Setup.