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.yaml file under a dedicated directory on the host — /opt/stacks by 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.yaml with 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/stacks directory so it can read and write stack files, and a named volume for its own SQLite database. Set DOCKGE_STACKS_DIR to match the host path you chose.
Start Dockge
Run docker compose up -d inside /opt/dockge. The image (louislam/dockge:1) is about 200 MB on first pull. Once running, open http://<your-server-ip>:5001 in 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 your compose.yaml content, and hit Start. Dockge runs docker compose up -d under 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:5001 in the Compose file (add "127.0.0.1:5001:5001" to ports) and proxy it with Caddy or Nginx, or add a ufw rule 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.