Volver al inicio

Dokploy: instalación de la plataforma Docker Swarm

Dokploy es una plataforma para desplegar contenedores Docker y proyectos GitHub en servidores Linux. Describe la instalación vía script: verificación de puertos, inicialización de Swarm, lanzamiento de Postgres/Redis/Traefik. Adecuada para especialistas intermedios/senior enfocados en automatización.

Despliegue rápido de Dokploy: proyectos Docker y GitHub
Advertisement 728x90

Dokploy: Despliegue de contenedores Docker con una plataforma de código abierto

Dokploy es una herramienta de código abierto para el despliegue automatizado de aplicaciones en contenedores Docker y repositorios de GitHub. La plataforma utiliza Docker Swarm, Traefik para el enrutamiento, y bases de datos PostgreSQL/Redis. La instalación requiere un servidor Linux con al menos 2 GB de RAM y 30 GB de espacio en disco, y verifica la disponibilidad de los puertos 80, 443, 3000.

Requisitos del sistema y preparación

Dokploy ha sido probado en las siguientes distribuciones:

  • Ubuntu 24.04 LTS, 23.10, 22.04 LTS, 20.04 LTS, 18.04 LTS
  • Debian 12, 11, 10
  • Fedora 40
  • CentOS 9, 8

El servidor debe tener al menos 2 GB de RAM para construir imágenes Docker y 30 GB de espacio en disco. Los puertos 80 (HTTP Traefik), 443 (HTTPS Traefik) y 3000 (interfaz web) deben estar libres; el script de instalación fallará si están en uso.

Google AdInline article slot

Preparación:

  • Cambiar a root: sudo -i.
  • Detener servicios en los puertos 80, 443, 3000.
  • Asegurarse de que Docker esté instalado o el script instalará la versión 28.5.0.

El script detecta automáticamente la versión (por defecto la última, con soporte para canary/feature mediante DOKPLOY_VERSION), verifica el entorno (Linux, no un contenedor, no macOS) e inicializa Docker Swarm.

Proceso de instalación mediante script

El método principal es un comando de una línea:

Google AdInline article slot
curl -sSL https://dokploy.com/install.sh | sh

El script realiza los siguientes pasos:

  • Verifica privilegios de root y puertos libres con ss -tulnp.
  • Instala Docker si falta.
  • Detecta contenedores Proxmox LXC y aplica --endpoint-mode dnsrr para compatibilidad.
  • Determina la dirección IP del servidor (IPv4/IPv6 mediante ifconfig.io, icanhazip.com, ipecho.net) para ADVERTISE_ADDR.
  • Inicializa Docker Swarm: docker swarm init --advertise-addr <ip>.
  • Crea la red overlay dokploy-network.

Fragmentos clave del script:

# Opredelenie versii
detect_version() {
    local version="${DOKPLOY_VERSION:-latest}"
    echo "$version"
}

# Check Proxmox LXC
is_proxmox_lxc() {
    if [ -n "$container" ] && [ "$container" = "lxc" ]; then
        return 0
    fi
    if grep -q "container=lxc" /proc/1/environ 2>/dev/null; then
        return 0
    fi
    return 1
}

Tras la inicialización de Swarm, se crean los servicios:

Google AdInline article slot
docker service create \
  --name dokploy-postgres \
  --network dokploy-network \
  --env POSTGRES_USER=dokploy \
  --env POSTGRES_DB=dokploy \
  --env POSTGRES_PASSWORD=amukds4wi9001583845717ad2 \
  postgres:16

De manera similar para Redis (redis:7) y el contenedor principal de Dokploy con montajes para /var/run/docker.sock, /etc/dokploy y puerto 3000 (modo host).

Configuración e inicio de Traefik

Traefik (v3.6.1) se lanza por separado:

docker run -d \
    --name dokploy-traefik \
    --restart always \
    -v /etc/dokploy/traefik/traefik.yml:/etc/traefik/traefik.yml \
    -v /var/run/docker.sock:/var/run/docker.sock:ro \
    -p 80:80/tcp -p 443:443/tcp -p 443:443/udp \
    traefik:v3.6.1

Se conecta a dokploy-network. Tras una espera de 15 segundos, la interfaz está disponible en: http://<ip>:3000.

Posibles problemas:

  • Error en puertos ocupados: usar ss -tulnp | grep :80 para diagnósticos.
  • En LXC/Proxmox: aplicación automática del modo dnsrr.
  • Fallo en la inicialización de Swarm: establecer ADVERTISE_ADDR manualmente o DOCKER_SWARM_INIT_ARGS para pools personalizados (p. ej., --default-addr-pool 172.20.0.0/16).

Funcionalidad tras la instalación

La interfaz web en el puerto 3000 permite desplegar proyectos desde GitHub, gestionar contenedores y configurar el enrutamiento de Traefik. La plataforma se centra en despliegues autoalojados sin dependencias externas e integra Docker Swarm para la orquestación.

Ventajas para DevOps de nivel medio/senior:

  • Manejo automático de IP (IPv4/IPv6).
  • Soporte para argumentos personalizados de Swarm.
  • Recursos mínimos en comparación con soluciones PaaS completas.
  • Alternativa de código abierto a Coolify con enfoque en Docker.

Puntos clave

  • Requisitos mínimos: 2 GB de RAM, 30 GB de disco, Linux (Ubuntu/Debian/Fedora/CentOS).
  • Puertos requeridos: 80, 443, 3000; el script bloquea la instalación si están ocupados.
  • Docker Swarm: Auto-inicialización con advertise-addr, soporte dnsrr para LXC.
  • Servicios: Postgres:16, Redis:7, Traefik:v3.6.1, Dokploy:latest/canary/feature.
  • Acceso: http://<server-ip>:3000 tras 15 segundos.

— Editorial Team

Advertisement 728x90

Leer después