From 363c9df08ed8495964b6a2281cc2f4894b11eef2 Mon Sep 17 00:00:00 2001
From: ValueOn AG
Date: Sun, 15 Feb 2026 00:05:34 +0100
Subject: [PATCH] docs: Update AZURE_SETUP.md with final ACR configuration
Co-authored-by: Cursor
---
AZURE_SETUP.md | 154 ++++++++++++++++++-------------------------------
1 file changed, 57 insertions(+), 97 deletions(-)
diff --git a/AZURE_SETUP.md b/AZURE_SETUP.md
index 18e4f36..6f4e025 100644
--- a/AZURE_SETUP.md
+++ b/AZURE_SETUP.md
@@ -19,13 +19,44 @@ sich immer zur richtigen Gateway-Instanz zurückverbindet.
└─────────────────┘ └──────────────────────────┘
```
+## Aktuelle Konfiguration
+
+| Ressource | Wert |
+|-----------|------|
+| Container App URL | `https://cae-poweron-shared.redwater-53d21339.switzerlandnorth.azurecontainerapps.io` |
+| Azure Container Registry | `acrpoweron.azurecr.io` |
+| Image | `acrpoweron.azurecr.io/teams-browser-bot:latest` |
+| Health Check | `/health` |
+
---
-## 1. Container App erstellen (Azure Portal)
+## 1. Voraussetzungen
-1. **Azure Portal öffnen**: https://portal.azure.com
-2. **Suche**: "Container Apps" in der Suchleiste
-3. **+ Create** klicken
+### 1.1 Azure Container Registry (ACR)
+
+Eine ACR muss existieren. Falls nicht:
+
+1. Azure Portal → Suche "Container registries" → **+ Create**
+2. Name: `acrpoweron`, SKU: Basic, Location: Switzerland North
+3. Nach Erstellung: **Access keys** → **Admin user** aktivieren
+
+### 1.2 GitHub Secrets für CI/CD
+
+Im GitHub Repo `valueonag/service-teams-browser-bot`:
+
+**Settings** → **Secrets and variables** → **Actions**:
+
+| Secret Name | Wert |
+|-------------|------|
+| `ACR_LOGIN_SERVER` | `acrpoweron.azurecr.io` |
+| `ACR_USERNAME` | `acrpoweron` |
+| `ACR_PASSWORD` | Password aus ACR Access keys |
+
+---
+
+## 2. Container App erstellen (Azure Portal)
+
+1. **Azure Portal** → Suche "Container Apps" → **+ Create**
### Basics Tab
| Feld | Wert |
@@ -34,34 +65,17 @@ sich immer zur richtigen Gateway-Instanz zurückverbindet.
| Resource group | resource-core |
| Container app name | `teams-browser-bot` |
| Region | Switzerland North |
-| Container Apps Environment | **Create new** → Name: `cae-poweron-shared`, Zone redundancy: Disabled → **Create** |
+| Container Apps Environment | **Create new** → Name: `cae-poweron-shared` |
### Container Tab
-
-**Zuerst GitHub PAT erstellen** (brauchst du gleich):
-1. https://github.com/settings/tokens/new
-2. Note: "Azure Container App - teams-browser-bot"
-3. Expiration: 90 days (oder länger)
-4. Scope: ✅ `read:packages`
-5. **Generate token** → Kopieren und sicher aufbewahren
-
-**Dann im Azure Portal:**
-
| Feld | Wert |
|------|------|
-| Registry | Other registry |
-| Authentication type | Basic |
-| Registry login server | `ghcr.io` |
-| Username | `valueonag` |
-| Password | Dein GitHub PAT von oben |
-| Image | `valueonag/service-teams-browser-bot` |
+| Use quickstart image | ❌ Deaktivieren |
+| Registry | `acrpoweron` (Azure Container Registry) |
+| Image | `teams-browser-bot` |
| Image tag | `latest` |
-
-### Container Resources (weiter unten)
-| Feld | Wert |
-|------|------|
-| CPU cores | 2 |
-| Memory (Gi) | 4 |
+| Authentication type | Managed identity |
+| CPU and memory | 2 CPU cores, 4 Gi memory |
### Environment Variables
| Name | Value |
@@ -71,7 +85,6 @@ sich immer zur richtigen Gateway-Instanz zurückverbindet.
| BOT_NAME | PowerOn AI |
| BOT_HEADLESS | true |
| LOG_LEVEL | info |
-| SCREENSHOT_ON_ERROR | true |
> ⚠️ **Wichtig:** KEINE `GATEWAY_WS_URL` Variable setzen! Die URL kommt dynamisch vom Gateway.
@@ -80,82 +93,19 @@ sich immer zur richtigen Gateway-Instanz zurückverbindet.
|------|------|
| Ingress | ✅ Enabled |
| Ingress traffic | Accepting traffic from anywhere |
-| Ingress type | HTTP |
| Target port | 4100 |
-### Scale Tab
-| Feld | Wert |
-|------|------|
-| Min replicas | 0 |
-| Max replicas | 3 |
-
-4. **Review + create** → **Create**
+2. **Review + create** → **Create**
---
-## 2. Container App URL kopieren
+## 3. Gateway Konfiguration
-Nach dem Deployment:
+Die Gateway env-Files sind bereits konfiguriert:
-1. Gehe zu **Container Apps** → `teams-browser-bot`
-2. Im **Overview** Tab findest du die **Application Url**
-3. Kopiere die URL, z.B.: `https://teams-browser-bot.niceocean-12345678.switzerlandnorth.azurecontainerapps.io`
-
----
-
-## 3. GitHub Actions für Auto-Deployment (Optional)
-
-### 3.1 Service Principal erstellen (Azure Portal)
-
-1. **Azure Portal** → **Microsoft Entra ID** (früher Azure AD)
-2. **App registrations** → **+ New registration**
- - Name: `github-teams-browser-bot`
- - Supported account types: Single tenant
- - **Register**
-3. Notiere die **Application (client) ID** und **Directory (tenant) ID**
-4. **Certificates & secrets** → **+ New client secret**
- - Description: "GitHub Actions"
- - Expires: 24 months
- - **Add** → Kopiere den **Value** (nur jetzt sichtbar!)
-
-### 3.2 Service Principal Berechtigung geben
-
-1. Gehe zu **Resource groups** → `resource-core`
-2. **Access control (IAM)** → **+ Add** → **Add role assignment**
-3. Role: **Contributor**
-4. Members: Select members → Suche `github-teams-browser-bot` → **Select**
-5. **Review + assign**
-
-### 3.3 GitHub Secrets konfigurieren
-
-1. GitHub Repo → **Settings** → **Secrets and variables** → **Actions**
-2. **New repository secret** für jedes:
-
-| Secret Name | Wert |
-|-------------|------|
-| AZURE_CLIENT_ID | Application (client) ID |
-| AZURE_TENANT_ID | Directory (tenant) ID |
-| AZURE_CLIENT_SECRET | Client secret value |
-| AZURE_SUBSCRIPTION_ID | Subscription ID* |
-| AZURE_RESOURCE_GROUP | resource-core |
-| AZURE_CONTAINER_APP_NAME | teams-browser-bot |
-
-*Subscription ID findest du unter: Subscriptions → Subscription Product → Subscription ID
-
----
-
-## 4. Gateway Konfiguration
-
-In **jeder** Gateway-Instanz die **gleiche** Bot URL konfigurieren:
-
-**env_prod.env:**
+**env_prod.env & env_int.env:**
```
-TEAMSBOT_BROWSER_BOT_URL=https://teams-browser-bot..switzerlandnorth.azurecontainerapps.io
-```
-
-**env_int.env:**
-```
-TEAMSBOT_BROWSER_BOT_URL=https://teams-browser-bot..switzerlandnorth.azurecontainerapps.io
+TEAMSBOT_BROWSER_BOT_URL=https://cae-poweron-shared.redwater-53d21339.switzerlandnorth.azurecontainerapps.io
```
**env_dev.env (lokal):**
@@ -163,7 +113,17 @@ TEAMSBOT_BROWSER_BOT_URL=https://teams-browser-bot..switzerlandnorth.azurec
TEAMSBOT_BROWSER_BOT_URL=http://localhost:4100
```
-Ersetze `` mit dem tatsächlichen Wert aus Schritt 3.
+---
+
+## 4. CI/CD Pipeline
+
+Der GitHub Actions Workflow (`build-deploy.yml`) pusht automatisch zu ACR bei jedem Push auf `main`.
+
+**Manuelles Update der Container App:**
+
+1. Azure Portal → Container Apps → `teams-browser-bot`
+2. **Revisions and replicas** → **Create new revision**
+3. Das neue Image wird automatisch gepullt
---