如何在 Debian 10 上安装 Jitsi Meet

作者选择了 开放式互联网 / 自由言论基金作为 写给捐赠计划的一部分接受捐款。

介绍

Jitsi Meet是一个基于WebRTC(https://en.wikipedia.org/wiki/WebRTC)的开源视频会议应用程序。Jitsi Meet服务器提供多人视频会议室,您只能使用您的浏览器访问,并提供与Zoom或Skype会议通话相似的功能。Jitsi会议的优点是,您的所有数据只通过您的服务器传输,端到端TLS加密确保没有人可以扫描通话。

在本教程中,您将安装并配置 Debian 10 上的 Jitsi Meet 服务器。默认配置允许任何人创建一个新的会议室. 这对于在互联网上公开可用的服务器来说并不理想,因此您还将配置 Jitsi Meet,以便只有注册用户才能创建新的会议室。

前提条件

在您开始本指南之前,您将需要以下内容:

  • 一个 Debian 10 服务器通过遵循 Initial Server Setup with Debian 10 教程设置,包括一个非 root sudo-enabled 用户。您需要的服务器的大小主要取决于可用的带宽和您预计使用服务器的参与者数量。下表将为您提供需要的内容的一些想法。
  • 一个域名配置为指向您的服务器。

当您选择一个服务器来运行您的 Jitsi Meet 实例时,您需要考虑托管会议室所需的系统资源。

CPUServer Bandwidth
Two Participants3%30Kbps Up, 100Kbps Down
Three Participants15%7Mbps Up, 6.5Mbps Down

两到三名参与者之间资源使用的跳跃是因为当有两个客户端时,Jitsi会直接在客户端之间路由呼叫数据,当有两个以上客户端时,呼叫数据会通过Jitsi Meet服务器路由。

步骤 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步:设置防火墙

当您遵循 Debian 10 初始服务器设置指南时,您启用了 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 包。

首先,安装gnupg包,使系统能够管理GPG加密密钥:

1sudo apt install gnupg

接下来,下载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)。

Image showing the jitsi-meet installation hostname dialog

<$>[note] ** 注意:** 您将方程式从主机名域移动,以使用TAB键突出 ** ** 按钮。

然后,您将看到一个新的对话框,询问您是否希望 Jitsi 创建并使用 自我签名 TLS 证书,或者使用您已经拥有的现有证书:

Image showing the jitsi-meet installation certificate dialog

如果您没有您的 Jitsi 域的 TLS 证书,请选择第一个, ** 创建新的自签证书** ,选项。

您的 Jitsi Meet 实例现在使用自签名的 TLS 证书安装,这将导致浏览器的警告,因此您将在下一步获得签名的 TLS 证书。

步骤 4 – 获取签名的 TLS 证书

Jitsi Meet 使用 TLS 证书来加密通话流量,以便在通过互联网进行通话时没有人能听到您的通话。

Jitsi Meet 提供了一个程序,用于自动下载用于使用 Certbot实用程序的域名的 TLS 证书。

首先,使用以下命令安装certbot包:

1sudo apt install certbot

您的服务器现在已经准备好运行 Jitsi Meet 提供的 TLS 证书安装程序:

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.example.com)
 5- Download certbot-auto from https://dl.eff.org to /usr/local/sbin
 6- Install additional dependencies in order to request Lets 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
11
12You need to agree to the ACME server's Subscriber Agreement (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,并将用于通知您有关安全和其他与 TLS 证书相关的问题。 您必须在这里输入电子邮件地址以继续安装。 安装将完成,无需进一步提示。

当它完成时,您的 Jitsi Meet 实例将被配置为为您的域名使用签名的 TLS 证书. 证书更新也将自动发生,因为安装程序将更新脚本放置在 /etc/cron.weekly/letsencrypt-renew 号,每周运行。

您的 Jitsi Meet 服务器现在正在运行并可供测试。打开浏览器并将其指向您的域名。您将能够创建一个新的会议室并邀请其他人加入您。

Jitsi Meet 的默认配置是,任何访问您的 Jitsi Meet 服务器主页的人都可以创建一个新的会议室。这将使用您的服务器的系统资源来运行会议室,并且不适合未经授权的用户。

步骤 5 – 创建锁定会议

在此步骤中,您将配置您的 Jitsi Meet 服务器,以便仅允许注册用户创建会议室. 您要编辑的文件由安装程序生成,并与您的域名配置。

在以下示例中,将使用变量 your_domain 代替域名。

首先,使用文本编辑器打开 /etc/prosody/conf.avail/your_domain.cfg.lua:

1sudo nano /etc/prosody/conf.avail/your_domain.cfg.lua

编辑这条线:

1[label /etc/prosody/conf.avail/your_domain.cfg.lua]
2...
3        authentication = "anonymous"
4...

至下列:

1[label /etc/prosody/conf.avail/your_domain.cfg.lua]
2...
3        authentication = "internal_plain"
4...

此配置告知 Jitsi Meet 强制验证用户名和密码,然后允许新访客创建会议室。

然后,在相同的文件中,将下列部分添加到文件的末尾:

1[label /etc/prosody/conf.avail/your_domain.cfg.lua]
2...
3VirtualHost "guest.your_domain"
4    authentication = "anonymous"
5    c2s_require_encryption = false

此配置允许匿名用户加入由身份验证的用户创建的会议室,但是,客人必须有独特的地址和可选的密码才能进入该房间。

在这里,您在您的域名前面添加了guest。 例如,对于jitsi.your-domain,您会添加guest.jitsi.your-domainguest. 主机名仅由 Jitsi Meet 内部使用。

/etc/jitsi/meet/your_domain-config.js 打开另一个配置文件,使用文本编辑器:

1sudo nano /etc/jitsi/meet/your_domain-config.js

编辑这条线:

1[label /etc/jitsi/meet/your_domain-config.js]
2...
3        // anonymousdomain: 'guest.example.com',
4...

至下列:

1[label /etc/jitsi/meet/your_domain-config.js]
2...
3        anonymousdomain: 'guest.your_domain',
4...

再次,通过使用您之前使用的 guest.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:your_domain

此配置将其中一个 Jitsi Meet 流程指向执行现在需要的用户身份验证的本地服务器。

您的 Jitsi Meet 实例现在已配置为只有注册用户才能创建会议室. 创建会议室后,任何人都可以加入会议室,而无需成为注册用户。

现在,Jitsi Meet已配置为需要验证用户创建房间,您需要注册这些用户及其密码,您将使用 prosodyctl实用程序来完成此操作。

运行以下命令将用户添加到您的服务器:

1sudo prosodyctl register user your_domain password

您在这里添加的用户不是系统用户,他们只能创建会议室,并且无法通过SSH登录您的服务器。

最后,重新启动 Jitsi Meet 和 Nginx 流程来加载新配置:

1sudo systemctl restart prosody.service
2sudo systemctl restart jicofo.service
3sudo systemctl restart jitsi-videobridge2.service
4sudo systemctl restart nginx

现在,Jitsi Meet 实例在创建会议室时将要求一个用户名和密码,并提供一个对话框。

Image showing the Jitsi username and password box

您的 Jitsi Meet 服务器现在已设置并安全配置。

结论

在本文中,您部署了一个 Jitsi Meet 服务器,您可以使用它来托管安全和私人视频会议室. 您可以通过从 Jitsi Meet Wiki的说明来扩展您的 Jitsi Meet 实例。

Published At
Categories with 技术
Tagged with
comments powered by Disqus