Tutorial

Como Instalar o Jitsi Meet no Ubuntu 18.04

Ubuntu 18.04

O autor selecionou a Open Internet/Free Speech Fund para receber uma doação como parte do programa Write for DOnations.

Introdução

O Jitsi Meet é um aplicativo de videoconferência de código aberto baseado no WebRTC. Um servidor Jitsi Meet fornece salas de videoconferência multi-pessoas que você pode acessar utilizando nada mais do o seu navegador e fornece funcionalidades comparáveis a uma chamada de conferência do Zoom ou do Skype. O benefício de uma conferência Jitsi é que todos os seus dados passam apenas pelo seu servidor e a criptografia TLS fim-a-fim garante que ninguém possa espionar a chamada. Com o Jitsi, você pode garantir que suas informações privadas permaneçam desta maneira.

Neste tutorial, você instalará e configurará um servidor Jitsi Meet no Ubuntu 18.04. A configuração padrão permite que todos criem uma nova sala de conferências. Isso não é o ideal para um servidor que está disponível publicamente na Internet. Assim, você também configurará o Jitsi Meet para que apenas usuários registrados possam criar novas salas de conferências. Após criar a sala de conferências, qualquer usuário pode se juntar, contanto que eles tenham o endereço único e a senha opcionais.

Pré-requisitos

Antes de iniciar este guia, será necessário o seguinte:

  • Um servidor Ubuntu 18.04 configurado seguindo a Configuração Inicial de Servidor com o Ubuntu 18.04, incluindo um usuário não root habilitado com sudo. O tamanho do servidor que você precisará depende na maioria dos casos da largura de banda disponível e do número de participantes que você espera estar usando o servidor. A tabela a seguir lhe dará alguma ideia do que é necessário.
  • Um nome de domínio configurado para apontar para o seu servidor. Você pode aprender como apontar domínios para os Droplets da DigitalOcean, seguindo o tutorial Como configurar um nome de host com a DigitalOcean. Ao longo deste guia, é utilizado o nome de domínio de exemplo jitsi.your-domain.

Quando você está escolhendo um servidor para executar sua instância Jitsi Meet, você precisará considerar os recursos de sistema necessários para hospedar salas de conferências. As seguintes informações de benchmark foram coletadas de uma máquina virtual de um núcleo usando configurações de vídeo de alta qualidade:

CPU Largura de banda de Servidor
Dois Participantes 3% 30Kbps de Upload, 100 Kbps de Download
Três Participantes 15% 7 Mbps de Upload, 6.5 Mbps de Download

O salto no uso de recursos entre dois e três participantes é porque o Jitsi irá encaminhar os dados da chamada diretamente entre os clientes quando houver dois deles. Quando mais de dois clientes estão presentes, os dados de chamada são encaminhados através do servidor Jitsi Meet.

Passo 1 — Configurando o Hostname do Sistema

Neste passo, você alterará o hostname do sistema para corresponder ao nome de domínio que você deseja usar para sua instância Jitsi Meet e resolverá esse hostname IP do localhost, 127.0.0.1. O Jitsi Meet utiliza ambas as configurações quando ele instala e gera seus arquivos de configuração.

Primeiro, defina o hostname do sistema para o nome de domínio que você usará para sua instância Jitsi. O comando a seguir definirá o hostname atual e modificará o /etc/hostname que mantém o hostname do sistema entre os reboots:

  • sudo hostnamectl set-hostname jitsi.your-domain

O comando que você executou é dividido da seguinte forma:

  • hostnamectl é um utilitário do conjunto de ferramentas systemd para gerenciar o hostname do sistema.
  • set-hostname define o hostname do sistema.

Verifique se isso foi bem-sucedido executando o seguinte:

  • hostname

Isso retornará o hostname que você configurar com o comando hostnamectl:

Output
jitsi.your-domain

