|
| 1 | +--- |
| 2 | +layout: default |
| 3 | +title: 部署指南 — WebRTC |
| 4 | +description: 使用 Docker Compose 部署 WebRTC Demo(Caddy HTTPS + coturn TURN) |
| 5 | +--- |
| 6 | + |
| 7 | +[← 返回首页]({{ site.baseurl }}/) |
| 8 | + |
| 9 | +# 部署指南 |
| 10 | + |
| 11 | +本项目提供 `docker-compose.yml`,一键启动三个服务: |
| 12 | + |
| 13 | +| 服务 | 作用 | |
| 14 | +|:-----|:-----| |
| 15 | +| **webrtc** | Go 信令服务 + 前端静态文件 | |
| 16 | +| **caddy** | 反向代理,自动 HTTPS(Let's Encrypt) | |
| 17 | +| **coturn** | TURN/STUN 服务器,NAT 穿透 | |
| 18 | + |
| 19 | +--- |
| 20 | + |
| 21 | +## 快速启动 |
| 22 | + |
| 23 | +### 1. 配置 TURN(可选) |
| 24 | + |
| 25 | +```bash |
| 26 | +cp turnserver.conf.example turnserver.conf |
| 27 | +# 编辑 turnserver.conf,修改 user=your_user:your_password |
| 28 | +``` |
| 29 | + |
| 30 | +### 2. 配置 RTC_CONFIG_JSON |
| 31 | + |
| 32 | +在 `docker-compose.yml` 中取消 `RTC_CONFIG_JSON` 的注释,填入你的 TURN 信息: |
| 33 | + |
| 34 | +```yaml |
| 35 | +environment: |
| 36 | + - RTC_CONFIG_JSON={"iceServers":[{"urls":"turn:YOUR_SERVER_IP:3478","username":"your_user","credential":"your_password"}]} |
| 37 | +``` |
| 38 | +
|
| 39 | +### 3. 启动 |
| 40 | +
|
| 41 | +```bash |
| 42 | +# 设置域名(用于 Caddy 自动签发证书) |
| 43 | +export DOMAIN=your-domain.com |
| 44 | + |
| 45 | +# 启动所有服务 |
| 46 | +docker compose up -d |
| 47 | + |
| 48 | +# 查看日志 |
| 49 | +docker compose logs -f |
| 50 | +``` |
| 51 | + |
| 52 | +访问 `https://your-domain.com` 即可使用。 |
| 53 | + |
| 54 | +--- |
| 55 | + |
| 56 | +## 仅本地测试(无需 HTTPS) |
| 57 | + |
| 58 | +不需要 Caddy 和 TURN 时,可以直接运行 Go 服务: |
| 59 | + |
| 60 | +```bash |
| 61 | +go run ./cmd/server |
| 62 | +# 浏览器访问 http://localhost:8080 |
| 63 | +``` |
| 64 | + |
| 65 | +或只启动 webrtc 服务: |
| 66 | + |
| 67 | +```bash |
| 68 | +docker compose up -d webrtc |
| 69 | +# 浏览器访问 http://localhost:8080 |
| 70 | +``` |
| 71 | + |
| 72 | +--- |
| 73 | + |
| 74 | +## 服务说明 |
| 75 | + |
| 76 | +### Caddy(HTTPS 反向代理) |
| 77 | + |
| 78 | +- 默认监听 80/443 端口 |
| 79 | +- 通过 `DOMAIN` 环境变量配置域名 |
| 80 | +- 未设置 `DOMAIN` 时默认 `localhost`(无自动证书) |
| 81 | +- 需要公网域名 + DNS 解析才能自动签发 Let's Encrypt 证书 |
| 82 | + |
| 83 | +### coturn(TURN 服务器) |
| 84 | + |
| 85 | +- 使用 `host` 网络模式,直接暴露 3478(UDP/TCP)和 5349(TLS) |
| 86 | +- 配置文件:`turnserver.conf`(已在 `.gitignore` 中,不会提交凭证) |
| 87 | +- 模板文件:`turnserver.conf.example` |
| 88 | + |
| 89 | +### 环境变量 |
| 90 | + |
| 91 | +| 变量 | 服务 | 说明 | 默认值 | |
| 92 | +|:-----|:-----|:-----|:-------| |
| 93 | +| `DOMAIN` | caddy | Caddy 站点域名 | `localhost` | |
| 94 | +| `WS_ALLOWED_ORIGINS` | webrtc | WebSocket 允许的来源 | `*` | |
| 95 | +| `RTC_CONFIG_JSON` | webrtc | ICE/TURN 配置 JSON | 内置 STUN | |
| 96 | + |
| 97 | +--- |
| 98 | + |
| 99 | +## 端口清单 |
| 100 | + |
| 101 | +| 端口 | 协议 | 服务 | 说明 | |
| 102 | +|:-----|:-----|:-----|:-----| |
| 103 | +| 80 | TCP | caddy | HTTP(自动跳转 HTTPS) | |
| 104 | +| 443 | TCP/UDP | caddy | HTTPS | |
| 105 | +| 8080 | TCP | webrtc | 直接访问(调试用) | |
| 106 | +| 3478 | TCP/UDP | coturn | TURN/STUN | |
| 107 | +| 5349 | TCP/UDP | coturn | TURN/TLS | |
0 commit comments