Llevaba tiempo con Portainer en Phatt. Funciona, nadie puede decir que no funciona. Pero tiene una cosa que me molestaba: cada vez que quiero desplegar algo nuevo, hay demasiado click-click para configurar volúmenes, redes, variables de entorno. No es ágil.
Coolify lo probé también. Muy orientado a aplicaciones web con git deploy, casi demasiado para lo que hago en el homelab. Y el proceso de instalación me dejó una sensación de “esto es grande para lo que necesito”.
Dokploy apareció en un hilo de Reddit hace unos meses y lo instalé sin pensar mucho. Lleva ya unas semanas corriendo en Phatt y no he vuelto a abrir Portainer.
Qué es Dokploy#
Dokploy es un panel de gestión de deployments open source. La idea es simple: una interfaz web desde donde gestionas aplicaciones Docker (Compose o Swarm), bases de datos, dominios y SSL, sin necesitar tocar la terminal para el 90% de las operaciones.
Lo que lo diferencia de Portainer:
- Está pensado para deploys de aplicaciones, no para gestión de contenedores en bruto
- Tiene soporte nativo para git (conectas un repo y despliega automáticamente)
- Gestión de dominios y certificados TLS integrada (sin configurar nginx manualmente)
- Variables de entorno con interfaz clara y versionado
- Logs en tiempo real mucho más usables que los de Portainer
Lo que lo diferencia de Coolify:
- Más ligero y directo
- Menos opinado sobre cómo estructuras tus proyectos
- Mejor soporte para Docker Swarm (Coolify está más orientado a instancias standalone)
- UI más rápida en mi experiencia
Mi setup: Dokploy en Phatt con Docker Swarm#
Phatt (mi Unraid con 72 cores y 512GB de RAM) ya tenía Docker Swarm configurado. Dokploy se instala sobre Swarm de forma nativa, lo que me permite aprovechar la gestión de replicas y la tolerancia a fallos.
La instalación es un comando:
| |
El script detecta si tienes Swarm activo y despliega como stack. En mi caso creó tres servicios:
dokploy: la aplicación principaldokploy-postgres: base de datos (postgres:16)dokploy-redis: caché y colas
Actualmente tengo la versión v0.26.6. El proceso tarda unos 2-3 minutos en arrancar completamente.
Una vez arriba, la interfaz corre en el puerto 3000 del servidor. Yo lo tengo detrás de nginx con proxy inverso y certificado, pero también puedes acceder directamente mientras configuras.
La interfaz: lo que ve un humano normal#
La primera pantalla después del registro es el dashboard. Sin decoración, sin métricas que no necesitas. Tres secciones principales:
Projects Aquí organizas tus aplicaciones. Un proyecto puede tener varias apps, bases de datos y servicios. Yo tengo proyectos por función: “Media”, “Dev Tools”, “Monitoring”, etc.
Services Dentro de cada proyecto, defines los servicios. Puedes elegir entre:
- Docker Compose (pegas tu compose y listo)
- Dockerfile (conectas un repo con Dockerfile)
- Buildpacks (detecta el lenguaje automáticamente)
- Imagen Docker (como haría Portainer)
Databases Panel dedicado para bases de datos. Soporta PostgreSQL, MySQL, MariaDB, MongoDB y Redis. Las crea con un click, gestiona backups, y puedes ver las conexiones directamente.
Deploy de una aplicación con Compose#
El flujo que más uso: tengo un docker-compose.yml, quiero desplegarlo sin tocar la terminal.
- Nuevo proyecto → nuevo servicio → tipo “Docker Compose”
- Pego el compose directamente en el editor o conecto un repositorio git
- Configuro las variables de entorno en el panel (sin editar archivos .env)
- Click en Deploy
Dokploy traduce el compose a un stack de Swarm internamente. Si el compose tiene dependencias entre servicios, las gestiona correctamente.
Lo que me gusta: las variables de entorno quedan guardadas en Dokploy, no en archivos en el servidor. Si reformateo o muevo servicios, no pierdo la configuración.
Git deploy: el feature que más uso#
Esto es lo que realmente lo diferencia de Portainer. Conectas un repositorio (GitHub, GitLab, Gitea, cualquier git) y Dokploy despliega automáticamente cuando haces push.
Mi flujo para proyectos propios:
- Conecto el repo de Gitea (tengo Gitea corriendo en el propio Phatt)
- Configuro la rama (main o una rama de producción)
- Activo webhook en Gitea → apunta al endpoint de Dokploy
- Cada
git pushlanza un build y deploy automático
El build log aparece en tiempo real en la interfaz. Si algo falla, ves exactamente en qué línea y por qué. Nada de docker service ps --no-trunc para ver el error.
Gestión de dominios y TLS#
Dokploy tiene integración con Let’s Encrypt. Configuras el dominio de la aplicación en la UI y él solicita el certificado automáticamente via Traefik (que instala como parte del stack si no lo tienes).
Esto me generó dudas al principio porque tengo nginx para otras cosas. Lo que hice:
- Dokploy gestiona sus aplicaciones a través del Traefik interno
- nginx sigue gestionando los servicios que monté antes (homelab-es, etc.)
- Coexisten sin problema en puertos diferentes
Para nuevas apps, ya no configuro nginx manualmente. Dokploy lo hace.
Base de datos con un click#
Antes de Dokploy, crear una base de datos nueva para un proyecto era: docker run postgres, configurar red, crear usuario, anotar la cadena de conexión, añadirla al .env…
Con Dokploy: Settings → Databases → Create → PostgreSQL → nombre → Create.
Aparece la connection string directamente para copiar. Si la app está en el mismo proyecto de Dokploy, puedes inyectarla como variable de entorno automáticamente.
Los backups también se configuran desde ahí: bucket S3 (o compatible) y programación cron. Yo lo tengo apuntando a un bucket de Backblaze B2.
Gestión multi-servidor#
Dokploy soporta añadir servidores remotos. Desde el mismo panel de Phatt puedo desplegar aplicaciones en los nodos del cluster K3s o en cualquier otra máquina con Docker.
En mi caso lo uso para desplegar algunas apps en las ZimaBoards del cluster. El agente de Dokploy se instala en el servidor remoto con un comando que genera la UI, y ya aparece disponible como destino de deploy.
No es tan sofisticado como un orquestador serio, pero para un homelab donde quieres tener varias máquinas sin complicarte la vida es suficiente.
Recursos: qué consume Dokploy#
En Phatt, donde tengo recursos de sobra, no noto nada. Pero lo he consultado:
| |
Total: menos de 450MB en reposo. Para una máquina de producción ajustada sería un 10% de un sistema con 4GB de RAM. Razonable para lo que hace.
Lo que no me gusta#
No todo es perfecto.
El soporte de Swarm es parcial. Puedes desplegar stacks, pero la visibilidad de los servicios Swarm que creaste fuera de Dokploy es limitada. Si tienes servicios existentes en Swarm, Dokploy no los “adopta” automáticamente.
La gestión de redes Docker puede ser confusa si tienes configuraciones existentes. El stack de Dokploy crea sus propias redes y a veces hay que ajustar manualmente para que apps externas puedan comunicarse.
Sin soporte nativo para Kubernetes. Si tienes K3s o un cluster completo, Dokploy no es tu herramienta. Para eso sigues necesitando kubectl, Lens, o Rancher.
El sistema de notificaciones es básico. Email o webhooks, nada de Telegram/Slack nativo (aunque puedes montarlo con webhooks genéricos).
Comparativa rápida#
| Feature | Dokploy | Portainer | Coolify |
|---|---|---|---|
| Git deploy | Si | Limitado | Si |
| TLS automático | Si | No | Si |
| Docker Swarm | Si (nativo) | Si | Limitado |
| Kubernetes | No | Si | No |
| Multi-servidor | Si | Si (Enterprise) | Si |
| Precio | Gratis | Freemium | Freemium |
| Uso de RAM | ~450MB | ~200MB | ~800MB+ |
| Curva de aprendizaje | Baja | Media | Media |
Cuándo usar cada uno#
Dokploy si:
- Gestionas apps con Docker Compose o Swarm
- Quieres git deploy sin complicarte
- Usas bases de datos y quieres gestión integrada
- Tu homelab son uno o varios servidores, no un cluster Kubernetes
Portainer si:
- Necesitas visibilidad granular de contenedores individuales
- Tienes Kubernetes y necesitas gestionar ambas cosas
- Ya lo conoces y no tienes razón para cambiar
Coolify si:
- Tu flujo está muy orientado a git y ramas
- Despliegas principalmente aplicaciones web con buildpacks
- No usas Docker Swarm
Instalación paso a paso#
Si quieres probarlo en tu homelab:
| |
El script hace todo: descarga las imágenes, crea el stack, configura las redes. En 3-5 minutos tienes la UI en http://tu-ip:3000.
Primera vez que entras, registras el usuario administrador (el primero en registrarse es admin automáticamente). Sin configuración adicional ya puedes empezar a crear proyectos.
Para asegurar la interfaz detrás de un dominio propio con HTTPS:
- Configura un subdominio que apunte a tu servidor (o usa Cloudflare Tunnel como en el post anterior)
- En Dokploy → Settings → Server → Domain, pon tu dominio
- Activa Let’s Encrypt
- Reinicia el stack
Conclusión#
Dokploy no va a reemplazar Kubernetes si necesitas Kubernetes. Tampoco va a reemplazar Portainer si lo que necesitas es gestión de contenedores a nivel granular.
Pero para lo que hace la mayoría de nosotros en el homelab: desplegar apps con Compose, gestionarlas sin tocar la terminal cada vez, tener TLS automático y git deploy: Dokploy cubre el 90% con mucha menos fricción que las alternativas.
Lleva menos de un año de desarrollo activo y ya está en v0.26.6. El ritmo de actualizaciones es rápido. Es de las herramientas que tienen pinta de quedarse.
Si tienes Portainer instalado y te preguntas si hay algo más ágil para el día a día, dale una oportunidad a Dokploy. La instalación es reversible y en media hora sabes si es para ti.
