Files
106_105_181_40/docs/antmedia.md
Timmy 394abb181e docs: 記錄 WebRTCAppEE REST API 白名單新增,補充容器掛載資訊
- 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 路由補註網站根目錄路徑。
2026-04-17 15:40:33 +08:00

123 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 <CERT_DIR> [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 20fpsHLS 啟用 |
| 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 networkIP 預設是 `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)