# 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 + poweron-center.net) - [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`