Clientes XMPP
Este módulo de bate-papo é baseado no protocolo XMPP, também conhecido como Jabber. Portanto, é possível conectar-se aos bate-papos usando software cliente XMPP. Isso pode ser útil, por exemplo, para facilitar as operações de moderação.
Para obter a documentação do usuário associada a esses recursos, consulte a página de documentação do usuário.
A ativação desses recursos requer alterações de configuração no servidor e nos registros DNS. Não é possível configurar isso apenas pela interface do Peertube e requer algumas habilidades básicas de administração do sistema.
Entre na sua conta Peertube
Este recurso ainda não está disponível e estará disponível em uma versão futura do plugin.
Conexão usando uma conta XMPP externa
Para habilitar esse recurso, você precisará configurar seu servidor e registros DNS para que os clientes XMPP possam encontrar e acessar o servidor Prosody que este plugin usa internamente.
Configurações do plugin
Comece acessando as configurações do plugin de chat ao vivo da sua instância e ative a opção “Habilitar conexão com a sala usando contas XMPP externas”. Ao marcar esta opção, as novas configurações serão exibidas abaixo.
Primeiro, o campo “Porta de servidor Prosody para servidor”. O padrão é 5269, que é a porta padrão para este serviço. No entanto, você pode alterar para outra porta, se ela já estiver em uso no seu servidor.
Em seguida, o campo “Interfaces de rede entre servidores” permite especificar em quais interfaces de rede o servidor deve escutar. O valor padrão “*, ::” indica que todos os endereços IP devem ser escutados. Você pode alterar esses valores se desejar escutar apenas determinados endereços IP. A sintaxe é explicada ao lado da configuração.
Para a configuração “Pasta de certificados”, você pode deixá-la vazia. Nesse caso, o plugin gerará automaticamente certificados autoassinados. Alguns servidores XMPP podem se recusar a conectar, dependendo de sua configuração. Nesse caso, você pode indicar aqui um caminho no servidor, no qual deverá colocar os certificados a serem usados pelo módulo. Cabe a você gerá-los e renová-los. Veja abaixo para mais informações.
Firewall
Você deve abrir a porta configurada (5269 por padrão) no seu firewall.
Se você estiver usando o Docker para seu Peertube, precisará modificar o
arquivo docker-compose.yml
para abrir a porta 5269 do contêiner
peertube
, para que o mundo externo possa se conectar a ele.
DNS
Você precisa adicionar registros DNS permitindo que servidores remotos encontrem os componentes “room.your_instance.tld” e “external.your_instance.tld”.
A maneira mais fácil de fazer isso é adicionar registros SRV para o “room” e o “external” subdomínio:
nome do registro: _xmpp-server._tcp.room.your_instance.tld. (substitua «your_instance.tld» pelo URI da sua instância)
TTL: 3600
classe: IN
SRV: 0
prioridade: 0
peso: 5
porta: 5269 (adaptar se você alterou a porta padrão)
alvo: your_instance.tld. (substitua pelo uri da sua instância)
nome do registro: _xmpp-server._tcp.external.your_instance.tld. (substitua «your_instance.tld» pelo uri da sua instância)
TTL: 3600
classe: IN
SRV: 0
prioridade: 0
peso: 5
porta: 5269 (adaptar se você alterou a porta padrão)
alvo: your_instance.tld. (substitua pelo uri da sua instância)
Tenha cuidado para manter o ponto depois de “your_instance.tld”.
Usando o comando dig
para verificar seus registros, você deverá obter um
resultado semelhante a este:
$ dig +short _xmpp-server._tcp.room.videos.john-livingston.fr. SRV
0 5 5269 vídeos.john-livingston.fr.
$ dig +short _xmpp-server._tcp.external.videos.john-livingston.fr. SRV
0 5 5269 vídeos.john-livingston.fr.
Se você não estiver usando a porta padrão 5269
, também precisará
adicionar um registro SRV para _xmpp-server._tcp.your_instance.tld.
(o
mesmo que acima, mas sem o prefixo room.
). É claro que você também pode
adicionar este registro se usar a porta padrão. Também funcionará.
Usando certificados confiáveis
Os certificados autoassinados que este plugin usa por padrão podem ser rejeitados por alguns servidores XMPP, por motivos de segurança.
É possível usar certificados validados por uma autoridade certificadora. No entanto, isso requer conhecimentos avançados de administração de sistemas. De fato, devido à multiplicidade de casos de uso possíveis, é impossível documentar todas as situações aqui. Esta documentação, portanto, explicará apenas o objetivo a ser alcançado e fornecerá um exemplo adequado apenas para uma situação “básica” (instalação manual do Peertube, usando letsencrypt). Se você estiver em outra situação (instalação do Docker, certificados assinados por outra autoridade, etc.), terá que adaptar essa abordagem por conta própria.
Princípio básico
Cabe a você gerar certificados válidos para os domínios sua_instância.tld
e room.sua_instância.tld
. Você pode usar qualquer método suportado pelo
Prosody.
Você deve então colocar esses certificados em uma pasta que seja acessível
ao usuário peertube
e especificar essa pasta na configuração do plugin
“Pasta de certificados”.
Se você quiser usar o utilitário ProsodyCtl para importar certificados, este
utilitário estará disponível (após o Peertube ser iniciado) usando o
seguinte comando (adaptando o caminho para sua pasta de dados do Peertube e
substituindo “xxx” pelos argumentos que você deseja passar para o
prosodyctl): sudo -u peertube /var/www/peertube/storage/plugins/data/peertube-plugin-livechat/prosodyAppImage/squashfs-root/AppRun prosodyctl --config /var/www/peertube/storage/plugins/data/peertube-plugin-livechat/prosody/prosody.cfg.lua xxx
O plugin verificará uma vez por dia se algum arquivo foi modificado nesta pasta e recarregará o Prosody, se necessário.
Método para o caso simples
Assumimos aqui que sua instalação do Peertube é “clássica” (sem uso do Docker) e que os certificados são gerados pelo letsencrypt, usando a ferramenta certbot.
Primeiramente, precisamos criar um certificado para o subdomínio
room.your_instance.tld
: este é o URI do componente MUC (salas de bate-papo
XMPP). Mesmo que as conexões sejam feitas em your_instance.tld
,
precisaremos de um certificado válido para este subdomínio.
Comece configurando uma entrada DNS para room.your_instance.tld
, que
aponta para o seu servidor. Você pode usar uma entrada CNAME (ou uma entrada
A e uma entrada AAAA).
Em seguida, usaremos o nginx (já instalado no seu Peertube) para gerar o
certificado certbot. Criaremos um novo site. No arquivo
/etc/nginx/site-available/room.peertube
, adicione:
servidor {
ouvir 80;
ouvir [::]:80;
nome_do_servidor sala.sua_instância.tld;
localização /.well-known/acme-challenge/ {
tipo_padrão "texto/simples";
raiz /var/www/certbot;
}
localização / { retornar 301 https://sua_instância.tld; }
}
Em seguida, habilite o site:
ln -s /etc/nginx/sites-available/room.peertube /etc/nginx/sites-enabled/
systemc reload nginx
Em seguida, preparamos a pasta para a qual importaremos os
certificados. Presumimos que você já tenha o plugin ativo. Criaremos a
seguinte pasta (se ainda não existir), com o usuário peertube
, para
garantir que não haja problemas de permissão:
sudo -u peertube mkdir /var/www/peertube/storage/plugins/data/peertube-plugin-livechat/prosody/certs
Agora você precisa configurar esta pasta nas configurações do plugin, no parâmetro “Pastas de certificados”. É importante fazer isso agora, caso contrário, o script de importação de certificados colocará os certificados na pasta errada.
Configuraremos o certbot para importar os certificados gerados para a pasta Prosody. Podemos usar o utilitário ProsodyCtl incluído no plugin.
Observação: para estar disponível, o plugin deve ter sido iniciado pelo menos uma vez.
Criaremos um arquivo /etc/letsencrypt/renewal-hooks/deploy/prosody.sh
contendo:
#!/bin/sh
/var/www/peertube/storage/plugins/data/peertube-plugin-livechat/prosodyAppImage/squashfs-root/AppRun prosodyctl
--root
--config /var/www/peertube/storage/plugins/data/peertube-plugin-livechat/prosody/prosody.cfg.lua
cert import
room.sua_instância.tld sua_instância.tld /etc/letsencrypt/live
Então pedimos para gerar o certificado:
certbot -d room.videos.john-livingston.fr
Se o certbot oferecer vários métodos para gerar o certificado, escolha “nginx”.
Normalmente, agora você deve encontrar os certificados na pasta configurada.
Observação: na primeira vez que fizer isso, você precisará reiniciar o Prosody. A maneira mais fácil de fazer isso é reiniciar o Peertube.
Método para o caso Docker
Este método funciona com o guia Docker oficialmente suportado do PeerTube.
Primeiro, certifique-se de criar uma entrada DNS para
room.your_instance.tld
, que aponta para o seu servidor. Você pode usar uma
entrada CNAME (ou uma entrada A e uma entrada AAAA). Isso é necessário para
que o Let’s Encrypt valide o domínio para geração do certificado.
Entre no diretório onde seu arquivo docker-compose.yml
está.
Abra um shell no contêiner certbot:
docker exec -it certbot /bin/sh
Execute o certbot:
certbot
Serão apresentadas uma série de prompts. Digite 2
para o tipo de
autenticação:
How would you like to authenticate with the ACME CA?
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Digite o nome de domínio room.your_instance.tld
:
Please enter the domain name(s) you would like on your certificate (comma and/or space separated) (Enter 'c' to cancel): room.your_instance.tld
Entre no diretório onde o servidor web PeerTube atende solicitações para o
Let’s Encrypt, /var/www/certbot
:
Input the webroot for <room.your_instance.tld>: (Enter 'c' to cancel): /var/www/certbot
Você deverá ver uma saída como esta:
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/room.your_instance.tld/fullchain.pem
Key is saved at: /etc/letsencrypt/live/room.your_instance.tld/privkey.pem
Execute o comando abaixo dentro do contêiner certbot para conceder acesso de leitura aos novos certificados e chaves privadas do grupo peertube. Observação: Isso também tornará os arquivos legíveis para o grupo com ID 999 no sistema host. Verifique os grupos em seu sistema para avaliar se isso representa um risco antes de executar este comando.
chown -R root:999 /etc/letsencrypt/live; \
chmod 750 /etc/letsencrypt/live; \
chown -R root:999 /etc/letsencrypt/archive; \
chmod 750 /etc/letsencrypt/archive; \
find /etc/letsencrypt/ -name 'privkey*' -exec chmod 0640 {} \;
Saia do contêiner certbot:
exit
Modifique seu arquivo docker-compose.yml
, alterando a linha entrypoint
no serviço certbot
para o seguinte. É o mesmo que o anterior, mas será
executado automaticamente após cada renovação de certificado.
entrypoint: /bin/sh -c "trap exit TERM; while :; do certbot renew --webroot -w /var/www/certbot; chown -R root:999 /etc/letsencrypt/live; chmod 750 /etc/letsencrypt/live; chown -R root:999 /etc/letsencrypt/archive; chmod 750 /etc/letsencrypt/archive; find /etc/letsencrypt/ -name 'privkey*' -exec chmod 0640 {} +; sleep 12h & wait $${!}; done;"
Continuando a modificar docker-compose.yml
, adicione o volume do
certificado certbot ao contêiner peertube. Deve ficar algo assim:
volumes:
- ./docker-volume/certbot/conf:/etc/letsencrypt
Reinicie seus serviços:
docker-compose down; docker-comopse up -d
Nas configurações do plugin de chat ao vivo nas configurações de administração do PeerTube, defina o diretório do certificado como o seguinte:
/etc/letsencrypt/live
Salve as configurações do plugin e verifique se o Prosody pode ver os certificados:
docker-compose exec -u peertube \
peertube \
/data/plugins/data/peertube-plugin-livechat/prosodyAppImage/squashfs-root/AppRun \
prosodyctl \
--config /data/plugins/data/peertube-plugin-livechat/prosody/prosody.cfg.lua \
check certs
Solução de problemas
Se não conseguir fazer funcionar, você pode usar a ferramenta de diagnóstico (há um botão no topo da página de configurações do plugin) e dar uma olhada na seção «Verificação de prosódia».