Solução da comunidade

IPv4 do CasaOS não funciona: verifique o IPv6 e as ligações do Docker

A CasaOS user on Debian 12 in GCP saw port 80 reported as tcp6 and then broke web access after disabling IPv6 before installation.

Não desative o IPv6 só porque o ss mostra um serviço CasaOS ou Docker à escuta em :::80. No Linux, um socket IPv6 à escuta em todas as interfaces também pode aceitar IPv4, dependendo das definições do socket, e o Docker normalmente publica as portas em IPv4 quando não é especificado nenhum endereço de anfitrião.

O caso original era o CasaOS no Debian 12, no GCP, e não o ZimaOS. O diagnóstico correto consiste em testar explicitamente o IPv4, verificar o gateway do CasaOS e os mapeamentos de portas do Docker, e confirmar a firewall da cloud antes de alterar o GRUB ou desativar globalmente o IPv6.

Teste primeiro o IPv4 diretamente

curl -4 -v http://127.0.0.1:80/
curl -4 -v http://SERVER_IPV4:80/
ss -ltnp | grep ':80'

Se o IPv4 local funcionar mas o IPv4 remoto falhar, é provável que o problema esteja na firewall do anfitrião ou da cloud, ou no encaminhamento, e não na ligação do CasaOS.

A publicação de portas do Docker normalmente inclui IPv4

O atual guia de publicação de portas do Docker indica que as portas publicadas normalmente ficam acessíveis através dos mapeamentos de endereços do anfitrião; um comportamento explicitamente apenas IPv6 requer uma configuração diferente.

Verifique o próprio CasaOS

systemctl status casaos
journalctl -u casaos --no-pager -n 100
ss -ltnp | grep -E ':80|casaos'

O instalador atual do CasaOS continua a enumerar os endereços IPv4 das interfaces de rede ao apresentar o URL do painel, pelo que uma instalação funcional não foi concebida para exigir acesso apenas por IPv6.

Verifique a firewall do GCP

Confirme que a máquina virtual tem um endereço IPv4, uma rota e uma regra de entrada para a porta Web escolhida pelo CasaOS. Uma firewall da cloud pode bloquear a porta 80 mesmo quando o serviço está corretamente à escuta.

Não desative globalmente o IPv6 como primeira solução

Componentes mais antigos do CasaOS esperavam, historicamente, que /proc/net/tcp6 existisse, e a desativação do IPv6 causou problemas de gestão de aplicações em algumas versões. Remover o IPv6 pode criar um segundo problema sem resolver o primeiro.

Se precisar de uma ligação Docker apenas em IPv4

ports:
  - "0.0.0.0:8080:80"

Utilize uma ligação IPv4 explícita apenas quando controlar essa definição do Compose e compreender as implicações de exposição.

Verifique a porta Web do CasaOS

O instalador pode escolher outra porta disponível se a porta 80 já estiver ocupada. Confirme a porta HTTP efetivamente utilizada pelo CasaOS antes de assumir que o serviço falhou.

O guia de redes do Docker aborda os mesmos fundamentos de rede.

Verifique o sysctl apenas depois de testar a conectividade real

Se continuar a suspeitar do comportamento de sockets dual-stack, consulte sysctl net.ipv6.bindv6only. O valor 0 permite que muitos sockets IPv6 abrangentes aceitem ligações mapeadas em IPv4; o valor 1 torna-os apenas IPv6. Não altere esta definição globalmente sem compreender todos os serviços afetados.

Verifique os endereços efetivamente publicados pelo Docker

docker ps --format 'table {{.Names}}	{{.Ports}}'
docker inspect CONTAINER --format '{{json .NetworkSettings.Ports}}'

Isto mostra se o Docker criou um mapeamento IPv4 como 0.0.0.0:PORT, um mapeamento IPv6 ou ambos. É mais fiável do que inferir o comportamento a partir de uma única linha da lista de processos.

Lembre-se de que o GCP tem duas camadas de firewall

Um anfitrião Debian pode ter as suas próprias regras nftables/iptables, enquanto o GCP controla separadamente a entrada da firewall da VPC. Um serviço pode funcionar corretamente localmente, mas continuar inacessível externamente porque qualquer uma das camadas bloqueia a porta.

FAQ

:::80 significa sempre apenas IPv6?

Não. Verifique com curl -4 antes de tirar essa conclusão.

Devo desativar o IPv6 no GRUB?

Não como primeiro passo de diagnóstico. Isso pode interromper componentes que esperam interfaces de kernel IPv6.

Porque é que o localhost funciona, mas o IPv4 público não?

Verifique a firewall da cloud, o grupo de segurança, a rota e a firewall do anfitrião.

Este é um problema do ZimaOS?

A discussão original diz respeito ao CasaOS instalado no Debian 12, e não ao ZimaOS.