当前位置: 首页 > 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.gsyq.cn/news/1418416.html

相关文章:

  • 如何快速部署VideoCrafter:5步完整安装配置指南
  • 2026年AI Agent技术栈预测:从MCP到A2A的演进
  • FastAdmin后台自定义页面实战:从新建控制器到菜单配置的保姆级教程
  • 2026 年 5 月社区工作者备考避坑:刷题 APP 与小程序实测指南 - 讲清楚了
  • 从电容充放电到MOSFET驱动:一个公式串起的硬件设计思维(深度图解)
  • STC单片机批量生产利器:U8W-Mini脱机烧录器从入门到精通(附固件升级教程)
  • 2026 年 5 月社工备考避坑:资料 APP 实测指南 - 讲清楚了
  • 语音转纪要总漏重点?揭秘NLP工程师私藏的12项语义锚定技巧,让ChatGPT自动抓取Action Items、责任人与DDL
  • 043、AV1 编码慢到无法落地?svt-av1 参数调优与 H.264 迁移成本评估方案
  • 运动相机能自动标记比赛事件吗?一键解决赛事记录难题
  • 2026年5月温江竹木纤维踢脚线安装师傅选哪家?一站式解决方案深度解析 - 2026年企业资讯
  • 2026 年 5 月社工备考攻略:资料 APP 深度测评 - 讲清楚了
  • 2026年第二季度迪庆学校厨房设备采购:如何甄选适配的厨具设备品牌 - 2026年企业资讯
  • 告别ST-LINK!手把手教你用DAPLink+OpenOCD在STM32CubeIDE里调试STM32F4
  • 魔百盒M401A安装HA Supervised后,HACS加载慢、蓝牙不正常?这些优化配置一个都不能少
  • 打板师傅不再流泪,AI搞定秋衣
  • Scrapy入门:创建第一个Scrapy项目,爬取书籍网站。从零开始学Scrapy:手把手教你创建第一个爬虫项目,实战爬取书籍网站
  • 企业级 Codex 部署与团队协作方案
  • 内网开发环境福音:手把手教你用K3s v1.26.2+k3s1实现离线部署(含Harbor私有仓库配置)
  • AI进入普惠化落地新时代
  • Navicat Premium macOS 试用期重置终极指南:如何免费延长数据库管理工具的使用期限
  • RSA-3K与ECDSA在安全启动中的选择与优化
  • 你的LDO为什么纹波大、噪声高?深入SIMC 0.18um工艺LDO噪声与PSRR实测分析与优化指南
  • 褪去硬汉标签!朱亚文深情演绎,强势冲击荧幕魅力大奖
  • 【Gemini志愿者黄金窗口期】:为什么未来30天是普通人接入Google顶级AI生态的最后低门槛通道?
  • 2026网络安全新纪元:当AI成为战场本身
  • GBFR Logs:将《碧蓝幻想:RELINK》战斗数据转化为你的制胜策略
  • DLSS Swapper终极指南:5分钟免费提升游戏性能的智能工具
  • Hasura GraphQL Engine:快速构建数据API的开源工具
  • QQ音乐官网风格静态页面作业包:纯HTML+CSS实现,含首页、推荐页、图标资源与响应式适配