diff --git a/readme.md b/readme.md index 37aa91d..b250f91 100755 --- a/readme.md +++ b/readme.md @@ -76,6 +76,81 @@ A infraestrutura é mantida via `systemd` para garantir alta disponibilidade. --- +## 🔐 Manutenção do certificado HTTPS do mmpCreator + +O site é atendido pelo Traefik na porta 443, enquanto o backend de colaboração atende diretamente por HTTPS na porta 33001. O backend utiliza os arquivos `/etc/letsencrypt/live/alice.ufsj.edu.br/fullchain.pem` e `privkey.pem` e carrega o certificado ao iniciar. Portanto, renovar o certificado exige reiniciar o backend para carregar a nova versão. + +Uma página que abre normalmente, mas não conecta ao servidor em tempo real, pode indicar certificado vencido na porta 33001. O aviso de Ad Blocker exibido pelo frontend é genérico e não confirma a causa. + +### 1. Verificar certificado e serviço + +Execute no servidor Linux: + +```bash +sudo openssl x509 \ + -in /etc/letsencrypt/live/alice.ufsj.edu.br/fullchain.pem \ + -noout -dates + +sudo certbot certificates +sudo systemctl status backend-MMPCreator.service --no-pager +sudo ss -ltnp 'sport = :80' +sudo grep -nE 'authenticator|installer|pre_hook|post_hook' \ + /etc/letsencrypt/renewal/alice.ufsj.edu.br.conf +``` + +`notAfter` informa a data de expiração, em GMT/UTC. Um serviço `active (running)` ainda pode apresentar um certificado expirado. + +### 2. Renovar com Certbot standalone e Traefik + +Na configuração diagnosticada, o Certbot usa `authenticator = standalone`, e o container `traefik` ocupa a porta 80. Nesse cenário, é necessário parar temporariamente o Traefik para liberar a porta durante a validação. Este procedimento interrompe o acesso aos sites atendidos pelo proxy; execute em uma janela de manutenção. Ele só se aplica enquanto essa configuração permanecer em uso. + +O certificado inclui sete domínios. Todos precisam estar acessíveis para a validação HTTP do Certbot. Se o teste falhar, corrija o erro informado antes de tentar a renovação real. + +Execute o bloco completo em Bash. O `trap` tenta iniciar novamente o Traefik ao sair do bloco, inclusive se algum comando falhar: + +```bash +( + set -e + trap 'sudo docker start traefik' EXIT + + sudo docker stop traefik + sudo certbot renew --cert-name alice.ufsj.edu.br --dry-run + sudo certbot renew --cert-name alice.ufsj.edu.br +) +``` + +O `--dry-run` apenas testa a renovação; o comando seguinte renova efetivamente o certificado. Confira a retomada do proxy e a nova validade: + +```bash +sudo docker ps --filter name=traefik +sudo openssl x509 \ + -in /etc/letsencrypt/live/alice.ufsj.edu.br/fullchain.pem \ + -noout -dates +``` + +Se o Traefik não estiver em execução, retome-o com `sudo docker start traefik`. Se `notAfter` continuar vencido, consulte a saída do Certbot e `/var/log/letsencrypt/letsencrypt.log`. + +### 3. Reiniciar o backend e testar a conexão + +Após uma renovação bem-sucedida, confirme que o certificado no disco não está vencido antes de reiniciar. O reinício desconecta temporariamente as salas: + +```bash +sudo openssl x509 \ + -in /etc/letsencrypt/live/alice.ufsj.edu.br/fullchain.pem \ + -noout -checkend 0 && \ + sudo systemctl restart backend-MMPCreator.service + +sudo systemctl status backend-MMPCreator.service --no-pager +sudo journalctl -u backend-MMPCreator.service -n 80 --no-pager + +curl -v --max-time 10 \ + 'https://alice.ufsj.edu.br:33001/socket.io/?EIO=4&transport=polling' +``` + +O teste deve responder sem erro TLS, com um handshake Socket.IO iniciado por `0{"sid":...}`. Depois, recarregue o mmpCreator e teste a criação e a entrada em uma sala. Não utilize `curl -k` para validar a correção: essa opção ignora os erros de certificado. + +--- + ## 🛠️ Área de Desenvolvimento (Execução Manual) 1. Ative o ambiente virtual: