在 Ubuntu 20.04 上安装 Jitsi Meet – 自托管视频会议

[ad_1]

本教程将向您展示如何在 Ubuntu 20.04 服务器上安装 Jitsi Meet。 Jitsi Meet is afree 开源视频会议软件,适用于 Linux、macOS、Windows、iOS 和 Android。 如果您不信任 Zoom,您可以在您自己的服务器上运行您自己的视频会议平台。

Jitsi Meet的特点

  • 完全免费
  • 与他人共享您的计算机屏幕。
  • 演示者模式允许您同时共享您的屏幕和相机,因此与会者可以在整个演示过程中看到演示者及其肢体语言。
  • 您可以在共享屏幕的同时共享系统音频。
  • 您可以将授权用户指定为主持人。 主持人可以一键将每个参与者静音。
  • 网络上的通信使用 DTLS-SRTP 进行加密。
  • 端到端加密(正在进行中)
  • 您可以为您的会议设置密码,以防止随机陌生人进入。
  • 录制会议/会议并将其保存到 Dropbox。
  • 串流到 YouTube Live 并将录音存储在 YouTube 上。
  • Android 和 iOS 应用
  • 文字聊天
  • 共享文本文档
  • 电话拨入会议
  • 拨出电话参与者
  • 只需几行代码,您就可以将 Jits Meet 通话嵌入到任何网页中。

在 Ubuntu 20.04 上安装 Jitsi Meet 的要求

要运行 Jitsi Meet,您需要一台内存至少为 1GB 的服务器。 您可以单击此推荐链接在 Vultr 上创建一个帐户,以获得 50 美元的免费赠金(仅限新用户)。 在 Vultr 上拥有帐户后,在您的服务器上安装 Ubuntu 20.04 并按照以下说明进行操作。 当您有数十个用户时,请考虑升级您的服务器硬件。 服务器应该是 close 给您的用户,否则在线会议期间会出现延迟。

您还需要一个域名。 我在 NameCheap 注册了我的域名,因为价格低廉,而且他们提供终身免费的 whois 隐私保护。

第 1 步:从官方软件包存储库安装 Jitsi Meet

Jitsi Meet 不包含在默认的 Ubuntu 存储库中。 我们可以从官方 Jitsi 软件包存储库中安装它,其中还包含其他几个有用的软件包。 通过 SSH 登录您的服务器,然后运行以下命令添加官方 Jitsi 存储库。

echo 'deb https://download.jitsi.org stable/' | sudo tee /etc/apt/sources.list.d/jitsi-stable.list

导入 Jitsi 公钥,以便 APT 包管理器可以验证从该存储库下载的包的完整性。

wget -qO -  https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key add -

因为 Jitsi 仓库需要 HTTPS 连接所以我们需要安装 apt-transport-https 包使 APT 与 Jitsi 存储库建立 HTTPS 连接。

sudo apt install apt-transport-https

接下来,更新本地包索引并在 Ubuntu 上安装 Jitsi Meet。

sudo apt update 
sudo apt install jitsi-meet

在安装过程中,您需要为 Jitsi 实例输入主机名。 这是当与会者加入您的视频会议时将出现在 Web 浏览器地址栏中的主机名。 您可以使用描述性主机名,例如 meet.example.com.

在下一个屏幕中,您可以选择生成新的自签名 TLS 证书,以便稍后您可以获取并安装受信任的 Let’s Encryption 证书。

安装过程会配置一些Linux内核参数,保存到 /etc/sysctl.d/20-jvb-udp-buffers.conf 文件。 安装完成后,Jitsi Meet 将自动启动。 您可以通过以下方式检查其状态:

systemctl status jitsi-videobridge2

