新增分拆文件、SOP 與 Caddy SSL 憑證更新紀錄

- 將 hospital_media_antmedia.md 分拆為 docs/ 下五份主題文件
  (host.md, caddy.md, antmedia.md, ssl.md, maintenance.md)
- 新增 README.md / QUICKSTART.md / SUMMARY.md 作為文件入口
- 新增 SOP:Caddy SSL 憑證更新流程 (docs/sop-update-caddy-ssl.md)
  含 2026-04-16 實戰踩坑紀錄(.cer 副檔名、私鑰不匹配、sudo、防火牆 TLS 終端)
- 更新各文件中 tel.tpech.gov.tw 憑證資訊:HiPKI → TWCA,到期 2026-10-30
- 新增 .gitignore 排除 ssl-staging/(含私鑰,不可進 git)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-16 10:54:47 +08:00
parent 7d6a7ef848
commit 97fd841a0c
10 changed files with 1013 additions and 0 deletions

124
SUMMARY.md Normal file
View File

@@ -0,0 +1,124 @@
# 伺服器架構摘要
本文件彙整 `106.105.181.40` 的整體運維圖像。逐項細節請點入對應的主題文件。
## 1. 主機
| 項目 | 值 |
|------|-----|
| IP | `106.105.181.40` |
| SSH 別名 | `hospital_media` |
| 主要使用者 | `tpech_1duan``sftpuser``root` |
→ 詳見 [docs/host.md](docs/host.md)
## 2. 容器總覽
| 容器 | Image | 網路 | 用途 |
|------|-------|------|------|
| `caddy` | `caddy` | host | 反向代理、SSL 終端、靜態檔 |
| `antmedia` | `antmediaserver:2.13.2` | host、privileged | 直播串流 |
| `php` | `timmy/php_base:v1.0` | `8888→80` | 正式 PHP |
| `php-staging` | `timmy/php_base:v1.0` | `6666→80` | 測試 PHP |
| `coturn` | `coturn` | `3478` | TURN/STUN |
| `phpmyadmin` | `phpmyadmin` | `1888→80` | DB 管理介面 |
| `mysql-container` | `mysql:latest` | `3306` | MySQL |
> 全部容器 `restart: always`。
## 3. Caddy 路由
| 入口 | 後端 | 說明 |
|------|------|------|
| `tel.tpech.gov.tw:443` | `127.0.0.1:8888`php | 正式HTTPS |
| `tel.tpech.gov.tw:443/phpmyadmin/*` | `10.200.251.40:1888` | phpMyAdmin |
| `tel.tpech.gov.tw:80` | `127.0.0.1:8888` | 正式HTTP |
| `:1443` | `127.0.0.1:6666`php-staging | 測試 |
| `tel-server.tpech.gov.tw:80/443` | `/srv/tel-server` | PKI `.well-known` 靜態檔 |
| `:443` / `:80` | `127.0.0.1:8888` | 其他網域 fallback |
| `:8081` | — | 健康檢查 |
- `auto_https off`:手動管理憑證
- 部署於 `/opt/caddy`,以 `docker-compose.yaml` 管理
→ 詳見 [docs/caddy.md](docs/caddy.md)
## 4. Ant Media Server
| 項目 | 值 |
|------|-----|
| 部署路徑 | `/opt/antmediaserver` |
| Image | `antmediaserver:2.13.2`(基底 `ubuntu:22.04` |
| 網路 | `--network host` + `--privileged` |
| 時區 | `Asia/Taipei` |
| 資料 Volume | `antmedia_volume``/usr/local/antmedia/` |
### Web 應用
| 路徑 | 說明 |
|------|------|
| `/LiveApp` | 主要使用WebRTC 20fps、HLS 啟用 |
| `/WebRTCAppEE` | WebRTC 企業版30fps目前無串流 |
| `/` | AMS Angular 管理後台 |
- 轉碼720p (1.5 Mbps) + 480p (1 Mbps)
- TURN/STUN 指向 `106.105.181.40:3478`
→ 詳見 [docs/antmedia.md](docs/antmedia.md)
## 5. 對外 Port 總表
| 協定 | Port |
|------|------|
| HTTP | 80、5080 |
| HTTPS | 443、1443、5443、8443RTMPS |
| RTMP | 1935 |
| TURN/STUN | 3478 |
| WebRTC UDP | 50000-60000 |
| 健康檢查 | 8081 |
## 6. SSL 憑證
兩張憑證分屬不同 CA需各自手動更新。
| 網域 | CA | 到期日 | 使用於 | 憑證位置 |
|------|----|--------|--------|----------|
| `tel.tpech.gov.tw` | **TWCA** | **2026-10-30** | Caddy | 主機 `/opt/caddy/fullchain.pem``privkey.pem` |
| `tel-server.tpech.gov.tw` | 中華電信 HiPKI | 2026-04-23 | AMS | 容器內 `/usr/local/antmedia/conf/` |
> `tel.tpech.gov.tw` 2026-04-16 從 HiPKI 換成 TWCA且只有半年效期→ 10/30
- AMS Keystore 密碼 = 網域名稱 `tel-server.tpech.gov.tw`
- 歷年憑證備份:`/opt/caddy/hospital/``/opt/antmediaserver/ssl_*/`
- **注意**:醫院前端有防火牆/WAF 做 TLS 終端,更新 Caddy 後需另外通知網管同步更新
→ 詳見 [docs/ssl.md](docs/ssl.md)
## 7. 備份
| 項目 | 方式 |
|------|------|
| AMS 資料卷 | `/opt/antmediaserver/backup_antmedia_data.sh` 產生 tar.gz |
| AMS 歷史完整備份 | `/opt/antmedia_*.tar.gz`(最新 2025-05-123.4GB |
| 憑證備份 | `/opt/caddy/hospital/``/opt/antmediaserver/ssl_*/` |
→ 詳見 [docs/maintenance.md](docs/maintenance.md)
## 8. 已知問題 / 待辦
- **TURN/STUN** 仍為預設帳密 `testuser` / `testpassword`,建議更換。
- **LiveApp `remoteAllowedCIDR`** 格式錯誤:`106.105.181.40.106.105.181.70`,中間句點應為逗號。
- **AMS 以 `--privileged` 運行**,安全上需留意。
- **host 網路模式**`caddy``antmedia` 皆共用主機所有 port變更前需檢查衝突。
## 9. 年度 SSL 更新流程(總覽)
1. 向中華電信提交 CSR。
2. 拿到 DCV 驗證檔 → 放入 `/opt/caddy/tel-server/.well-known/pki-validation/`
3. CA 驗證通過 → 取得新憑證。
4. 更新 Caddy覆蓋 `/opt/caddy/fullchain.pem``privkey.pem``./restart.sh`
5. 更新 AMS`cd /opt/antmediaserver && ./enable_ssl.sh ssl_tel_server_tpech_gov_tw_<年份>`
6. 備份新憑證 → `hospital/``ssl_*/` 目錄。
7. 備份 AMS 資料 → `./backup_antmedia_data.sh`
→ 詳細步驟見 [docs/ssl.md](docs/ssl.md),常用指令見 [QUICKSTART.md](QUICKSTART.md#ssl-憑證更新)。