Join 100,766 users already on read.cash

[PT] iConversa: Tutorial servidor de videoconferências Jitsi

2 41
Avatar for fernandotona
Written by   46
10 months ago (Last updated: 9 months ago)

iConversa | 28 de janeiro de 2022 | Fernando Tona

Sponsors of fernandotona
empty
empty

De há uns anos para cá, graças a um amigo muito especial, tenho-me apaixonado cada vez mais pela filosofia do Software Livre e de Código aberto, em inglês Free and Open Source Software (FOSS). Sou um entusiasta na área de TI, informática e por aí em diante. A minha profissão é a de músico e professor de música mas um dos meus hobbies é o de "mexericar" em computadores. É muito giro observar quando acontece o inverso na sociedade, que é ser-se profissional de TI, programação, informática, etcétera... e como hobby, apreciar artes, tocar um instrumento musical e por aí em diante.

Esta pandemia, por me ter levado a um maior enclausuramento em casa, levou-me a explorar aspetos que outrora achara "coisa de nerds". Devido a ter participado em muitíssimas videoconferências deparei-me com o projeto Jitsi, que é um sistema de comunicações equivalente ao Zoom ou ao Microsoft Teams mas Livre, de código aberto e totalmente gratuito. É possível usar diretamente os servidores deles de forma gratuita também. A questão é que, devido a processarem videochamadas do mundo inteiro e ser uma pequena empresa, estas chamadas acabam por não ter muita qualidade normalmente. A mesma situação se aplica quando usando servidores públicos espalhados pelo mundo. Há, contudo, uma opção fantástica, que é a opção de montar um servidor Jitsi autoalojado em casa, privado, que é o que te vou ensinar com este tutorial. Quando autoalojado, aí sim, com boas condições de hardware e boa conexão de internet, a qualidade é bem acima das outras opções gratuitas disponíveis. Obviamente que, para soluções empresariais mais complexas e completas, existe o serviço "Pro" deles, que é pago mas ainda assim de código aberto, tanto quanto sei.

Para este tutorial, tendo em conta os meus humildes e empíricos conhecimentos e o meu método de montagem, iremos precisar de:

  • Boa conexão de internet por cabo ligado direto ao router ("Ethernet").

  • Um computador dedicado para o efeito. Pode ser um velho parado em casa, desde que cumpra com os requisitos técnicos mínimos de instalação recomendados pela equipa desenvolvedora e pela comunidade de utilizadores. No meu caso, estou a usar uma velhinha Workstation Dell Precision 490 com alguns upgrades, como por exemplo disco SSD. É necessário ter em conta que, da forma como eu mostro neste tutorial, é necessário limpar o disco do computador. Logo, iremos desinstalar o sistema operativo que lá estiver. É possível, contudo, manter o sistema operativo original e usar o disco de forma dividida. Esse método de utilização de computadores é conhecido por "Dual Boot" ou "Multi-Boot".

  • Pen USB de pelo menos 500 MB de capacidade.

  • Força de vontade e não ter medo de estragar nada! xD

Comecemos!

  1. Descarregar o sistema operativo que irá alojar o nosso servidor Jitsi, através de uma Pendrive USB bootável: GNU/Linux Debian 11 "Bullseye".

  • Descarregar o programa que iremos utilizar para gravar a imagem do sistema operativo (ficheiro .iso) na Pen. Para isto existem inúmeras opções de programas. Quem usa Windows no seu computador principal pode usar o famoso Rufus ou para qualquer distribuição Linux, MacOS, pode usar por exemplo o Balena Etcher. Repito, existem inúmeras outras opções.

  • Introduzir a Pen na porta USB do computador e gravar a imagem ".iso" na pen bootável:

  • Introduzir a pendrive no computador onde iremos instalar o sistema operativo, ligar e aceder à BIOS/UEFI. Se não souberes como aceder à BIOS/UEFI do computador, carrega em todas as teclas F (F1, F2, etcétera) como se não houvesse amanhã! Bom, as pessoas normais (não o meu caso, risos) lêem as opções que aparecem no ecrã mal se liga o PC. Isto varia muito de computador para computador (por exemplo, o meu portátil Lenovo entra na BIOS/UEFI com a tecla ENTER). Já dentro da BIOS/UEFI procura pela opção "Boot sequence" ou algo parecido e escolhe a Pendrive que introduziste com a imagem ".iso" como 1ª opção de arranque (boot). Salva as definições que modificaste e sai. A partir daqui o teu computador irá arrancar a partir da PenDrive que introduziu e começaremos o processo de instalação do sistema operativo caso não chova dentro de casa!

  1. Processo de instalação do sistema operativo Debian 11:

