docker搭建开源视频会议Jitsi

1.前言

2.docker部署

2.1安装docker

  • 先安装docker和docker-compose,代码如下:
1
2
3
4
wget -qO- get.docker.com | bash
systemctl enable docker
curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64 > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
  • 限制docker日志并添加docker内部ipv6(可选,直接全部复制下面代码后一起粘贴到SSH的交互终端)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
cat > /etc/docker/daemon.json <<EOF

{

"log-driver": "json-file",

"log-opts": {

"max-size": "20m",

"max-file": "3"

},

"ipv6": true,

"fixed-cidr-v6": "fd00:dead:beef:c0::/80",

"experimental":true,

"ip6tables":true

}

EOF

2.2安装jitsi

  • 创建安装目录
1
2
3
sudo -i
mkdir -p /root/docker/jitsi
cd /root/docker/jitsi
  • 进入/root/docker/jitsi目录后克隆github项目(就是通过cd /root/docker/jitsi进入目录)
1
2
git clone https://github.com/jitsi/docker-jitsi-meet
cd docker-jitsi-meet
  • 复制docker-jitsi-meet中的env.example到.env (如果.env不存在则创建该名字的文件,并将env.example的内容复制粘贴到.env)
1
2
3
sudo -i
mkdir -p /root/docker/jitsi
cd /root/docker/jitsi
  • 进入/root/docker/jitsi目录后克隆github项目(就是通过cd /root/docker/jitsi进入目录)
1
2
cp env.example .env 
./gen-passwords.sh
  • 后者./gen-passwords.sh用于生成.env中文本内容的随机密码,注意在通过SFTP访问文件.env,要勾选“显示隐藏的内容”,不然可能不会显示。
  • 编辑.env文件(通过nano .env),需要编辑的内容如下,其余不变。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CONFIG=/root/docker/jitsi(改为“创建安装目录”的实际路径)

HTTP_PORT(http端口,不能被其他程序占用)

HTTPS_PORT(https端口,不能被其他程序占用)

TZ,时区Asia/Shanghai

PUBLIC_URL,填写自己反代的域名,https://example.com 注意删除后面默认带的端口以及前面的注释块#

ENABLE_GUESTS=1,运行访客访问,这样不用注册

ENABLE_XMPP_WEBSOCKET=0,jvb和客户端是通过websocket连接的,保证10000的udp端口没有被占用

  • 修改.env后面几行,让他默认开机启动
1
2
3
# Container restart policy

RESTART_POLICY=unless-stopped
  • 然后在/root/docker/jitsi/docker-jitsi-meet 下运行
1
docker compose up -d
  • 然后进行反代上面设置的http端口就可以通过域名进行TLS安全访问了,1panel或者宝塔面板反代的,可以给网站添加一个密码,让自己才能用(避免开会的时候外来人员进入)。
    批注 2024-11-29 212753.png

2.3 更新方法

  • 这个项目后续会持续有更新,所以提供一个更新的方式。
1
2
3
4
cd /root/docker/jitsi
docker compose pull
docker compose up -d # 请不要使用 docker compose stop 来停止容器,因为这么做需要额外的时间等待容器停止;docker compose up -d 直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。
docker image prune # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像
  • 提示:
1
2
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N]

2.4 卸载方法

  • 同样进入安装页面,先停止所有容器。
1
2
3
4
cd /root/docker/jitsi
docker compose down
cd ..
rm -rf /root/docker/jitsi
  • 删除docker下载对应的镜像
1
2
cd ~
docker images
  • 观察对应的名字,记录 IMAGE ID , 然后docker rmi IMAGE ID 进行删除。
  • 例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
root@MEGABOX-PRO:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.fit2cloud.com/halo/halo 2.21 4ff2b2b66ca4 5 months ago 434MB
postgres 13-alpine 479196f38b24 7 months ago 274MB
redis latest f1285ef3611d 7 months ago 137MB
germannewsmaker/nexterm latest 15dbcdef965e 9 months ago 534MB
ghcr.io/alexta69/metube latest cd7130a11fa5 12 months ago 292MB
1panel/openresty 1.21.4.3-3-3-focal 47fabb474247 21 months ago 667MB
postgres 15.4 68a92c148701 2 years ago 411MB
root@MEGABOX-PRO:~# docker rmi 4ff2b2b66ca4
Untagged: registry.fit2cloud.com/halo/halo:2.21
Untagged: registry.fit2cloud.com/halo/halo@sha256:11072358e90805562285e92001133e161f64f84d5840d67d72d6819b3dfb112c
Deleted: sha256:4ff2b2b66ca40ee4d4169ae0a0046ee83f5e6d08bcceaedf4d3673d1e8975239
Deleted: sha256:0c0dc39400a7ca82e7ec1c0188875d039a7ff9c338dd249c1a7c37b449f73bff
Deleted: sha256:fee0f503844c8e97e9152bb3eb19882b0e068b9e2610fe3bebbe9b84d54f2f58
Deleted: sha256:c11922e92b5944875ecae124fad2c1f02d10c0919f3e9a2d9f2936c56a8620f1
Deleted: sha256:ebbf77284b7d1bd7efe87025ee211e83b182848c914ef2979bb87aef46a91790
Deleted: sha256:fe1321453a34970e1d6d6b93cdeffc2e1fd189cca39ad406f224ae06425b65f0
Deleted: sha256:fcf18e4d78104587534b089e175ed7a2d9af10d20bc5cd1aac0785fb10348006
Deleted: sha256:90931dace4ef789a17e24c2ed2dd3e0bf9c20051bd0975d7c0a15a7098d18cef
Deleted: sha256:bc84c6dbf5c73668d6a4f1223a7e2f9628b452cb1eb1ad96fc2ea67ba78407bb
Deleted: sha256:a9f2a63e074c3337bb10f1b85db8e585e92723b08d6f9ceac5e5b74524b436d6
Deleted: sha256:073ec47a8c22dcaa4d6e5758799ccefe2f9bde943685830b1bf6fd2395f5eabc
root@MEGABOX-PRO:~#

3.写在最后

  • 🌱 此刻,你已经拥有:
  • 一个 可控、稳定、开源 的视频会议系统
  • 一套基于 Docker 的自动化部署环境
  • 属于你自己的在线沟通与协作空间

  • 有些东西,只有自己折腾过一遍,才算真的会了。

  • 或许在部署过程中,你也遇到过端口冲突、反代问题,甚至一度怀疑是不是哪里出错了。但正是这些过程,让最终成功运行的那一刻显得格外真实而有成就感。

“服务运行的那一刻,不只是端口开放,更是能力的延伸。”


🎊 恭喜你,Jitsi 部署完成!接下来,可以继续优化网络质量、接入反代安全策略,让它真正成为你自己的稳定服务 🚀