当前位置: 首页 > news >正文

保姆级教程:用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, 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 enable

CentOS使用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/config

2. 获取并配置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 .env

2.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 国内网络特别优化

针对国内网络环境,建议做以下调整:

  1. 修改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
  1. 禁用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 -p

3. 启动与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混用)

解决方案:

  1. 检查.env中的PUBLIC_URL是否与浏览器地址栏完全一致
  2. 确保服务器时间正确(时区问题会导致证书验证失败)
  3. 清除浏览器缓存或尝试无痕模式

问题2:视频卡顿或延迟高

可能原因:

  • 服务器带宽不足
  • UDP端口10000未正确转发
  • TURN服务器未启用

优化建议:

  1. .env中启用TURN服务器:
ENABLE_TURN=1 TURN_CREDENTIALS=secure_password TURN_MIN_PORT=30000 TURN_MAX_PORT=40000
  1. 调整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=true

4.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 -d

5. 日常维护与监控

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 系统资源监控

建议安装以下工具监控服务器状态:

  1. 基础监控
# 安装htop sudo apt install htop # Ubuntu sudo yum install htop # CentOS # 使用nmon监控 sudo apt install nmon # Ubuntu sudo yum install nmon # CentOS
  1. 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丢包率、带宽使用情况
  • 会议质量:平均延迟、抖动、丢包(可通过会议中的"统计"按钮查看)
http://www.jsqmd.com/news/907114/

相关文章:

  • K8s节点NotReady别慌!从12个真实Case看如何快速定位(附排查命令清单)
  • STM32F407ZGT6驱动AD9959射频信号源的完整Keil工程(含CubeMX配置与SPI控制代码)
  • 告别驱动烦恼:用QT和HIDAPI搞定USB-HID设备通信(附STM32/ESP32免驱实战)
  • 如何快速部署VideoCrafter:5步完整安装配置指南
  • hCaptcha 协议识别 API 集成指南
  • 避坑指南:QGIS矢量绘图与影像裁剪时,新手最易忽略的5个细节(附Shapefile正确保存姿势)
  • 2026年AI Agent技术栈预测:从MCP到A2A的演进
  • 看懂Using where
  • FastAdmin后台自定义页面实战:从新建控制器到菜单配置的保姆级教程
  • Spring Boot项目里RestTemplate调用国外HTTPS接口总失败?别急着改证书,先检查这个配置
  • 2026 年 5 月社区工作者备考避坑:刷题 APP 与小程序实测指南 - 讲清楚了
  • 大学生学AI,别只聊天!手把手教你搭第一个智能体,惊艳面试官
  • 从AD8421到AD9226:手把手教你搭建一个完整的正弦波信号采集电路(含保护电路设计)
  • 对比官方价,Taotoken平台折扣活动带来的实际成本节省感受
  • 别再手动拖拽了!Fluent中Camera参数详解与视角精准复现指南
  • CesiumHeatmap:三维空间热力图的终极实现方案
  • 别再死磕YOLOv1论文了!用Python从零复现一个简化版(附完整代码)
  • 从电容充放电到MOSFET驱动:一个公式串起的硬件设计思维(深度图解)
  • STC单片机批量生产利器:U8W-Mini脱机烧录器从入门到精通(附固件升级教程)
  • 2026年05月28日最热门的开源项目(Github)
  • 语音转纪要总漏重点?揭秘NLP工程师私藏的12项语义锚定技巧,让ChatGPT自动抓取Action Items、责任人与DDL
  • 2026 年 5 月社工备考避坑:资料 APP 实测指南 - 讲清楚了
  • 从一道考研真题的三种错解,聊聊函数极值与最值那些容易踩的坑
  • 043、AV1 编码慢到无法落地?svt-av1 参数调优与 H.264 迁移成本评估方案
  • 运动相机能自动标记比赛事件吗?一键解决赛事记录难题
  • 技术复盘|从物理引擎到软硬协同,拆解支持50人并发的无人机数字孪生实训平台
  • 别再只会用Edit框了!Simulink封装对话框的10种高级控件(滑块、刻度盘、查找表)全解析
  • 2026年5月28日笔记
  • 018、困难样本挖掘策略:训练中自动发现易错样本,定向补充标注
  • 天池二手车估价实战资源包:LightGBM与XGBoost双模型完整实现,含清洗、特征工程、调参及提交生成