Files
hermes-recovery/references/docker-management-research.md

18 KiB

Docker Management — Multi-Host Tool Research

Date: 2026-07-09 Context: IT Pro Partner runs Docker Compose stacks across multiple servers (Core/netcup, ai.itpropartner.com, docker, unms, etc.). We need a single tool to manage all containers across hosts. Mixed environment of Docker Compose stacks (no Swarm/Kubernetes).


Evaluation Criteria (Priority Order)

  1. Recovery manual completeness — can Germaine use it without Sho'Nuff?
  2. Multi-host support — can it see/manage containers on different servers?
  3. CLI/API access — can I script against it from Hermes?
  4. Self-hosted — runs on our infrastructure, not SaaS
  5. Free/open source — no subscription fees for personal use
  6. Web GUI — nice bonus, not required
  7. Webhook support — can trigger actions from external events

Tool Comparison Table

Feature Portainer Arcane Komodo Dockge Dockhand Lazydocker
Self-hosted Yes Yes Yes Yes Yes (local TUI)
Free tier 3 nodes BE free 100% FOSS 100% FOSS 100% FOSS Homelab free FOSS
Multi-host Agent-based Agent-based Agent-based Agents (v1.4+) Agent/TLS Single host
REST API Full API OpenAPI 3.1 REST + WebSocket No API Roadmap (distant)
Web GUI (1-5) (TUI)
Setup complexity Easy Easy Medium Easy Easy Very Easy
License Proprietary (BE) / MIT (CE) BSD-3-Clause GPL-3.0 MIT BSL 1.1 → Apache 2.0 (2029) MIT
Stars ~30k 6.3k ~3k 23.7k 5.1k 38.7k
Webhooks Yes Yes Yes No Yes No
Compose focus Yes Yes Yes Compose-only Yes Container focus
Swarm support Yes Yes Yes No Not mentioned No
K8s support Yes No No No No No

1. Portainer

Website: https://www.portainer.io/ Docs: https://docs.portainer.io/ GitHub: https://github.com/portainer/portainer

Overview

Industry-standard Docker management UI. Mature, battle-tested, vast ecosystem. Used by teams of all sizes.

Pricing

  • Business Edition (BE) — 3 nodes free forever (full features, no time limit, requires annual license key renewal but $0)
  • Home & Student — $155/yr for up to 15 nodes (non-commercial only)
  • Business Starter — $105/mo for 5 nodes (commercial)
  • Business Scale — $209/mo for 5 nodes
  • Community Edition (CE) — Free forever but missing RBAC, GitOps, templates, and other BE features

Multi-host Support

Yes — via Portainer Agent (lightweight Go daemon on each remote host). Agent connects to Portainer Server. Also supports Docker API over TCP/TLS directly.

REST API

Excellent — comprehensive REST API with Swagger/OpenAPI docs. All UI actions available via API. Official Go client library.

Setup Complexity: Easy

docker run -d -p 9001:9001 --name portainer_agent --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /var/lib/docker/volumes:/var/lib/docker/volumes \
  portainer/agent:latest

One command per remote host, add environment in Portainer UI.

Recovery Documentation: Excellent

Pros

  • Most mature, most documented
  • Free 3-node BE tier covers our needs
  • Comprehensive REST API for Hermes scripting
  • Agent auto-updates, mTLS support
  • Webhooks for GitOps/auto-deploy

Cons

  • Beyond 3 nodes requires payment
  • Can feel heavy/bloated for simple Compose management
  • CE version lacks features (use BE free tier instead)
  • Proprietary license (BE requires license key renewal)

2. Arcane (Strong Contender)

Website: https://getarcane.app/ Docs: https://getarcane.app/docs/setup/installation GitHub: https://github.com/getarcaneapp/arcane Live Demo: https://demo.getarcane.app/

Overview

Modern Docker management UI built with SvelteKit (frontend) + Go (backend). BSD-3-Clause licensed. Clean, fast, well-designed. Gaining traction rapidly (6.3k stars, 70 contributors).

Pricing

  • 100% free and open source — BSD-3-Clause license
  • No paid tiers, no feature gating
  • Mobile app (iOS TestFlight beta) — also free

Multi-host Support

Yes — via Arcane Agent on remote hosts. Two connection modes:

  • Direct — Manager connects to Agent on TCP 3553 (requires inbound port)
  • Edge — Agent dials out to Manager (for NAT/firewall, no inbound port needed)
  • Transport modes: gRPC tunnel or periodic polling (poll mode for idle environments)

REST API

Excellent — "Fully Documented API" built with Huma on Gin, featuring auto-generated OpenAPI 3.1 documentation. Go client library available.

Setup Complexity: Easy

# Manager (one line)
docker run -d --name arcane -p 3552:3552 -v arcane_data:/data ghcr.io/getarcaneapp/manager:latest

# Agent on each remote host
docker run -d --name arcane-agent -p 3553:3553 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e AGENT_MODE=true \
  -e AGENT_TOKEN=<token> \
  -e MANAGER_API_URL=http://manager:3552 \
  ghcr.io/getarcaneapp/agent:latest

Recovery Documentation: Good

  • Documentation website at getarcane.app
  • Active Discord community
  • Growing collection of guides and tutorials
  • Germaine-friendly: Yes — modern, intuitive UI, good docs

Key Features

  • Container, image, volume, network management
  • Docker Compose stack management
  • Docker Swarm support
  • Image vulnerability scanning (built-in)
  • Image building from Dockerfiles
  • Resource monitoring (CPU, memory, network)
  • RBAC and OIDC/SSO
  • GitOps lifecycle hooks
  • iOS mobile app
  • Webhook triggers

Pros

  • 100% free, no paid tiers ever (BSD-3-Clause)
  • Modern, fast, beautiful UI (SvelteKit)
  • Excellent REST API with OpenAPI 3.1
  • Edge mode for NAT/firewall'd hosts
  • Active development (3k+ commits, frequent releases)
  • Growing community

Cons

  • Newer project (less battle-tested than Portainer)
  • Smaller community (but growing fast)
  • No Kubernetes support (not needed for our use case)
  • No LDAP/AD (OIDC/SSO available)

3. Komodo (Strong Contender)

Website: https://komo.do/ Docs: https://komo.do/docs/intro GitHub: https://github.com/moghtech/komodo Blog Guide: https://blog.saltdata.ro/managing-docker-komodo

Overview

API-first build and deployment system written in Rust (backend) + TypeScript (frontend). GPL-3.0 licensed. Core + Periphery agent architecture. Includes CI/CD pipeline capabilities alongside Docker management.

Pricing

  • 100% free and open source — GPL-3.0
  • No paid tiers, no feature gating
  • Unlimited servers — "There is no limit to the number of servers you can connect, and there never will be."

Multi-host Support

Yes — via Periphery agent on each remote host. Periphery communicates with Core over a bi-directional WebSocket connection. Can run as systemd service, Docker container, or standalone binary.

REST API

Excellent — REST + WebSocket API with multiple client libraries:

  • Komodo CLI (built-in)
  • Rust crate (komodo_client)
  • NPM package (komodo_client)
  • curl examples in docs

Setup Complexity: Medium

  • Core requires MongoDB (or FerretDB/Postgres)
  • Docker Compose file with MongoDB + Core
  • Periphery agent install via Python script or Docker
  • More moving parts than Portainer/Arcane

Recovery Documentation: Good

  • Well-organized docs at komo.do
  • Built-in backup/restore CLI
  • Germaine-friendly: Mostly — UI is clean, but setup is more involved

Key Features

  • Docker container and Compose stack management
  • Docker Swarm management
  • Image building from Dockerfiles (supports AWS EC2 spot instances for build capacity)
  • Git repository management on remote servers
  • Resource Syncs (GitOps) — auto-deploy on git push
  • Procedures — multi-step automation workflows with scheduling
  • Server resource monitoring (CPU, RAM, disk)
  • RBAC with granular permissions
  • OAuth/OIDC authentication
  • Full audit trail of every change
  • Webhook triggers

Pros

  • Feature-rich — more than just Docker management (builds, CI/CD, automation)
  • Excellent API with first-class client libraries (ideal for Hermes scripting)
  • Truly unlimited servers
  • GPL-3.0 open source
  • Active development
  • Backup/restore built-in

Cons

  • Heavier setup (needs MongoDB or FerretDB/Postgres)
  • More complex than needed if we only need Docker management (CI/CD features may go unused)
  • Smaller community than Portainer
  • Rust backend — harder to extend/modify than Go

4. Dockge

Website: https://github.com/louislam/dockge README: https://github.com/louislam/dockge/blob/master/README.md

Overview

Focused Docker Compose stack manager by the creator of Uptime Kuma. MIT licensed. Laser-focused on compose.yaml management rather than general Docker management. Very popular (23.7k stars).