Ligar o computador-servidor por cabo Ethernet. À medida que formos configurando os detalhes o sistema irá descarregando os pacotes necessários dos repositórios do Debian. Deixo em imagens.

Escolher instalação em modo gráfico
Eu escolhi inglês mas podes escolher português
Deixar em branco!
Escolher o disco no qual se quer instalar o sistema operativo. Não escolher a própria Pen, obviamente!

Como os servidores normalmente são geridos via linhas de comando não vale a pena instalar nenhum ambiente gráfico e gastar recursos, ainda mais se o computador não for muito poderoso. Desmarcar todas as opções à exceção de "SSH server" e "standard system utilities". O SSH (Secure Shell) é um protocolo que iremos utilizar para comunicar com o servidor por linhas de comando desde outro computador (ou telemóvel) dentro da nossa rede de internet doméstica sem precisar de ter sempre o computador servidor ligado a um ecrã.

Novamente, escolher o disco do computador e não a Pendrive.

Após concluir esta instalação, o sistema irá pedir para retirar o meio de instalação (a Pen). Faltou-me tirar foto a alguns momentos do processo. O mais importante que me faltou tirar fotos é o momento em que nos é pedido para configurar conta root ou admin, utilizador, password, etcétera. Configura isso pois será necessário mais à frente. Feito!

Caso após reiniciar o computador-servidor o nosso Debian 11 não arrancar, verifica se o disco do computador está selecionado na BIOS/UEFI como primeira opção na "Boot sequence". Sempre que encontrares desafios que não consigas ultrapassar à primeira lê bem o que o computador te diz, reza ou procura ajuda no Doctor Google! Eu, felizmente, tenho o privilégio de poder pedir ajuda a um amigo próximo quando não consigo mesmo resolver sozinho ou quando tenho preguiça de pesquisar por minha conta! :o

  1. Primeiros ajustes após a instalação do sistema operativo e antes da instalação e configuração do servidor Jitsi:

Eu prefiro, a partir daqui, fazer tudo via SSH através de um terminal de linha de comandos noutro computador ou até através de um terminal para telemóvel. No Windows, na lupa poderá escrever "cmd" e irá aparecer o programa de terminal de linha de comandos. Para quem usa Linux, à partida já deve saber como se abre o terminal de linha de comandos através de atalhos do teclado ou através da pesquisa da palavra "Terminal" na grelha de apps. Para Android, recomendo a aplicação Termux. Para iOS e MacOS devem existir alternativas também, mas, como não uso estes sistemas operativos, desconheço.

a) Abrir terminal e aceder ao servidor via SSH:

No caso do Windows, o terminal já vem com o pacote SSH pré-instalado. No caso do GNU/Linux, ou no Termux do Android, será preciso instalar o pacote SSH ou OpenSSH. Para quem usa alguma distribuição Linux baseada em Debian ou Ubuntu Linux recomendo escrever

apt-cache search ssh

Isso irá listar os pacotes relacionados ao protocolo SSH indexados nos repositórios da sua distribuição. Penso que é só SSH ou OpenSSH. Experimente e instale!

Escrever (sem parenteses): ssh (nome de usuário criado)@(nome dado ao computador-servidor)

Por exemplo, NO MEU CASO:

ssh fernando@debian

Irá pedir palavra-passe. Introduz. Apesar de parecer que o sistema não está a assumir nada do que estás a escrever, está sim! Simplesmente não aparece à tua frente por motivos de segurança. Depois de escrever a tua palavra-passe pressiona a tecla ENTER.

b) Instalar os pacotes sudo, ufw, nginx-full, gnupg2, curl, wget, openjdk-11-jdk-headless, apt-transport-https:

Entrar em modo root/admin escrevendo:

su

Depois de inserir a palavra passe, vamos instalar os pacotes necessários:

apt install sudo ufw nginx-full gnupg2 curl wget openjdk-11-jdk-headless apt-transport-https certbot -y

c) Adicionar utilizador ao grupo dos "sudoers" (Superusers ou "administradores do sistema"):

Para isto é necessário o seguinte comando usermod -aG sudo (nome de usuário).

NO MEU CASO:

usermod -aG sudo fernando

Depois, reiniciar o sistema:

reboot

