Aplicação na VPS não abre pela internet: o que fazer
Quando a aplicação funciona dentro da VPS mas não abre de fora, as causas mais comuns são a porta fechada no firewall do painel ou no UFW, a aplicação ouvindo só em 127.0.0.1, o domínio sem apontar para o IP da VPS e o serviço parado. Comece testando a porta de dentro e de fora da VPS.
Quando a aplicação funciona dentro da VPS mas não abre pela internet, as causas mais comuns são: a porta está fechada no firewall do painel ou no UFW, a aplicação está ouvindo só no endereço local 127.0.0.1, o domínio não aponta para o IP da VPS ou o serviço está parado. Comece testando a porta de dentro da VPS e de fora dela: o resultado mostra em qual camada está o bloqueio.
Atenção: segurança da sua VPS. Os comandos no SSH mexem direto no servidor e são executados por sua conta e risco. Confira cada comando antes de rodar e, se puder, crie um snapshot da VPS antes de começar.
Sintomas
- O navegador mostra
Não é possível acessar esse site,ERR_CONNECTION_REFUSEDouERR_CONNECTION_TIMED_OUT. - Dentro da VPS,
curl http://127.0.0.1:<PORTA>responde, mas de fora não abre. - A aplicação abre pelo IP (
http://<IP_DA_VPS>:<PORTA>), mas não pelo domínio, ou o navegador mostraDNS_PROBE_FINISHED_NXDOMAIN.
Os comandos deste artigo valem para o Ubuntu e o Debian, os sistemas das VPS da StayCloud, e supõem que você entrou como root (veja "Como acessar sua VPS por SSH pelo terminal (Linux, Windows e Mac)"). Faça os dois testes, trocando <PORTA> pela porta da aplicação (por exemplo, 80, 443 ou 3000). Dentro da VPS:
curl -I http://127.0.0.1:<PORTA>
No seu computador (Linux e Mac; no Windows, use Test-NetConnection <IP_DA_VPS> -Port <PORTA> no PowerShell):
nc -vz <IP_DA_VPS> <PORTA>
Causa 1: a porta está fechada no firewall do painel ou no UFW
Como confirmar: o teste de dentro responde, mas o de fora dá timed out ou refused. Confira as duas camadas, que funcionam uma na frente da outra:
- No painel, na aba Firewall da VPS (Minhas VPS › Gerenciar › Firewall), veja se o firewall está ativado e se há regra Drop ou Reject que pegue a porta.
- Dentro da VPS, veja o UFW (Uncomplicated Firewall):
ufw status verbose
Se o UFW está active e a porta não aparece com ALLOW IN, ele está bloqueando.
Como resolver: libere a porta nas camadas que estiverem ativas. No painel, siga "Como criar uma regra de firewall na sua VPS pelo painel". No UFW:
ufw allow <PORTA>/tcp
O passo a passo está em "Como liberar portas com o firewall UFW na VPS via SSH". Se a aplicação roda no Docker, lembre que as portas publicadas pelo Docker passam por fora do UFW; nesse caso, o bloqueio costuma estar no firewall do painel.
Causa 2: a aplicação está ouvindo só em 127.0.0.1
Como confirmar: veja em qual endereço a aplicação está ouvindo:
ss -tlnp | grep <PORTA>
Se aparece 127.0.0.1:<PORTA> (ou [::1]:<PORTA>), ela só aceita conexões de dentro da própria VPS. Para aceitar de fora, precisa aparecer 0.0.0.0:<PORTA>, *:<PORTA> ou [::]:<PORTA>. No Docker, a coluna PORTS do docker ps mostra o mesmo: 127.0.0.1:3000->3000/tcp é só local.
Como resolver: o jeito recomendado é deixar a aplicação local e colocar um proxy, como o Nginx, nas portas 80 e 443, encaminhando para ela. Se quiser abrir a porta da aplicação direto, mude na configuração dela o endereço de escuta para 0.0.0.0 (o nome da opção varia: host, bind ou listen) ou, no Docker, publique a porta sem o 127.0.0.1, como -p 3000:3000. Depois, reinicie a aplicação e libere a porta no firewall.
Causa 3: o domínio não aponta para o IP da VPS
Como confirmar: a aplicação abre pelo IP, mas não pelo domínio. Veja para onde o domínio aponta (o comando funciona no Linux, no Mac e no Windows):
nslookup seudominio.com.br
Compare o endereço da resposta com o IP da VPS, que aparece em "Como ver os IPs e a rede da VPS pelo painel". Se for diferente, ou se a resposta for NXDOMAIN, o domínio não está apontando para a VPS.
Como resolver: crie ou corrija o registro A do domínio com o IP da VPS. Se o DNS do domínio está na StayCloud, siga "Como criar ou editar um registro DNS pelo painel"; se está em outro provedor, faça lá. A mudança pode levar de alguns minutos a algumas horas para valer em toda a internet.
Causa 4: o serviço está parado
Como confirmar: o teste de dentro da VPS também falha, e o ss -tlnp | grep <PORTA> não mostra nada. Veja o estado do serviço ou do contêiner:
systemctl status <SERVICO>
docker ps -a
Como resolver: inicie o serviço com systemctl start <SERVICO> e deixe-o ligando com a VPS com systemctl enable <SERVICO>, ou inicie o contêiner com docker start <CONTEINER>. Se ele não sobe, veja o motivo com journalctl -u <SERVICO> -n 50 ou docker logs --tail 50 <CONTEINER>. Veja "Como ver e gerenciar serviços na VPS via SSH".
Quando chamar o Suporte
Na VPS, você tem acesso root e cuida do que instala; o suporte da StayCloud cuida da infraestrutura: a VPS ligada, a rede e o painel, e não configura a sua aplicação. Veja "Perguntas frequentes sobre o que o suporte da StayCloud faz". Abra um chamado se a aplicação responde dentro da VPS, ouve em 0.0.0.0, a porta está liberada no firewall do painel e no UFW, e mesmo assim o teste de fora falha de qualquer rede, ou se nenhuma porta da VPS responde de fora, nem a do SSH.
No chamado, informe o IP da VPS ou o nome dela no painel, a porta, o horário, a saída de ss -tlnp e de ufw status verbose, o resultado do nc ou do Test-NetConnection feito de fora e o que você já tentou. O passo a passo está em "Como abrir um chamado no Suporte".
Relacionados
- Como criar uma regra de firewall na sua VPS pelo painel
- Como liberar portas com o firewall UFW na VPS via SSH
- Como ver os IPs e a rede da VPS pelo painel
- Como criar ou editar um registro DNS pelo painel
- Como ver e gerenciar serviços na VPS via SSH
- Erro 502 Bad Gateway na aplicação da VPS: o que fazer
- Perguntas frequentes sobre o que o suporte da StayCloud faz
- Como abrir um chamado no Suporte
Viu algo errado ou desatualizado?