Pricing

  • 100% free and open source — MIT license

Multi-host Support

Yes — since v1.4.0, supports multiple agents. Can manage stacks from different Docker hosts in one interface.

REST API

No documented REST API — UI-focused tool. No API for external scripting.

Setup Complexity: Easy

services:
  dockge:
    image: louislam/dockge:latest
    ports:
      - 5001:5001
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./data:/app/data
      - /opt/stacks:/opt/stacks
    environment:
      - DOCKGE_STACKS_DIR=/opt/stacks

Recovery Documentation: Minimal

  • README only, no dedicated docs site
  • Basic FAQ in README
  • Germaine-friendly: Partially — UI is simple but recovery docs are thin

Key Features

  • Create/Edit/Start/Stop/Restart compose.yaml stacks
  • Interactive compose.yaml editor
  • Interactive web terminal for containers
  • Multi-agent support (v1.4+)
  • Image update button
  • Stack folder scanning

Pros

  • Very simple, focused tool (does one thing well)
  • Beautiful, reactive UI
  • Lightweight and fast
  • Large community (23.7k stars)

Cons

  • Compose-only — cannot manage individual containers, networks, volumes outside compose
  • No REST API — cannot be scripted from Hermes
  • No webhook support
  • No RBAC/authentication (single-user only)
  • No monitoring or alerting
  • README-only documentation
  • "Can I manage existing stacks?" — requires manual file moves

5. Dockhand

Website: https://dockhand.pro/ Manual: https://dockhand.pro/manual/ GitHub: https://github.com/Finsys/dockhand

Overview

Modern Docker management platform with polished Svelte UI. BSL 1.1 licensed (converts to Apache 2.0 in 2029). The code IS source-available but not truly open-source in the free-software sense. 5.1k stars.

Pricing

  • Free tier — all features for homelab use (no RBAC, no LDAP, no commercial use)
  • SMB — $499/host/year
  • Enterprise — $1,499/host/year

Multi-host Support

Yes — three methods:

  1. Local Docker socket (/var/run/docker.sock)
  2. Remote TCP connections with TLS
  3. Hawser agent — lightweight agent for NAT/firewall traversal (similar to Portainer Edge / Arcane Edge)

REST API

⚠️ On roadmap ("distant future") — No working API today. API keys listed as "distant future" on the roadmap. OpenAPI/Swagger also "distant future."

Setup Complexity: Easy

docker run -d --name dockhand -p 3000:3000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v dockhand_data:/app/data \
  fnsys/dockhand:latest

Recovery Documentation: Good

  • Full user manual at dockhand.pro/manual
  • Well-organized documentation
  • Germaine-friendly: Yes — polished UI, good manual

Key Features

  • Container operations (start/stop/restart/create)
  • Visual Compose editor
  • Git repository deployment with webhook auto-sync
  • Vulnerability scanning (Grype/Trivy) with safe-pull protection
  • Live CPU/memory metrics
  • Real-time log streaming
  • OIDC/SSO (free)
  • MFA (TOTP)
  • Hawser agent for NAT traversal
  • RBAC and LDAP/AD (Enterprise only)
  • Multi-environment switching

Pros

  • Most polished modern UI (5/5)
  • 30-second deployment
  • Free for homelab use
  • Hawser agent handles NAT/firewall well
  • Good documentation

Cons

  • No REST API — API/API keys are "distant future" on roadmap. Cannot be scripted from Hermes
  • BSL 1.1 license — not truly open source (converts to Apache 2.0 in 2029)
  • Paid beyond homelab ($499/host/yr for commercial use)
  • RBAC and LDAP/AD only in Enterprise tier ($1,499/host/yr)
  • Smaller community (5.1k stars)
  • Relatively new project (165 commits)

6. Lazydocker

Website: https://lazydocker.com/ GitHub: https://github.com/jesseduffield/lazydocker

Overview

Terminal TUI (Text User Interface) for Docker. MIT licensed. Extremely popular (38.7k stars). Written in Go by the same author as Lazygit. Runs as a local process on a single host.

Pricing

  • 100% free and open source — MIT license

Multi-host Support

No — runs locally on each host. Cannot manage remote Docker hosts from one interface. Each host needs its own Lazydocker instance (or SSH into each host).

REST API

No — it's a terminal application, not a server.

Setup Complexity: Very Easy

