Guía de despliegue

Alojar Komodo en un VPS: orquestación Docker y GitOps

Desplegar en un VPS Cloud →

Tutorial

Alojar Komodo en un VPS: orquestación Docker y GitOps

Despliegue9 min de lectura13 pasos

Gestionar Docker en un solo servidor es sencillo. En diez servidores, rápidamente se convierte en caos: diez sesiones SSH, diez archivos compose, ningún historial centralizado. Komodo (GPL-3.0, más de 12.000 estrellas en GitHub, v2.x) resuelve este problema con una arquitectura Core/Periphery: un único panel de control para orquestar todos sus servidores, disparar despliegues desde Git y registrar cada acción en un log de auditoría. Escrito en Rust, el Core consume menos de 256 MB en reposo — funciona cómodamente en el VPS más pequeño de ServOrbit.

Contenido· ¿Por qué Komodo en lugar de Portainer o Dockge?1/9
  1. 01¿Por qué Komodo en lugar de Portainer o Dockge?
  2. 02Lo que Komodo aporta más allá de la gestión de contenedores
  3. 03La arquitectura Core/Periphery en la práctica
  4. 04Desplegar Komodo en su VPS ServOrbit
  5. 05GitOps con webhooks: desplegar en cada push
  6. 06Crear un Procedure en Komodo: pull, migración, reinicio
  7. 07Komodo frente a Portainer y Dockge
  8. 08Resolución de problemas: errores comunes y soluciones
  9. 09Komodo + Dockge: lo mejor de los dos mundos

¿Por qué Komodo en lugar de Portainer o Dockge?

Portainer y Dockge son interfaces de un solo servidor: leen el socket Docker local y muestran lo que se ejecuta en esa máquina. En cuanto tiene dos servidores o más, necesita dos pestañas, recordar qué servicio corre en qué máquina y replicar cada cambio manualmente. Komodo supera este límite con su arquitectura Core/Periphery: el Core es un servidor central que dirige agentes Periphery ligeros en cada máquina. Despliega, reinicia o actualiza cualquier stack desde una única interfaz, con un historial completo de quién hizo qué y cuándo.

Lo que Komodo aporta más allá de la gestión de contenedores

  • GitOps nativo — vincule un repositorio Git, defina un Procedure de despliegue y dispárelo automáticamente en cada git push mediante webhook HMAC.
  • Procedures reutilizables — encadene pull de imagen, migración de base de datos, reinicio de stack y notificación de Slack en un único workflow versionable.
  • Docker Swarm — gestione servicios Swarm, réplicas y actualizaciones progresivas desde la misma interfaz que sus stacks Compose.
  • Alertas nativas de Slack/Discord — configure canales de alerta para fallos de despliegue, contenedores detenidos y recursos críticos.
  • RBAC multiusuario — conceda accesos granulares por rol (viewer, builder, deployer) sin compartir la cuenta de administrador.
  • API REST completa — automatice despliegues desde su pipeline CI/CD (GitHub Actions, Woodpecker, Forgejo) sin pasar por la interfaz web.

La arquitectura Core/Periphery en la práctica

El Core es el cerebro: almacena la configuración en FerretDB (una capa compatible con MongoDB), expone la interfaz web en el puerto 9120 y recibe los webhooks. Los agentes Periphery son los brazos: cada uno se ejecuta en un servidor objetivo, expone el socket Docker de la máquina al Core a través de un canal cifrado y ejecuta los comandos que el Core le envía. El par de claves asimétricas generado en la inicialización garantiza que solo su Core puede comandar sus agentes — no hay secretos adicionales que gestionar.

