Ctrl K
ComunidadGuías…
GITHUB · ANALIZADO

compose-farm

Herramienta CLI y web para ejecutar comandos Docker Compose en múltiples hosts mediante SSH sin agentes. Permite gestión declarativa de stacks distribuidos con un único comando cf apply, manteniendo archivos YAML nativos versionables.

Ficha actualizada 18 sept 2026, 21:20 · upstream 29 ago 2026, 22:49 · release v1.21.5

Ver códigoProblemas y ayudaRepositorio ↗Sitio oficial
00

Qué es compose-farm

Descripción editorial construida a partir del repositorio, su documentación y sus señales de mantenimiento.

Compose Farm es una herramienta de automatización diseñada para ejecutar comandos Docker Compose a través de múltiples hosts utilizando SSH, eliminando la necesidad de instalar agentes en los nodos remotos. Su enfoque declarativo permite definir dónde se ejecutan los stacks en un archivo de configuración, y al ejecutar cf apply, el sistema reconcilia el estado real con la configuración deseada: inicia stacks ausentes, migra stacks a nuevos hosts o detiene aquellos eliminados.

La herramienta funciona como un envoltorio de conveniencia que automatiza lo que se haría manualmente mediante SSH. No introduce cambios en los archivos docker-compose.yml existentes y soporta tanto despliegues locales como distribuidos. Incluye una interfaz web para gestión visual y generación automática de configuración para Traefik mediante su proveedor de archivos.

Sus requisitos técnicos incluyen Python 3.11+, autenticación SSH basada en claves, Docker instalado en todos los hosts y almacenamiento compartido accesible por todos los nodos (NFS, Syncthing, etc.). No proporciona red overlay entre hosts ni descubrimiento de servicios automático, requiriendo que las dependencias se mantengan en el mismo host o se comuniquen mediante direcciones IP.

CASOS DE USO
  • Gestión declarativa de múltiples stacks Docker distribuidos en diferentes servidores
  • Migración automática de contenedores entre hosts al modificar la configuración
  • Generación de configuración para Traefik File Provider para routing multihost
  • Despliegue inicial y actualización de infraestructura sin agentes persistentes
PUNTOS DESTACADOS
  • Agentless: solo SSH, sin agentes que instalar en los hosts remotos
  • Compatibilidad nativa con archivos docker-compose.yml existentes sin modificaciones
  • Reconciliación declarativa con cf apply para iniciar, migrar o detener stacks
  • Interfaz web incluida para gestión visual de stacks y configuración
PRECAUCIONES
  • No proporciona red overlay entre hosts; los servicios no pueden comunicarse por nombre de contenedor en diferentes nodos
  • Requiere almacenamiento compartido accesible en el mismo path en todos los hosts (NFS, Ceph, etc.)
  • No realiza descubrimiento automático de dependencias entre archivos docker-compose distintos
  • Los servicios que requieren comunicación cross-host deben exponer puertos y usar direcciones IP
01

Perfil de infraestructura

Estimación inicial derivada del repositorio y de los servicios detectados.

CPU4 vCPUrecomendación inicial
MEMORIA4 GBRAM estimada
DISCO30 GBalmacenamiento base
COMPLEJIDADhighnivel de operación
02

Despliegue detectado

Qué señales reales de instalación hemos encontrado.

Docker Compose detectado

Configurar autenticación SSH robusta (ssh-agent o claves dedicadas). Usar almacenamiento compartido como NFS o carpetas sincronizadas. Mantener servicios dependientes en el mismo host para evitar problemas de red. Inicializar redes externas con cf init-network si es necesario. Considerar no-root user con variables CF_UID/CF_GID para mounts NFS.

✓Dockerfile
✓Compose
—One-click
03

Stack y dependencias

Componentes inferidos a partir de manifests, configuración y documentación.

FRAMEWORKS
Node.jsFastAPIPython
SERVICIOS
PostgreSQLRedis
BASES DE DATOS
PostgreSQLRedis
PUERTOS
32400
05

Puede sustituir a

Relaciones detectadas por el análisis del repositorio y su categoría.

06

Experiencia real de la comunidad

Ayuda a contrastar la estimación automática con instalaciones reales.

Todavía no hay datos comunitarios para este proyecto.