🌍 一、系统架构概览

本架构实现了一个内网部署 + 反向代理 + 公网穿透 + 统一认证的视频会议系统,支持与 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 各服务说明

组件容器名局域网端口功能
webjitsi_web_19080(供 Nginx 使用)Web UI
jvbjitsi_jvb_1UDP 10000 / 9090视频转发桥
jicofojitsi_jicofo_18888控制会议
prosodyjitsi_prosody_15222, 5280XMPP 服务与认证

🚀 五、启动服务

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)映射到反代主机。

主机端口说明
VPS443公网入口
反代主机443Nginx 服务
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 URLhttps://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 加密正常;
  • 所有服务支持自动化脚本更新与重启。

Leave a Reply

Your email address will not be published. Required fields are marked *