d) Verificar se o servidor web nginx já está a funcionar:

Aceder novamente ao servidor via SSH como ensinado acima. Para descobrir o ip local do servidor escreva a seguinte linha de comando e tecla ENTER:

ip route

A última parte do texto de output que nos irá aparecer corresponderá ao IP local do nosso servidor. No meu caso, o IP local do meu servidor é o 192.168.1.100.

Abre o teu navegador de internet e pesquisa por esse IP para verificar se o servidor web NGINX já está a funcionar e se está acessível localmente. Deverás encontrar a mensagem "Welcome to nginx!". Se não encontrares é porque não está a funcionar adequadamente. Para o caso de o servidor não estar no ar, deixo um link que poderás consultar com alguns comandos básicos úteis que poderão ajudar-te.

Atualiza os repositórios do sistema para ver se existem atualizações para os pacotes instalados:

sudo apt update

Caso haja atualizações disponíveis, recomendo que atualizes:

sudo apt full-upgrade -y

e) Configurar a Firewall do servidor (UFW) por motivos de segurança:

Teremos de abrir algumas portas para os processos que iremos precisar de utilizar. Copia e cola:

sudo ufw app list
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 10000/udp
sudo ufw enable

Numa nova instalação que fiz posterior a esta publicação apercebi-me que o Jitsi consegue funcionar abrindo apenas as portas acima, apesar de no tutorial oficial da equipa de desenvolvimento do Jitsi darem instruções para abrir também as portas 3478/udp e 5349/tcp.

No fim, verificar se as regras da firewall do servidor foram todas bem configuradas com:

sudo ufw status

f) (Opcional) Instalar Timeshift e criar ponto de restauro.

O Timeshift é um programa que serve para criar e gerir pontos de restauro do sistema Linux.

sudo apt install timeshift

Criar ponto de restauro: sudo timeshift --create --comments "(o nome que quiser dar ao ponto de restauro)" --tags D.

No meu caso, criei assim

sudo timeshift --create --comments "Debian Server before Jitsi and Certbot" --tags D

Verifica se o ponto de restauro foi devidamente criado:

sudo timeshift --restore

Depois de aparecer listado o teu ponto de restauro, aborta a operação escolhendo "a" e teclando ENTER.

  1. Configurar serviço gratuito de DNS (Domain Name System) dinâmico no noip.com:

Isto será necessário para criar um domínio por "nome" que vá direcionar o tráfego para o seu servidor quando invocado. Doutra forma teria de ser tudo por números longos, difíceis de memorizar. Além disso, o teu provedor de serviço de internet vai mudando o IP público do teu router de vez em quando. Este serviço consegue ir rastreando e atualizando automaticamente o teu IP nas configurações sempre que ele for modificado para que não precises de estar constantemente a reconfigurar tudo manualmente.

Depois de criar conta gratuita é muito fácil configurar um nome para o teu servidor Jitsi. Basta fazer login, adicionar um nome como se fosse um website (e acaba por ser isso, na verdade) e escolher uma extensão de entre as que estão disponíveis gratuitamente. É fácil seguir os passos, até porque o serviço deteta automaticamente o teu IP público.

Eu, por motivos de segurança, não revelo o hostname que escolhi para o meu servidor Jitsi.

  1. Configurar a Firewall do router:

Para configurar a Firewall do teu router de forma a permitir o tráfego necessário para o planeta inteiro poder aceder ao teu servidor Jitsi (mas "só") deverás iniciar sessão no mesmo através do teu navegador de internet. Para isso, introduz o IP local do teu router, normalmente escrito no próprio aparelho. Como alternativa, para descobrir o IP do teu router, podes escrever desde o teu PC Linux o comando que já foi mencionado acima "ip route". O primeiro endereço que aparecer no resultado é o endereço IP local do teu router. No meu caso, o endereço do meu router MEO é o 192.168.1.254. O meu login é "meo", tanto para nome de utilizador como para a palavra passe (à data de publicação deste artigo já mudei de operadora, por isso não me importo de revelar! :p). Os teus dados de login podem ser diferentes. Se não souberes verifica se não está tudo escrito fisicamente no exterior do aparelho router. Se não estiver, contacta a tua operadora e pergunta.

a) Ativar serviço de DNS dinâmico para sincronizar com a conta que criamos no noip.com.

b) Atribuir um IP local fixo para o servidor.

