# Azure Setup für Teams Browser Bot ## Voraussetzungen 1. Azure CLI installiert und eingeloggt 2. GitHub Repository erstellt unter `valueonag/service-teams-browser-bot` --- ## 1. Azure Container App erstellen ### 1.1 Resource Group (falls nicht vorhanden) ```bash az group create \ --name rg-poweron-int \ --location westeurope ``` ### 1.2 Container Apps Environment ```bash az containerapp env create \ --name cae-poweron-int \ --resource-group rg-poweron-int \ --location westeurope ``` ### 1.3 Container App erstellen ```bash az containerapp create \ --name teams-browser-bot \ --resource-group rg-poweron-int \ --environment cae-poweron-int \ --image ghcr.io/valueonag/service-teams-browser-bot:latest \ --target-port 4100 \ --ingress external \ --cpu 2 \ --memory 4Gi \ --min-replicas 0 \ --max-replicas 3 \ --env-vars \ NODE_ENV=production \ PORT=4100 \ GATEWAY_WS_URL=wss://gateway-int.poweron-center.net/api/teamsbot/bot/ws \ BOT_NAME="PowerOn AI" \ BOT_HEADLESS=true \ LOG_LEVEL=info \ SCREENSHOT_ON_ERROR=true ``` ### 1.4 Container App URL notieren ```bash az containerapp show \ --name teams-browser-bot \ --resource-group rg-poweron-int \ --query properties.configuration.ingress.fqdn \ --output tsv ``` Ergebnis z.B.: `teams-browser-bot.happysky-12345.westeurope.azurecontainerapps.io` --- ## 2. GitHub Actions Setup ### 2.1 Azure Service Principal erstellen ```bash az ad sp create-for-rbac \ --name "github-teams-browser-bot" \ --role contributor \ --scopes /subscriptions//resourceGroups/rg-poweron-int \ --sdk-auth ``` ### 2.2 GitHub Secret hinzufügen 1. GitHub Repo → Settings → Secrets and variables → Actions 2. New repository secret: `AZURE_CREDENTIALS` 3. Wert: JSON Output vom vorherigen Befehl ### 2.3 GitHub Container Registry Zugriff Der Workflow verwendet `GITHUB_TOKEN` automatisch für ghcr.io. Falls Azure die Images nicht pullen kann: ```bash # PAT mit read:packages Scope erstellen auf GitHub # Dann in Azure: az containerapp registry set \ --name teams-browser-bot \ --resource-group rg-poweron-int \ --server ghcr.io \ --username \ --password ``` --- ## 3. Gateway Konfiguration ### 3.1 Environment Variable im Gateway In `env_int.env` (oder Azure App Service Configuration): ``` TEAMSBOT_BROWSER_BOT_URL=https://teams-browser-bot.happysky-12345.westeurope.azurecontainerapps.io ``` ### 3.2 Gateway neu deployen ```bash # Push to int branch triggers deployment git push origin int ``` --- ## 4. DNS (Optional) Falls du eine eigene Domain verwenden möchtest: ```bash az containerapp hostname add \ --name teams-browser-bot \ --resource-group rg-poweron-int \ --hostname bot.poweron.swiss # Dann DNS A-Record oder CNAME auf die Container App zeigen ``` --- ## 5. Monitoring ### Logs anzeigen ```bash az containerapp logs show \ --name teams-browser-bot \ --resource-group rg-poweron-int \ --follow ``` ### Metriken ```bash az containerapp show \ --name teams-browser-bot \ --resource-group rg-poweron-int \ --query properties.latestRevisionFqdn ``` --- ## 6. Kosten Azure Container Apps (Consumption Plan): - **vCPU**: ~$0.000024/vCPU-second - **Memory**: ~$0.000003/GiB-second - **Requests**: Erste 2M/Monat kostenlos Geschätzte Kosten bei 10h Bot-Nutzung/Tag: - ~$15-25/Monat (deutlich günstiger als die alte VM!) --- ## 7. Troubleshooting ### Container startet nicht ```bash # Logs prüfen az containerapp logs show \ --name teams-browser-bot \ --resource-group rg-poweron-int \ --type system # Revision Status az containerapp revision list \ --name teams-browser-bot \ --resource-group rg-poweron-int \ --output table ``` ### Playwright/Chrome Probleme Container Apps unterstützen keine GPU. Falls Chrome-Probleme: 1. Sicherstellen dass `BOT_HEADLESS=true` 2. Shared memory erhöhen (im Dockerfile bereits konfiguriert) ### WebSocket Verbindung fehlschlägt 1. Prüfen ob Gateway CORS erlaubt 2. Prüfen ob Container App WebSockets unterstützt (Standard: ja) 3. Gateway Logs prüfen