保姆级教程:用Docker Compose从零部署可用的Jitsi Meet视频会议系统
保姆级教程用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, 4443UDP: 10000Ubuntu使用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-port80/tcp sudo firewall-cmd --permanent --add-port443/tcp sudo firewall-cmd --permanent --add-port4443/tcp sudo firewall-cmd --permanent --add-port10000/udp sudo firewall-cmd --reload如果系统启用了SELinuxCentOS默认启用需要调整策略sudo setenforce 0 sudo sed -i s/^SELINUXenforcing/SELINUXpermissive/ /etc/selinux/config2. 获取并配置Jitsi Meet2.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_URLhttps://your.domain.com # 或 https://your.server.ip # 设置会议房间的默认域名 JVB_HOSTNAMEyour.domain.com # 启用HTTP和HTTPS ENABLE_HTTP1 ENABLE_HTTPS1 # 设置TURN服务器提升NAT穿透能力 ENABLE_TURN1 TURN_CREDENTIALSyour_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证书使用Lets Encrypt免费证书是最佳选择。首先确保域名已解析到服务器IP80端口可从外网访问修改.env文件# 启用Lets Encrypt ENABLE_LETSENCRYPT1 LETSENCRYPT_DOMAINyour.domain.com LETSENCRYPT_EMAILyouremail.com # 禁用自签名证书 USE_SELF_SIGNED_CERT0然后重新创建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_TURN1 TURN_CREDENTIALSsecure_password TURN_MIN_PORT30000 TURN_MAX_PORT40000调整JVB的视频带宽设置# 在~/.jitsi-meet-cfg/jvb/sip-communicator.properties中添加 org.jitsi.videobridge.octo.BIND_ADDRESSyour.server.ip org.jitsi.videobridge.ENABLE_STATISTICStrue org.jitsi.videobridge.STATISTICS_TRANSPORTmuc org.jitsi.videobridge.DISABLE_TCP_HARVESTERtrue4.2 性能优化配置对于10人以上的会议建议调整以下参数# 在.env中 JVB_OCTO_ENABLE1 # 启用Octo提升多服务部署时的性能 JVB_STUN_SERVERSstun.l.google.com:19302,stun1.l.google.com:19302 # 使用Google的STUN服务器 JVB_ENABLE_APISrest,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 failedNAT穿透失败检查TURN服务器配置No available videobridgeJVB服务未启动检查jvb容器状态Certificate verify failed证书问题检查Lets Encrypt证书是否过期5.2 系统资源监控建议安装以下工具监控服务器状态基础监控# 安装htop sudo apt install htop # Ubuntu sudo yum install htop # CentOS # 使用nmon监控 sudo apt install nmon # Ubuntu sudo yum install nmon # CentOSJitsi专用监控启用Jitsi的统计接口# 在~/.jitsi-meet-cfg/jvb/sip-communicator.properties中添加 org.jitsi.videobridge.ENABLE_STATISTICStrue org.jitsi.videobridge.STATISTICS_TRANSPORTmuc然后访问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对于长期运行的实例建议监控以下关键指标JVBCPU使用率、内存占用、视频通道数网络UDP丢包率、带宽使用情况会议质量平均延迟、抖动、丢包可通过会议中的统计按钮查看