安装Jitsi音视频服务端

2024-08-06 17:16:06
汤倩倩
1772
最后编辑:汤倩倩 于 2025-07-23 15:45:56
分享链接

Jitsi 部署

喧喧自 9.0 版本起使用 Jitsi 作为音视频会议服务器。需要额外的部署。

以下是具体的步骤:

  1. 下载 Docker 镜像包,并加载镜像。

    下载地址   https://dl.zentao.net/xuanmeet/xuanmeet-1.0.zip

unzip xuanmeet.zip
cd xuanmeet
ls -1 xuanmeet-*.tar.xz | xargs --no-run-if-empty -L 1 docker load -i 
            
  1. 编辑 env.xuan.example 文件

    • HTTP_PORT HTTP端口号8000,可根据情况使用默认80端口或其他端口。

    • HTTPS_PORT HTTPS端口号8443,可根据情况使用默认443端口或其他端口。

    • PUBLIC_URL 协议为HTTPS,端口不是443的情况下需要补上端口号。

    • XXB_URL 喧喧后台地址

    • WHITEBOARD_ENABLED 是否启用白板写作功能,默认开启。

    • JVB_ADVERTISE_IPS 如果音视频服务器在NAT后面,则需要填写这个环境变量。填写能访问到的服务器的IP地址,以逗号","作为分隔。

      docker方式部署必须配置该属性,否则无法使用桥接服务器进行多人音视频

      JVB_ADVERTISE_IPS=172.17.X.X,192.168.X.X # 第一个ip为docker容器所在的ip,第二ip为宿主机的局域网ip
    • JICOFO_MAX_MEMORY (可选)会议服务器内存限制,当人数超多(大于200人)且会议服务不稳定时可以考虑增大此选项。

    • VIDEOBRIDGE_MAX_MEMORY (可选)同上。

    • ENABLE_LETSENCRYPT (可选)是否启用 Let's Encrypt 签名服务。

      • LETSENCRYPT_DOMAIN 需要 Let's Encrypt 签名的域名。
      • LETSENCRYPT_EMAIL Let's Encrypt 签名的管理员邮箱

修改完成后

mv env.xuan.example .env 

(后续需 ls -a 查看 .env 文件,隐藏文件默认在linux下不可见。)

  1. 运行 ./gen-passwords.sh 脚本生成随机会议服务器密码

  2. (可选) 使用自己的 TLS 证书。

    会议服务必须要启用 HTTPS,如果不使用有效的 TLS 证书或者 Let's Encrypt 签名服务。则会议服务器会使用自签名证书,这会导致在网页端显示证书错误的提示,需要用户手动确认才能正确使用。

    如果要加载自己的证书可以在目录中新建 docker-compose.override.yml 文件。

    version: '3.5'
    services:
        web:
            volumes:
                - /example/cert.crt:/config/keys/cert.crt:Z
                - /example/cert.key:/config/keys/cert.key:Z 
    

    将 /example/cert.crt 和 /example/cert.key 替换成自己证书所在的路径。证书格式需满足 Nginx 的要求。

  3. 启动服务

    docker-compose.yml 所在目录运行

    docker compose up -d 
    

     

常见问题


部署成功后,加入会议提示断开连接

docker logs xuanmeet-web-1     # 查看web容器日志是否存在报错
docker logs xuanmeet-prosody-1 # 查看代理容器日志是否存在报错
  • 日志报错thread.c:76:isc_thread_create(): fatal error: pthread_create():Operation not permitted(1)

    解决方案:为所有容器开启特权模式运行。

    web:
        image: xuanmeet/web:1.0.1
        restart: ${RESTART_POLICY:-unless-stopped}
        privileged: true # 特权模式运行【重要】
        ···
    prosody:
        image: xuanmeet/prosody:1.0
        restart: ${RESTART_POLICY:-unless-stopped}
        privileged: true # 特权模式运行【重要】
        ···
    whiteboard:
        image: xuanmeet/whiteboard:1.0
        restart: ${RESTART_POLICY:-unless-stopped}
        privileged: true # 特权模式运行【重要】
        networks:
            meet.xuanxuan:
    jicofo:
        image: xuanmeet/jicofo:1.0
        restart: ${RESTART_POLICY:-unless-stopped}
        privileged: true # 特权模式运行【重要】
        ···
    jvb:
        image: xuanmeet/jvb:1.0
        restart: ${RESTART_POLICY:-unless-stopped}
        privileged: true # 特权模式运行【重要】
        ··· 
    
  • 日志报错ssl证书加载错误

    检查docker-compose.override.yml文件

    version: '3.5'
    services:
        web:
            volumes:
                - /example/cert.crt:/config/keys/cert.crt:Z
                - /example/cert.key:/config/keys/cert.key:Z 
    

    /example/cert.crt 需要是证书文件,不能是文件夹

    config/keys/cert.crt:Z 需要带上:Z

发表评论
评论通过审核后显示。
联系我们
社群交流