Aprenda instalar o Jitsi Meet, uma ferramenta de videoconferências de código aberto
Que tal ter o seu próprio “Zoom ou Google Meet”? Neste tutorial vamos aprender instalar o Jitsi Meet de forma simples para você poder criar seu próprio servidor de videoconferências.
Jitsi é uma coleção de projetos de código aberto que fornecem recursos de videoconferência de última geração que são seguros, fáceis de usar e fáceis de hospedar.
Requerimentos
Debian 11 (Bullseye) 64 bits instalação mínima pronta
Configurado em seu DNS autoritativo um subdomínio exemplo “meet.remontti.com.br” apontado para o IPv4/6 do seu servidor.
Ajustes
Tenha seu servidor atualizado! (E repita isso uma vez por mês após)
1 |
# apt update; apt upgrade |
Nesta instalação estarei utilizando como exemplo “meet.remontti.com.br”, ajuste sempre pelo seu.
Ajuste o nome do servidor:
1 |
hostnamectl set-hostname meet.remontti.com.br |
1 |
vim /etc/hosts |
Adicione o IP Domínio de acordo com seu DNS, exemplo:
1 |
255.200.200.200 meet.remontti.com.br |
Caso esteja utilizando um IP com NAT terá que ter as portas 80/tcp 443/tcp 4443/tcp 10000/udp 3478/udp 5349/tcp abertas/redirecionadas para o IP do seu servidor.
Instale alguns pacotes básicos que serão necessários:
1 |
# apt install apt-transport-https gnupg2 curl wget |
Instalando Jitsi
Vamos adicionar o repositório oficial do jitsi (stable)
1 2 |
# echo 'deb https://download.jitsi.org stable/' > /etc/apt/sources.list.d/jitsi-stable.list # wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add - |
Instale o mesmo
1 2 |
# apt update # apt install jitsi-meet |
Informe seu domíno:
Selecione Generate a net self-signed certificate
Agora instale o certbot para gerar os certificados com lets encript.
1 |
# apt install certbot |
Gere um certificado Let’s Encrypt, basta executar:
1 |
/usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
------------------------------------------------------------------------- This script will: - Need a working DNS record pointing to this machine(for domain meet.remontti.com.br) - 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]: noc@remontti.com.br Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator webroot, Installer None Account registered. Requesting a certificate for meet.remontti.com.br Performing the following challenges: http-01 challenge for meet.remontti.com.br Using the webroot path /usr/share/jitsi-meet for all unmatched domains. Waiting for verification... Cleaning up challenges Running deploy-hook command: /etc/letsencrypt/renewal-hooks/deploy/0000-coturn-certbot-deploy.sh Output from deploy-hook command 0000-coturn-certbot-deploy.sh: Configuring turnserver IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/meet.remontti.com.br/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/meet.remontti.com.br/privkey.pem Your certificate will expire on 2022-06-22. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le Configuring nginx |
Crie um scrip para renovação do certificado
1 2 |
# mkdir /root/scripts/ # vim /root/scripts/renova-certificado |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#!/bin/bash # Pare o serviço web /usr/bin/systemctl stop nginx # Aguarda 10 seg sleep 10 # Renova o certificado /usr/bin/certbot renew -q # Aguarda o certificado renovar sleep 30 # Inicie o serviço web /usr/bin/systemctl restart nginx # Reinicie os serviços /usr/bin/systemctl systemctl restart prosody jicofo jitsi-videobridge2 |
Adicione ao cron para ser executado umas vez por semana toda às 3h.
1 2 |
# chmod +x /root/scripts/renova-certificado # echo '00 30 1 * * root /root/scripts/renova-certificado' >> /etc/crontab |
Reinicie o cron para ler a nova tarefa.
1 |
# systemctl restart cron |
Systemd/Limits: As implantações padrão em sistemas que usam systemd terão valores padrão baixos para processos máximos e arquivos abertos. Se a ponte usada espera um número maior de participantes, os valores padrão precisam ser ajustados (os valores padrão são bons para menos de 100 participantes).
Se achar necessário aumente estes valores:
1 2 3 |
# echo 'DefaultLimitNOFILE=65000' >> /etc/systemd/system.conf # echo 'DefaultLimitNPROC=65000' >> /etc/systemd/system.conf # echo 'DefaultTasksMax=65000' >> /etc/systemd/system.conf |
Reinicie o daemon
1 |
# systemctl daemon-reload |
Verifique se os valores foram alterados
1 2 3 |
# systemctl show --property DefaultLimitNPROC # systemctl show --property DefaultLimitNOFILE # systemctl show --property DefaultTasksMax |
Reinicie o jitsi
1 |
# systemctl status jitsi-videobridge2 |
1 |
# cat /proc/`cat /var/run/jitsi-videobridge/jitsi-videobridge.pid`/limits |
Veja se Max processes e Max open files estão com limit: 65000
1 2 3 4 5 |
Limit Soft Limit Hard Limit Units ... Max processes 65000 65000 processes Max open files 65000 65000 files ... |
Neste momento seu servidor já esta rodando de forma anônima, onde qualquer um pode criar já uma sala de reunião.
Porém é possível permitir que apenas usuários autenticados criem novas salas de conferência. Sempre que uma nova sala estiver prestes a ser criada, o Jitsi Meet solicitará um nome de usuário e senha. Depois que a sala for criada, outras pessoas poderão ingressar no domínio anônimo.
1 |
# vim /etc/prosody/conf.avail/meet.remontti.com.br.cfg.lua |
Localize authentication e altere anonymous para internal_hashed:
1 |
authentication = "anonymous" |
Para
1 |
authentication = "internal_hashed" |
Descomente:
1 |
https_ports = { }; |
Ainda no mesmo arquivo adicione as linhas a baixo ante de “– Proxy to jicofo’s user JID…”
OBS: Não é necessário você criar uma entra “guest.meet” em seu DNS.
1 2 3 |
VirtualHost "guest.meet.remontti.com.br" authentication = "anonymous" c2s_require_encryption = false |
Agora em /etc/jitsi/meet/SEUDOMINO-config.js faça:
1 |
# vim /etc/jitsi/meet/meet.remontti.com.br-config.js |
Localize anonymousdomain, vai estar comentada com “//”, remova o comentário e adicione seu “guest.meet.remontti.com.br”.
1 |
// anonymousdomain: 'guest.example.com', |
Ficando
1 |
anonymousdomain: 'guest.meet.remontti.com.br', |
Em jicofo.conf será necessário fazer os ajustes para autenticação.
1 |
# vim /etc/jitsi/jicofo/jicofo.conf |
Adicione em jicofo { … }
1 2 3 4 5 |
authentication: { enabled: true type: XMPP login-url: jitsi-meet.example.com } |
Ficando assim:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
jicofo { authentication: { enabled: true type: XMPP login-url: meet.remontti.com.br } xmpp: { client: { client-proxy: focus.meet.remontti.com.br } trusted-domains: [ "recorder.meet.remontti.com.br" ] } bridge: { brewery-jid: "JvbBrewery@internal.auth.meet.remontti.com.br" } } |
Reinicie os serviços
1 |
# systemctl restart prosody jicofo jitsi-videobridge2 |
Agora ao criar uma nova reunião
Será necessário autenticar:
Então para criar um usuário (ou mais) administrador faça em seu terminal:
1 |
# prosodyctl register meuusuario meet.remontti.com.br minhasenha |
Para deletar um usuário:
1 |
# prosodyctl deluser meuusuario@meet.remontti.com.br |
Com sua sala de reunião pronta você pode desejar fazer alguns ajustes em mais configurações […]
Ajuste seus dados
Informe seu nome e e-mail se desejar
Você pode ainda fazer outros ajustes como:
Clique em OK para aplicar.
Outro ajuste que é interessante são as opções de segurança:
É interessante você Habilitar sala de espera, assim novos usuários terão que informar seu nome e você precisará aprovar sua entrada.
Agora quando alguém entrar na sala ira aparecer a seguinte tela:
O administrador ira autoriza-lo:
Bom a interface é bem intuitiva então acredito que não terá dificuldas. E não deixe de ler as integrações, bem como o restante da documentação, pois o projeto tem muita coisa que não foi mostrada aqui.
Gostou?
Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!
Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.
Se quiser mexer na interface:
APP_NAME: ‘Meet Remontti’,
DEFAULT_LOGO_URL: ‘images/logoremontti.svg’,
DEFAULT_WELCOME_PAGE_LOGO_URL: ‘images/logoremontti.svg’,
JITSI_WATERMARK_LINK: ‘https://remontti.com.br’,
NATIVE_APP_NAME: ‘Jitsi Meet (Remontti)’,
SHOW_JITSI_WATERMARK: true, //Se quiser ter a marca dagua
headerTitle”: “Jitsi Meet – Remontti”,
Ajustar tamanho do logo
.watermark.leftwatermark{width:71px;height:32px}
Editor: Inkscape
Olá boa tarde, aqui funcionou tudo certo, excelente trabalho e explicação, apenas um detalhe que não consegui ainda, o recurso de gravação sempre dar erro, precisa instalar algum serviço extra para gravar as conferencias?