在Ubuntu 18.04上安装Jitsi Meet –自托管视频会议
本教程将向您展示如何在Ubuntu 18.04服务器上安装Jitsi Meet。 Jitsi Meet是一款免费的开源视频会议软件,可在Linux,macOS,Windows,iOS和Android上运行。 如果您不信任Zoom,则可以在自己的服务器上运行自己的视频会议平台。
Jitsi Meet的功能
- 完全免费
- 与他人共享您的计算机屏幕。
- 演示者模式使您可以同时共享屏幕和摄像机,因此与会者可以在整个演示过程中看到演示者及其肢体语言。
- 您可以在共享屏幕的同时共享系统音频。
- 您可以将授权用户分配为主持人。 主持人可以一键静音每个参与者。
- 使用DTLS-SRTP对网络上的通信进行加密。
- 端到端加密(正在进行中)
- 您可以为会议设置密码,以防止随机的陌生人进入。
- 记录会议/会议并将其保存到Dropbox。
- 流式传输到YouTube Live并将录音存储在YouTube上。
- Android和iOS应用
- 文字聊天
- 分享文字文件
- 电话拨入会议
- 拨出至电话参与者
- 您只需几行代码就可以将Jits Meet呼叫嵌入到任何网页中。
在Ubuntu 18.04上安装Jitsi Meet的要求
要运行Jitsi Meet,您需要一台至少具有1GB RAM的服务器。 您可以单击此引荐链接在Vultr上创建一个帐户,以获取$ 50的免费信用(仅限新用户)。 在Vultr拥有一个帐户后,在您的服务器上安装Ubuntu 18.04并按照以下说明进行操作。 当您有数十个用户时,请考虑升级服务器硬件。 服务器应靠近您的用户,否则在在线会议期间会发现延迟。
您还需要一个域名。 我在NameCheap上注册了我的域名,因为价格低廉,并且终身免费提供Whois隐私保护。
步骤1:从官方软件包存储库安装Jitsi Meet
默认的Ubuntu存储库中不包含Jitsi Meet。 我们可以从官方的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 Fri 2020-04-24 12:11:13 UTC; 3min 27s ago Main PID: 3665 (java) Tasks: 37 (limit: 65000) CGroup: /system.slice/jitsi-videobridge2.service └─3665 java -Xmx3072m -XX:+UseConcMarkSweepGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION=/etc/jitsi -Dnet.java.sip.communicator.SC_HO
提示:如果以上命令没有立即退出,则可以按Q键使其退出。
的 jitsi-meet
软件包还提取了其他软件包作为依赖项,例如
- openjdk-8-jre-headless: Java运行时环境。 这是必需的,因为Jitsi Meet是用Java语言编写的。
- 杰科夫:Jitsi Conference Focus(
systemctl status jicofo
) - 韵律:轻量级Jabber / XMPP服务器(
systemctl status prosody
) - turn:coturn TURN服务器
步骤2:在防火墙中打开端口
Jitsi Meet侦听几个UDP端口,如以下命令所示。 (如果您的Ubuntu服务器没有 netstat
命令,您可以运行 sudo apt install net-tools
命令来安装它。)
sudo netstat -lnptu | grep java
要允许与会者通过Web浏览器加入视频会议,您需要打开TCP端口80和443。并且要通过网络传输视频,请打开UDP端口10000和5000。如果您使用的是UFW防火墙,请运行以下命令命令打开这些端口。
sudo ufw allow 80,443/tcp sudo ufw allow 10000,5000/udp
第3步:获取可信的我们加密TLS证书
转到您的DNS托管服务(通常是您的域名注册商)为您的Jitsi主机名(meet.example.com)创建DNS A记录。 然后运行以下脚本来获取受信任的“加密TLS”证书:
sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
输入您的电子邮件地址以接收重要的帐户通知。 然后它将下载 certbot-auto
并获得TLS证书。
如果一切正常,您将看到以下消息,指示已成功获取并安装TLS证书。
请注意,此脚本使用 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,则需要替换nginx
与apache
。--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;
保存并关闭文件。 然后重新加载Nginx以使更改生效。
sudo systemctl reload nginx
步骤5:开始一个新的在线会议
现在访问 https://meet.example.com
您将可以开始会议。 要传输音频,您需要允许网络浏览器使用您的麦克风。 要传输视频,您需要允许网络浏览器访问您的相机。
为会议命名,然后单击“执行”按钮。 会议开始后,您可以选择为会议设置密码。
步骤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配置文件。
sudo nano /etc/jitsi/meet/meet.example.com-config.js
找到以下行,
// anonymousdomain: 'guest.example.com',
删除双斜杠并更改来宾域。 用您的真实Jitsi Meet主机名替换met.example.com。
anonymousdomain: 'guest.meet.example.com',
保存并关闭文件。
然后编辑Jicofo配置文件。
sudo nano /etc/jitsi/jicofo/sip-communicator.properties
在此文件的末尾添加以下行。
org.jitsi.jicofo.auth.URL=XMPP:meet.example.com
保存并关闭文件。 重新启动systemd服务,以使更改生效。
sudo systemctl restart jitsi-videobridge2 prosody jicofo
要在Jisi Meet中创建用户帐户,请运行以下命令。 系统会提示您输入新用户的密码。
sudo prosodyctl register username meet.example.com
现在,如果您在Jitsi Meet中创建房间,则需要输入用户名和密码。
可选:设置Jigasi进行电话拨入或拨出
Jitsi提供了一个电话界面,允许用户拨入会议或拨打拨出提醒电话。 安装 jigasi
包(用于SIP的Jitsi网关)。
sudo apt install jigasi
在安装过程中,您将需要输入您的SIP用户名和密码。 如果您没有,则可以在OnSIP.com上创建一个免费的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中创建的帐户和密码。
[email protected] org.jitsi.jigasi.xmpp.acc.PASS=user1_password org.jitsi.jigasi.xmpp.acc.ANONYMOUS_AUTH=false
保存并关闭文件。 重新启动 jigasi
系统服务。
sudo systemctl restart 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地址。 保存并关闭文件。 然后重新启动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 18.04上设置Jitsi Meet服务器。 与往常一样,如果您发现这篇文章很有用,请订阅我们的免费新闻通讯以获取新教程。 保重🙂