自托管指南 - Docker
Quick start - 快速上手
要在运行 Docker 和 Docker Compose 的机器上快速运行 Jitsi Meet,按照以下步骤操作:
-
下载并解压 [最新发布版本]。 请勿 直接克隆 git 仓库。如果您想运行测试镜像,请参见下文:
wget $(curl -s https://api.github.com/repos/jitsi/docker-jitsi-meet/releases/latest | grep 'zip' | cut -d\" -f4)
-
解压包:
unzip <filename>
-
通过复制并调整
env.example
来创建.env
文件:cp env.example .env
-
通过运行以下 bash 脚本,在
.env
文件的安全部分设置强密码:./gen-passwords.sh
-
创建所需的
CONFIG
目录- 对于 Linux:
mkdir -p ~/.jitsi-meet-cfg/{web,transcripts,prosody/config,prosody/prosody-plugins-custom,jicofo,jvb,jigasi,jibri}
- 对于 Windows:
echo web,transcripts,prosody/config,prosody/prosody-plugins-custom,jicofo,jvb,jigasi,jibri
mkdir "~/.jitsi-meet-cfg/$_"
-
运行以下命令启动服务(译者:建议使用
docker-compose
输出更简洁):docker compose up -d
-
通过
https://localhost:8443
访问 Web UI(如果您编辑了.env
文件中的端口,请使用相应的端口)。
HTTP(非 HTTPS)也可用(默认端口为 8000),但这主要用于反向代理设置;直接通过 HTTP 访问而非 HTTPS 会导致 WebRTC 错误,例如:
- 无法访问您的麦克风/摄像头:因未知原因无法使用麦克风/摄像头。无法读取属性 'getUserMedia' 的值 'undefined'
- navigator.mediaDevices 未定义
重要:当实际部署 Jitsi Meet 时,必须将 PUBLIC_URL
环境变量设置为您的真实域名(译者:这点 非常重要!)。
如果您还想使用 jigasi,请首先在 .env
文件中配置 SIP 凭据,然后使用以下命令运行 Docker Compose:
docker compose -f docker-compose.yml -f jigasi.yml up
如果您想启用文档共享功能(通过 Etherpad),请配置它并使用以下命令运行 Docker Compose:
docker compose -f docker-compose.yml -f etherpad.yml up
如果您还想使用 jibri,请首先按照 Jitsi 广播基础设施配置部分的说明配置主机,然后使用以下命令运行 Docker Compose:
docker compose -f docker-compose.yml -f jibri.yml up -d
或者同时使用 jigasi:
docker compose -f docker-compose.yml -f jigasi.yml -f jibri.yml up -d
要启用转录组件,请按以下方式运行 Docker Compose:
docker compose -f docker-compose.yml -f transcriber.yml up -d
或者要同时启用所有组件:
docker compose -f docker-compose.yml -f transcriber.yml -f jigasi.yml -f jibri.yml up -d
对于日志分析项目,您需要 log-analyser.yml
和 grafana.yml
文件。该项目允许您在 grafana 中分析 Docker 日志。如果您想运行日志分析器,请按以下命令运行 Docker 文件:
docker-compose -f docker-compose.yml -f log-analyser.yml -f grafana.yml up -d
有关日志分析的详细信息,请参阅 此文档。
更新
如果您想更新,只需再次运行以下命令:
wget $(curl -s https://api.github.com/repos/jitsi/docker-jitsi-meet/releases/latest | grep 'zip' | cut -d\" -f4)
(就像最初下载 Jitsi 时一样)。然后解压并在被询问时选择覆盖所有文件:
unzip <filename>
测试开发/不稳定版本构建
下载最新代码:
git clone https://github.com/jitsi/docker-jitsi-meet && cd docker-jitsi-meet
master
分支的代码设计为与不稳定镜像一起使用。请勿与发行版镜像一起运行。
按照正常方式运行 docker compose up
。
每天都会上传一个新的“不稳定”镜像构建版本。
构建您自己的镜像
下载最新代码:
git clone https://github.com/jitsi/docker-jitsi-meet && cd docker-jitsi-meet
提供的 Makefile
提供了一种全面的方式来构建整个堆栈或单个 镜像。
要构建所有镜像:
make
要构建特定的镜像(例如,Web 镜像):
make build_web
一旦您的本地构建完成,请确保将 JITSI_IMAGE_VERSION=latest
添加到您的 .env
文件中。
安全提示
此设置曾经为跨组件使用的内部账户提供默认密码。为了使默认设置安全,默认密码已被删除,相应的容器在没有设置密码的情况下不会启动。
可以通过以下方式生成强密码:./gen-passwords.sh
这将修改您的 .env
文件(会保存一份备份到 .env.bak
中),并为每个必需选项设置强密码。密码使用 openssl rand -hex 16
生成。
请勿重用任何密码。
架构
Jitsi Meet 的安装可以分为以下组件:
- Web 界面
- XMPP 服务器
- 会议焦点组件
- 视频路由器(可以有多个)
- 音频通话的 SIP 网关
- 用于录制或流式传输会议的广播基础设施
该图显示了在运行 Docker 的主机上的典型部署。此项目将上述每个组件分隔到相互连接的容器中。为此,提供了多个容器镜像。
外部端口
以下外部端口必须在防火墙上打开:
80/tcp
用于 Web UI HTTP(实际上只是重定向,在.env
文件中取消注释ENABLE_HTTP_REDIRECT=1
后)443/tcp
用于 Web UI HTTPS10000/udp
用于 UDP 的 RTP 媒体
另外 20000-20050/udp
用于 jigasi,如果您选择部署该组件以方便 SIP 访问。
例如,在 CentOS/Fedora 服务器上,可以通过以下方式打开这些端口(不包括 SIP 访问):
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --permanent --add-port=10000/udp
sudo firewall-cmd --reload
镜像
- base: Debian 稳定基础镜像,带有用于进程控制的 S6 Overlay 和启用的 [Jitsi 仓库]。所有其他镜像都基于此镜像。
- base-java: 与上述相同,另加 Java(OpenJDK)。
- web: Jitsi Meet Web UI,通过 nginx 提供服务。
- prosody: Prosody,XMPP 服务器。
- jicofo: Jicofo,XMPP 焦点组件。
- jvb: Jitsi Videobridge,视频路由器。
- jigasi: Jigasi,SIP(仅音频)网关。
- jibri: Jibri,广播基础设施。
设计考虑
Jitsi Meet 使用 XMPP 进行信令,因此需要 XMPP 服务器。由这些容器提供的设置不会将 XMPP 服务器暴露给外部世界。相反,它被完全封闭,XMPP 流量的路由仅发生在用户定义的网络中。
XMPP 服务器可以暴露给外部世界,但这超出了本项目的范围。
配置
配置通过包含在 .env
文件中的环境变量进行。您可以复制提供的 env.example
文件作为参考。
变量 | 描述 | 示例 |
---|---|---|
CONFIG | 存储所有配置的目录 | /opt/jitsi-meet-cfg |
TZ | 系统时区 | Europe/Amsterdam |
HTTP_PORT | 暴露的 HTTP 流量端口 | 8000 |
HTTPS_PORT | 暴露的 HTTPS 流量端口 | 8443 |
JVB_ADVERTISE_IPS | Docker 主机的 IP 地址(用逗号分隔),适用于局域网环境 | 192.168.1.1 |
PUBLIC_URL | 用于 web 服务的公共 URL | https://meet.example.com |
译者:大陆用户时区可以设置为:Asia/Shanghai
移动端应用程序不支持自签名证书(默认情况下)。请参阅下文了解如何使用 Let’s Encrypt 获得正确的证书。