200 lines
4.1 KiB
Markdown
200 lines
4.1 KiB
Markdown
# 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/<SUBSCRIPTION_ID>/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 <GITHUB_USERNAME> \
|
|
--password <GITHUB_PAT>
|
|
```
|
|
|
|
---
|
|
|
|
## 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
|