🌍 一、系统架构概览
本架构实现了一个内网部署 + 反向代理 + 公网穿透 + 统一认证的视频会议系统,支持与 Rocket.Chat 集成:
cssCopyEdit[Jitsi 主机]
└─ 使用 docker-compose 部署 Jitsi Meet 各服务(web, jvb, prosody, jicofo)
[反向代理主机]
└─ Nginx 启用 HTTPS 并将请求转发至 Jitsi 内网地址
[公网入口 VPS]
└─ FRP 映射 443 → 反代主机,公网访问统一通过域名入口
🧱 二、环境信息(匿名化)
| 项目 | 内容 |
|---|---|
| Jitsi 服务主机 | 局域网服务器 A |
| 反向代理主机 | 局域网服务器 B |
| 公网入口 VPS | 任意具有公网 IP 的 VPS |
| 使用域名 | 示例:yourdomain.com |
| 系统平台 | Ubuntu 20.04 / 22.04 LTS |
🐳 三、Jitsi Meet Docker 安装步骤
1. 安装依赖
bashCopyEditsudo apt update
sudo apt install docker docker-compose git -y
2. 下载 Jitsi 项目并初始化
bashCopyEditcd /your/project/path/
git clone https://github.com/jitsi/docker-jitsi-meet.git jitsi
cd jitsi
cp env.example .env
3. 编辑 .env 配置(关键参数)
iniCopyEditCONFIG=/your/config/path
HTTP_PORT=9080
HTTPS_PORT=8443
PUBLIC_URL=https://yourdomain.com:8443
ENABLE_AUTH=1
AUTH_TYPE=jwt
ENABLE_GUESTS=0
ENABLE_TOKEN_AUTH=1
JWT_APP_ID=your_app_id
JWT_APP_SECRET=your_secret_key
⚠️ 建议注释或删除以下参数:
nginxCopyEditJWT_ACCEPTED_ISSUERS JWT_ACCEPTED_AUDIENCES
🧩 四、Docker Compose 各服务说明
| 组件 | 容器名 | 局域网端口 | 功能 |
|---|---|---|---|
| web | jitsi_web_1 | 9080(供 Nginx 使用) | Web UI |
| jvb | jitsi_jvb_1 | UDP 10000 / 9090 | 视频转发桥 |
| jicofo | jitsi_jicofo_1 | 8888 | 控制会议 |
| prosody | jitsi_prosody_1 | 5222, 5280 | XMPP 服务与认证 |
🚀 五、启动服务
bashCopyEditdocker compose up -d
如需清理重来:
bashCopyEditdocker-compose down
docker volume prune
docker-compose up -d
🔁 六、反向代理配置(Nginx)
部署在另一台服务器,Nginx 配置如下:
nginxCopyEditserver {
listen 443 ssl http2;
server_name yourdomain.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
location / {
proxy_pass http://your.jitsi.host:9080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
🛰 七、FRP 公网穿透方案
使用 FRP 将公网服务器端口(如 443)映射到反代主机。
| 主机 | 端口 | 说明 |
|---|---|---|
| VPS | 443 | 公网入口 |
| 反代主机 | 443 | Nginx 服务 |
| Jitsi 主机 | 9080 | 实际服务地址 |
🔐 八、JWT 鉴权与 Rocket.Chat 集成
Jitsi .env 设置:
iniCopyEditENABLE_AUTH=1
AUTH_TYPE=jwt
ENABLE_GUESTS=0
JWT_APP_ID=your_app_id
JWT_APP_SECRET=your_secret_key
Rocket.Chat 插件设置:
| 项目 | 配置 |
|---|---|
| Jitsi Server URL | https://yourdomain.com:8443 |
| JWT Authentication | ✅ 启用 |
| JWT App ID / Secret | 与 .env 中保持一致 |
| 访客访问 | 禁用 |
🔒 九、证书获取建议
在反代服务器上使用 Certbot 获取 Let’s Encrypt 证书:
bashCopyEditsudo certbot certonly --standalone -d yourdomain.com
证书保存在 /etc/letsencrypt/live/yourdomain.com/,复制到 Nginx 可读取路径。
📦 十、优化与清理建议
保留目录:
arduinoCopyEditdocker-compose.yml
.env
config/
web/
jvb/
jicofo/
prosody/
可删除内容:
markdownCopyEditexamples/
*.md
.git/
*.sh
jibri.yml
jigasi.yml
备份项目:
bashCopyEdittar -czvf jitsi-setup.tar.gz /your/project/path/jitsi
✅ 十一、验证效果
- Jitsi Web 可访问;
- Rocket.Chat 可直接发起视频会议;
- 非认证用户无法加入会议(JWT 生效);
- 使用统一域名入口,HTTPS 加密正常;
- 所有服务支持自动化脚本更新与重启。