sol2docker
sol2docker is a self-hosted web UI for managing Docker — standalone hosts and
Swarm clusters — from one place. It ships as a single Docker image: one container
serves the UI and a /api/v2 control-plane, and talks to your Docker daemons over the
Engine API.
It runs live against real Docker daemons — there is no mock layer and no agent required to get started. Point it at a socket (or a remote TCP/TLS/SSH endpoint) and you manage what's really there.
What it does
- Environments & fleet — manage many Docker endpoints (unix socket, TCP, TLS client-cert, SSH), with a cross-environment dashboard and uptime history.
- Containers, images, volumes, networks — full lifecycle, live logs and stats, an interactive terminal, and a file browser — for standalone hosts.
- Compose & Swarm — deploy stacks from pasted YAML or a git repo; manage services, tasks, nodes, secrets and configs, with rollout/rollback and cluster-wide logs.
- Operations — every long or destructive action is a tracked job with streamed logs and an audit entry.
- Access control — local login with TOTP 2FA, OIDC/SSO, API tokens, and server-enforced RBAC.
- Platform — private registries, deploy-from-git credentials, inbound webhooks, notifications (Slack / webhook / email), schedules, and backup/restore.
See the full capability list for the details.
What this documentation covers
These docs are about running sol2docker — installing it, deploying it, and configuring it — plus the concepts specific to the product. They are not a Docker or Swarm tutorial; familiarity with Docker is assumed.
New to sol2docker? Go straight to Installation — one command gets you a running instance.
The single-image model
Everything runs in one container — the ghcr.io/sol2docker/sol2docker
image. It mounts your Docker socket, keeps its
own state in a /data volume (SQLite), and publishes one port. Configuration is entirely
environment-driven via SOL2DOCKER_* variables — see Configuration.
Some per-node features in a Swarm (cross-node image inventory, live per-node metrics) need a small optional node agent — everything else works without it.