Solución de la comunidad

CasaOS IPv4 no funciona: comprueba IPv6 y las vinculaciones de 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.

No desactives IPv6 solo porque ss muestre un servicio de CasaOS o Docker escuchando en :::80. En Linux, un socket IPv6 que escucha en todas las direcciones también puede aceptar IPv4, según la configuración del socket, y Docker normalmente publica los puertos en IPv4 cuando no se especifica una dirección del host.

El caso original era CasaOS en Debian 12 en GCP, no ZimaOS. El diagnóstico correcto es probar IPv4 explícitamente, inspeccionar la puerta de enlace de CasaOS y las vinculaciones de puertos de Docker, y comprobar el firewall de la nube antes de modificar GRUB o desactivar IPv6 globalmente.

Primero, prueba IPv4 directamente

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

Si IPv4 funciona localmente, pero falla de forma remota, es probable que el problema esté en el firewall del host o de la nube, o en el enrutamiento, y no en la vinculación de CasaOS.

La publicación de puertos de Docker normalmente incluye IPv4

La actual guía de publicación de puertos de Docker indica que los puertos publicados normalmente son accesibles mediante las asignaciones de direcciones del host; el comportamiento explícito de solo IPv6 requiere una configuración diferente.

Comprueba el propio CasaOS

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

El instalador actual de CasaOS todavía enumera las direcciones IPv4 de las interfaces de red al mostrar la URL del panel, por lo que una instalación funcional no está diseñada para requerir acceso exclusivamente mediante IPv6.

Comprueba el firewall de GCP

Confirma que la máquina virtual tenga una dirección IPv4, una ruta y una regla de entrada para el puerto web de CasaOS elegido. Un firewall de la nube puede bloquear el puerto 80 incluso cuando el servicio está escuchando correctamente.

No desactives IPv6 globalmente como primera solución

Históricamente, algunos componentes antiguos de CasaOS esperaban que existiera /proc/net/tcp6, y desactivar IPv6 ha provocado problemas de gestión de aplicaciones en algunas compilaciones. Eliminar IPv6 puede crear un segundo problema sin solucionar el primero.

Si necesitas una vinculación de Docker exclusiva para IPv4

ports:
  - "0.0.0.0:8080:80"

Usa una vinculación IPv4 explícita solo cuando controles esa definición de Compose y comprendas las implicaciones de exposición.

Comprueba el puerto web de CasaOS

El instalador puede elegir otro puerto disponible si el 80 ya está ocupado. Confirma el puerto HTTP real de CasaOS antes de asumir que el servicio falló.

La guía de redes de Docker explica los mismos fundamentos de red.

Comprueba sysctl solo después de probar la conectividad real

Si aún sospechas de un comportamiento de socket de doble pila, inspecciona sysctl net.ipv6.bindv6only. Un valor de 0 permite que muchos sockets IPv6 que escuchan en todas las direcciones acepten conexiones IPv4 asignadas; un valor de 1 hace que solo acepten IPv6. No lo cambies en todo el sistema a menos que comprendas qué servicios se verán afectados.

Comprueba las direcciones realmente publicadas por Docker

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

Esto muestra si Docker creó una asignación IPv4 como 0.0.0.0:PORT, una asignación IPv6 o ambas. Es más fiable que deducir el comportamiento a partir de una sola línea de la lista de procesos.

Recuerda que GCP tiene dos capas de firewall

Un host Debian puede tener sus propias reglas de nftables/iptables, mientras que GCP controla por separado la entrada del firewall de la VPC. Un servicio puede funcionar correctamente de forma local y, aun así, ser inaccesible externamente porque cualquiera de las dos capas bloquea el puerto.

Preguntas frecuentes

¿:::80 significa siempre que solo se usa IPv6?

No. Verifícalo con curl -4 antes de llegar a esa conclusión.

¿Debo desactivar IPv6 en GRUB?

No como primer paso de diagnóstico. Puede romper componentes que esperan interfaces IPv6 del kernel.

¿Por qué funciona localhost, pero no la IPv4 pública?

Comprueba el firewall de la nube, el grupo de seguridad, la ruta y el firewall del host.

¿Es un problema de ZimaOS?

El hilo original trata sobre CasaOS instalado en Debian 12, no sobre ZimaOS.