Inicio » Cómo solucionar conflictos de puertos ocupados en Docker dentro de Umbrel OS
Sistemas y Servidores

Cómo solucionar conflictos de puertos ocupados en Docker dentro de Umbrel OS

✨ Respuesta Rápida

El error de puerto ya asignado (bind: address already in use o port already allocated) al intentar levantar un contenedor personalizado en Umbrel OS ocurre porque el proxy web interno de la plataforma (basado en Nginx o Traefik) ya tiene reservado el puerto 80 y 443 para gestionar la tienda de aplicaciones y el acceso seguro a su panel.

El Diagnóstico Rápido

Causa
El puerto 80 o 443 requerido por una App de Umbrel está ocupado por otro servicio
Solución
Modificar la asignación de puertos en el archivo docker-compose.yml de la App
Causa
Proceso local de Nginx o Apache bloqueando los puertos en el servidor anfitrión
Solución
Identificar y detener el servicio conflictivo: sudo systemctl stop nginx

El error de puerto ya asignado (bind: address already in use o port already allocated) al intentar levantar un contenedor personalizado en Umbrel OS ocurre porque el proxy web interno de la plataforma (basado en Nginx o Traefik) ya tiene reservado el puerto 80 y 443 para gestionar la tienda de aplicaciones y el acceso seguro a su panel.

La Solución Paso a Paso

  1. 1

    Paso 1: Localizar qué contenedor o proceso está ocupando el puerto

    Antes de modificar cualquier compose, identifica de manera precisa qué servicio está acaparando el puerto del sistema mediante la consola SSH de tu Umbrel:

    BASH
    # Buscar el proceso y puerto en conflicto (por ejemplo, el puerto 80)
    sudo lsof -i :80
    
    # Listar todos los puertos mapeados por contenedores activos de Docker
    docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}"
    
  2. 2

    Paso 2: Modificar el mapeo en tu archivo docker-compose.yml

    Nunca intentes desinstalar o matar los procesos del panel nativo de Umbrel. En su lugar, edita el archivo de configuración del contenedor que deseas instalar y reasigna su puerto externo a uno que esté libre (por ejemplo, cambia del puerto 80:80 a 8085:80):

    YAML
    services:
      app-custom:
        image: nginx:alpine
        ports:
          # Mapear el puerto libre 8085 del host al puerto 80 interno del contenedor
          - "8085:80"
    
  3. 3

    Paso 3: Reiniciar el contenedor modificado

    Aplica los cambios recreando la estructura del contenedor en tu servidor:

    BASH
    # Apagar y volver a levantar el contenedor de forma aislada
    docker compose down && docker compose up -d
    

Consejo de Prevención

Prácticas de seguridad recomendadas:

  • Evita alterar directamente la red principal de Docker del sistema de Umbrel (docker0 o la red host nativa) al instalar aplicaciones personalizadas de terceros. Siempre declara redes de tipo puente (bridge) aisladas dentro de tus archivos Compose. Esto previene colisiones accidentales de puertos y de asignación de DNS internas, manteniendo los servicios críticos de tu nodo de Bitcoin o suite de almacenamiento web completamente seguros y operativos.
Autor • Diseñador Web & Creador de Apps

Rodolfo Castro

Diseñador web, creador de aplicaciones y fundador de SoporteCero. Especialista en desarrollo de productos digitales, interfaz de usuario y arquitectura web. Cada tutorial y solución de SoporteCero es reproducido y verificado en laboratorio técnico para ofrecer guías funcionales y actualizadas.