LiveKit 自部署指南:4 核 8G 服务器如何跑起实时音视频 SFU

【免费下载链接】livekit End-to-end realtime stack for connecting humans and AI 【免费下载链接】livekit 项目地址: https://gitcode.com/GitHub_Trending/li/livekit

LiveKit 是一个开源的实时音视频 SFU 服务器,这篇自部署指南面向想在自己的服务器上跑多人音视频房间的你。你不需要理解 WebRTC 原理,只需要 4 个端口和一对密钥就能让它跑起来。下面先判断机器够不够,再走部署路线,最后 5 分钟验证。

先判断:你的环境能不能跑

LiveKit 服务端是一个 Go 单二进制,开销不大,但媒体转发对上行带宽很敏感。对照这张表检查你的机器:

项目最低配置推荐配置(生产)
CPU4 核8 核及以上
内存8 GB16 GB 及以上
上行带宽10 Mbps100 Mbps 及以上
操作系统Linux x86_64 或 arm64,主流发行版同左,Docker 或二进制安装
端口TCP 7880 + UDP 50000–60000同左,另加 TCP 7881(UDP 不通时的回退)

算一笔账:一路 1080p 视频上行大约 2–4 Mbps,4 核 8G 的机器大致能扛百级纯语音用户或十几路视频会议。带宽不够就别硬上,先扩带宽再谈部署。

部署路线:从 0 到可用

环境准备

服务器只需要三组端口可达:TCP 7880(信令与 RoomService API)、UDP 50000–60000(媒体流)、TCP 7881(可选,UDP 被墙时的回退通道)。仓库根目录的 config-sample.yaml 是完整配置模板,每个参数都有注释,直接拿它当基准改。

这一步最容易踩的坑:只放行了 TCP 7880,忘了 UDP 端口段,结果信令连上了、媒体一直不到。

核心部署

最省事的路径是 Docker 起容器:

docker run -it -p 7880:7880 -p 50000-60000:50000-60000/udp \
  livekit/livekit-server --dev

--dev 会用内置占位密钥(devkey/secret)直接启动,仅适合验证。想自己编译的话,入口在 cmd/server/,前置要求 Go 1.23 以上,仓库根目录执行 ./bootstrap.sh && mage 即可产出二进制。

这一步最容易踩的坑:图省事带着 --dev 占位密钥直接上了生产,任何人猜到这组密钥都能签发房间令牌。

关键配置项

生产配置只改三处,都在 config-sample.yaml 里:

  • keys 段:换成你自己生成的 API Key 与 Secret,样本里的 key1/secret1 只是示例;
  • rtc.use_external_ip: true:云主机自动探测公网 IP,客户端才能连进来;
  • prometheus_port: 6789:暴露 /metrics 端点,接监控用。

另外建议设 room.empty_timeout 和 departure_timeout(默认 300 秒和 20 秒),让空房间自动清理。SFU 转发核心逻辑在 pkg/sfu/,后续想调性能从这里入手。

这一步最容易踩的坑:把配置文件里现成的示例密钥原样带走,忘了生成真正的密钥对。

部署后 5 分钟验证

最小验证动作:生成一个令牌,让一个测试用户进房间。

lk token create --api-key devkey --api-secret secret \
  --join --room my-first-room --identity user1 --valid-for 24h

把令牌填入任意接了 LiveKit JS SDK 的网页应用,能看到画面和声音就算通过。不想开浏览器,也可以用 lk room join --url ws://localhost:7880 --publish-demo my-first-room 直接向房间灌一段演示视频。

三个高频问题及定位思路:

  1. 连接超时、ICE 失败:九成是 UDP 端口段没放行。先查云安全组和本机防火墙,UDP 确实打不通就启用 rtc.tcp_port 回退。
  2. 内网通、外网不通:云主机在 NAT 后面且 use_external_ip 没开,或探测到的公网 IP 不对,用 node_ip 显式指定。
  3. 高并发时 CPU 异常高:默认按端口段逐端口监听,核数少的机器可改用 rtc.udp_port 复用模式,减少监听 fd 数量。

LiveKit 实时音视频 SFU 服务器部署概览

开发环境 vs 生产环境

维度开发环境生产环境
认证--dev 内置 devkey/secret自签 API Key + Secret
加密ws:// 明文7880 端口放负载均衡之后,终结 TLS
资源小规格虚机8 核 16G 及以上,专用媒体服务器
监控控制台日志prometheus 6789 端口 + Grafana 面板,仓库自带 deploy/grafana/livekit-server-overview.json
分发单节点,房间状态在内存配 Redis 多节点分发,任意节点客户端可进同一房间
备份不关心,重启即丢定期备份密钥对与配置文件,Redis 持久化

谁适合用它

  • 如果你是验证语音通话功能的独立开发者,一条 --dev 命令就能起本地实例,零成本跑通 SDK 联调。
  • 如果你想把网课或会议的数据握在自己手里,自部署意味着不用按云端流量计费,媒体流不出你的机房。
  • 如果你在搭 AI 语音助手,LiveKit 的 Agents 生态直接接在这个服务器上,AI 可以当成一个能进房的"成员"。
  • 如果你需要私有化部署过合规审查,单台 4 核 8G 就能覆盖初期规模,后续再横向加节点。

部署 LiveKit 真正难的不是装服务,而是带宽和端口这两件事。它们通过了,剩下就是一个单二进制的事。现在就可以做:对着开头的表格核对你的端口段,把 --dev 实例跑起来,看到输出里的 API Key 那两行,服务器就算活了。

【免费下载链接】livekit End-to-end realtime stack for connecting humans and AI 【免费下载链接】livekit 项目地址: https://gitcode.com/GitHub_Trending/li/livekit

Logo

火山引擎视频云技术社区,是面向 AI 音视频开发者的技术交流平台。这里汇聚源自抖音、豆包等亿级 DAU 产品的 RTC、直播、点播、AI 媒体处理、音视频互动技术,提供接入指南、最佳实践、性能调优、场景案例、Demo 代码、开源项目、白皮书和 API 文档。社区汇聚官方工程师与一线开发者,为 AI 视频通话、数字人、AI 视频处理等应用的开发与落地提供技术支持。

更多推荐