作者选择了 开放式互联网/言论自由基金作为 [写给捐赠计划]的一部分接受捐款(https://www.digitalocean.com/community/pages/write-for-digitalocean)。
介绍
Jitsi Meet是一个基于WebRTC(https://en.wikipedia.org/wiki/WebRTC)的开源视频会议应用程序。Jitsi Meet服务器提供多人视频会议室,您只能使用您的浏览器访问,并提供与Zoom或Skype会议通话相似的功能。Jitsi会议的优点是,您的所有数据只通过您的服务器传输,端到端TLS加密确保没有人可以扫描通话。
在本教程中,你将安装和配置一个Jitsi Meet服务器在Ubuntu 20.04. 默认配置允许任何人创建一个新的会议室. 这不是一个公开在互联网上可用的服务器的理想选择,所以你还将配置Jitsi Meet,以便只有注册用户可以创建新的会议室. 创建会议室后,任何用户都可以加入,只要他们有独特的地址和可选的密码。
前提条件
在您开始本指南之前,您将需要以下内容:
- 一个 Ubuntu 20.04 服务器通过遵循 Initial Server Setup with Ubuntu 20.04 教程设置,包括一个非 root sudo-enabled 用户。 您需要的服务器的大小主要取决于可用的带宽和您预计使用服务器的参与者数量。 下表将为您提供需要什么的想法。
- 一个域名配置为指向您的服务器。 您可以学习如何将域名指向 DigitalOcean Droplets 通过遵循 如何使用 DigitalOcean 设置主机名称教程。 在本指南中,使用示例域名
jitsiyour_domain
。
当您选择一个服务器来运行您的 Jitsi Meet 实例时,您需要考虑托管会议室所需的系统资源。
CPU | Server Bandwidth | |
---|---|---|
Two Participants | 3% | 30Kbps Up, 100Kbps Down |
Three Participants | 15% | 7Mbps Up, 6.5Mbps Down |
两到三名参与者之间资源使用的跳跃是因为当有两个客户端时,Jitsi会直接在客户端之间路由呼叫数据,当有两个以上客户端时,呼叫数据会通过Jitsi Meet服务器路由。
在开始步骤 1 之前登录您的服务器作为非根, sudo 启用的用户。
步骤 1 – 设置系统主机名
在此步骤中,您将更改系统的主机名,以匹配您打算为您的 Jitsi Meet 实例使用的域名,并将该主机名解决为 localhost IP, 127.0.0.1
。
首先,将系统的主机名设置为您将在您的 Jitsi 实例中使用的域名。下列命令将设置当前的主机名,并修改在重新启动之间持有系统主机名的 /etc/hostname
:
1sudo hostnamectl set-hostname jitsi.your_domain
你所执行的命令如下:
hostnamectl
:来自 systemd工具包的实用程序来管理系统主机名。set-hostname
: 设置系统主机名。
检查通过运行以下操作是否成功:
1hostname
这将返回您用hostnamectl
命令设置的主机名:
1[secondary_label Output]
2jitsi.your-domain
接下来,您将将服务器的主机名进行本地地映射,设置为循环 IP 地址, 127.0.0.1
. 通过使用文本编辑器打开 `/etc/hosts' 来完成此操作:
1sudo nano /etc/hosts
然后添加下面的行:
1[label /etc/hosts]
2127.0.0.1 jitsi.your_domain
您的 Jitsi Meet 伺服器域名本地映射至「127.0.0.1」很重要,因为您的 Jitsi Meet 伺服器在您的伺服器上使用多个网络流程,相互接受「127.0.0.1」 IP 地址上的本地连接。
您的服务器现在拥有 Jitsi 安装时所需的主机名称. 在下一步,您将打开 Jitsi 和 TLS 证书安装程序所需的防火墙端口。
第2步:设置防火墙
当您遵循Ubuntu 20.04的初始服务器设置指南时,您启用了UFW防火墙并打开了SSH端口。Jitsi服务器需要一些端口打开,以便与呼叫客户端进行通信。
您将打开的端口如下:
80/tcp
: TLS 证书请求中使用的端口.443/tcp
:用于会议室创建网页的端口.4443/tcp
10000/udp
:将传输和接收加密通话流量的端口。
运行以下ufw
命令来打开这些端口:
1sudo ufw allow 80/tcp
2sudo ufw allow 443/tcp
3sudo ufw allow 4443/tcp
4sudo ufw allow 10000/udp
检查他们是否都添加了ufw status
命令:
1sudo ufw status
如果这些端口是开放的,您将收到以下输出:
1[secondary_label Output]
2Status: active
3
4To Action From
5-- ------ ----
6OpenSSH ALLOW Anywhere
780/tcp ALLOW Anywhere
8443/tcp ALLOW Anywhere
94443/tcp ALLOW Anywhere
1010000/udp ALLOW Anywhere
11OpenSSH (v6) ALLOW Anywhere (v6)
1280/tcp (v6) ALLOW Anywhere (v6)
13443/tcp (v6) ALLOW Anywhere (v6)
144443/tcp (v6) ALLOW Anywhere (v6)
1510000/udp (v6) ALLOW Anywhere (v6)
服务器现在已经准备好进行 Jitsi 安装,您将在下一步完成。
步骤 3 – 安装 Jitsi Meet
在此步骤中,您将添加 Jitsi 稳定存储库到您的服务器,然后从该存储库安装 Jitsi Meet 包,从而确保您始终运行最新稳定 Jitsi Meet 包。
首先,用wget
下载工具下载 Jitsi GPG 密钥:
1wget https://download.jitsi.org/jitsi-key.gpg.key
apt
包管理器将使用这个 GPG 密钥来验证您将从 Jitsi 存储库下载的包。
接下来,使用apt-key
实用程序将您下载的 GPG 密钥添加到apt
的密钥:
1sudo apt-key add jitsi-key.gpg.key
您现在可以删除 GPG 密钥文件,因为它不再需要这个命令:
1rm jitsi-key.gpg.key
现在,您将添加 Jitsi 存储库到您的服务器,创建一个包含 Jitsi 存储库的新源文件。
1sudo nano /etc/apt/sources.list.d/jitsi-stable.list
将此行添加到 Jitsi 存储库的文件中:
1[label /etc/apt/sources.list.d/jitsi-stable.list]
2deb https://download.jitsi.org stable/
保存和退出编辑器。
最后,执行系统更新,从Jitsi存储库中收集包列表,然后安装jitsi-meet
包:
1sudo apt update
2sudo apt install jitsi-meet
在安装jitsi-meet
时,您将被要求输入您想要用于您的 Jitsi Meet 实例的域名(例如,jitsi.your-domain
)。
<$>[note]
** 注意:** 您将方程式从主机名域移动,以使用TAB
键突出 **
然后,会显示一个新的对话框,询问您是否希望 Jitsi 创建并使用 自我签名 TLS 证书,或者使用现有证书,如果您有:
如果您没有您的 Jitsi 域的 TLS 证书,请选择第一个, ** 创建新的自签证书** ,选项。
您的 Jitsi Meet 实例现在使用自签名的 TLS 证书安装,这将导致浏览器的警告,因此您将在下一步获得签名的 TLS 证书。
步骤 4 – 获取签名的 TLS 证书
Jitsi Meet 使用 TLS 证书来加密通话流量,以便在通过互联网进行通话时没有人能听到您的通话。
Jitsi Meet 提供一个脚本来自动下载您的域的 TLS 证书. 运行由 Jitsi Meet 提供的此证书安装脚本在 /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
使用以下命令:
1sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
脚本在运行时会打印下列信息,并要求您提供电子邮件地址:
1[secondary_label Output]
2-------------------------------------------------------------------------
3This script will:
4- Need a working DNS record pointing to this machine(for domain jitsi.your_domain)
5- Download certbot-auto from https://dl.eff.org to /usr/local/sbin
6- Install additional dependencies in order to request Let’s Encrypt certificate
7- If running with jetty serving web content, will stop Jitsi Videobridge
8- Configure and reload nginx or apache2, whichever is used
9- Configure the coturn server to use Let's Encrypt certificate and add required deploy hooks
10- Add command in weekly cron job to renew certificates regularly
11You need to agree to the ACME server's Subscriber Agreement
12(https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf)
13by providing an email address for important account notifications
14Enter your email and press [ENTER]:
此电子邮件地址将发送给证书发行人 https://letsencrypt.org
,并将用于通知您关于安全和其他与证书相关的问题。 您必须在这里输入电子邮件地址以继续安装。
该脚本将完成安装和配置您的 Jitsi 服务器的 SSL 证书,而不需要任何其他用户输入。
Jitsi Meet 的默认配置是,任何访问您的 Jitsi Meet 服务器主页的人都可以创建一个新的会议室。这将使用您的服务器的系统资源来运行会议室,并且不适合未经授权的用户。
步骤 5 – 创建锁定会议
在此步骤中,您将配置您的 Jitsi Meet 服务器,以便仅允许注册用户创建会议室. 您要编辑的文件由安装程序生成,并与您的域名配置。
在以下示例中,将使用变量 jitsi.your_domain
代替域名。
首先,使用文本编辑器打开 /etc/prosody/conf.avail/jitsi.your_domain.cfg.lua
:
1sudo nano /etc/prosody/conf.avail/your_domain.cfg.lua
编辑这条线:
1[label /etc/prosody/conf.avail/jitsi.your_domain.cfg.lua]
2 authentication = "anonymous"
两
1[label /etc/prosody/conf.avail/jitsi.your_domain.cfg.lua]
2 authentication = "internal_plain"
此配置告知 Jitsi Meet 强制验证用户名和密码,然后允许新访客创建会议室。
然后,在相同的文件中,将下列部分添加到文件的末尾:
1[label /etc/prosody/conf.avail/your_domain.cfg.lua]
2VirtualHost "guest.jitsi.your_domain"
3 authentication = "anonymous"
4 c2s_require_encryption = false
此配置允许匿名用户加入由身份验证的用户创建的会议室,但是,客人必须有独特的地址和可选的密码才能进入该房间。
在这里,您已经在域名前面添加了guest.
例如,为jitsi.your_domain
添加的正确名称是guest.jitsi.your_domain
。 guest.
主机名仅由 Jitsi Meet 内部使用,您将永远不会在浏览器中输入或需要为其创建 DNS 记录。
在 /etc/jitsi/meet/jitsi.your_domain-config.js
打开另一个配置文件,使用文本编辑器:
1sudo nano /etc/jitsi/meet/jitsi.your_domain-config.js
编辑这条线:
1[label /etc/jitsi/meet/your_domain-config.js]
2 // anonymousdomain: 'guest.jitsi.your_domain',
二:
1[label /etc/jitsi/meet/your_domain-config.js]
2 anonymousdomain: 'guest.jitsi.your_domain',
再次,使用您之前使用的 guest.jitsi.your_domain
主机名. 此配置告知 Jitsi Meet 使用哪些内部主机名用于未经身份验证的客人。
接下来,打开 /etc/jitsi/jicofo/sip-communicator.properties
:
1sudo nano /etc/jitsi/jicofo/sip-communicator.properties
然后添加以下行以完成配置更改:
1[label /etc/jitsi/jicofo/sip-communicator.properties]
2org.jitsi.jicofo.auth.URL=XMPP:jitsi.your_domain
此配置将其中一个 Jitsi Meet 流程指向执行现在需要的用户身份验证的本地服务器。
您的 Jitsi Meet 实例现在已配置为只有注册用户才能创建会议室. 创建会议室后,任何人都可以加入会议室,而无需成为注册用户。
现在,Jitsi Meet已配置为需要验证用户创建房间,您需要注册这些用户及其密码。
运行以下命令将用户添加到您的服务器:
1sudo prosodyctl register user your_domain password
您在这里添加的用户不是系统用户,他们只能创建会议室,并且无法通过SSH登录您的服务器。
最后,重新启动 Jitsi Meet 流程来加载新配置:
1sudo systemctl restart prosody.service
2sudo systemctl restart jicofo.service
3sudo systemctl restart jitsi-videobridge2.service
现在,Jitsi Meet 实例在创建会议室时将要求一个用户名和密码,并提供一个对话框。
您的 Jitsi Meet 服务器现在已设置并安全配置。
结论
在本文中,您部署了一个 Jitsi Meet 服务器,您可以使用它来托管安全和私人视频会议室. 您可以通过从 Jitsi 手册的说明来扩展您的 Jitsi Meet 实例。