- 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 路由補註網站根目錄路徑。
4.0 KiB
4.0 KiB
Ant Media Server
- 部署路徑:
/opt/antmediaserver
服務狀態
| 項目 | 值 |
|---|---|
| 容器名稱 | antmedia |
| Docker Image | antmediaserver:2.13.2 |
| 安裝包 | ant-media-server-enterprise-2.13.2-20250207_1708.zip |
| 基礎映像 | ubuntu:22.04 |
| 網路模式 | --network host |
| 時區 | Asia/Taipei |
| 重啟策略 | --restart=always |
| 資料 Volume | antmedia_volume → /usr/local/antmedia/ |
操作腳本(/opt/antmediaserver)
./build_antmedia_image.sh # 建構 Docker image
./run.sh # 停舊容器 → 啟動新容器(掛載 antmedia_volume)
./stop.sh # docker stop antmedia
./shell.sh # docker exec -it antmedia bash
./enable_ssl.sh <CERT_DIR> [DOMAIN] # 一鍵更新 SSL 憑證
./backup_antmedia_data.sh # 備份 antmedia_volume 到當前目錄
build_antmedia_image.sh
docker build --network=host -t antmediaserver \
--build-arg AntMediaServer=ant-media-server-enterprise-2.13.2-20250207_1708.zip .
run.sh
docker stop antmedia && docker rm antmedia
docker run -d --network host --privileged \
--restart=always \
-e TZ=Asia/Taipei \
-v /etc/localtime:/etc/localtime:ro \
--mount source=antmedia_volume,target=/usr/local/antmedia/ \
--name antmedia antmediaserver:2.13.2
backup_antmedia_data.sh
docker run --rm \
-v antmedia_volume:/data \
-v "$(pwd)":/backup \
busybox \
sh -c "cd /data && tar czf /backup/antmedia_backup_$(date +%Y%m%d_%H%M%S).tar.gz ."
Web 應用
| 應用 | 路徑 | 說明 |
|---|---|---|
| LiveApp | /LiveApp |
直播應用(主要使用),WebRTC 20fps,HLS 啟用 |
| WebRTCAppEE | /WebRTCAppEE |
WebRTC 企業版,30fps,目前無串流 |
| root | / |
AMS 管理後台(Angular SPA) |
- 轉碼設定:720p (1.5Mbps) + 480p (1Mbps)
- 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
修改方式(不中斷串流)
- 瀏覽器登入
https://tel-server.tpech.gov.tw:5443/ WebRTCAppEE→ Settings →Remote Allowed CIDR- 編輯欄位(逗號分隔,別打成句點,否則整段會變非法 CIDR = deny all)
- 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 |
|---|---|
| HTTP | 5080 |
| HTTPS | 5443 |
| RTMP | 1935 |
| RTMPS | 8443 |
| TURN/STUN | 3478 |
| WebRTC UDP | 50000-60000 |
注意事項
- AMS 使用 Docker volume(
antmedia_volume):容器刪除後資料仍保留,但刪除 volume 則遺失。 - AMS 特權模式:容器以
--privileged運行。