Desplegar Komodo en su VPS ServOrbit

  1. Contrate el VPS

    Un VPS de 1 vCPU / 1 GB RAM con Ubuntu 24.04 LTS es suficiente para el plano de control de Komodo (Core + FerretDB). El Core Rust consume menos de 256 MB en reposo. Si planea ejecutar otros servicios en el mismo VPS, se recomienda 2 GB RAM.

  2. Despliegue desde el marketplace de ServOrbit

    En su área de cliente de ServOrbit, vaya a Marketplace → Despliegue de Aplicaciones y DevOps → Komodo y haga clic en Desplegar. Proporcione un nombre de dominio o subdominio — requerido para KOMODO_HOST. El playbook genera automáticamente los secretos JWT, el par de claves Core/Periphery y la contraseña de administrador, luego inicia los servicios.

  3. Inicie sesión y verifique el agente local

    Abra https://su-dominio.com:9120 e inicie sesión con admin y la contraseña mostrada en su área de cliente. En el menú Servers debería ver un servidor llamado 'Local' ya registrado — este es el agente Periphery en el VPS de alojamiento que se conectó automáticamente al arranque. Cambie su contraseña desde la configuración de la cuenta en esta primera sesión.

  4. Conecte un servidor remoto mediante Periphery

    En cada VPS adicional a gestionar, instale el agente Periphery: docker run -d --restart=unless-stopped --network host -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/moghtech/komodo-periphery:latest. Luego en Komodo, vaya a Servers → Add Server, introduzca la IP del agente y el puerto 8120. Su flota de servidores aparece inmediatamente en el panel.

  5. Cree su primer stack desde el marketplace

    En Komodo, vaya a Stacks → New Stack. Elija el servidor objetivo en el desplegable (Local o cualquier agente añadido), pegue su YAML de Docker Compose o apunte a una ruta de repositorio Git, y haga clic en Deploy. Komodo escribe el archivo en el servidor remoto, ejecuta docker compose up -d y transmite los logs en tiempo real.

  6. Configure alertas de Slack o correo electrónico

    En Komodo, vaya a Alerters → New Alerter. Elija el tipo (Slack, Discord, correo electrónico) y pegue la URL del webhook o la dirección de destino. Luego asocie el alerter a sus recursos (Stacks, Builds, Servers) a través de la sección Alerts de cada recurso. Recibirá una notificación inmediata ante un fallo de despliegue o un contenedor detenido.

  7. Configure un pipeline GitOps

    En su repositorio de GitHub, añada un webhook apuntando a https://su-dominio.com/api/webhook/komodo con el secreto HMAC definido en Komodo. Cree un Procedure llamado 'Deploy App': pull de imagen, reinicio de stack, notificación. Vincule el webhook al Procedure. Cada git push dispara ahora el pipeline — la firma HMAC es verificada por Komodo antes de la ejecución.

  8. Integre su CI/CD mediante la API REST

    Komodo expone una API REST completa en /api. Desde GitHub Actions, dispare un despliegue con una llamada POST /api/execute/procedure/<nombre> y el token API de su cuenta de servicio. Esta integración le permite encadenar pruebas, construcción de imagen y despliegue en un único workflow CI sin acceso directo a la máquina.

GitOps con webhooks: desplegar en cada push

El ciclo GitOps de Komodo se apoya en tres componentes: un repositorio Git, un webhook HTTP y un Procedure. En GitHub, cree un webhook en Settings → Webhooks, apunte a https://su-dominio.com/api/webhook/komodo, elija el tipo de contenido application/json y defina un secreto. En Komodo, en la sección Webhooks de un Stack o Procedure, pegue ese mismo secreto — Komodo calcula el HMAC SHA-256 de cada payload entrante y rechaza las solicitudes cuya firma no coincida.

Un Procedure de despliegue típico encadena tres acciones: PullImage (descarga la última imagen), DeployStack (recrea los contenedores), luego SendAlert (notifica su canal de Slack). Si algún paso falla, Komodo detiene el Procedure y envía el error completo a su alerter — nunca termina con un despliegue parcialmente aplicado en silencio.

Un detalle importante: Komodo valida la rama del push contra la rama configurada en el Stack antes de disparar. Un push a una rama de feature no disparará un despliegue de producción, aunque el webhook apunte a la misma URL. Configure un Stack por entorno (staging en dev, producción en main) y obtendrá un pipeline de promoción completamente automatizado.

