3.2 KiB
Executable File
3.2 KiB
Executable File
ITSM — Betriebshandbuch
Stand: 2026-07-15. Produktivinstanz: SRV1361746 (/docker/itsm/), Port 8090.
1. ENV-Variablen
| Variable | Pflicht | Bedeutung |
|---|---|---|
DATABASE_URL |
ja | postgresql://itsm:...@postgres:5432/itsm |
ITSM_BIND |
– | Bind-Adresse (Default 0.0.0.0:8090) |
ITSM_HTTPS |
– | 1 = Secure-Cookies + HSTS (hinter TLS-Terminierung setzen) |
ITSM_TRUSTED_PROXY_COUNT |
– | Anzahl vertrauenswürdiger Reverse-Proxies; nur dann zählt X-Forwarded-For |
ITSM_SESSION_HOURS |
– | Session-Lebensdauer (Default 8) |
ITSM_LOGIN_MAX_ATTEMPTS / ITSM_LOGIN_WINDOW_MINUTES |
– | Rate-Limit (Default 5 / 15) |
ITSM_PASSWORD_MIN_LENGTH |
– | Default 12 |
AES_DASHBOARD_URL |
– | AES-Service im Katalog |
FORGE_BASE_URL / FORGE_SERVICE_TOKEN |
– | Repo-Edit aus Change-Tickets; ohne = Feature deaktiviert |
RUST_LOG |
– | z. B. info |
Hinweis: ITSM_SECRET_KEY (Flask-Ära) wird nicht mehr genutzt und kann aus
der Server-.env entfernt werden.
2. Deployment / Update (SRV1361746)
cd /docker/itsm
rm -rf src && git clone --depth 1 https://git1.mrmoe.de/mscadm/ITSM.git src
docker compose build itsm # Multi-Stage-Build, ~3 min
docker compose up -d # Postgres läuft weiter, nur App wird getauscht
curl -s localhost:8090/health # {"db":"ok","status":"ok"}
Es wird KEIN Code mehr beim Container-Start gezogen (früherer bootstrap.sh- Mechanismus ist abgeschafft) — ein Neustart startet exakt das gebaute Image. Schema-Migrationen laufen idempotent beim App-Start.
Rollback: docker-compose.yml.flask-backup liegt als letzter Flask-Stand in
/docker/itsm/; für das Rust-Image genügt git clone eines älteren Tags/
Commits nach src/ + erneutes build.
3. Backup & Retention
- Täglicher pg_dump:
deploy/backup.shvia Cron0 3 * * *nach/docker/itsm/backups/(14 Tage Rotation). Live-Daten: Bind-Mount/docker/itsm/pgdata(kein anonymes Docker-Volume). - DSGVO-Retention: Hintergrundtask löscht gelöste/geschlossene Tickets und Audit-Einträge nach Mandanten-Fristen; Sessions/Login-Versuche werden mitbereinigt. Manuell: Admin → Einstellungen → "Jetzt manuell bereinigen".
4. Troubleshooting
| Symptom | Ursache / Abhilfe |
|---|---|
| Login schlägt für Bestandskonto fehl | Hash-Prefix prüfen: docker exec itsm_postgres psql -U itsm -d itsm -c "SELECT email,left(password_hash,16) FROM users;" — pbkdf2:/scrypt: = Werkzeug-Altbestand (wird unterstützt, ab Commit f732392 auch scrypt), $argon2id$ = migriert. |
| "Zu viele Fehlversuche" (429) | Rate-Limit-Sperre; wartet 15 min oder DELETE FROM login_attempts; |
| 500er | docker logs itsm_app --tail 50 (tracing-Log) |
| Health rot | DB-Verbindung prüfen (docker ps, pg_isready) |
| Repo-Edit-Button fehlt | FORGE_BASE_URL nicht gesetzt, Rolle < change_manager, oder Ticket ist kein freigegebener Change (gewollt, ADR-004) |
| Alle Sessions ungültig nach Deploy | erwartungsgemäß NICHT der Fall (Sessions liegen in der DB); falls doch: sessions-Tabelle prüfen |
5. Monitoring-Punkte
GET /health(Docker-HEALTHCHECK eingebaut, curl-basiert)- Audit-Log (Admin-UI) für login_failed/login_rate_limited-Häufungen
- Backup-Log
/docker/itsm/backup.log