保姆级教程:用Docker Compose从零部署可用的Jitsi Meet视频会议系统
在远程协作成为常态的今天,自建视频会议系统不仅能保障隐私安全,还能避免第三方服务的不稳定因素。Jitsi Meet作为一款开源视频会议工具,凭借其优秀的音视频质量和灵活的部署方式,正受到越来越多技术团队的青睐。本教程将带你从零开始,在一台全新的Linux服务器上,用Docker Compose部署一个稳定可用的Jitsi Meet实例,特别针对国内网络环境优化配置,避开那些官方文档没明说的"坑"。
1. 环境准备与基础配置
部署前需要确保服务器满足以下基本要求:
- 操作系统:Ubuntu 20.04/22.04 LTS 或 CentOS 7/8(推荐Ubuntu)
- 硬件配置:至少2核CPU、4GB内存(视频会议对CPU要求较高)
- 网络:开放80/443端口,最好有固定公网IP或域名
1.1 安装Docker与Docker Compose
对于Ubuntu系统,执行以下命令安装最新版Docker:
# 卸载旧版本 sudo apt-get remove docker docker-engine docker.io containerd runc # 安装依赖 sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release # 添加Docker官方GPG密钥 sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 设置稳定版仓库 echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 安装Docker引擎 sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin # 验证安装 sudo docker run hello-world对于CentOS系统,安装步骤略有不同:
# 卸载旧版本 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine # 安装必要工具 sudo yum install -y yum-utils # 设置仓库 sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo # 安装Docker引擎 sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin # 启动Docker sudo systemctl start docker sudo systemctl enable docker # 验证安装 sudo docker run hello-world提示:国内服务器建议配置Docker镜像加速器,可显著提升镜像下载速度。在
/etc/docker/daemon.json中添加:{ "registry-mirrors": ["https://registry.docker-cn.com"] }然后执行
sudo systemctl restart docker生效。
1.2 防火墙与SELinux配置
确保以下端口在防火墙中开放:
- TCP: 80, 443, 4443
- UDP: 10000
Ubuntu使用ufw防火墙的配置命令:
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow 4443/tcp sudo ufw allow 10000/udp sudo ufw enableCentOS使用firewalld的配置命令:
sudo firewall-cmd --permanent --add-port=80/tcp sudo firewall-cmd --permanent --add-port=443/tcp sudo firewall-cmd --permanent --add-port=4443/tcp sudo firewall-cmd --permanent --add-port=10000/udp sudo firewall-cmd --reload如果系统启用了SELinux(CentOS默认启用),需要调整策略:
sudo setenforce 0 sudo sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config2. 获取并配置Jitsi Meet
2.1 下载官方Docker Compose模板
推荐直接从官方GitHub仓库获取最新配置,而非使用压缩包:
# 创建项目目录 mkdir jitsi-meet && cd jitsi-meet # 下载官方模板 curl -sSL https://raw.githubusercontent.com/jitsi/docker-jitsi-meet/main/docker-compose.yml -o docker-compose.yml curl -sSL https://raw.githubusercontent.com/jitsi/docker-jitsi-meet/main/env.example -o .env2.2 关键环境变量配置
编辑.env文件时需要特别注意以下参数:
# 设置公网可访问的域名或IP(必须修改!) PUBLIC_URL=https://your.domain.com # 或 https://your.server.ip # 设置会议房间的默认域名 JVB_HOSTNAME=your.domain.com # 启用HTTP和HTTPS ENABLE_HTTP=1 ENABLE_HTTPS=1 # 设置TURN服务器(提升NAT穿透能力) ENABLE_TURN=1 TURN_CREDENTIALS=your_turn_password警告:
PUBLIC_URL必须设置为服务器实际可被访问的地址,否则会出现"断开连接"错误。这是新手最常见的配置错误。
生成强密码:
./gen-passwords.sh创建必要的配置目录:
mkdir -p ~/.jitsi-meet-cfg/{web,transcripts,prosody/config,prosody/prosody-plugins-custom,jicofo,jvb,jigasi,jibri}2.3 国内网络特别优化
针对国内网络环境,建议做以下调整:
- 修改
docker-compose.yml中的镜像源:
services: web: image: registry.cn-hangzhou.aliyuncs.com/jitsi/web:latest prosody: image: registry.cn-hangzhou.aliyuncs.com/jitsi/prosody:latest jicofo: image: registry.cn-hangzhou.aliyuncs.com/jitsi/jicofo:latest jvb: image: registry.cn-hangzhou.aliyuncs.com/jitsi/jvb:latest- 禁用IPv6(国内网络对IPv6支持不稳定):
echo "net.ipv6.conf.all.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf echo "net.ipv6.conf.default.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf sudo sysctl -p3. 启动与HTTPS配置
3.1 启动Jitsi Meet服务
执行以下命令启动所有服务:
docker-compose up -d检查服务状态:
docker-compose ps正常情况应该看到4个服务(web、prosody、jicofo、jvb)都处于"running"状态。
3.2 配置HTTPS证书
使用Let's Encrypt免费证书是最佳选择。首先确保:
- 域名已解析到服务器IP
- 80端口可从外网访问
修改.env文件:
# 启用Let's Encrypt ENABLE_LETSENCRYPT=1 LETSENCRYPT_DOMAIN=your.domain.com LETSENCRYPT_EMAIL=your@email.com # 禁用自签名证书 USE_SELF_SIGNED_CERT=0然后重新创建web容器:
docker-compose up -d --force-recreate web证书申请过程可能需要几分钟,可通过以下命令查看进度:
docker-compose logs -f web看到"Server ready"字样表示证书申请成功。
4. 高级配置与故障排查
4.1 常见问题解决方案
问题1:进入会议后立即显示"你已被断开链接"
这是最常见的配置错误,通常由以下原因导致:
PUBLIC_URL设置不正确(必须与访问地址完全一致)- 防火墙未正确开放端口
- 浏览器阻止了混合内容(HTTP/HTTPS混用)
解决方案:
- 检查
.env中的PUBLIC_URL是否与浏览器地址栏完全一致 - 确保服务器时间正确(时区问题会导致证书验证失败)
- 清除浏览器缓存或尝试无痕模式
问题2:视频卡顿或延迟高
可能原因:
- 服务器带宽不足
- UDP端口10000未正确转发
- TURN服务器未启用
优化建议:
- 在
.env中启用TURN服务器:
ENABLE_TURN=1 TURN_CREDENTIALS=secure_password TURN_MIN_PORT=30000 TURN_MAX_PORT=40000- 调整JVB的视频带宽设置:
# 在~/.jitsi-meet-cfg/jvb/sip-communicator.properties中添加: org.jitsi.videobridge.octo.BIND_ADDRESS=your.server.ip org.jitsi.videobridge.ENABLE_STATISTICS=true org.jitsi.videobridge.STATISTICS_TRANSPORT=muc org.jitsi.videobridge.DISABLE_TCP_HARVESTER=true4.2 性能优化配置
对于10人以上的会议,建议调整以下参数:
# 在.env中 JVB_OCTO_ENABLE=1 # 启用Octo,提升多服务��部署时的性能 JVB_STUN_SERVERS=stun.l.google.com:19302,stun1.l.google.com:19302 # 使用Google的STUN服务器 JVB_ENABLE_APIS=rest,colibri # 启用更多API接口对于web界面,可以修改~/.jitsi-meet-cfg/web/config.js:
// 禁用非必要功能提升性能 disableAudioLevels: true, enableNoAudioDetection: false, enableNoisyMicDetection: false, // 设置默认分辨率 constraints: { video: { height: { ideal: 720, max: 720, min: 240 } } }4.3 备份与恢复
定期备份关键数据:
# 备份配置 tar czvf jitsi-backup-$(date +%Y%m%d).tar.gz ~/.jitsi-meet-cfg # 备份数据库(Prosody) docker-compose exec prosody tar czvf /config/backup/prosody-data-$(date +%Y%m%d).tar.gz /config/data恢复时只需将备份文件解压到对应目录,然后重启服务:
docker-compose down # 恢复文件... docker-compose up -d5. 日常维护与监控
5.1 日志查看技巧
查看实时日志:
# 查看所有服务日志 docker-compose logs -f # 只看Web服务日志 docker-compose logs -f web # 只看JVB(视频桥接)日志 docker-compose logs -f jvb常见错误日志分析:
| 错误信息 | 可能原因 | 解决方案 |
|---|---|---|
| "ICE failed" | NAT穿透失败 | 检查TURN服务器配置 |
| "No available videobridge" | JVB服务未启动 | 检查jvb容器状态 |
| "Certificate verify failed" | 证书问题 | 检查Let's Encrypt证书是否过期 |
5.2 系统资源监控
建议安装以下工具监控服务器状态:
- 基础监控:
# 安装htop sudo apt install htop # Ubuntu sudo yum install htop # CentOS # 使用nmon监控 sudo apt install nmon # Ubuntu sudo yum install nmon # CentOS- Jitsi专用监控:
启用Jitsi的统计接口:
# 在~/.jitsi-meet-cfg/jvb/sip-communicator.properties中添加: org.jitsi.videobridge.ENABLE_STATISTICS=true org.jitsi.videobridge.STATISTICS_TRANSPORT=muc然后访问https://your.domain.com/colibri/stats查看实时统计。
5.3 定期维护任务
建议设置以下定时任务(crontab):
# 每天凌晨重启服务(解决内存泄漏问题) 0 3 * * * cd /path/to/jitsi-meet && docker-compose down && docker-compose up -d # 每周清理旧Docker镜像 0 4 * * 0 docker image prune -a -f # 每月备份配置 0 2 1 * * tar czvf /backup/jitsi-config-$(date +\%Y\%m\%d).tar.gz ~/.jitsi-meet-cfg对于长期运行的实例,建议监控以下关键指标:
- JVB:CPU使用率、内存占用、视频通道数
- 网络:UDP丢包率、带宽使用情况
- 会议质量:平均延迟、抖动、丢包(可通过会议中的"统计"按钮查看)