示例输出:

 jitsi-videobridge2.service - Jitsi Videobridge
     Loaded: loaded (/lib/systemd/system/jitsi-videobridge2.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-04-25 03:07:16 UTC; 8min ago
   Main PID: 3721 (java)
      Tasks: 35 (limit: 65000)
     Memory: 168.5M
     CGroup: /system.slice/jitsi-videobridge2.service
             └─3721 java -Xmx3072m -XX:+UseConcMarkSweepGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath>

提示:如果上述命令没有立即退出,您可以按Q键使其退出。

jitsi-meet package 还拉取了其他包作为依赖,比如

  • openjdk-8-jre-headless: Java运行时环境。 它是必需的,因为 Jitsi Meet 是用 Java 语言编写的。
  • 吉科福: Jitsi 会议焦点 (systemctl status jicofo)
  • 韵律:轻量级 Jabber/XMPP 服务器(systemctl status prosody)
  • 共转: coturn TURN 服务器

第 2 步:在防火墙中打开端口

Jitsi Meet 侦听多个 UDP 端口,如使用以下命令所示。 (如果您的 Ubuntu 服务器没有 netstat 命令,你可以运行 sudo apt install net-tools 命令来安装它。)

sudo netstat -lnptu | grep java

Jitsi Meet Ubuntu 20.04 监听端口

要允许与会者从 Web 浏览器加入视频会议,您需要打开 TCP 端口 80 和 443。要通过网络传输视频,请打开 UDP 端口 10000 和 5000。如果您使用的是 UFW 防火墙,则运行以下命令命令打开这些端口。

sudo ufw allow 80,443/tcp

sudo ufw allow 10000,5000/udp

第 3 步:获取可信的 Let’s Encrypt TLS 证书

转到您的 DNS 托管服务(通常是您的域注册商)为您的 Jitsi 主机名 (meet.example.com) 创建 DNS A 记录。 然后运行以下脚本以获取受信任的 Let’s Encrypt TLS 证书:

sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh

Enter 您的电子邮件地址以接收重要的帐户通知。 然后它会下载 certbot-auto 并获得TLS证书。

jitsi-meet-https-letsencrypt-ubuntu-20.04

如果一切正常,您将看到以下消息,表明已成功获取并安装 TLS 证书。

jitsi满足httpsletsencrypt

如果您使用的是干净的 Ubuntu 20.04 安装(不是从 18.04 或 19.10 升级的),则在获取 Let’s Encrypt 证书时可能会看到以下错误。

Package python-virtualenv is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'python-virtualenv' has no installation candidate

这是因为 Ubuntu 20.04 存储库没有 python-virtualenv 包裹。 我们可以从 Ubuntu 20.04 存储库安装 certbot 包并使用它来获取 TLS 证书,而不是使用上游的 certbot-auto 二进制文件来获取 TLS 证书。

sudo apt install certbot

接下来,我们需要更改实例 certbot-autocertbot 在脚本中使用以下命令。

sudo sed -i 's/./certbot-auto/certbot/g' /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh

再次运行该脚本,您应该能够成功从 Let’s Encrypt 获取 TLS 证书。

sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh

请注意,此脚本使用 http-01 挑战,这意味着你的 Apache 或者 Nginx web 服务器需要监听公网 IP 地址的 80 端口。 如果您的服务器环境不支持 http-01 挑战,那么你不应该运行上面的脚本。 您需要使用其他挑战类型。 就我而言,我使用 DNS 挑战。

sudo certbot --agree-tos -a dns-cloudflare -i nginx --redirect --hsts --staple-ocsp --email [email protected] -d meet.linuxbabe.com

在哪里:

  • --agree-tos: 同意服务条款。
  • -a dns-cloudflare:我使用cloudflare DNS插件进行身份验证,因为我使用的是Cloudflare DNS服务。
  • -i nginx: 使用nginx插件安装TLS证书。 如果你使用 Apache,你需要更换 nginxapache.
  • --redirect: 通过 301 重定向强制 HTTPS。
  • --hsts:将 Strict-Transport-Security 标头添加到每个 HTTP 响应。 强制浏览器始终对域使用 TLS。 防御 SSL/TLS 剥离。
  • --staple-ocsp:启用 OCSP 装订。 有效的 OCSP 响应被装订到服务器在 TLS 期间提供的证书。

第 4 步:启用 HTTP2

HTTP2 可以提高网页加载速度。 要在 Nginx 中启用 HTTP2,请编辑虚拟主机配置文件。

sudo nano /etc/nginx/sites-enabled/meet.example.com.conf

找到以下两行。

listen 443 ssl;
listen [::]:443 ssl;

最后添加http2。

listen 443 ssl http2;
listen [::]:443 ssl http2;

Save 和 close 文件。 然后重新加载 Nginx 以使更改生效。

sudo systemctl reload nginx

第 5 步:开始新的在线会议

现在访问 https://meet.example.com 您将能够开始会议。 要传输音频,您需要允许网络浏览器使用您的麦克风。 要传输视频,您需要允许网络浏览器访问您的相机。

Jitsi meet 开始新的会议

为您的会议命名,然后单击“开始”按钮。 会议开始后,您可以选择为会议设置密码。

步骤 6:设置用户身份验证

默认情况下,任何人都可以转到您的 Jitsi Meet 实例、创建房间并开始会议。 要设置用户身份验证,请编辑 Prosody 配置文件。

sudo nano /etc/prosody/conf.d/meet.example.com.cfg.lua

找到以下行。

authentication = "anonymous"

将其更改为以下内容,这将要求用户输入用户名和密码以开始会议。

authentication = "internal_plain"

但是,我们不希望与会者在加入会议时输入用户名和密码,因此我们需要为来宾创建一个匿名登录,在此文件的末尾添加以下行。 请注意,您不需要为以下内容创建 DNS A 记录 guest.meet.example.com.

VirtualHost "guest.meet.example.com"
    authentication = "anonymous"
    c2s_require_encryption = false

jitsi meet prosody 用户认证

Save 和 close 文件。

接下来,编辑 Jitsi Meet 配置文件。

sudo nano /etc/jitsi/meet/meet.example.com-config.js

找到以下行,

// anonymousdomain: 'guest.example.com',

删除双斜杠并更改来宾域。 将 meet.example.com 替换为您真正的 Jitsi Meet 主机名。

anonymousdomain: 'guest.meet.example.com',

Save 和 close 文件。

然后编辑 Jicofo 配置文件。

sudo nano /etc/jitsi/jicofo/sip-communicator.properties

在此文件的末尾添加以下行。

org.jitsi.jicofo.auth.URL=XMPP:meet.example.com

Save 和 close 文件。 重新启动 systemd 服务以使更改生效。

sudo systemctl restart jitsi-videobridge2 prosody jicofo

要在 Jisi Meet 中创建用户帐户,请运行以下命令。 您将被提升为新用户输入密码。

sudo prosodyctl register username meet.example.com

现在,如果您在 Jitsi Meet 中创建房间,则需要输入用户名和密码。

jitsi满足用户认证

可选:为电话拨入或拨出设置 Jigasi

Jitsi 提供了一个电话界面,允许用户拨入会议或拨打拨出提醒电话。 安装 jigasi 包(用于 SIP 的 Jitsi 网关)。

sudo apt install jigasi

在安装过程中,您需要输入您的 SIP 用户名和密码。 如果您没有,您可以在 OnSIP.com 上创建一个免费的 SIP 帐户。

jitsi遇见jigasi SIP网关

如果您在步骤 6 中设置了用户身份验证,那么您需要编辑 Jigasi 配置文件。

sudo nano /etc/jitsi/jigasi/sip-communicator.properties

找到以下几行。

# [email protected]_DOMAIN
# org.jitsi.jigasi.xmpp.acc.PASS=SOME_PASS
# org.jitsi.jigasi.xmpp.acc.ANONYMOUS_AUTH=false

取消注释并输入您在步骤 6 中创建的帐户和密码。

org.jitsi.jigasi.xmpp.acc.USER_ID=[email protected]
org.jitsi.jigasi.xmpp.acc.PASS=user1_password
org.jitsi.jigasi.xmpp.acc.ANONYMOUS_AUTH=false

Save 和 close 文件。 重新启动 jigasi 系统服务。

sudo systemctl status jigasi

可选:配置 Coturn

如果您在安装 Jitsi Meet 的过程中看到以下消息,则需要配置 Coturn 才能使其正常工作。

Warning! Could not resolve your external ip address! Error:^
Your turn server will not work till you edit your /etc/turnserver.conf config file.
You need to set your external ip address in external-ip and restart coturn service.

编辑 Coturn 配置文件。

sudo nano /etc/turnserver.conf

找到以下行。

external-ip=127.0.0.1

将 127.0.0.1 替换为您服务器的公共 IP 地址。 Save 和 close 文件。 然后重新启动 Coturn。

sudo systemctl restart coturn

故障排除提示

如果遇到错误,可以查看Nginx错误日志(/var/log/nginx/error.log) 找出问题所在。 您还可以查看 systemd 服务的日志。

sudo journalctl -eu jitsi-videobridge2 
sudo journalctl -eu prosody 
sudo journalctl -eu jicofo

包起来

我希望本教程可以帮助您在 Ubuntu 20.04 上设置 Jitsi Meet 服务器。 与往常一样,如果您发现这篇文章有用,请订阅我们的免费时事通讯以获取新教程。 保重?

[ad_2]

Related Posts