O autor selecionou a Open Internet/Free Speech Fund para receber uma doação como parte do programa Write for DOnations.
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ê irá instalar e configurar um servidor Jitsi Meet no Debian 10. A configuração padrão permite que qualquer um crie 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.
Antes de iniciar este guia, será necessário o seguinte:
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.
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
:
Outputjitsi.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:
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.
Ao seguir o guia Configuração inicial de servidor com o Debian 10, 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:
OutputStatus: 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.
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, instale o pacote gnupg
que habilita o sistema para gerenciar chaves criptográficas GPG:
- sudo apt install gnupg
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.
Agora, adicione a chave GPG que você baixou ao 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:
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.
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:
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.
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, instale o pacote certbot
com o seguinte comando:
- 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.
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.
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 /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:
...
authentication = "anonymous"
...
Para o seguinte:
...
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:
...
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:
...
// anonymousdomain: 'guest.example.com',
...
Para o seguinte:
...
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:
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 e Nginx para carregar a nova configuração:
- sudo systemctl restart prosody.service
- sudo systemctl restart jicofo.service
- sudo systemctl restart jitsi-videobridge2.service
- sudo systemctl restart nginx
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.
Agora, seu servidor Jitsi Meet está pronto e configurado com segurança.
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.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!