Configure self-hosted STUN for remote WebRTC
This commit is contained in:
@@ -170,44 +170,53 @@ https://<远程机器IP或域名>:18189
|
||||
如果浏览器和后端不在同一内网,WebRTC 媒体链路通常需要 TURN。项目里的
|
||||
`docker-compose.yaml` 已经带了 coturn,用 `remote` profile 启动即可。
|
||||
|
||||
#### 6.1 配项目根目录 `.env`
|
||||
#### 6.1 确认公网/私网 IP
|
||||
|
||||
项目根目录的 `.env` 给 coturn 容器用:
|
||||
查询云主机默认路由使用的私网 IP:
|
||||
|
||||
```bash
|
||||
ip -4 route get 1.1.1.1
|
||||
```
|
||||
|
||||
输出中 `src` 后的地址是 `PRIVATE_IP`。例如:
|
||||
|
||||
```text
|
||||
1.1.1.1 via 10.0.0.1 dev eth0 src 10.0.0.8
|
||||
```
|
||||
|
||||
云控制台中绑定到该主机、用于 SSH 的公网地址是 `PUBLIC_IP`。
|
||||
|
||||
#### 6.2 配项目根目录 `.env`
|
||||
|
||||
Docker Compose 会把项目根 `.env` 中的 ICE 配置同时传给 API 和 coturn:
|
||||
|
||||
```text
|
||||
PUBLIC_IP=<远程机器公网IP>
|
||||
PRIVATE_IP=<远程机器私网IP>
|
||||
TURN_SECRET=<一串足够长的随机密钥>
|
||||
STUN_URL=stun:<远程机器公网IP>:3478
|
||||
TURN_URLS=turn:<远程机器公网IP>:3478?transport=udp,turn:<远程机器公网IP>:3478?transport=tcp
|
||||
```
|
||||
|
||||
示例:
|
||||
|
||||
```text
|
||||
PUBLIC_IP=118.89.89.89
|
||||
PRIVATE_IP=10.0.0.8
|
||||
TURN_SECRET=change-me-to-a-long-random-string
|
||||
```
|
||||
|
||||
#### 6.2 配后端 `backend/.env`
|
||||
|
||||
后端用同一个 `TURN_SECRET` 签发短时 TURN 凭证:
|
||||
|
||||
```text
|
||||
TURN_URLS=turn:<远程机器公网IP>:3478?transport=udp,turn:<远程机器公网IP>:3478?transport=tcp
|
||||
TURN_SECRET=<和项目根 .env 一致的密钥>
|
||||
```
|
||||
|
||||
示例:
|
||||
|
||||
```text
|
||||
STUN_URL=stun:118.89.89.89:3478
|
||||
TURN_URLS=turn:118.89.89.89:3478?transport=udp,turn:118.89.89.89:3478?transport=tcp
|
||||
TURN_SECRET=change-me-to-a-long-random-string
|
||||
```
|
||||
|
||||
改完 `backend/.env` 后,重启后端 `uvicorn`。
|
||||
`STUN_URL` 指向同机 coturn,可避免后端等待不可达的公共 STUN。
|
||||
Compose 的 `environment` 会覆盖 `backend/.env` 中的同名值,因此 Docker
|
||||
部署必须在项目根 `.env` 设置上述变量。
|
||||
|
||||
#### 6.3 启动 coturn
|
||||
|
||||
```bash
|
||||
docker compose --profile remote up -d coturn
|
||||
docker compose config --quiet
|
||||
docker compose --profile remote up -d --build --force-recreate api coturn
|
||||
```
|
||||
|
||||
查看状态和日志:
|
||||
@@ -259,7 +268,7 @@ curl -k https://<远程机器IP或域名>:18189/api/webrtc/ice-servers
|
||||
```json
|
||||
{
|
||||
"iceServers": [
|
||||
{"urls": "stun:stun.l.google.com:19302"},
|
||||
{"urls": "stun:118.89.89.89:3478"},
|
||||
{
|
||||
"urls": "turn:<远程机器公网IP>:3478?transport=udp",
|
||||
"username": "...",
|
||||
|
||||
Reference in New Issue
Block a user