wiki/c-work/4-done/2026-05-int-environment-infomaniak-migration.md
2026-06-10 00:10:30 +02:00

98 lines
3.5 KiB
Markdown

<!-- status: done -->
<!-- started: 2026-05-25 -->
<!-- component: platform -->
# INT-Umgebung auf Infomaniak migrieren
## Beschreibung und Kontext
Migration der `poweron-swiss` INT-Umgebung (platform-core, ui-nyla) von Azure auf Infomaniak Public Cloud.
Betrifft nur `poweron-swiss`-Repos. Die `poweron`-Repos (gateway, ui-nyla) bleiben auf Azure.
## Checkliste
### Env-Dateien (platform-core, ui-nyla)
- [x] `env-int.env`: APP_API_URL → `https://api-int.poweron.swiss`
- [x] `env-int.env`: DB_HOST → `db-int.poweron.swiss`
- [x] `env-int.env`: DB_USER → `poweron_dev`
- [x] `env-int.env`: OAuth-Redirect-URIs → `api-int.poweron.swiss`
- [x] `env-int.env`: CORS (APP_ALLOWED_ORIGINS) → alle UI-Domains (poweron.swiss)
- [x] `env-int.env`: APP_KEY_SYSVAR → `/srv/platform-core/shared/secrets/master_key.txt`
- [x] `env-int.env`: APP_LOGGING_LOG_DIR → `srv/platform-core/shared/logs`
- [x] `env-int.env`: TEAMSBOT_BROWSER_BOT_URL → `http://teamsbot.poweron.swiss:4100`
- [x] `env-prod.env`: DB_HOST → `db.poweron.swiss`
- [x] `env-prod.env`: CORS aktualisiert
- [x] `env-prod.env`: TEAMSBOT_URL aktualisiert
- [x] `ui-nyla` env-int.env: bereits korrekt (`VITE_API_BASE_URL=https://api-int.poweron.swiss`)
### OAuth-Provider (externe Portale)
- [x] Microsoft Entra: Redirect-URIs auf `api-int.poweron.swiss` aktualisiert
- [x] Google OAuth Console: Redirect-URIs auf `api-int.poweron.swiss` aktualisiert
### DNS
- [x] `db.poweron.swiss` → 10.20.0.21 (porta-main-db)
- [x] `db-int.poweron.swiss` → 10.20.0.175 (porta-int-db)
- [x] `teamsbot.poweron.swiss` → eingerichtet
- [x] `api-int.poweron.swiss` → eingerichtet
### Server: porta-int-db (db-int.poweron.swiss)
SSH: `ssh -i ~/.ssh/ida-laptop.pem ubuntu@37.156.42.67`
- [x] VM läuft, SSH-Verbindung OK
**Schritt 1: Bestand prüfen**
- [x] PostgreSQL-Status prüfen
```
sudo systemctl status postgresql
```
- [x] Falls PostgreSQL läuft: vorhandene User prüfen
```
sudo -u postgres psql -c "\du" --> USER poweron_dev exists
```
- [x] Vorhandene Datenbanken prüfen
```
sudo -u postgres psql -c "\l"
```
- [x] pg_hba.conf prüfen (Zugriff vom internen Subnetz?)
```
sudo cat /etc/postgresql/*/main/pg_hba.conf | grep -v "^#" | grep -v "^$"
```
**Schritt 2: Passwort + Zugriff**
- [x] Passwort für `poweron_dev` gesetzt
- [x] Verbindungstest lokal auf DB-VM OK (`psql -h 127.0.0.1 -U poweron_dev -d postgres -c "SELECT 1;"`)
### Server: porta-int-platform-core (api-int.poweron.swiss)
- [x] Verbindungstest zur DB OK
- [x] Master Key abgelegt (`/srv/platform-core/shared/secrets/master_key.txt`)
- [x] Log-Verzeichnis vorhanden
- [x] App-Verzeichnis + Git-Repo vorhanden
- [x] Python venv vorhanden
- [x] systemd-Service `platform-core` konfiguriert
- [x] Nginx: `client_max_body_size 0`, WebSocket-Upgrade, Timeouts 600s, `proxy_request_buffering off` (analog PROD)
- [x] SSL: Let's Encrypt Zertifikat fuer `api-int.poweron.swiss` aktiv
### DB-Passwort verschlüsseln
- [x] Passwort in `env-int.env` eingetragen und verschlüsselt (`DB_PASSWORD_SECRET = INT_ENC:...`)
### Forgejo CI/CD
- [x] Workflow `int_porta-int-platform-core.yml` geprüft — zeigt korrekt auf `api-int.poweron.swiss`, Branch `int`, Pfad `/srv/platform-core/current`
### Wiki
- [x] DNS-Einträge für DB-Server in `infrastructure.md` nachgetragen
- [x] CHANGELOG aktualisiert
## Notizen
- SSH auf porta-int-db geht nur über öffentliche IP `37.156.42.67` (DNS `db-int.poweron.swiss` zeigt auf interne IP 10.20.0.175, korrekt für App-Zugriff)
- SSH auf porta-main-db: `37.156.40.141`