Try describing what you need:

compose-farm logo

compose-farm

★ 319

A self-hosted alternative to Vercel Heroku

MIT LicenseOpen Source — No Paywall2 Containers — 2 containers — light hosting footprintPackage · Docker · SourceNo external DB2+ active committers (12mo)

About

Compose Farm is a CLI-first tool for people who manage Docker Compose stacks across more than one host and want to keep that workflow close to plain Compose. It is designed as an agentless layer over...

Community Ratings

No ratings yet

Features

  • multi-host Docker Compose execution
  • SSH-based agentless operation
  • declarative stack reconciliation
  • stack migration between hosts
  • Traefik file-provider config generation
  • configuration of single-host and multi-host setups
  • auto-migration
  • plugin system
  • host resource monitoring
  • web UI

Details

Last Updated
Nov 10, 2026
Created
Dec 11, 2025
Install Methods
package-managerdockersource
Requirements
Python 3.11+SSH key-based authentication (ssh-agent)DockerDocker Composeshared storage accessible at the same path on all hostsexternal Docker networks on all hosts
Authentication
local
Backup & Export
native-export
Privacy & Independence
No Cloud RequiredOffline Capable
Deployment

Deployment: Docker Compose ✓2 Containers — light hosting footprintRuns as 2 containers

Run compose-farm yourself

Pick how much you want to manage.

1 more way to host

Some links earn us a commission. netcup pays us one and is our preferred VPS host.

Is this your project? Sponsor a listing

Run compose-farm with Docker Compose

Compose file from the compose-farm project repository.

2 services

no resource limits declared

needs persistent storage (5 volumes)

docker-compose.yml · @ 5be8881 · scanned Nov 3, 2026

services:
  cf:
    image: ghcr.io/basnijholt/compose-farm:latest
    # Run as current user to preserve file ownership on mounted volumes
    # Set CF_UID=$(id -u) CF_GID=$(id -g) in your environment or .env file
    # Defaults to root (0:0) for backwards compatibility
    user: "${CF_UID:-0}:${CF_GID:-0}"
    volumes:
      # Compose directory (contains compose files AND compose-farm.yaml config)
      - ${CF_COMPOSE_DIR:-/opt/stacks}:${CF_COMPOSE_DIR:-/opt/stacks}
      # Persist known_hosts and optional dedicated keys. Choose option 1 or 2
      # (use the same option for both cf and web services):
      # Option 1: Host path (default) - keys at ~/.ssh/compose-farm/id_ed25519
      - ${CF_SSH_DIR:-~/.ssh/compose-farm}:${CF_HOME:-/root}/.ssh/compose-farm
      # Option 2: Named volume - managed by Docker, shared between services
      # - cf-ssh:${CF_HOME:-/root}/.ssh
      # Optional: add SSH agent forwarding while keeping a persistent mount above
      # - ${SSH_AUTH_SOCK}:/ssh-agent:ro
    environment:
      - SSH_AUTH_SOCK=/ssh-agent
      # Config file path (state stored alongside it)
      - CF_CONFIG=${CF_COMPOSE_DIR:-/opt/stacks}/compose-farm.yaml
      # HOME must match the user running the container for SSH to find keys
      - HOME=${CF_HOME:-/root}
      # Default SSH username for hosts without an explicit user.
      - USER=${CF_USER:-root}

  web:
    image: ghcr.io/basnijholt/compose-farm:latest
    restart: unless-stopped
    command: web --host 0.0.0.0 --port 9000
    # Run as current user to preserve file ownership on mounted volumes
    user: "${CF_UID:-0}:${CF_GID:-0}"
    volumes:
      - ${CF_COMPOSE_DIR:-/opt/stacks}:${CF_COMPOSE_DIR:-/opt/stacks}
      # Persist known_hosts and optional dedicated keys - use the SAME option as cf above
      # Option 1: Host path (default)
      - ${CF_SSH_DIR:-~/.ssh/compose-farm}:${CF_HOME:-/root}/.ssh/compose-farm
      # Option 2: Named volume
      # - cf-ssh:${CF_HOME:-/root}/.ssh
      # Optional: add SSH agent forwarding while keeping a persistent mount above
      # - ${SSH_AUTH_SOCK}:/ssh-agent:ro
      # XDG config dir for backups and image digest logs (persists across restarts)
      - ${CF_XDG_CONFIG:-~/.config/compose-farm}:${CF_HOME:-/root}/.config/compose-farm
    environment:
      - SSH_AUTH_SOCK=/ssh-agent
      - CF_CONFIG=${CF_COMPOSE_DIR:-/opt/stacks}/compose-farm.yaml
      # Used to detect self-updates and run via SSH to survive container restart
      - CF_WEB_STACK=compose-farm
      # Remote access requires a password unless CF_WEB_NO_AUTH=1 is explicitly set.
      - CF_WEB_USERNAME=${CF_WEB_USERNAME:-admin}
      - CF_WEB_PASSWORD=${CF_WEB_PASSWORD:-}
      - CF_WEB_NO_AUTH=${CF_WEB_NO_AUTH:-}
      # HOME must match the user running the container for SSH to find keys
      - HOME=${CF_HOME:-/root}
      # Default SSH username for hosts without an explicit user.
      - USER=${CF_USER:-root}
    labels:
      - traefik.enable=true
      - traefik.http.routers.compose-farm.rule=Host(`compose-farm.${DOMAIN}`)
      - traefik.http.routers.compose-farm.entrypoints=websecure
      - traefik.http.routers.compose-farm-local.rule=Host(`compose-farm.local`)
      - traefik.http.routers.compose-farm-local.entrypoints=web
      - traefik.http.services.compose-farm.loadbalancer.server.port=9000
    networks:
      - mynetwork