Em seguida, você definirá um mapeamento local do hostname do servidor para o endereço IP de loopback, 127.0.0.1. Faça isso abrindo o arquivo /etc/hosts com um editor de texto:

  • sudo nano /etc/hosts

A seguir, adicione a seguinte linha:

/etc/hosts
127.0.0.1 jitsi.your-domain

Mapear o nome de domínio do seu servidor Jitsi Meet para 127.0.0.1 permite que seu servidor Jitsi Meet utilize vários processos de rede que aceitam conexões locais entre si no endereço IP 127.0.0.1. Essas conexões são autenticadas e criptografadas com um certificado TLS, que está registrado para seu nome de domínio. Mapear localmente o nome de domínio para 127.0.0.1 torna possível usar o certificado TLS para essas conexões locais de rede.

Salve e saia do seu arquivo.

Agora, seu servidor tem o hostname que o Jitsi exige para ser instalado. No próximo passo, você abrirá as portas do firewall que são necessárias pelo Jitsi e pelo instalador de certificados TLS.

Passo 2 — Configurando o Firewall

Ao seguir o guia Configuração Inicial de Servidor com o Ubuntu 18.04, você habilitou o firewall UFW e abriu a porta SSH. O servidor Jitsi precisa de algumas portas abertas para que ele possa se comunicar com os clientes de chamada. Além disso, o processo de instalação do TLS precisa ter uma porta aberta para poder autenticar a solicitação do certificado.

As portas que você abrirá são as seguintes:

  • 80/tcp utilizada na solicitação do certificado TLS.
  • 443/tcp utilizada para a página web de criação da sala de conferências.
  • 4443/tcp,10000/udp utilizadas para transmitir e receber o tráfego de chamadas criptografado.

Execute os comandos ufw a seguir para abrir essas portas:

  • sudo ufw allow 80/tcp
  • sudo ufw allow 443/tcp
  • sudo ufw allow 4443/tcp
  • sudo ufw allow 10000/udp

Verifique se elas foram adicionadas com o comando ufw status:

  • sudo ufw status

Você verá o seguinte resultado se essas portas estiverem abertas:

Output
Status: 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)

Agora, o servidor está pronto para a instalação do Jitsi, que você terminará no próximo passo.

Passo 3 — Instalando o Jitsi Meet

Neste passo, você adicionará o repositório stable do Jitsi ao seu servidor e, depois disso, instalará o pacote Jitsi Meet a partir desse repositório. Isso garantirá que você esteja executando sempre o último pacote estável do Jitsi Meet.

Primeiro, baixe a chave GPG do Jitsi com o utilitário de download wget:

  • wget https://download.jitsi.org/jitsi-key.gpg.key

O gerenciador de pacotes apt utilizará essa chave GPG para validar os pacotes que você irá baixar do repositório Jitsi.

A seguir, adicione a chave GPG que você baixou para seu gestor de chaves do apt usando o utilitário apt-key:

  • sudo apt-key add jitsi-key.gpg.key

Agora, você pode excluir o arquivo de chaves GPG, pois ele já não é necessário:

  • rm jitsi-key.gpg.key

Agora, você adicionará o repositório do Jitsi ao seu servidor criando um novo arquivo-fonte que contém o repositório Jitsi. Abra e crie o novo arquivo com seu editor:

  • sudo nano /etc/apt/sources.list.d/jitsi-stable.list

Adicione essa linha ao arquivo para o repositório Jitsi:

/etc/apt/sources.list.d/jitsi-stable.list
deb https://download.jitsi.org stable/

Salve e saia do seu editor.

Por fim, execute uma atualização do sistema para coletar a lista de pacotes do repositório Jitsi e, depois, instale o pacote jitsi-meet:

  • sudo apt update
  • sudo apt install jitsi-meet

Durante a instalação do jitsi-meet, você será solicitado a digitar o nome de domínio (por exemplo, jitsi.your-domain) que você deseja usar para sua instância Jitsi Meet.

