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.
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:
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 dnsrrpara 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:
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 :80para diagnósticos. - En LXC/Proxmox: aplicación automática del modo dnsrr.
- Fallo en la inicialización de Swarm: establecer
ADVERTISE_ADDRmanualmente oDOCKER_SWARM_INIT_ARGSpara 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
Aún no hay comentarios.