👍 What we like
- ✓Lightweight and responsive web interface optimized for Docker Compose stacks
- ✓Integrated interactive editor to modify compose.yaml files directly in the browser
- ✓Real-time log and terminal support
- ✓File-based architecture compatible with standard Docker commands
👎 What to watch
- ✕Only manages Docker Compose stacks, not standalone containers launched with docker run
- ✕Web interface may be less intuitive for beginners compared to more comprehensive solutions like Portainer
- ✕Docker socket access: never expose it directly to the Internet
📑 Contents ▾
- 01 Prerequisites
- 02 Step-by-step installation
- · Step 1: Prepare the system environment
- · Step 2: Configure the stacks directory
- · Step 3: Install Dockge via Docker Compose
- · Step 4: Customize the compose.yaml file
- · Step 5: Set up secure access to Dockge
- · Step 6: Deploy a Docker stack via Dockge
- · Step 7: Update Dockge
- · Step 8: Back up your stacks
- 11 Verification checks
- 12 Security and best practices
- 13 Troubleshooting common errors
- 14 FAQ
- · How do I access Dockge from another Docker host?
- · Is Dockge compatible with all Linux distributions?
- · Can I use Dockge with Podman?
- · How do I restore a Docker stack from a backup?
- 19 Read also
- 20 Host this yourself
Dockge is a self-hosted Docker Compose stack manager designed to simplify container management in a homelab environment. Unlike heavier solutions that store configurations in an internal database, Dockge uses compose.yaml files stored on disk, ensuring portability and compatibility with standard Docker commands. The tool lets you edit, deploy, and monitor stacks directly from a web interface, without manually editing files or using multiple terminals. Dockge is particularly well-suited for users managing a small number of stacks across one or two Docker hosts, offering a lightweight and efficient way to centralize these operations. Installing Dockge requires just a single container, minimizing system footprint and making it ideal for homelabs.
🖥️ Hardware to host it at home — To run this service 24/7 without a big power bill, a low-power mini PC is enough in most cases. Two common picks: the Beelink Mini S12 Pro (Intel N100, 16 GB) and the Beelink EQ14 (Intel N150, dual 2.5 GbE ports). To choose for your needs: our guide to the best mini PCs for a homelab.
Prerequisites
To install and configure Dockge, you will need the following:
- A Linux host with Docker Engine installed (Ubuntu 26.04 or 24.04, Debian Bullseye or newer, or another major distribution supported by Docker)
- A user with sudo privileges on this host
- TCP port 5001 free for Dockge’s web interface
- A dedicated directory for storing your Docker Compose stacks (defaults to
/opt/stacks, but can be customized) - Docker Compose v2 or Podman (if using Podman, install
podman-dockerfor compatibility with Docker) - A web browser to access Dockge’s interface
Step-by-step installation
Step 1: Prepare the system environment
Before installing Dockge, ensure your system is ready to run Docker. Dockge requires Docker Engine to operate, and it’s recommended to use Docker Compose v2 for better integration. If you’re using Podman, install the podman-docker package for compatibility with Docker.
For Docker users, verify that Docker is properly installed and functioning. Dockge runs as a container, so having Docker installed is sufficient to get started. If you’re using a VPS or NAS, make sure Docker is available and that you have a sudo user to manage stacks.
To check if Docker is installed, run the following command:
sudo docker --version
This command should print a Docker version. Also check that the Compose v2 plugin is present with docker compose version.
If Docker is not installed, Docker’s official script installs Docker Engine and the Compose plugin from Docker’s repository (it is also the method given in Dockge’s README):
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Then run sudo docker --version and sudo docker compose version again: both commands should answer without error.
Step 2: Configure the stacks directory
Dockge uses a dedicated directory to store the compose.yaml files for your stacks. By default, this directory is /opt/stacks, but you can customize it if needed. To avoid permission issues, it’s recommended to create this directory with a non-root user.
Create the stacks directory and set the appropriate permissions:
sudo mkdir -p /opt/stacks
sudo chown -R $USER:$USER /opt/stacks
These commands create the /opt/stacks directory if it doesn’t exist, and set permissions so the current user can access it. If you’re using a different user, replace $USER with that user’s name.
To verify the directory was created correctly and is accessible, run:
ls -ld /opt/stacks
This command should display directory information, for example drwxr-xr-x 2 user user 4096 Oct 16 10:00 /opt/stacks. If the directory isn’t accessible, adjust permissions using chmod or chown as needed.
Step 3: Install Dockge via Docker Compose
Dockge is designed to be installed via Docker Compose, simplifying deployment and management. You can use the default compose.yaml file or customize it to fit your needs. For a basic installation, use the default file and deploy Dockge in the /opt/dockge directory.
Create Dockge’s directory, then download the official compose.yaml file:
sudo mkdir -p /opt/dockge
sudo chown $USER:$USER /opt/dockge
cd /opt/dockge
curl https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml --output compose.yaml
These commands place the compose.yaml file in the /opt/dockge directory. You can then customize it as needed, for example to change the port or the stacks directory.
Deploy Dockge using Docker Compose:
sudo docker compose up -d
This command starts Dockge in the background. Dockge interacts with your Docker host via the Docker socket, so it’s essential that the socket is properly mounted in the container. By default, the compose.yaml file configures the Docker socket and stacks directory as follows:
services:
dockge:
image: louislam/dockge:1
restart: unless-stopped
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
On first launch, Dockge asks you to create the administrator account: do it right away, as the first person to open the page becomes the administrator.
To confirm Dockge is installed and running, access the web interface at the following address:
http://server-address:5001 (or http://localhost:5001 from the machine itself).
If the web interface appears, the installation was successful. You can also check the container’s status with:
sudo docker compose ps
This command should show dockge as running.
Step 4: Customize the compose.yaml file
To use a different stacks directory or port, edit the compose.yaml file. For the directory, three values must be identical: both sides of the volume and the DOCKGE_STACKS_DIR variable, always as an absolute path. Example with /srv/stacks:
services:
dockge:
image: louislam/dockge:1
restart: unless-stopped
ports:
- 5001:5001
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/app/data
- /srv/stacks:/srv/stacks
environment:
- DOCKGE_STACKS_DIR=/srv/stacks
If the two sides of the volume differ, the Docker commands run by Dockge look for files in the wrong place and your stacks do not start correctly. Create the new directory before redeploying.
To change the web interface port, modify the ports section of the dockge service:
services:
dockge:
image: louislam/dockge:1
restart: unless-stopped
ports:
- 8080:5001
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/app/data
- /opt/stacks:/opt/stacks
environment:
- DOCKGE_STACKS_DIR=/opt/stacks
In this example, port 8080 on the host system is mapped to port 5001 in the container. You can access the web interface at http://localhost:8080. After customizing the compose.yaml file, redeploy Dockge to apply the changes:
sudo docker compose down && sudo docker compose up -d
To verify the changes were applied, access the web interface at the new port and check that your stacks are correctly listed.
Step 5: Set up secure access to Dockge
By default, Dockge is only reachable over HTTP on port 5001. To reach it from another network, a VPN (WireGuard, Tailscale) remains the safest option. If you prefer a domain name over HTTPS, put a reverse proxy such as Nginx in front.
To configure Nginx as a reverse proxy, create a configuration file for your domain or subdomain pointing to the host’s local port 5001. Here’s an example Nginx configuration for Dockge:
server {
listen 80;
server_name dockge.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:5001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
The three proxy_http_version, Upgrade and Connection lines are required: Dockge’s interface uses WebSockets for live logs and terminals.
Replace dockge.yourdomain.com with the domain or subdomain you want to use for accessing Dockge. If you’re using a NAS or VPS, ensure the domain name is correctly configured and points to your host’s IP address.
To enable HTTPS, use an SSL certificate. You can obtain a free SSL certificate via Let’s Encrypt by configuring Certbot to automatically manage certificates. Here are the commands to install Certbot and obtain an SSL certificate:
sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d dockge.yourdomain.com
With the --nginx option, Certbot obtains the Let’s Encrypt certificate and edits the server block itself: it adds the port 443 listener with the certificate paths and the redirect from port 80. Check the result with sudo nginx -t, then reload with sudo systemctl reload nginx. Automatic renewal can be checked with sudo certbot renew --dry-run.
To verify HTTPS access is properly configured, visit the web interface at the URL https://dockge.yourdomain.com and ensure your browser displays a green padlock, indicating a secure connection.
Step 6: Deploy a Docker stack via Dockge
Once Dockge is installed and accessible, you can deploy a Docker stack through its web interface. Dockge allows creating, editing, and deploying stacks directly from the browser, greatly simplifying the process.
To deploy a stack, follow these steps:
- Access Dockge’s web interface via your browser.
- Click the “New stack” button to create a new
compose.yamlfile. - Name your stack: Dockge automatically stores it in a subfolder of the stacks directory (
/opt/stacks/stack-name). - Edit the
compose.yamlfile directly in the web interface. You can use the integrated editor to modify files without manually editing them in the terminal. - Click “Deploy” to apply changes and start the containers defined in your stack.
Here’s an example of a simple Docker stack you can deploy via Dockge. This example uses an Nginx container:
services:
web:
image: nginx:latest
restart: unless-stopped
ports:
- 8080:80
volumes:
- ./html:/usr/share/nginx/html
To verify the stack was deployed correctly, check the web interface in Dockge to see the stack listed. You can also verify the container is running with:
cd /opt/stacks/stack-name
sudo docker compose ps
Dockge keeps each stack in its own folder (/opt/stacks/stack-name/compose.yaml). Replace stack-name with the name chosen in the previous step: the command should show the web container as running.
Step 7: Update Dockge
Dockge is regularly updated to include new features and bug fixes. To update Dockge, use Docker Compose to pull the latest image version and redeploy the container.
To update Dockge, run the following commands:
cd /opt/dockge
sudo docker compose pull && sudo docker compose up -d
These commands download the latest Dockge image and redeploy the container with the new settings. To verify the update was successful, access the web interface and check the version displayed at the bottom of the page.
Step 8: Back up your stacks
Dockge stores your stacks as compose.yaml files in the /opt/stacks directory. It’s essential to regularly back up these files to avoid data loss if something happens to your Docker host.
To back up your stacks, copy the /opt/stacks directory to another location or an external storage system. Here’s an example command to copy the directory to a backup location:
sudo mkdir -p /opt/backup
sudo cp -r /opt/stacks /opt/backup/dockge-stacks-$(date +%Y-%m-%d)
This command copies the /opt/stacks directory to a backup location with a name based on the current date. You can also use a backup tool like rsync to synchronize the directory to another location:
sudo rsync -avz /opt/stacks/ /opt/backup/dockge-stacks-$(date +%Y-%m-%d)/
To verify the backup was successful, list the contents of the backup directory:
ls /opt/backup/dockge-stacks-$(date +%Y-%m-%d)
This command should show one folder per stack. Also back up /opt/dockge/data, which holds Dockge’s administrator account and settings.
Verification checks
To confirm Dockge is correctly installed and configured, first check the container’s status with the following command:
cd /opt/dockge && sudo docker compose ps
This command should show dockge as running. Next, access the web interface at the address http://localhost:5001 (or the customized port if you modified the configuration).
For deployed stacks, check their status with:
cd /opt/stacks/stack-name && sudo docker compose ps
Replace stack-name with your stack’s name. This command should show the stack’s containers as running. If everything is correct, you should see a functional web interface with your stacks listed and accessible.
Security and best practices
Dockge mounts the Docker socket: whoever controls Dockge controls every container on the machine, which amounts to root access. So do not expose port 5001 to the Internet: use a VPN, or an HTTPS reverse proxy restricted to your addresses. Dockge has a single account, the administrator created on first launch: give it a long, unique password.
Regularly update Dockge to benefit from the latest security patches and features. Use Docker Compose to redeploy the container after an update:
cd /opt/dockge && sudo docker compose pull && sudo docker compose up -d
Regularly back up your Docker stacks to avoid data loss. Use a backup tool like rsync to synchronize the stacks directory to another location or an external NAS. Since Dockge stores stacks as files, a manual or automated backup of these files is sufficient to restore your stacks in case of issues.
Troubleshooting common errors
If Dockge’s web interface doesn’t appear after installation, first check that the container is running with the following command:
cd /opt/dockge && sudo docker compose ps
If the container isn’t running, inspect the logs to identify the issue:
sudo docker compose logs
Symptom: web interface not responding -> Cause: container not started -> Fix: redeploy the container with sudo docker compose up -d and check the logs.
Symptom: unable to edit or deploy a stack -> Cause: insufficient permissions on the stacks directory -> Fix: verify the user has the necessary rights with ls -ld /opt/stacks and adjust permissions if needed.
Symptom: stack containers fail to start -> Cause: error in the compose.yaml file -> Fix: validate the syntax with cd /opt/stacks/stack-name && sudo docker compose config and fix the reported errors.
Symptom: stacks no longer appear in Dockge -> Cause: misconfigured stacks directory -> Fix: check with cat /opt/dockge/compose.yaml that both sides of the volume and DOCKGE_STACKS_DIR point to the same absolute path.
Symptom: the interface loads but logs and terminal stay empty behind the reverse proxy -> Cause: WebSockets not forwarded -> Fix: add the proxy_http_version 1.1, Upgrade and Connection lines from step 5.
FAQ
How do I access Dockge from another Docker host?
Install Dockge on each host, then add the other instances as “agents” from the main Dockge interface (address, username and password of the other instance). Never expose a host’s Docker socket over the network: anyone who reaches it gets root access to the machine.
Is Dockge compatible with all Linux distributions?
Dockge is compatible with major Linux distributions that can run Docker, such as Ubuntu, Debian Bullseye or newer, Fedora, ArchLinux, or CentOS. Debian Buster, Raspbian Buster and older releases are not supported by Dockge: upgrade the system first.
Can I use Dockge with Podman?
Yes, Dockge can be used with Podman. To do this, install podman-docker on your system, then use Docker Compose to deploy Dockge. The commands and configuration remain the same, but Dockge will interact with Podman instead of Docker Engine.
How do I restore a Docker stack from a backup?
To restore a Docker stack from a backup, copy the stack’s folder (with its compose.yaml file) to /opt/stacks/stack-name/, then redeploy the stack with Docker Compose. Ensure the file and directory permissions are correct to avoid access issues.
Read also
- Configurer des vlan sur un switch manageable
- Tutoriel docker compose premier stack homelab
- Tutoriel home assistant docker
Host this yourself
No hardware to manage? This kind of service can also run on a managed VPS, ready in minutes. See PlanetHoster plans