scripts/eskalation_pruefen.py ruft den Service direkt gegen die DB auf (kein HTTP/Admin-Token nötig, gleiches Muster wie scripts/create_admin.py). mabea-eskalation.timer läuft täglich 06:00 Uhr. Zeitschwellen bleiben in der DB (eskalation_konfiguration), nicht im Timer. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
44 lines
2.2 KiB
Markdown
44 lines
2.2 KiB
Markdown
# Deployment – MABEA
|
||
|
||
Zielserver: siehe Projekt-Memory (Debian 13, kein Docker-Zwang, Prompt 19).
|
||
|
||
## Server-Grundausstattung (einmalig)
|
||
|
||
```bash
|
||
scp -i ~/.ssh/id_claude -r deploy root@<server>:/root/mabea-deploy
|
||
ssh -i ~/.ssh/id_claude root@<server>
|
||
cd /root/mabea-deploy
|
||
chmod +x install_server.sh
|
||
DB_PASSWORD='<sicheres-passwort>' APP_DOMAIN=<domain-oder-ip> ./install_server.sh
|
||
```
|
||
|
||
Installiert PostgreSQL + nginx, legt DB-Rolle/Datenbank an, richtet nginx als Reverse-Proxy vor `127.0.0.1:8000` ein. Ausgegebene `DATABASE_URL` sichern.
|
||
|
||
## Backend deployen (später, nach Sprint-Fortschritt)
|
||
|
||
1. `backend/` auf den Server kopieren (z. B. nach `/opt/mabea/backend`), `.venv` dort anlegen, `pip install -e ".[dev]"` bzw. ohne `dev`-Extra für Produktion.
|
||
2. `.env` aus `backend/example.env` ableiten, `DATABASE_URL` aus Schritt oben eintragen.
|
||
3. `alembic upgrade head` ausführen.
|
||
4. `mabea-backend.service.template` nach `/etc/systemd/system/mabea-backend.service` kopieren (Pfade/User anpassen), `systemctl daemon-reload && systemctl enable --now mabea-backend`.
|
||
|
||
## Eskalations-Prüfung einrichten (Karte 12, nach Backend-Deploy)
|
||
|
||
```bash
|
||
cp mabea-eskalation.service.template /etc/systemd/system/mabea-eskalation.service
|
||
cp mabea-eskalation.timer.template /etc/systemd/system/mabea-eskalation.timer
|
||
systemctl daemon-reload
|
||
systemctl enable --now mabea-eskalation.timer
|
||
```
|
||
|
||
Läuft täglich 06:00 Uhr (±5min Streuung), ruft `scripts/eskalation_pruefen.py` direkt
|
||
gegen die DB auf (kein HTTP/Admin-Token nötig). Zeitschwellen selbst liegen in der DB
|
||
(`eskalation_konfiguration`, admin-editierbar über `GET/PUT /api/v1/eskalation/konfiguration`),
|
||
nicht in dieser Timer-Konfiguration. Manueller Testlauf: `systemctl start mabea-eskalation.service`,
|
||
Ergebnis in `journalctl -u mabea-eskalation.service`.
|
||
|
||
## Dateien
|
||
- `install_server.sh` – Server-Grundausstattung (PostgreSQL, nginx), idempotent
|
||
- `nginx_mabea.conf.template` – Reverse-Proxy-Vorlage, von `install_server.sh` verwendet
|
||
- `mabea-backend.service.template` – systemd-Unit-Vorlage für das Backend (noch nicht aktiviert, Pfade anpassen)
|
||
- `mabea-eskalation.service.template` / `mabea-eskalation.timer.template` – täglicher Eskalations-Prüflauf (Karte 12)
|