安装Docker和Jitsi
刷新软件列表安装curl工具
// 作用:刷新软件包列表(更新索引)
sudo apt update
// 作用:安装 curl 工具
sudo apt install -y curl
// 安装 Ubuntu 自带的 Docker
sudo apt update && sudo apt install -y docker.io docker-compose-v2
// 检测是否安装成功
docker --version
下载 Jitsi 代码
Docker 装好后,我们需要下载 Jitsi 的配置包。如果 git clone 失败,请尝试这个加速版:
git clone https://gh-proxy.com/https://github.com/jitsi/docker-jitsi-meet.git
cd docker-jitsi-meet
cp env.example .env
sudo docker compose up -d
报错
boxuser@LinuxJitsiMeet:~/docker-jitsi-meet$ sudo docker compose up -d
[+] Running 4/4
✘ jvb Error failed to resolve reference "docker.io/ji… 21.0s
! prosody Interrupted 21.0s
! web Interrupted 21.0s
! jicofo Interrupted 21.0s
Error response from daemon: failed to resolve reference “docker.io/jitsi/jvb:unstable”: failed to do request: Head “https://registry-1.docker.io/v2/jitsi/jvb/manifests/unstable”: dial tcp 69.63.184.30:443: connect: connection refused
第一步:创建 Docker 配置文件
在终端里输入以下命令,打开一个空白的配置文件:
sudo nano /etc/docker/daemon.json
第二步:粘贴加速器配置
把下面这段内容完整地复制并粘贴进去(如果粘贴没反应,记得用 Ctrl + Shift + V):
提示:这些是目前比较稳定的公益镜像源。
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://huecker.io",
"https://dockerhub.timeweb.cloud",
"https://noohub.net"
]
}
第三步:保存并退出
- 按键盘上的 Ctrl + O。
- 按 Enter (回车) 确认保存。
- 按 Ctrl + X 退出编辑器。
第四步:重启 Docker 让配置生效
sudo systemctl daemon-reload
sudo systemctl restart docker
第五步:再次启动 Jitsi
cd ~/docker-jitsi-meet
sudo docker compose up -d

打开火狐浏览器
https://localhost:8443
点击 Advanced…(高级)。
点击 Accept the Risk and Continue(接受风险并继续)

你应该能看到 Jitsi Meet 的欢迎界面了!
随便输入一个房间名(比如 testroom),点击 Start Meeting

停止再次启动
// 进入目录
cd ~/docker-jitsi-meet
// 停止
sudo docker compose stop
// 开始
sudo docker compose start

怎么给外部win共享
目前你的虚拟机像是一个“孤岛”,默认的 NAT 网络模式只允许它上外网,但不允许 Windows 主机主动访问它。
要让 Windows 上的项目连上虚拟机的 Jitsi,最稳妥、最专业的方法是配置 端口转发 (Port Forwarding)。
| 名称 | 协议 | 主机端口 | 子机端口 |
|---|---|---|---|
| Jitsi_Web | TCP | 8443 | 8443 |
| Jitsi_HTTP | TCP | 8080 | 80 |
| Jitsi_Video | UDP | 10000 | 10000 |

window 谷歌浏览器打开https://localhost:8443 ,点击继续前往

