如何在Ubuntu20.04上安装JitsiMeet
作者选择了 Open Internet/Free Speech Fund 作为 Write for DOnations 计划 的一部分来接受捐赠。
介绍
Jitsi Meet 是一款基于 WebRTC 的开源视频会议应用。 Jitsi Meet 服务器提供多人视频会议室,您只需使用浏览器即可访问,并提供与 Zoom 或 Skype 电话会议相当的功能。 Jitsi 会议的好处是您的所有数据仅通过您的服务器,并且端到端 TLS 加密确保没有人可以窥探通话。 使用 Jitsi,您可以确保您的私人信息保持不变。
在本教程中,您将在 Ubuntu 20.04 上安装和配置 Jitsi Meet 服务器。 默认配置允许任何人创建新会议室。 这对于在 Internet 上公开可用的服务器来说并不理想,因此您还将配置 Jitsi Meet,以便只有注册用户才能创建新的会议室。 创建会议室后,任何用户只要拥有唯一地址和可选密码即可加入。
先决条件
在开始本指南之前,您需要以下内容:
- 按照 Initial Server Setup with Ubuntu 20.04 教程设置一台 Ubuntu 20.04 服务器,包括启用 sudo 的非 root 用户。 您需要的服务器大小主要取决于可用带宽和您希望使用服务器的参与者数量。 下表将让您了解需要什么。
- 配置为指向您的服务器的域名。 您可以按照 如何使用 DigitalOcean 教程设置主机名来学习如何将域指向 DigitalOcean Droplets。 在本指南中,使用了示例域名 jitsi.your_domain。
当您选择运行 Jitsi Meet 实例的服务器时,您需要考虑托管会议室所需的系统资源。 以下基准信息是从使用高质量视频设置的单核虚拟机中收集的:
中央处理器 | 服务器带宽 | |
---|---|---|
两名参与者 | 3% | 30Kbps 上行,100Kbps 下行 |
三名参与者 | 15% | 7Mbps 上行,6.5Mbps 下行 |
两个和三个参与者之间资源使用的跳跃是因为当有两个参与者时,Jitsi 将直接在客户端之间路由呼叫数据。 当存在两个以上的客户端时,呼叫数据将通过 Jitsi Meet 服务器进行路由。
在开始步骤 1 之前,以启用 sudo 的非 root 用户身份登录到您的服务器。
第 1 步 — 设置系统主机名
在此步骤中,您将更改系统的主机名以匹配您打算用于 Jitsi Meet 实例的域名,并将该主机名解析为 localhost IP,127.0.0.1
。 Jitsi Meet 在安装和生成配置文件时会使用这两种设置。
首先,将系统的主机名设置为您将用于 Jitsi 实例的域名。 以下命令将设置当前主机名并修改在重新启动之间保存系统主机名的 /etc/hostname
:
sudo hostnamectl set-hostname jitsi.your_domain
您运行的命令分解如下:
hostnamectl
:systemd 工具套件中用于管理系统主机名的实用程序。set-hostname
:设置系统主机名。
通过运行以下命令检查这是否成功:
hostname
这将返回您使用 hostnamectl
命令设置的主机名:
Outputjitsi.your-domain
接下来,您将设置服务器主机名到环回 IP 地址的本地映射 127.0.0.1
。 通过使用文本编辑器打开 /etc/hosts
来执行此操作:
sudo nano /etc/hosts
然后,添加以下行:
/etc/hosts
127.0.0.1 jitsi.your_domain
Jitsi Meet 服务器的域名到 127.0.0.1
的本地映射很重要,因为您的 Jitsi Meet 服务器在您的服务器上使用多个网络进程,这些进程接受 127.0.0.1
IP 地址上的本地连接。 这些连接使用注册到您的域名的 TLS 证书进行身份验证和加密。 将域名本地映射到 127.0.0.1
可以将 TLS 证书用于这些本地网络连接。
您的服务器现在拥有 Jitsi 安装时所需的主机名。 在下一步中,您将打开 Jitsi 和 TLS 证书安装程序所需的防火墙端口。
第 2 步 — 配置防火墙
当您按照 Initial Server Setup with Ubuntu 20.04 指南进行操作时,您启用了 UFW 防火墙并打开了 SSH 端口。 Jitsi 服务器需要打开一些端口,以便它可以与呼叫客户端通信。 此外,TLS 安装过程需要打开一个端口,以便它可以验证证书请求。
您将打开的端口如下:
80/tcp
:TLS 证书请求中使用的端口。443/tcp
:会议室创建网页使用的端口。4443/tcp
10000/udp
: Ports that will transmit and receive the encrypted call traffic.
运行以下 ufw
命令打开这些端口:
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow 4443/tcp sudo ufw allow 10000/udp
检查它们是否都使用 ufw status
命令添加:
sudo ufw status
如果这些端口打开,您将收到以下输出:
OutputStatus: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443/tcp ALLOW Anywhere 4443/tcp ALLOW Anywhere 10000/udp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443/tcp (v6) ALLOW Anywhere (v6) 4443/tcp (v6) ALLOW Anywhere (v6) 10000/udp (v6) ALLOW Anywhere (v6)
服务器现在已准备好安装 Jitsi,您将在下一步中完成安装。
第 3 步 — 安装 Jitsi Meet
在此步骤中,您将 Jitsi 稳定存储库添加到您的服务器,然后从该存储库安装 Jitsi Meet 包。 这将确保您始终运行最新的稳定 Jitsi Meet 包。
首先,使用 wget
下载工具下载 Jitsi GPG 密钥:
wget https://download.jitsi.org/jitsi-key.gpg.key
apt
包管理器将使用此 GPG 密钥来验证您将从 Jitsi 存储库下载的包。
接下来,使用 apt-key
实用程序将您下载的 GPG 密钥添加到 apt
的密钥环:
sudo apt-key add jitsi-key.gpg.key
您现在可以使用以下命令删除 GPG 密钥文件,因为它不再需要:
rm jitsi-key.gpg.key
现在,您将通过创建一个包含 Jitsi 存储库的新源文件将 Jitsi 存储库添加到您的服务器。 打开并创建新文件:
sudo nano /etc/apt/sources.list.d/jitsi-stable.list
将此行添加到 Jitsi 存储库的文件中:
/etc/apt/sources.list.d/jitsi-stable.list
deb https://download.jitsi.org stable/
保存并退出编辑器。
最后,执行系统更新以从 Jitsi 存储库中收集包列表,然后安装 jitsi-meet
包:
sudo apt update sudo apt install jitsi-meet
在安装 jitsi-meet
期间,系统会提示您输入您想要用于 Jitsi Meet 实例的域名(例如,jitsi.your-domain
)。
笔记: 您将光标从主机名字段中移动以突出显示'按钮TAB
钥匙。 按ENTER
什么时候'突出显示以提交主机名。
然后,您将看到一个新对话框,询问您是否希望 Jitsi 创建和使用 自签名 TLS 证书,或者使用现有的证书(如果有的话):
如果您的 Jitsi 域没有 TLS 证书,请选择第一个 生成新的自签名证书 选项。
您的 Jitsi Meet 实例现在已使用自签名 TLS 证书安装。 这将导致浏览器警告,因此您将在下一步中获得签名的 TLS 证书。
第 4 步 — 获取签名的 TLS 证书
Jitsi Meet 使用 TLS 证书对通话流量进行加密,这样在通过 Internet 传输时,任何人都无法收听您的通话。 TLS 证书与网站用于启用 HTTPS URL 的证书相同。
Jitsi Meet 提供了一个脚本来自动为您的域下载 TLS 证书。 使用以下命令运行 Jitsi Meet 在 /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
提供的证书安装脚本:
sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
该脚本在您运行时打印以下信息并要求您提供电子邮件地址:
Output------------------------------------------------------------------------- This script will: - Need a working DNS record pointing to this machine(for domain jitsi.your_domain) - Download certbot-auto from https://dl.eff.org to /usr/local/sbin - Install additional dependencies in order to request Let’s Encrypt certificate - If running with jetty serving web content, will stop Jitsi Videobridge - Configure and reload nginx or apache2, whichever is used - Configure the coturn server to use Let's Encrypt certificate and add required deploy hooks - Add command in weekly cron job to renew certificates regularly You need to agree to the ACME server's Subscriber Agreement (https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf) by providing an email address for important account notifications Enter your email and press [ENTER]:
此电子邮件地址将提交给证书颁发者 https://letsencrypt.org,并将用于通知您有关证书的安全性和其他事项。 您必须在此处输入电子邮件地址才能继续安装。
该脚本将为您的 Jitsi 服务器完成 SSL 证书的安装和配置,无需任何用户输入。
Jitsi Meet 的默认配置是任何访问您的 Jitsi Meet 服务器主页的人都可以创建新的会议室。 这将使用您服务器的系统资源来运行会议室,并且对于未经授权的用户来说是不可取的。 在下一步中,您将配置 Jitsi Meet 实例以仅允许注册用户创建会议室。
第 5 步 — 锁定会议创建
在此步骤中,您将配置 Jitsi Meet 服务器以仅允许注册用户创建会议室。 您将编辑的文件由安装程序生成并使用您的域名进行配置。
在以下示例中,将使用变量 jitsi.your_domain
代替域名。
首先,用文本编辑器打开/etc/prosody/conf.avail/jitsi.your_domain.cfg.lua
:
sudo nano /etc/prosody/conf.avail/your_domain.cfg.lua
编辑这一行:
/etc/prosody/conf.avail/jitsi.your_domain.cfg.lua
authentication = "anonymous"
到
/etc/prosody/conf.avail/jitsi.your_domain.cfg.lua
authentication = "internal_plain"
此配置告诉 Jitsi Meet 在允许新访客创建会议室之前强制用户名和密码验证。
然后,在同一个文件中,将以下部分添加到文件末尾:
/etc/prosody/conf.avail/your_domain.cfg.lua
VirtualHost "guest.jitsi.your_domain" authentication = "anonymous" c2s_require_encryption = false
此配置允许匿名用户加入由经过身份验证的用户创建的会议室。 但是,客人必须有一个唯一的地址和一个可选的密码才能进入房间。
在这里,您在域名前面添加了 guest.
。 例如,jitsi.your_domain
的正确名称是 guest.jitsi.your_domain
。 guest.
主机名仅供 Jitsi Meet 内部使用,您永远不会将其输入浏览器或需要为其创建 DNS 记录。
使用文本编辑器在 /etc/jitsi/meet/jitsi.your_domain-config.js
处打开另一个配置文件:
sudo nano /etc/jitsi/meet/jitsi.your_domain-config.js
编辑这一行:
/etc/jitsi/meet/your_domain-config.js
// anonymousdomain: 'guest.jitsi.your_domain',
到:
/etc/jitsi/meet/your_domain-config.js
anonymousdomain: 'guest.jitsi.your_domain',
同样,使用您之前使用的 guest.jitsi.your_domain
主机名。 此配置告诉 Jitsi Meet 为未经身份验证的访客使用的内部主机名。
接下来,打开/etc/jitsi/jicofo/sip-communicator.properties
:
sudo nano /etc/jitsi/jicofo/sip-communicator.properties
并添加以下行以完成配置更改:
/etc/jitsi/jicofo/sip-communicator.properties
org.jitsi.jicofo.auth.URL=XMPP:jitsi.your_domain
此配置将 Jitsi Meet 进程之一指向执行现在需要的用户身份验证的本地服务器。
您的 Jitsi Meet 实例现已配置为只有注册用户才能创建会议室。 会议室创建后,任何人都可以加入,无需注册用户。 他们所需要的只是唯一的会议室地址和会议室创建者设置的可选密码。
现在 Jitsi Meet 配置为需要经过身份验证的用户才能创建房间,您需要注册这些用户及其密码。 您将使用 prosodyctl
实用程序来执行此操作。
运行以下命令将用户添加到您的服务器:
sudo prosodyctl register user your_domain password
您在此处添加的用户不是系统用户。 他们将只能创建会议室,不能通过 SSH 登录到您的服务器。
最后,重启 Jitsi Meet 进程以加载新配置:
sudo systemctl restart prosody.service sudo systemctl restart jicofo.service sudo systemctl restart jitsi-videobridge2.service
Jitsi Meet 实例现在将在创建会议室时通过对话框请求用户名和密码。
您的 Jitsi Meet 服务器现已设置并安全配置。
结论
在本文中,您部署了一个 Jitsi Meet 服务器,可用于托管安全和私人视频会议室。 您可以使用 Jitsi 手册 中的说明扩展您的 Jitsi Meet 实例。