
【免费下载链接】continuwuityA community-driven Matrix homeserver项目地址https://gitcode.com/gh_mirrors/co/continuwuity点击查看免费下载Continuwuity 是一款社区驱动的开源 Matrix homeserver但默认开箱并不带语音/视频通话能力。这篇完整指南将带你快速搭建LiveKitMatrixRTC / Element Call 后端和coturnTURN/STUN 中继服务器两大核心组件让你自建的 Matrix 服务器同时支持多人群语音和传统点对点通话。先搞懂Matrix 的两种语音通话技术在动手之前先用一分钟理解架构能帮你少走弯路通话类型依赖服务适用场景MatrixRTC / Element CallLiveKit lk-jwt-service多人语音/视频通话主流方向Legacy Calls传统通话TURN/STUN 服务器如 coturn一对一通话老客户端兼容LiveKit 负责会议TURN 负责穿透 NAT——两者互补建议一起部署。更多架构说明可参阅 docs/calls.mdx。第一步部署 LiveKit 服务组MatrixRTC 后端本节基于 Docker Compose 部署假设你已有服务器和可用域名。1. 准备独立子域名为 LiveKit 分配一个专属子域名本例用livekit.example.com并将 DNS 记录指向服务器。2. 生成认证密钥Matrix 客户端需要一套 key/secret 与 LiveKit 认证docker run --rm livekit/livekit-server:latest generate-keys记下输出的API Key约20位和API Secret约64位后面会用到。3. 编写 docker-compose.ymlLiveKit 需要两个服务livekit本体 lk-jwt-service负责为 Matrix 用户签发连接令牌services: lk-jwt-service: image: ghcr.io/element-hq/lk-jwt-service:latest container_name: lk-jwt-service environment: - LIVEKIT_JWT_BIND:8081 - LIVEKIT_URLwss://livekit.example.com # 你的 LiveKit 域名 - LIVEKIT_FULL_ACCESS_HOMESERVERSexample.com # 你的 server_name - LIVEKIT_KEYLK_MATRIX_KEY # 上一步生成的 API Key - LIVEKIT_SECRETLK_MATRIX_SECRET # 上一步生成的 API Secret restart: unless-stopped ports: - 8081:8081 livekit: image: livekit/livekit-server:latest container_name: livekit command: --config /etc/livekit.yaml restart: unless-stopped network_mode: host # LiveKit 默认绑定所有地址 volumes: - ./livekit.yaml:/etc/livekit.yaml:ro同目录下创建livekit.yamlport: 7880 bind_addresses: - rtc: tcp_port: 7881 port_range_start: 50100 port_range_end: 50200 use_external_ip: true enable_loopback_candidate: false keys: LK_MATRIX_KEY: LK_MATRIX_SECRET # 替换为你的 key/secret room: auto_create: false别忘了放行防火墙端口ufw allow 7881/tcp和ufw allow 50100:50200/udp。第二步告诉 Continuwuity 客户端去哪找 LiveKit在 Continuwuity 配置文件中加入[global.matrix_rtc]段完整配置项见 conduwuit-example.toml[global.matrix_rtc] foci [ { type livekit, livekit_service_url https://livekit.example.com }, ]如果使用环境变量配置则对应CONTINUWUITY_MATRIX_RTC__FOCI[{ type livekit, livekit_service_url https://livekit.example.com }]配置后Continuwuity 会通过/_matrix/client/unstable/org.matrix.msc4143/rtc/transports端点向客户端广播 LiveKit 地址客户端即可自动发现通话服务。第三步配置反向代理Caddy 示例所有路径默认转发到 LiveKit7880 端口但以下三个路径前缀必须转发给lk-jwt-service8081 端口/sfu/get/healthz/get_tokenCaddyfile 示例livekit.example.com { # 这三个路径走 JWT 认证服务 lk-jwt-service path /sfu/get* /healthz* /get_token* route lk-jwt-service { reverse_proxy 127.0.0.1:8081 } # 其余路径走 LiveKit reverse_proxy 127.0.0.1:7880 } 项目内还附带了现成示例nginx 版 docs/public/calls/livekit.nginx.conf、Caddy Docker labels 版 docs/public/calls/livekit.docker-compose.with-caddy-labels.yml可直接参考。第四步部署 coturnTURN/STUN 服务器coturn 是 Continuwuity 官方推荐的 TURN/STUN 实现为传统通话提供 NAT 穿透能力。1. 创建 coturn.confuse-auth-secret static-auth-secret一段64位随机密钥 realmcoturn.example.com可用pwgen -s 64 1生成安全密钥。2. 启动 coturn 容器services: coturn: container_name: coturn image: docker.io/coturn/coturn restart: unless-stopped network_mode: host # 官方推荐 host 网络性能更好 volumes: - ./coturn.conf:/etc/coturn/turnserver.conf运行docker compose up -d即可。3. 端口规划与 LiveKit 错开 ⚠️coturn 默认媒体端口范围是49152-65535会与 LiveKit 的50100-50200冲突。在coturn.conf中设置min-port50201 max-port65535然后放行防火墙ufw allow 3478/udp ufw allow 3478/tcp ufw allow 5349/tcp ufw allow 5349/udp ufw allow 50201:65535/udp第五步配置 Continuwuity 下发 TURN 凭据在 Continuwuity 配置文件中添加客户端将通过voip/turnServer端点自动获取凭据相关逻辑见 src/api/client/voip.rsturn_uris [ turn:coturn.example.com:3478?transportudp, turn:coturn.example.com:3478?transporttcp, # 若启用了 TURN-over-TLS加上这行注意 turns: 前缀 turns:coturn.example.com:5349?transporttcp ] # 必须与 coturn 的 static-auth-secret 完全一致 turn_secret 你的 static-auth-secret # 凭据有效期秒默认 86400 turn_ttl 10800重启 Continuwuity 使配置生效。✅第六步验证测试确认通话就绪测试 TURN 服务器用你的会话 access token 请求凭据端点curl https://matrix.example.com/_matrix/client/r0/voip/turnServer \ -H Authorization: Bearer your_client_token | jq能返回username/password/uris说明 Continuwuity 配置成功。再把凭据粘贴到浏览器端 Trickle ICE 测试工具若出现relay候选项说明 TURN 完全可用。测试 LiveKit 集成请求发现端点确认 foci 已下发curl -H Authorization: Bearer token \ https://matrix.example.com/_matrix/client/unstable/org.matrix.msc4143/rtc/transports打开浏览器中的 Element Call 发起一次通话——如果能看到对方画面/声音恭喜你搭建完成常见问题排查清单症状可能原因MISSING_MATRIX_RTC_FOCUSContinuwuity 配置缺少[global.matrix_rtc].foci通话中一直显示 Waiting for media客户端无法连通 LiveKit检查反代与防火墙OPEN_ID_ERROR查看lk-jwt-service日志通常是容器间网络不通Docker 容器互访超时在 compose 中加extra_hosts: [livekit.example.com:host-gateway]映射域名TURN 测试code701防火墙未放行 3478 / 5349 / 媒体端口TURN 测试code401turn_secret与 coturn 的static-auth-secret不一致未配置 TURN 时turnServer返回 404属正常行为MSC4166检查turn_uris是否为空 调试技巧随时用docker compose logs --follow实时查看各服务日志浏览器客户端还可打开 DevTools 的 Network 面板定位失败请求。写在最后完成以上六步你的 Continuwuity 服务器就已具备完整的语音通话能力LiveKit 支撑多人 MatrixRTC 群通话coturn 保障传统一对一通话穿越各种网络。 深入阅读推荐docs/calls/livekit.mdx — LiveKit 完整指南含 TURN-over-TLS on 443 高级配置docs/calls/turn.mdx — coturn 部署与安全加固建议docs/calls.mdx — 通话功能总览祝搭建顺利享受自托管的畅爽通话体验赞分享【免费下载链接】continuwuityA community-driven Matrix homeserver项目地址https://gitcode.com/gh_mirrors/co/continuwuity点击查看免费下载相关推荐GoldenDict云词典服务搭建自建服务器与API开发全攻略GoldenDict云词典服务搭建自建服务器与API开发全攻略 还在为词典查询速度慢、服务不稳定而烦恼吗一文教你打造专属GoldenDict云词典服务本文桌面应用手机搭建移动服务器全攻略让口袋里的设备变身专业服务器手机搭建移动服务器全攻略让口袋里的设备变身专业服务器 还在为测试网站项目而烦恼吗想在移动设备上搭建一个完整的服务器环境现在通过 MyServer 这个创VisoMaster高级技巧提升换脸效果的7个专业方法VisoMaster高级技巧提升换脸效果的7个专业方法 VisoMaster是一款功能强大且易于使用的视频换脸编辑软件通过直观的界面和专业的算法帮助用户实现桌面应用计算机视觉AI 应用图像处理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考