3.9 KiB
AZA – Go-Live Runbook (aza-medwork.ch)
Schritte, um AZA vom lokalen Entwicklungsmodus auf den Produktionsserver zu bringen.
Phase 1 – Server-Vorbereitung
1) Server-Anforderungen
- Linux VPS (Ubuntu 22.04 empfohlen)
- Docker + Docker Compose installiert
- Ports 80 und 443 offen
- DNS A-Record: aza-medwork.ch → Server-IP
Pruefen:
ping aza-medwork.ch→ Server-IP
Phase 2 – AZA-API deployen
1) Projekt hochladen
Gesamtes AZA-Projekt auf den Server kopieren.
2) Umgebung vorbereiten
cd deploy
cp .env.example .env
In .env setzen:
MEDWORK_API_TOKENS=NEUER_TOKEN,ALTER_TOKEN
STRIPE_SECRET_KEY=sk_live_...
STRIPE_WEBHOOK_SECRET=whsec_...
STRIPE_SUCCESS_URL=https://aza-medwork.ch/billing/success?session_id={CHECKOUT_SESSION_ID}
STRIPE_CANCEL_URL=https://aza-medwork.ch/billing/cancel
STRIPE_PORTAL_RETURN_URL=https://aza-medwork.ch/
AZA_ADMIN_TOKEN=...
AZA_LOG_LEVEL=INFO
AZA_GRACE_DAYS=0
ACME_EMAIL=info@aza-medwork.ch
AZA_DOMAIN=aza-medwork.ch
WICHTIG:
- Starke Zufalls-Tokens verwenden.
- KEINE Entwickler-Tokens wiederverwenden.
3) HTTPS aktivieren
AZA_DOMAIN=aza-medwork.ch in .env setzen (bereits vorbereitet).
Caddy holt sich automatisch ein Let's-Encrypt-Zertifikat.
4) Container starten
docker compose up -d --build
docker compose ps
Phase 3 – Verifikation
1) Health-Check
https://aza-medwork.ch/health → {"ok": true}
2) Versions-Check
https://aza-medwork.ch/version → {"name":"AZA",...}
3) Smoke-Test
export MEDWORK_API_TOKENS=NEUER_TOKEN
bash smoke_test.sh https://aza-medwork.ch
Erwartung:
- /health OK
- /license/status 401 ohne Token
- Gueltige JSON-Antwort mit Token
4) Website pruefen
https://aza-medwork.ch/web/index.html→ Landing-Page mit Pricinghttps://aza-medwork.ch/web/download.html→ Download-Seite
Phase 4 – Stripe konfigurieren
1) Stripe Dashboard: Produkte anlegen
Im Stripe Dashboard unter Products zwei Preise anlegen:
- AZA Praxis: Lookup-Key
aza_basic_monthly, CHF 89/Monat - AZA Team: Lookup-Key
aza_team_monthly, CHF 199/Monat
2) Webhook einrichten
Developers → Webhooks → Endpoint hinzufuegen
URL: https://aza-medwork.ch/stripe/webhook
Events:
checkout.session.completedcustomer.subscription.updatedcustomer.subscription.deleted
3) Signing-Secret uebernehmen
In deploy/.env setzen:
STRIPE_WEBHOOK_SECRET=whsec_...
Neustart: docker compose up -d
4) Test-Event senden
Stripe → "Send test webhook" → Erwartung: 200 OK
Phase 5 – Kauf-Flow testen
1) Landing-Page oeffnen
https://aza-medwork.ch/web/index.html
2) "Abonnement starten" klicken
→ Stripe Checkout oeffnet sich
3) Test-Kauf abschliessen (Stripe-Testkarte)
→ Weiterleitung zu Success-Seite mit Download-Button
4) Installer herunterladen und installieren
→ App startet, Lizenz wird automatisch geprueft
Phase 6 – Desktop-Client konfigurieren
1) Client-Konfiguration
Im Installer oder beim ersten Start:
MEDWORK_BACKEND_URL=https://aza-medwork.ch
2) Test auf neuem Rechner
- Installieren → Starten → Lizenzstatus: ACTIVE
3) Token-Rotation abschliessen
Nachdem alle Clients aktualisiert:
MEDWORK_API_TOKENS=NEUER_TOKEN
docker compose up -d
Phase 7 – Billing-Portal testen
Im Desktop-Client: "Abonnement" klicken → Browser oeffnet Stripe-Portal → Nach Schliessen: Rueckkehr zu aza-medwork.ch
Phase 8 – Rollback-Plan
Bei Problemen:
docker compose logs- Vorherige
.envwiederherstellen (ALTER_TOKEN behalten) docker compose up -d
Produktions-Checkliste
- HTTPS funktioniert
- /health OK
- /version OK
- Landing-Page erreichbar
- Stripe-Checkout funktioniert
- Success-Seite zeigt Download-Link
- /license/status funktioniert
- Device-Enforcement getestet
- Billing-Portal funktioniert
- Token-Rotation verifiziert
- Admin-Endpoints gesichert