dokku

``

Conceptos Relacionados

  • cloud
  • PaaS platform as a service
  • Infraestructura

Enlaces Oficiales y Documentación

¿Qué es Dokku?

Dokku es una plataforma PaaS autoalojada y minimalista que permite desplegar aplicaciones de forma similar a Heroku, pero sobre tu propia infraestructura. Está diseñada para ser ligera, simple y fácil de operar en un solo servidor, aunque puede escalar con configuraciones adicionales.

Se apoya principalmente en:

  • Docker como motor de contenedores
  • Git como mecanismo de despliegue
  • Plugins para extender funcionalidades (bases de datos, TLS, logs, backups, etc.)

Filosofía y Enfoque

Dokku prioriza:

  • Simplicidad operativa
  • Bajo consumo de recursos
  • Control total de la infraestructura
  • Curva de aprendizaje menor frente a PaaS más complejos

Está pensado para desarrolladores que quieren:

  • Evitar la complejidad de Kubernetes
  • No depender de proveedores PaaS propietarios
  • Mantener una experiencia de despliegue basada en git push

Arquitectura General

Dokku funciona como una capa de orquestación ligera sobre Docker.

Componentes clave:

  • Servidor Linux (normalmente Ubuntu)
  • Docker Engine
  • Dokku Core
  • Sistema de plugins
  • Proxy HTTP integrado (Nginx)

Flujo general:

  • El código se envía vía Git
  • Dokku construye la imagen (buildpacks o Dockerfile)
  • Se crea un contenedor por aplicación
  • El proxy enruta el tráfico al contenedor activo

Modelo PaaS

Dokku implementa un modelo Platform as a Service enfocado a:

  • Despliegue automático
  • Gestión de variables de entorno
  • Manejo de dominios y SSL
  • Escalado básico de procesos
  • Integración con servicios externos

Comparado con otros PaaS:

  • Más simple que OpenShift
  • Menos abstracto que Heroku
  • Más manual que plataformas fully-managed

Gestión de Aplicaciones

Cada aplicación en Dokku:

  • Vive como uno o varios contenedores Docker
  • Puede escalar procesos horizontalmente
  • Tiene su propio conjunto de variables de entorno
  • Puede vincularse a servicios vía plugins

Características principales:

  • Deploy por Git
  • Rollbacks básicos
  • Logs centralizados por app
  • Aislamiento entre aplicaciones

Plugins y Extensibilidad

Dokku es altamente extensible mediante plugins.

Tipos comunes de plugins:

  • Bases de datos (PostgreSQL, MySQL, Redis, MongoDB)
  • SSL (Let’s Encrypt)
  • Backups
  • Monitoring
  • Storage persistente

Los plugins permiten:

  • Provisionar servicios con un solo comando
  • Vincular servicios a aplicaciones
  • Gestionar lifecycle de recursos

Networking y Proxy

Dokku incluye un proxy HTTP basado en Nginx que:

  • Maneja múltiples dominios
  • Soporta HTTPS
  • Redirige tráfico a contenedores activos
  • Permite customización avanzada si es necesario

El enrutamiento se basa en:

  • Hostnames
  • Puertos internos de contenedores
  • Configuración automática al hacer deploy

Almacenamiento y Persistencia

Por defecto, los contenedores son efímeros.

Para persistencia:

  • Volúmenes Docker
  • Plugins de storage
  • Servicios externos

Casos comunes:

  • Datos de bases de datos
  • Archivos subidos por usuarios
  • Assets generados en runtime

Seguridad

Aspectos de seguridad en Dokku:

  • Aislamiento por contenedores
  • Control de acceso vía SSH
  • Integración con TLS automático
  • Variables de entorno protegidas

Buenas prácticas:

  • Actualizar el sistema y Dokku regularmente
  • Usar usuarios SSH específicos
  • Separar servicios críticos
  • Limitar exposición de puertos

Casos de Uso Comunes

Dokku es ideal para:

  • Proyectos personales
  • MVPs
  • Startups en etapas tempranas
  • Entornos de staging
  • Equipos pequeños

No es ideal para:

  • Infraestructuras multi-cluster
  • Orquestación avanzada
  • Autoescalado complejo

Relación con Infraestructura

Dokku se sitúa entre:

  • Infraestructura tradicional
  • PaaS completamente gestionado

Ofrece:

  • Más control que un PaaS comercial
  • Menos complejidad que una infraestructura manual
  • Un punto intermedio para aprender DevOps práctico

Comparación Conceptual

Dokku vs Kubernetes:

  • Dokku: simplicidad, rapidez, menor coste
  • Kubernetes: flexibilidad, escalado masivo, complejidad alta

Dokku vs Heroku:

  • Dokku: autoalojado, sin costes por dyno
  • Heroku: gestionado, más abstracto, coste recurrente