Why a visual Docker Compose manager
Once you start running more than a handful of Docker Compose stacks, the workflow of SSH-ing into each server, navigating to the right directory, and running docker compose up -d or docker compose logs quickly becomes tedious. Dockge centralises all of this in a single browser tab: you see every stack, its live status, and its logs at a glance. Creating a new stack is a form — you paste in your compose.yaml and hit Start. No file manager, no SSH.
What self-hosted Dockge gives you
- Visual editor for
compose.yamlfiles — create or edit stacks directly in the browser with syntax highlighting. - One-click start, stop, restart and update for each stack — no need to SSH or memorise compose commands.
- Live log streaming per stack and per container, with colour-coded output.
- Real-time status dashboard showing which stacks are running, stopped or in error.
- Multi-instance support (v1.4+): manage Dockge instances on remote Docker hosts from a single primary UI.
- Runs as a single container under 150 MB RAM — safe to add to any existing VPS without impacting running workloads.
Requirements
A VPS with Ubuntu 22.04 (or Debian 12) and Docker + Docker Compose v2 already installed. Dockge itself needs under 150 MB RAM and a few MB of disk for its SQLite database. No domain name is required — Dockge serves its UI on port 5001 over plain HTTP, accessible via your server's IP. If you want HTTPS, place a Caddy or Nginx reverse proxy in front and issue a Let's Encrypt certificate.
Deploy Dockge with Docker Compose
Create the stacks directory
Dockge stores every stack it manages as a
compose.yamlfile under a dedicated directory on the host —/opt/stacksby default. Create it before starting the container:mkdir -p /opt/stacks. Dockge mounts this directory inside the container so files survive container restarts and upgrades.Write the Compose file
Create
/opt/dockge/compose.yamlwith the following content. The container mounts the Docker socket (/var/run/docker.sock) so it can manage other containers on the same host, the/opt/stacksdirectory so it can read and write stack files, and a named volume for its own SQLite database. SetDOCKGE_STACKS_DIRto match the host path you chose.Start Dockge
Run
docker compose up -dinside/opt/dockge. The image (louislam/dockge:1) is about 200 MB on first pull. Once running, openhttp://<your-server-ip>:5001in your browser. Dockge will prompt you to create an admin account on the first visit — set a strong password immediately.Add your first stack
Click « + Compose » in the Dockge UI, give the stack a name (this becomes the subdirectory under
/opt/stacks), paste yourcompose.yamlcontent, and hit Start. Dockge runsdocker compose up -dunder the hood and shows you the live pull and startup logs. The stack appears in the dashboard with green status once all services are healthy.Optional: restrict access with a reverse proxy
By default Dockge listens on all interfaces on port 5001. To avoid exposing it to the internet, either bind it to
127.0.0.1:5001in the Compose file (add"127.0.0.1:5001:5001"to ports) and proxy it with Caddy or Nginx, or add aufwrule to allow port 5001 only from your IP:ufw allow from <your-ip> to any port 5001. Never expose the Dockge UI to the public internet without authentication.Logging in for the first time
Open the URL: Dockge shows a screen for creating the administrator account (there are no default credentials). Create it straight away, with a strong password.
The web console is disabled by default — keep it that way
Dockge v1.5.0 disabled the built-in terminal console (web shell access) by default after a security advisory (GHSA-7vx4-hf96-mqq6). Do not enable it on a public-facing instance unless you fully understand the risk. The rest of Dockge — stack management, logs, status — is fully functional without the console. If you need shell access, use a proper SSH session or a dedicated terminal tool.