# Install
brew install lazydocker  # macOS
# Or Docker one-liner
docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock \
  lazyteam/lazydocker

Recovery Documentation: Minimal

  • README with basic usage
  • Keyboard shortcuts reference
  • Germaine-friendly: Terminal-only — requires comfort with CLI/TUI

Pros

  • Very lightweight and fast
  • Great for quick SSH-and-check sessions
  • Keyboard-navigable, efficient for power users
  • No server infrastructure needed

Cons

  • Single host only — cannot manage our multi-server setup
  • No API — cannot be scripted from Hermes
  • No web GUI — terminal only (not Germaine-friendly)
  • No persistent state or history
  • No user management or RBAC

Recommendation: 🦎 Komodo

Best Fit for IT Pro Partner

Given our criteria and environment:

Criterion Winner Rationale
Recovery completeness Portainer / Komodo Both have excellent docs. Komodo has built-in backup CLI.
Multi-host support All (except Lazydocker) All support agents. Pick based on other criteria.
CLI/API access Komodo REST + WebSocket + 3 client libraries (CLI, Rust, npm) + curl examples. Best API story.
Self-hosted All (except Lazydocker) All run on our infra.
Free/open source Arcane / Komodo Both are 100% free with permissive licenses.
Web GUI Dockhand / Portainer Both have polished UIs. Portainer is more mature.
Webhooks Komodo / Portainer / Arcane All three support webhooks.

Top 3 Contenders (Ranked)

1st: Komodo 🏆

  • Why: Best API story (REST + WS + multiple client libs) makes it ideal for Hermes scripting. Core + Periphery architecture handles our mixed environment. GPL-3.0, truly free. Built-in backup/restore. Webhook triggers for GitOps. Unlimited servers. Server monitoring included.
  • Trade-off: Heavier setup (needs MongoDB). More features than we need if we only want Docker management.

2nd: Arcane 🥈

  • Why: 100% free BSD-3-Clause. Beautiful modern UI. Great multi-host support (Direct + Edge modes). Solid OpenAPI 3.1 REST API. Lightweight Go backend. Built-in vulnerability scanning. iOS mobile app.
  • Trade-off: Newer project with smaller community. Less documentation than Portainer.

3rd: Portainer 🥉

  • Why: Most mature, best documented, largest community. Free 3-node BE tier covers our needs. Comprehensive REST API. Agent is rock-solid.
  • Trade-off: Beyond 3 nodes costs money. Covers our current needs but doesn't scale free. Proprietary license.

Why not the others?

  • Dockge: No API, no webhooks, compose-only. Good for one-off single-user compose management but not for our multi-host, scriptable needs.
  • Dockhand: No API (roadmap item, "distant future"). BSL license. Paid for commercial use. Great UI but cannot be scripted by Hermes.
  • Lazydocker: Single host only. Terminal-only. Good for quick checks but not a management platform.

Implementation Suggestion

Start with Komodo for the API-first multi-host management. If the MongoDB dependency is a concern, Arcane is a strong alternative that's lighter to deploy.

Quick Deploy Comparison

Komodo (on management server):

# docker-compose.yml for Komodo Core
services:
  mongo:
    image: mongo
    restart: unless-stopped
    volumes:
      - ./data/mongo-data:/data/db
  core:
    image: ghcr.io/moghtech/komodo-core:2
    restart: unless-stopped
    ports:
      - 9120:9120
    depends_on:
      - mongo
    volumes:
      - ./backups:/backups
      - ./keys:/config/keys

Komodo Periphery (on each managed host):

curl -sSL https://raw.githubusercontent.com/moghtech/komodo/main/scripts/setup-periphery.py \
  | python3 - \
  --core-address="https://core.itpropartner.com" \
  --connect-as="$(hostname)" \
  --onboarding-key="O-..."

Tool Website Docs GitHub
Portainer https://www.portainer.io/ https://docs.portainer.io/ https://github.com/portainer/portainer
Arcane https://getarcane.app/ https://getarcane.app/docs/setup/installation https://github.com/getarcaneapp/arcane
Komodo https://komo.do/ https://komo.do/docs/intro https://github.com/moghtech/komodo
Dockge https://github.com/louislam/dockge README only https://github.com/louislam/dockge
Dockhand https://dockhand.pro/ https://dockhand.pro/manual/ https://github.com/Finsys/dockhand
Lazydocker https://lazydocker.com/ README only https://github.com/jesseduffield/lazydocker