进入房间失败后重新配置
给文件夹“暴力”授权
有时候 Docker 里的 prosody 用户(UID 999)没有权限在你的宿主机文件夹里写数据,导致它刚创建完账户就因为写不进磁盘而崩溃重启连接。
sudo chmod -R 777 ~/.jitsi-meet-cfg
1.确认真正的配置路径
grep "^CONFIG=" .env
2.统一路径并创建目录
# 1. 停止容器
sudo docker compose down
# 2. 创建一个绝对路径的配置目录
sudo mkdir -p /home/vboxuser/jitsi-config
sudo chmod -R 777 /home/vboxuser/jitsi-config
# 3. 修改 .env 文件中的 CONFIG 路径
# 使用 sed 命令把 CONFIG=... 替换为绝对路径
sed -i 's|^CONFIG=.*|CONFIG=/home/vboxuser/jitsi-config|' .env
3.验证修改是否成功
再次运行 grep “^CONFIG=” .env,确保输出是:
CONFIG=/home/vboxuser/jitsi-config
4.过滤本地ip
ip addr show enp0s3 | grep "inet "
// inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
5.修改 .env 使其匹配你的访问方式
- 执行 sudo nano .env
- 修改这三行(确保去掉前面的 #)
PUBLIC_URL=https://localhost:8443
DOCKER_HOST_ADDRESS=10.0.2.15
ENABLE_XMPP_WEBSOCKET=1
6.重新生成密码并启动
# 生成新密码(确保它们写进新的绝对路径里)
./gen-passwords.sh
# 启动服务
sudo docker compose up -d
核心修复操作总结
| 操作步骤 | 执行的命令 / 修改项 | 解决的核心问题 |
|---|---|---|
| 重置权限 | sudo chmod -R 777 ~/jitsi-config | 解决了容器因无法写入配置导致认证失败(Client disconnected)。 |
| 路径标准化 | CONFIG=/home/vboxuser/jitsi-config | 避免了 ~ 符号在 sudo 下解析混乱导致的配置丢失 |
| 同步认证密码 | ./gen-passwords.sh | 确保了 Prosody、Jicofo 和 JVB 之间使用相同的密钥登录。 |
| 配置网络环境 | PUBLIC_URL 与 DOCKER_HOST_ADDRESS | 告诉 Jitsi 它的外部访问地址,解决了 WebSocket (WSS) 无法连接的问题。 |
| 端口转发 | VirtualBox: TCP 8443, UDP 10000 | 允许宿主机访问虚拟机的 Web 页面和传输音视频数据。 |
如果本地联调lib-jitsi-meet需要配置
js配置
var connection = new JitsiMeetJS.JitsiConnection(null, null, {
// 1. 基础连接
serviceUrl: 'wss://your-domain.com/xmpp-websocket',
hosts: {
domain: 'your-domain.com',
muc: 'conference.your-domain.com'
},
// 2. 稳定性增强
enableWebsocketResume: true, // 开启断线快速重连
websocketKeepAlive: 30000, // 30秒发一次应用层心跳
// 3. 数据通道优化
bridgeChannel: {
preferSctp: true
},
// 4. P2P 穿透 (如果需要 P2P)
// 注意:这里的 p2pStunServers 才是 connection 层的 P2P 配置
p2pStunServers: [
{ urls: 'stun:stun.l.google.com:19302' },
{ urls: 'stun:stun1.l.google.com:19302' }
],
// 5. 心跳检测
xmppPing: {
interval: 10000,
timeout: 5000
}
});
打开配置文件: sudo nano .env
修改过后停止服务:sudo docker compose down
启动:sudo docker compose up -d
# 1. 外部访问的基础 URL
# 告诉 Jitsi 外部浏览器是通过哪个地址访问的。
# 即使你做了端口转发,这个地址也会影响到生成的会议链接分享。
PUBLIC_URL=https://localhost:8443
# 2. 开启 WebSocket 连接 (核心)
# 设为 1 表示启用 wss:// 协议。这比旧的 BOSH (http) 协议快得多,
# 你的 lib-jitsi-meet 能连上就是靠这个。
ENABLE_XMPP_WEBSOCKET=1
# 3. 开启匿名访客模式 (重要)
# 设为 1 表示允许不需要账号密码的用户直接进入房间。
# 如果不开启,你的代码必须在 connection 阶段传入 JWT Token 才能入会。
ENABLE_GUEST=1
# 4. XMPP 信令服务的域名 (逻辑域名)
# 这是 Jitsi 内部组件(Prosody, Jicofo)互相识别的“身份证号”。
# 必须与你 JS 代码里的 domain: 'meet.jitsi' 完全一致。
XMPP_DOMAIN=meet.jitsi
# 5. 组件认证域名
# 内部组件(如 Jicofo)登录 XMPP 时使用的域名。
XMPP_AUTH_DOMAIN=auth.meet.jitsi
# 6. 会议多用户聊天 (MUC) 域名
# 决定了房间的完整地址。比如你进 conference1,
# 实际上是在 XMPP 里加入了 conference1@conference.meet.jitsi。
XMPP_MUC_DOMAIN=conference.meet.jitsi
# 7. 宿主机/外部可达 IP (关键中的关键)
# 重新定义的 DOCKER_HOST_ADDRESS,会覆盖上面的 10.0.2.15。
# 应该填你 Windows 宿主机的 IP。
DOCKER_HOST_ADDRESS=192.168.x.xxx
# 8. 媒体服务器公告 IP
# 核心!JVB (视频桥) 会把这个 IP 发给浏览器。
# 浏览器收到后,会把摄像头和麦克风的数据流发往这个 IP。
# 在 NAT/端口转发模式下,这里必须填 Windows 的 IP,否则通话会没画面。
JVB_ADVERTISE_IPS=192.168.x.xxx
宿主主机ip就是你windowIP
更多推荐



所有评论(0)