Os routers, normalmente, de tempos em tempos mudam o IP dos aparelhos na nossa rede interna por motivos de segurança. Este passo acaba por ser opcional mas recomendável, na minha opinião, para depois não se ter de reconfigurar o reencaminhamento de portas sempre que o IP mudar automaticamente.

Vai até à área dos "dispositivos" ligados localmente, copia e guarda aparte os endereços MAC e IPv4 da máquina que alojará o servidor Jitsi.

Depois, vai até "Criar lease estática" e configura com os dados que copiaste. Lembra-te que alguns nomes de processos podem mudar conforme o router da tua operadora de telecomunicações.

c) Configurar encaminhamento de portas:

Configura as mesmas portas que configuraste no UFW (80/TCP, 443/TCP e 10000/UDP). Na imagem abaixo tenho mais portas configuradas para outras funcionalidades que experimentei. Para o jitsi só precisas de abrir as portas supramencionadas.

  1. Instalar e configurar Servidor Jitsi:

Agora que está tudo pronto, procede à instalação do Jitsi digitando a seguinte linha de comandos no teu servidor (acedendo-lhe via SSH):

sudo apt install jitsi-meet

O sistema irá instalar uma série de pacotes e irá fazer-te várias perguntas simples ao longo do processo de configuração.

Quando te perguntar sobre o certificado SSL o mais simples e prático é escolher a primeira opção "Generate a new self-signed certificate".

Depois da instalação do Jitsi, insere a seguinte linha de comandos:

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

Este script irá ajudar-te a obter um certificado SSL gratuito através do serviço Let's Encrypt. É necessário que a nossa instalação Jitsi tenha este certificado SSL para que os telemóveis consigam usar o serviço através da app, seja para Android, seja para iOS. Também, se não tivermos um certificado SSL, nos nossos computadores irá aparecer a mensagem "Ligação não segura".

  1. Verificar se está tudo a funcionar:

Tudo deverá estar corretamente configurado. Para testar, acede ao teu "website" Jitsi através do navegador de internet e cria uma videoconferência. Após teres a videoconferência a funcionar partilha o link contigo próprio e acede a esse link através do telemóvel usando dados móveis (instala a app para telemóvel). Desta forma conseguirás testar se as pessoas fora da rede local da tua casa conseguem realmente aceder ao teu servidor Jitsi.

Se consegues ver-te e ouvir-te em ambos dispositivos é sinal de que o teu serviço Jitsi autoalojado está a funcionar na perfeição. Parabéns!

Aconselho-te a voltar a criar um novo ponto de restauro aqui com o Timeshift.

  1. Resolução de problemas.

    Os dois principais problemas que já encontrei foi com os certificados SSL e o estarem várias pessoas na reunião mas não se conseguirem ver.

Para o primeiro caso podes reconfigurar o certificado SSL usando o programa Certbot. Para isso experimenta a seguinte linha de comando:

sudo certbot --nginx

Provavelmente terás de instalar um plugin para conseguir fazer isto de maneira expedita. Procura pelo plugin nos repositórios:

apt-cache search certbot

Instala a opção do plugin para nginx.

Se tiveres o segundo problema, reconfigura parcialmente o Jitsi correndo:

sudo dpkg-reconfigure jitsi-videobridge2

Se mesmo assim não conseguires resolver, faz reboot à máquina, desliga as duas firewalls (mas apenas por breves momentos pois isto é perigoso para a tua segurança de dados e privacidade!)... experimenta!

Espero que tenhas gostado deste tutorial de novato e entusiasta para novato e entusiasta. Se gostaste, deixa o teu comentário e partilha. Se és especialista na matéria, dá-me o teu feedback. Estou disposto a aprender, isso implica partilhar o que se sabe, errar e permitir-se ser corrigido :)

iConversa | 28 de janeiro de 2022 | Fernando Tona

Músico, professor de música e malandro nos tempos livres.

2
$ 0.00
Sponsors of fernandotona
empty
empty
Avatar for fernandotona
Written by   46
10 months ago (Last updated: 9 months ago)
Enjoyed this article?  Earn Bitcoin Cash by sharing it! Explain
...and you will also help the author collect more tips.

Comments

Wow. So this took a long time to read through (translated it using an open-source translator) in English. As a privacy-minded individual, Jitsi is right up my corner as a FOSS alternative to centralized gate-kept platforms like Zoom, Skype, FaceTime or others, and everyone can use it for free!

$ 0.00
9 months ago

Indeed. Thanks for your feedback!

$ 0.00
9 months ago