刷新软件列表安装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_WebTCP84438443
Jitsi_HTTPTCP808080
Jitsi_VideoUDP1000010000

在这里插入图片描述

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
在这里插入图片描述

更多推荐