Imagem mostrando o diálogo de hostname da instalação do jitsi-meet

Nota: mova o cursor do campo hostname para destacar o <OK> o botão OK com a tecla TAB. Pressione ENTER quando <OK> o OK estiver destacado para submeter o hostname.

Em seguida, será mostrada uma nova caixa de diálogo que lhe pergunta se você deseja que o Jitsi crie e utilize um certificado TLS autoassinado ou use um certificado existente que você já tenha:

Image showing the jitsi-meet installation hostname dialog

Se não tiver um certificado TLS para seu domínio Jitsi, selecione a primeira opção Generate a new self-signed certificate.

Agora, sua instância Jitsi Meet está instalada usando um certificado TLS autoassinado. Isso causará avisos do navegador. Assim, você irá obter um certificado TLS assinado no próximo passo.

Passo 4 — Obtendo um Certificado TLS Assinado

O Jitsi Meet utiliza certificados TLS para criptografar o tráfego de chamadas para que ninguém possa escutar sua chamada enquanto ele viaja pela Internet. Os certificados TLS são os mesmos certificados que são usados pelos sites para habilitar URLs com HTTPS.

O Jitsi Meet fornece um programa para baixar automaticamente um certificado TLS para seu nome de domínio que utiliza o utilitário Certbot. Você precisará instalar esse programa antes de executar o script de instalação de certificados.

Primeiro, adicione o repositório do Certbot ao seu sistema para garantir que você tenha a versão mais recente do Certbot. Execute o comando seguinte para adicionar o novo repositório e atualize seu sistema:

  • sudo add-apt-repository ppa:certbot/certbot

Em seguida, instale o pacote certbot:

  • sudo apt install certbot

Agora, seu servidor está pronto para executar o programa de instalação de certificados TLS fornecido pelo Jitsi Meet:

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

Ao executar o script, você verá o seguinte prompt para um endereço de e-mail:

Output
------------------------------------------------------------------------- This script will: - Need a working DNS record pointing to this machine(for domain jitsi.example.com) - 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]:

Este endereço de e-mail será submetido ao emissor do certificado https://letsencrypt.org e será usado para notificar você sobre segurança e outras questões relacionadas com o certificado TLS. Você deve digitar um endereço de e-mail aqui para continuar com a instalação. A instalação será concluída sem mais avisos.

Quando ele terminar, sua instância Jitsi Meet estará configurada para usar um certificado TLS assinado para seu nome de domínio. As renovações de certificado também ocorrerão automaticamente, pois o instalador colocou um script de renovação em /etc/cron.weekly/letsencrypt-renew que será executado toda semana.

O instalador TLS usou a porta 80 para verificar se você tinha o controle de seu nome de domínio. Agora que você obteve o certificado , seu servidor já não precisa mais ter a porta 80 aberta, pois a porta 80 é utilizada para o tráfego HTTP regular não criptografado. O Jitsi Meet serve seu site apenas através de HTTPS na porta 443.

Feche esta porta em seu firewall com o seguinte comando ufw:

  • sudo ufw delete allow 80/tcp

Agora, seu servidor Jitsi Meet está funcionando e está disponível para testes. Abra um navegador e o aponte para seu nome de domínio. Você será capaz de criar uma nova sala de conferências e convidar outros para se juntar a você.

A configuração padrão para o Jitsi Meet é que qualquer pessoa que esteja visitando a página inicial do seu servidor Jitsi Meet pode criar uma nova sala de conferências. Isto irá utilizar os recursos de sistema do seu servidor para executar a sala de conferências e não é desejável para usuários não autorizados. No próximo passo, você configurará sua instância Jitsi Meet para permitir apenas usuários registrados criar salas de conferências.

Passo 5 — Bloqueando a Criação de Conferências

Neste passo, você configurará sua instância Jitsi Meet para permitir apenas que usuários registrados criem salas de conferências. Os arquivos que você editará foram gerados pelo instalador e estão configurados com seu nome de domínio.

