From 394abb181eea903874d2b0acc0387a3a534254ad Mon Sep 17 00:00:00 2001 From: Timmy Date: Fri, 17 Apr 2026 15:40:33 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E8=A8=98=E9=8C=84=20WebRTCAppEE=20REST?= =?UTF-8?q?=20API=20=E7=99=BD=E5=90=8D=E5=96=AE=E6=96=B0=E5=A2=9E=EF=BC=8C?= =?UTF-8?q?=E8=A3=9C=E5=85=85=E5=AE=B9=E5=99=A8=E6=8E=9B=E8=BC=89=E8=B3=87?= =?UTF-8?q?=E8=A8=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - antmedia.md / maintenance.md: 新增 `remoteAllowedCIDR` 白名單章節, 記錄 2026-04-17 將 `172.17.0.3`、`172.17.0.4`(php / php-staging 容器 bridge IP)加入 WebRTCAppEE,解決 PHP 呼叫錄影 REST API 回 403 「Not allowed IP」問題;含修改 SOP、容器重建 IP 變動提醒。 - host.md: 容器一覽表加入「掛載目錄」欄位,明列 php / php-staging 的網站根目錄掛載。 - caddy.md: `:1443` → php-staging 路由補註網站根目錄路徑。 --- docs/antmedia.md | 32 ++++++++++++++++++++++++++++++++ docs/caddy.md | 2 +- docs/host.md | 18 +++++++++--------- docs/maintenance.md | 1 + 4 files changed, 43 insertions(+), 10 deletions(-) diff --git a/docs/antmedia.md b/docs/antmedia.md index cf43964..92e3dca 100644 --- a/docs/antmedia.md +++ b/docs/antmedia.md @@ -67,6 +67,38 @@ docker run --rm \ - TURN/STUN 指向 `106.105.181.40:3478`(帳密為預設 `testuser`/`testpassword`,建議更換) - LiveApp 的 `remoteAllowedCIDR` 有格式錯誤:`106.105.181.40.106.105.181.70`,中間句點應為逗號 +## REST API 白名單(`remoteAllowedCIDR`) + +AMS 的 REST API(`/LiveApp/rest/...`、`/WebRTCAppEE/rest/...`、`/rest/...`)會在 Tomcat 層檢查來源 IP,不在白名單會回 `HTTP 403 – Not allowed IP`。 + +### 目前 `WebRTCAppEE` 白名單 + +``` +127.0.0.1, 106.105.181.70, 106.105.181.40, +10.200.251.40, 10.200.251.70, 220.135.27.129, +172.17.0.3, 172.17.0.4 +``` + +最後兩筆(`172.17.0.3` / `172.17.0.4`)是 `php` 與 `php-staging` 容器在 docker0 bridge 上的 IP,用於讓兩個 PHP 容器呼叫: + +``` +PUT http://tel-server.tpech.gov.tw:5080/WebRTCAppEE/rest/v2/broadcasts/{streamId}/recording/true?recordType=mp4 +``` + +### 修改方式(**不中斷串流**) + +1. 瀏覽器登入 `https://tel-server.tpech.gov.tw:5443/` +2. `WebRTCAppEE` → Settings → `Remote Allowed CIDR` +3. 編輯欄位(**逗號分隔**,別打成句點,否則整段會變非法 CIDR = deny all) +4. Save(熱更新,不中斷現有 broadcasting) + +### 注意事項 + +- PHP 容器為 bridge network,IP 預設是 `172.17.0.x`。容器刪除後重建,**IP 可能會重新分配**。 + - 驗證:`docker inspect php php-staging --format '{{.Name}} {{json .NetworkSettings.Networks}}'` + - 若變動,更新白名單即可;或改用網段 `172.17.0.0/16`(代價:同網段所有容器都能打 REST API) +- `red5-web.properties` 中的 `remoteAllowedCIDR` 僅為啟動預設值;透過 UI/REST 改過後實際生效的是 mapdb 裡的 runtime 設定。 + ## 連接埠 | 協定 | Port | diff --git a/docs/caddy.md b/docs/caddy.md index 26ecadb..6992bb9 100644 --- a/docs/caddy.md +++ b/docs/caddy.md @@ -22,7 +22,7 @@ | `tel.tpech.gov.tw:443` | `127.0.0.1:8888`(php 容器) | 正式環境,HTTPS | | `tel.tpech.gov.tw:443/phpmyadmin/*` | `10.200.251.40:1888` | phpMyAdmin(strip prefix 後轉發) | | `tel.tpech.gov.tw:80` | `127.0.0.1:8888` | 正式環境,HTTP | -| `:1443` | `127.0.0.1:6666`(php-staging 容器) | 測試環境(ISO27001) | +| `:1443` | `127.0.0.1:6666`(php-staging 容器,網站根目錄 `/opt/php-staging/www`) | 測試環境(ISO27001) | | `tel-server.tpech.gov.tw:80/443` | `/srv/tel-server` | 靜態檔案服務(用於 PKI 驗證 `.well-known`) | | `:443` / `:80` | `127.0.0.1:8888` | 其他網域的 fallback | | `:8081` | — | 健康檢查(回傳 "I am 8081") | diff --git a/docs/host.md b/docs/host.md index 0e4fa5a..667dd1c 100644 --- a/docs/host.md +++ b/docs/host.md @@ -10,15 +10,15 @@ ## 全部容器一覽 -| 容器名稱 | Image | 網路 | 用途 | -|----------|-------|------|------| -| `caddy` | `caddy` | host | 反向代理、SSL 終端、靜態檔案 | -| `antmedia` | `antmediaserver:2.13.2` | host | Ant Media Server(串流) | -| `php` | `timmy/php_base:v1.0` | port 8888→80 | 正式環境 PHP 應用 | -| `php-staging` | `timmy/php_base:v1.0` | port 6666→80 | 測試環境 PHP 應用(ISO27001 驗證用) | -| `coturn` | `coturn` | port 3478 | TURN/STUN 伺服器 | -| `phpmyadmin` | `phpmyadmin` | port 1888→80 | 資料庫管理介面 | -| `mysql-container` | `mysql:latest` | port 3306 | MySQL 資料庫 | +| 容器名稱 | Image | 網路 | 掛載目錄 | 用途 | +|----------|-------|------|----------|------| +| `caddy` | `caddy` | host | `/opt/caddy` | 反向代理、SSL 終端、靜態檔案 | +| `antmedia` | `antmediaserver:2.13.2` | host | — | Ant Media Server(串流) | +| `php` | `timmy/php_base:v1.0` | port 8888→80 | `/opt/php/www` → `/var/www/html` | 正式環境 PHP 應用 | +| `php-staging` | `timmy/php_base:v1.0` | port 6666→80 | `/opt/php-staging/www` → `/var/www/html` | 測試環境 PHP 應用(ISO27001 驗證用) | +| `coturn` | `coturn` | port 3478 | — | TURN/STUN 伺服器 | +| `phpmyadmin` | `phpmyadmin` | port 1888→80 | — | 資料庫管理介面 | +| `mysql-container` | `mysql:latest` | port 3306 | — | MySQL 資料庫 | 所有容器皆設為 `restart: always`。 diff --git a/docs/maintenance.md b/docs/maintenance.md index 158e69e..82177bc 100644 --- a/docs/maintenance.md +++ b/docs/maintenance.md @@ -16,6 +16,7 @@ - **host 網路**:`caddy` 和 `antmedia` 皆使用 host 網路模式,直接共用主機所有 port。 - **TURN/STUN 帳密為預設值** `testuser` / `testpassword`,建議更換。 - **LiveApp 的 `remoteAllowedCIDR` 有格式錯誤**:`106.105.181.40.106.105.181.70`,中間句點應為逗號。 +- **WebRTCAppEE `remoteAllowedCIDR` 已加入 `172.17.0.3`、`172.17.0.4`**(2026-04-17):讓 `php` / `php-staging` 容器能呼叫 `/WebRTCAppEE/rest/v2/...` 啟動錄影。詳見 [antmedia.md](antmedia.md#rest-api-白名單-remoteallowedcidr)。容器重建後 bridge IP 可能變動,需重新核對。 ## SSL 憑證到期時間