Solución de la comunidad

Compartir el puerto 5000 de las aplicaciones de CasaOS: cambia el puerto del host, no el del contenedor

A June 2024 CasaOS question about MusicBrainz, HandBrake, and other apps sharing port 5000; a later reply identified changing the host port while preserving the container port.

Un usuario de CasaOS instaló varias aplicaciones web que esperaban el puerto de contenedor 5000. Solo se podía acceder a una aplicación porque varios contenedores intentaban publicar el mismo puerto en el host Debian. Cambiar ambos lados de la asignación hizo que algunas aplicaciones dejaran de responder.

La regla práctica es sencilla: mantén sin cambios el puerto del contenedor de la aplicación, a menos que su propia documentación indique que el puerto de escucha se puede configurar. Cambia únicamente el puerto del host.

Lee las asignaciones de puertos de Docker de izquierda a derecha

5001:5000

En esta asignación, 5001 es el puerto del host que se usa en el navegador y 5000 es el puerto en el que la aplicación escucha dentro del contenedor. La guía oficial de publicación de puertos de Docker utiliza el mismo modelo de host a contenedor.

Asigna dos aplicaciones que usan el puerto 5000 a puertos de host diferentes

Aplicación Puerto del host Puerto del contenedor Dirección del navegador
MusicBrainz 5001 5000 http://SERVER-IP:5001
HandBrake 5002 5000 http://SERVER-IP:5002

Cada combinación de dirección IP y puerto del host debe ser única. Varios contenedores pueden seguir escuchando internamente en 5000 porque sus espacios de nombres de red están aislados.

Por qué cambiar el puerto del contenedor suele romper la interfaz web

Una imagen puede iniciar su servidor web en un puerto interno fijo. Si CasaOS asigna el puerto del host 5001 al puerto del contenedor 5001 mientras el proceso sigue escuchando en 5000, Docker reenvía el tráfico a un socket vacío. El contenedor puede parecer saludable aunque el navegador no reciba ninguna respuesta.

Cambia el puerto del contenedor únicamente cuando la aplicación de origen exponga una configuración o variable de entorno documentada que también cambie el puerto de escucha del proceso.

Edita el campo correcto en CasaOS

  1. Abre la configuración de la aplicación o la configuración de instalación personalizada.
  2. Busca la entrada del puerto que muestra los valores del host y del contenedor.
  3. Deja el valor del contenedor con el predeterminado de la imagen.
  4. Elige un puerto del host que no esté en uso.
  5. Guarda y vuelve a crear o reinicia el contenedor cuando se te solicite.
  6. Abre la aplicación mediante el nuevo puerto del host.

Verifica el puerto antes de asignarlo

Comprueba la lista de aplicaciones de CasaOS o la configuración del contenedor para consultar las asignaciones existentes. También ten en cuenta los servicios instalados directamente en Debian, ya que pueden ocupar el mismo puerto del host sin aparecer como aplicaciones de CasaOS. Evita asignar puertos de infraestructura comunes como 22, 53, 80, 443 o 445, a menos que comprendas qué servicio existente los utiliza.

La red del host elimina esta flexibilidad

En el modo de red del host, el contenedor comparte el espacio de nombres de red del host y no puede reasignar normalmente un puerto de escucha que ya esté en uso. La documentación de Docker sobre la red del host confirma que solo un servicio puede vincularse a un puerto específico del host.

Preguntas frecuentes sobre conflictos de puertos en CasaOS

¿Qué número debo cambiar?

Cambia el puerto del host, que es el primer número en HOST:CONTAINER.

¿Todas las aplicaciones pueden usar el puerto de contenedor 5000?

Sí, si cada contenedor está aislado y cada uno publica un puerto de host diferente.

¿Por qué la aplicación se instaló pero no se abrió?

Es posible que la asignación apunte a un puerto del contenedor en el que la aplicación no está escuchando.