Ir para o conteúdo
Ajuda

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.

Problema5 min de leitura

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_REFUSED ou ERR_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 mostra DNS_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
Este artigo ajudou?

Viu algo errado ou desatualizado?