AzA Intern Portal – Deployment auf Hetzner ========================================== Ziel-URL: https://intern.aza-medwork.ch Server-Pfad: /root/aza-intern-portal Voraussetzungen --------------- - Docker und docker-compose auf dem Server - Caddy als Reverse-Proxy (bestehend) - DNS A-Record: intern.aza-medwork.ch -> Server-IP (178.104.51.177) Schritte -------- 1. Backup erstellen (vor Deploy): mkdir -p /root/backups/aza_intern_portal_predeploy_YYYYMMDD_HHMMSS cp -a /root/aza-intern-portal /root/backups/.../ (falls vorhanden) 2. Verzeichnis anlegen und Dateien hochladen: mkdir -p /root/aza-intern-portal (rsync/scp des intern_portal-Inhalts) 3. .env anlegen (Werte NICHT ins Repo committen): cp .env.example .env AZA_INTERN_SESSION_SECRET= AZA_INTERN_ADMIN_USER= AZA_INTERN_ADMIN_PASSWORD= 4. Docker starten: cd /root/aza-intern-portal docker compose build docker compose up -d 5. Healthcheck: curl -s http://127.0.0.1:8088/health 6. Caddy (nur wenn DNS bereit): - Caddyfile sichern: cp /etc/caddy/Caddyfile /root/backups/.../Caddyfile.bak - Snippet aus Caddyfile.snippet ergänzen - caddy validate --config /etc/caddy/Caddyfile - systemctl reload caddy 7. Im Browser testen: https://intern.aza-medwork.ch Wichtig ------- - /root/aza-app (produktive AzA-App) NICHT verändern - Portal läuft nur auf 127.0.0.1:8088, extern nur via Caddy - Keine Patientendaten, API-Keys oder Passwörter hochladen Backup (manuell) ---------------- Regelmässig sichern: /data/intern.db (Docker-Volume aza_intern_data) /data/uploads/ Beispiel: docker compose exec aza-intern ls /data docker cp aza-intern-portal:/data/intern.db ./backups/intern_YYYYMMDD.db 2FA --- Für eine spätere Version vorgesehen. Session-Cookies sind httpOnly (Starlette SessionMiddleware).