Jitsi

Jitsi é uma coleção de projetos de software livre que te permitem facilmente hospedar e utilizar programas de conferência de vídeo. É extremamente fácil de instalar, e é muito mais privado e livre do que alternativas como Zoom ou Google Meet. Você pode criar chamadas simplesmente ao digitar um link, pois fazer login não é necessário.

Dependências

Primeiro, vamos instalar as dependências. Entre em seu servidor e rode o seguinte comando:

apt install apt-transport-https curl gpg python3-certbot-nginx nginx

Jitsi tem seu próprio repositório, então vamos adicioná-lo.

curl https://download.jitsi.org/jitsi-key.gpg.key | gpg --dearmor > /usr/share/keyrings/jitsi-keyring.gpg
echo 'deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/' > /etc/apt/sources.list.d/jitsi-stable.list
apt update -y

Firewall

Caso você tenha ufw, ou algum outro firewall instalado, abra as seguintes portas:

ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 10000/udp
ufw enable

Certificado SSL

Vamos usar Certbot e Nginx para gerar um certificado para o subdomínio Jitsi para permitir conexões criptografadas. Substitua meet.exemplo.org para o subdomínio de sua escolha.

certbot certonly --nginx -d meet.exemplo.org

Instalação

Para instalar o Jitsi, rode o comando:

apt install jitsi-meet

O programa irá lhe pedir um endereço, digite o subdomínio escolhido acima, como meet.exemplo.org.

Depois, ele perguntará por um certificado SSL, escolha I want to use my own certificate. Em seguida ele irá te perguntar a localização da sua chave criptográfica e certificado. Escreva, respectivamente, /etc/letsencrypt/live/meet.exemplo.org/privkey.pem e /etc/letsencrypt/live/meet.exemplo.org/fullchain.pem, utilizando o subdomínio escolhido.

Para a próxima questão, basta dizer "No".

Utilização

Para utilizar o Jitsi, abra um navegador e acesse meet.exemplo.org. Digite um nome pra sua sala na caixa ao lado de "Start Meeting", ou simplesmente clique nesse mesmo botão para começar uma chamada. O endereço da chamada será meet.exemplo.org/nomedachamada, basta copiar o link da sua barra de endereço do navegador e enviar à outras pessoas para que elas possam entrar.

Jitsi também tem aplicativos para celulares. Caso escolha usar um aplicativo, não se esqueça de ir nas configurações e mudar o endereço do servidor para o endereço que você configurou, como meet.exemplo.org.

Segurança

Por padrão, qualquer um que souber seu endereço pode criar chamadas no seu servidor. Talvez você não queria isso, então você pode configurar uma autenticação. A forma mais simples é utilizando o banco de dados do Prosody, um programa que foi instalado junto com Jitsi.

Configuração Prodosy

Primeiro, precisamos habilitar autenticação por senha no Prosody. Edite /etc/prosody/conf.avail/meet.exemplo.org.cfg.lua com um editor de texto e localize esse bloco.

VirtualHost "meet.exemplo.org"
    authentication = "jitsi-anonymous"

E mude a opção authentication de jitsi-anonymous para internal_hashed.

Em seguida, para permitir que convidados e pessoas não autenticadas se juntem às chamadas existentes (mas sem ser capazes de criar novas chamadas), adicione o seguinte bloco após o bloco anterior. Para saber onde um bloco começa ou termina, olhe o começo das linhas. Se não houver identação, ou seja, espaço em branco antes da linha, ali está começando um bloco. Se houver sim identação, aquela linha define uma opção dentro de um bloco. No código acima, a linha Virtual Host define o começo de um bloco, pois não está identada, já a linha authentication define uma opção no bloco Virtual Host, pois está identada. O bloco acima já deve conter outras opções, então vá para baixo até que acabem suas opções e adicione esse novo bloco.

VirtualHost "guest.meet.exemplo.org"
    authentication = "anonymous"
    c2s_require_encryption = false

Salve e feche o arquivo. Ele deve ficar mais ou menos assim:

VirtualHost "meet.exemplo.org"
    authentication = "internal_hashed"
    outras opcoes
    ...
    ...
    ...
(uma linha em branco separanado os blocos)
VirtualHost "guest.meet.exemplo.org"
    authentication = "anonymous"
    c2s_require_encryption = false

Configuração Jitsi Meet

Depois disso, abra /etc/jitsi/meet/meet.exemplo.org-config.js e descomente (remova as "//" do começo) a seguinte linha:

var config = {
    hosts: {
        // anonymousdomain: 'guest.example.com',
    },
}

E mude 'guest.example.com' para 'guest.meet.exemplo.org' (seu subdomínio precedido por guest.).

Configuração Jicofo

Por último, iremos configurar Jicofo para apenas permitir a criação de chamadas por usuários autenticados. Para fazer isso, adicione a seção authentication { ... } no arquivo /etc/jitsi/jicofo/jicofo.conf:

jicofo {
  authentication: {
    enabled: true
    type: XMPP
    login-url: meet.exemplo.org
}

Criando usuários

Agora você deve criar usuários via Prosody. Você pode fazer isso manualmente usando o comando prosodyctl:

prosodyctl register usuario meet.exemplo.org senha

Por fim, reincie os programas prosody,jicofo e jitsi-videobridge2:

systemctl restart prosody
systemctl restart jicofo
systemctl restart jitsi-videobridge2

Agora, sempre que quiser inicar uma chamada, você receberá uma mensagem dizendo que está esperando pelo host. Clique "I am the host" e insira o usuário e senha criados acima. Agora apenas pessoas autenticadas podem criar chamadas, porém até mesmo quem não está autenticado pode se juntar a elas.

Aproveite suas chamadas em completa liberdade!