networks:
  mynetwork:
    external: true

volumes:
  cf-ssh:
    # Only used if Option 2 is selected above

This file may be out of date. Check the compose-farm website for current setup steps.

Track your self-hosted stack

Bookmark software to try, rate tools you've used, and keep your collection in one place.

Metadata extracted from README on Sep 29, 2026

Alternatives to compose-farm

Dockge logo

Dockge

24.8k
Dockge is a self-hosted, reactive web UI for managing Docker Compose stacks, including editing, starting, stopping, and updating compose files.
Self Hosting SolutionsPlatform as a ServiceAutomation Tools+1
Single ContainerFully FOSS
Details
Cloud Seeder logo

Cloud Seeder

199
A one-click server appliance wizard for self-hosting containerized applications.
Self Hosting SolutionsAutomation ToolsPlatform as a Service
Source AvailableCloud Required
Details
Tipi logo

Tipi

9.7k
A personal homeserver orchestrator for managing and running multiple services on a single server through a web interface.
Self Hosting SolutionsPersonal DashboardsPlatform as a Service+2
Details
once logo

once

2.0k
ONCE is a platform for installing and managing Docker-based web applications, with automatic updates, backups, and a TUI/CLI for self-hosting operations.
Self Hosting SolutionsAutomation ToolsPlatform as a Service
Details
wagmios logo

wagmios

57
WAGMIOS is a self-hosted Docker management platform that lets scoped API keys and AI agents install apps, manage containers, and control a homelab through a REST API.
Self Hosting SolutionsAutomation ToolsAI Agents
2 Containers
Details
CapRover logo

CapRover

15.2k
CapRover is a deployment platform and webserver manager for NodeJS, Python, PHP, ASP.NET, Ruby, and common databases.
Platform as a ServiceSelf Hosting SolutionsWeb Servers+4
Not FOSS
Details
DockSTARTer logo

DockSTARTer

2.6k
DockSTARTer is a command-line tool that helps users quickly set up and manage Docker-based applications and configurations.
Self Hosting SolutionsPermissive LicenseAutomation Tools
Details
Peon logo

Peon

103
Peon is an open-source, self-hostable deployment platform for deploying Git apps, Docker Compose stacks, databases, and static sites to servers you control.
Platform as a ServiceSelf Hosting SolutionsAutomation Tools+1
6 ContainersFully FOSS
Details
Dokku logo

Dokku

32.2k
Dokku is a Docker-powered mini-Heroku PaaS for deploying and managing applications on a self-hosted server.
Platform as a ServiceSelf Hosting SolutionsPermissive License
Details
Termix logo

Termix

16.0k
Termix is an open-source, self-hosted server management platform for managing servers and infrastructure through a single interface.
Remote AccessWeb File ManagersPersonal Dashboards+4
Details
Dokploy logo

Dokploy

38.5k
Dokploy is a self-hostable Platform as a Service for deploying and managing applications and databases.
Platform as a ServiceSelf Hosting SolutionsPermissive License+4
FOSS with Issues
Details

Related Software

godoxy logo

godoxy

4.2k
A lightweight reverse proxy with a WebUI for managing routes, containers, and Proxmox resources.
Web ServersPermissive LicenseProxy Servers+2
Details
Nginx Proxy Manager logo

Nginx Proxy Manager

34.7k
A Docker-based Nginx reverse proxy manager with a web admin interface for forwarding hosts and managing SSL certificates.
Web ServersPermissive LicenseProxy Servers+3
Details
PlugNPiN logo

PlugNPiN

71
PlugNPiN automatically syncs Docker containers with Pi-hole or AdGuard Home DNS entries and Nginx Proxy Manager proxy hosts based on container labels.
Network Utilities
2 Containers
Details
HomeServerHQ logo

HomeServerHQ

73
HomeServerHQ is an all-in-one home server infrastructure and management utility that installs and configures a home server, relay server, and supporting open source services.
Self Hosting SolutionsCopyleft LicenseWeb Servers+3
Details
piku logo

piku

6.6k
piku is a lightweight micro-PaaS that lets users deploy applications to their own servers with git push.
Platform as a ServiceSelf Hosting SolutionsAutomation Tools+1
Details
Uptime Kuma logo

Uptime Kuma

93.6k
Uptime Kuma is an easy-to-use self-hosted monitoring tool for checking service and server uptime.
Status PagesNetwork UtilitiesAutomation Tools+3
Single ContainerFully FOSS
Details
go-doxy logo

go-doxy

4.2k
A lightweight reverse proxy with a WebUI for managing container routes, access control, and automation.
Web ServersPermissive LicenseProxy Servers+3
Details
Dozzle logo

Dozzle

14.9k
Dozzle is a lightweight web-based application for monitoring Docker logs in real time.
Self Hosting SolutionsFully FOSS
10 ContainersTelemetry: Opt-OutFully FOSS
Details
Traefik logo

Traefik

65.5k
Traefik is a modern HTTP reverse proxy and load balancer for deploying microservices.
Web ServersPermissive LicenseProxy Servers+2
2 Containers
Details
SWAG (Secure Web Application Gateway) logo

SWAG (Secure Web Application Gateway)

3.8k
SWAG is a LinuxServer.io container that provides an Nginx reverse proxy with PHP support, automated SSL certificate generation/renewal, and fail2ban-based intrusion prevention.
Web ServersProxy ServersSelf Hosting Solutions+4
Details
Beszel logo

Beszel

27.3k
Beszel is a lightweight server monitoring platform with Docker statistics, historical metrics, alerts, and a web dashboard.
Self Hosting SolutionsNetwork UtilitiesPersonal Dashboards+1
Single Container
Details