# 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`) ```bash ./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 [DOMAIN] # 一鍵更新 SSL 憑證 ./backup_antmedia_data.sh # 備份 antmedia_volume 到當前目錄 ``` ### build_antmedia_image.sh ```bash docker build --network=host -t antmediaserver \ --build-arg AntMediaServer=ant-media-server-enterprise-2.13.2-20250207_1708.zip . ``` ### run.sh ```bash 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 ```bash 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 ``` ### 修改方式(**不中斷串流**) 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 | |------|------| | HTTP | 5080 | | HTTPS | 5443 | | RTMP | 1935 | | RTMPS | 8443 | | TURN/STUN | 3478 | | WebRTC UDP | 50000-60000 | ## 注意事項 - **AMS 使用 Docker volume**(`antmedia_volume`):容器刪除後資料仍保留,但刪除 volume 則遺失。 - **AMS 特權模式**:容器以 `--privileged` 運行。 ## 相關文件 - [SSL 憑證管理](ssl.md)(含 AMS 憑證更新方法一 / 方法二) - [主機與容器總覽](host.md) - [系統維護與備份](maintenance.md)