A variável your_domain será usada no lugar de um nome de domínio nos exemplos seguintes.

Primeiro, abra o arquivo /etc/prosody/conf.avail/your_domain.cfg.lua com um editor de texto:

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

Edite esta linha:

/etc/prosody/conf.avail/your_domain.cfg.lua
...
        authentication = "anonymous"
...

Para o seguinte:

/etc/prosody/conf.avail/your_domain.cfg.lua
...
        authentication = "internal_plain"
...

Esta configuração informa ao Jitsi Meet para forçar autenticação de usuário e senha antes de permitir a criação de sala de conferências por um novo visitante.

Depois disso, no mesmo arquivo, adicione a seguinte seção ao final do arquivo:

/etc/prosody/conf.avail/your_domain.cfg.lua
...
VirtualHost "guest.your_domain"
    authentication = "anonymous"
    c2s_require_encryption = false

Esta configuração permite que usuários anônimos se juntem às salas de conferências que foram criadas por um usuário autenticado. No entanto, o convidado deve ter um endereço único e uma senha opcional para a sala para acessá-la.

Aqui, você adicionou guest à frente de seu nome de domínio. Por exemplo, para jitsi.your-domain, você colocaria guest.jitsi.your-domain O hostname guest é usado apenas internamente pelo Jitsi Meet. Você nunca o digitará em um navegador ou precisará criar um registro DNS para ele.

Abra outro arquivo de configuração em /etc/jitsi/meet/your_domain-config.js com um editor de texto

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

Edite esta linha:

/etc/jitsi/meet/your_domain-config.js
...
        // anonymousdomain: 'guest.example.com',
...

Para o seguinte:

/etc/jitsi/meet/your_domain-config.js
...
        anonymousdomain: 'guest.your_domain',
...

Novamente, usando o hostname guest.your_domain que você usou antes, esta configuração informa ao Jitsi Meet qual hostname interno usar para os convidados não autenticados.

Em seguida, abra /etc/jitsi/jicofo/sip-communicator.properties:

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

E adicione a seguinte linha para completar as alterações de configuração:

/etc/jitsi/jicofo/sip-communicator.properties
org.jitsi.jicofo.auth.URL=XMPP:your_domain

Esta configuração aponta um dos processos do Jitsi Meet para o servidor local que executa a autenticação do usuário que agora é necessária.

Agora, sua instância Jitsi Meet está configurada para que apenas usuários registrados possam criar salas de conferências. Após criar uma sala de conferências, qualquer um pode se juntar a ela sem precisar ser um usuário registrado. Tudo o que eles precisarão é do endereço único da sala de conferências e de uma senha opcional definida pelo criador da sala.

Agora que o Jitsi Meet está configurado para exigir usuários autenticados para a criação de salas você precisa registrar esses usuários e suas senhas. Você utilizará o utilitário prosodyctl para fazer isso.

Execute o seguinte comando para adicionar um usuário ao seu servidor:

  • sudo prosodyctl register user your_domain password

O usuário que você adiciona aqui não é um usuário de sistema. Eles apenas poderão criar uma sala de conferências e não poderão fazer login em seu servidor através do SSH.

Por fim, reinicie os processos do Jitsi Meet para carregar a nova configuração:

  • sudo systemctl restart prosody.service
  • sudo systemctl restart jicofo.service
  • sudo systemctl restart jitsi-videobridge2.service

A instância Jitsi Meet agora irá solicitar um nome de usuário e senha com uma caixa de diálogo quando uma sala de conferências for criada.

Image showing the Jitsi username and password box

Agora, seu servidor Jitsi Meet está pronto e configurado com segurança.

Conclusão

Neste artigo, você implantou um servidor Jitsi Meet que você pode usar para hospedar salas de conferências de vídeo seguras e privadas. Você pode estender sua instância Jitsi Meet com instruções da Jitsi Meet Wiki.

0 Comments

Creative Commons License