Crear un Procedure en Komodo: pull, migración, reinicio

  1. Crear el Procedure

    En Komodo, vaya a Procedures → New Procedure. Asígnele un nombre (deploy-app) y seleccione el servidor objetivo. Un Procedure es una lista ordenada de pasos — cada paso tiene un tipo (PullImage, DeployStack, RunCommand, SendAlert) y parámetros.

  2. Añadir el paso PullImage

    Haga clic en Add Step → PullImage. Introduzca el nombre de la imagen (p. ej. ghcr.io/myorg/myapp:latest) y el servidor donde descargarla. Si su imagen está en un registry privado, añada las credenciales en Settings → Registries antes de este paso — Komodo las inyecta automáticamente durante el pull.

  3. Añadir un comando de migración

    Haga clic en Add Step → RunCommand. En el campo Command, introduzca el comando de migración a ejecutar en el contenedor. Active la opción 'Stop on error': si la migración falla, el Procedure se detiene antes de reiniciar el servicio, evitando dejar una aplicación con un esquema inconsistente.

  4. Añadir el reinicio del stack

    Haga clic en Add Step → DeployStack y seleccione el Stack objetivo. Komodo ejecuta docker compose up -d --pull never (la imagen ya fue descargada en el paso anterior) y recrea los contenedores modificados. Las variables de entorno definidas en el Stack se pasan automáticamente.

  5. Añadir una notificación de finalización

    Haga clic en Add Step → SendAlert y seleccione su Alerter de Slack o Discord. Puede incluir variables de contexto en el mensaje ({{ procedure.name }}, {{ server.name }}) para identificar de un vistazo qué Procedure en qué servidor acaba de ejecutarse.

Komodo frente a Portainer y Dockge

Desplace la tabla

FuncionalidadKomodoPortainer CEDockge
Multi-servidor nativo✅ Core/Periphery ilimitados⚠️ Edge agents (versión de pago)❌ Un solo host
GitOps / webhooks✅ Nativo, HMAC validado❌ No nativo❌ No nativo
Procedures / automatización✅ Motor integrado⚠️ Limitado CE❌ No
API REST✅ Completa✅ Completa❌ No
Alertas nativas✅ Slack, Discord, correo⚠️ Parcial CE❌ No
Log de auditoría✅ Todas las acciones⚠️ Parcial CE❌ No
Licencia / precioGPL-3.0, gratuitoZlib (CE gratuito) / Business de pagoMIT, gratuito

Resolución de problemas: errores comunes y soluciones

Agente Periphery inaccesible. El error más común al añadir un nuevo servidor. Primero verifique que el firewall del servidor remoto permite conexiones entrantes en el puerto 8120 desde la IP de su Core. Luego compruebe que la variable KOMODO_HOST del agente Periphery coincide con la IP o dominio que el Core usa para alcanzarlo.

Error al descargar la imagen. Komodo devuelve este error cuando el registry privado no es accesible o faltan credenciales. Añada sus credenciales en Settings → Registries (Docker Hub, GHCR, registry privado) antes de disparar un pull. Si la imagen es pública y el error persiste, verifique que el servidor objetivo tiene acceso a Internet en el puerto 443.

Webhook no disparado. Dos causas principales: el secreto HMAC configurado en Komodo no coincide con el introducido en GitHub, o la URL de su Core no es accesible desde los servidores de GitHub. Revise la pestaña 'Recent Deliveries' en GitHub para ver el código HTTP devuelto — un 401 indica un secreto incorrecto, un timeout indica un problema de red. Verifique también que la rama del push coincide con la configurada en su Stack o Procedure.

Inicio lento la primera vez (FerretDB). FerretDB realiza una inicialización interna de su base de datos en el primer arranque, lo que puede tardar entre 30 y 60 segundos antes de que la interfaz de Komodo responda. Si ve un error de conexión inmediatamente después del despliegue, espere un minuto y recargue la página antes de diagnosticar un problema de instalación.

Komodo + Dockge: lo mejor de los dos mundos

Komodo y Dockge no se excluyen mutuamente. Dockge es perfecto para la edición interactiva de archivos Compose en una sola máquina (interfaz YAML con resaltado de sintaxis). Komodo gestiona la coordinación multi-servidor, los despliegues desde Git y los workflows. Despliegue Dockge a través de Komodo en sus máquinas de desarrollo, y use Komodo para orquestar los despliegues de producción.

Sus servidores bajo control GitOps

Despliegue Komodo en un VPS ServOrbit y gestione toda su flota Docker desde un panel unificado: GitOps, webhooks y registro de auditoría.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva