A maioria dos apps auto-hospedados escuta em uma porta local como 127.0.0.1:3000 e fala HTTP simples. Um proxy reverso fica na frente nas portas 80/443, encerra o HTTPS com um certificado de verdade e encaminha o tráfego para essa porta local — dando um https://app.yourdomain.com limpo e permitindo rodar vários apps atrás de um único IP. Aqui estão os dois caminhos comuns.
Pré-requisitos
- Um domínio com um registro A apontando para o IP do seu servidor (aguarde a propagação de DNS).
- As portas 80 e 443 abertas — veja como configurar um firewall UFW.
- Seu app rodando localmente, por exemplo em
127.0.0.1:3000.
Opção A — Caddy (HTTPS automático, uma linha)
sudo apt install -y caddy
echo 'app.yourdomain.com { reverse_proxy 127.0.0.1:3000 }' | sudo tee /etc/caddy/Caddyfile
sudo systemctl restart caddy
É só isso — o Caddy obtém um certificado Let's Encrypt para o domínio e o renova automaticamente.
Opção B — nginx + Certbot
sudo apt install -y nginx certbot python3-certbot-nginx
Crie /etc/nginx/sites-available/app:
server {
listen 80;
server_name app.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Ative-o e adicione HTTPS:
sudo ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d app.yourdomain.com
O Certbot edita a configuração para servir HTTPS e configura a renovação automática.
Avisos honestos
- DNS e portas são as falhas de sempre. O registro A precisa apontar para cá e estar propagado, e 80/443 alcançáveis, senão a emissão do certificado falha. As duas ferramentas tentam de novo assim que isso é corrigido.
- Exponha apenas o que pretende. Mantenha o app vinculado a
127.0.0.1para que só seja acessível pelo proxy, não diretamente. - HTTPS precisa de um domínio, não de um IP cru — o Let's Encrypt emite para nomes.
Próximos passos
O proxy reverso é justamente o que permite a um único servidor servir muitas coisas — veja auto-hospedar vários serviços atrás de um único IP. Roda o app em um contêiner? Comece por como instalar o Docker. Para que o próprio app sobreviva a reinícios e quedas, veja como criar um serviço systemd.
Comentários
Nenhum comentário ainda. Seja o primeiro.