Why I Switched from Portainer to Dockge
If you use Docker, Portainer is usually the first name that comes to mind. It is incredibly powerful, supporting everything from Standalone to Swarm and Kubernetes. However, this versatility can be a burden. For those who only need to run a few Compose stacks on a 1GB RAM VPS, Portainer can sometimes feel too bloated.
On the small server cluster I manage (about 12 stacks), Portainer typically consumes between 150MB to 200MB of RAM. Even worse, I occasionally encountered synchronization issues between the docker-compose.yml file on the disk and the configuration in the UI. That is why I switched to Dockge. It is a product by Louis Lam, the author behind the popular Uptime Kuma tool.
Dockge doesn’t try to do everything. It focuses on just one thing: Docker Compose management. Its interface is incredibly smooth, responsive, and most importantly, it strictly respects the user’s file structure.
Dockge’s “File-system first” Philosophy
Unlike Portainer, which saves configurations in its own database, Dockge operates on a file-system-first philosophy. Every action in the UI is written directly to the .yaml file on the disk. This approach is much more transparent and secure.
How is Dockge different from Portainer?
- File Management: Each stack resides in its own directory. If you edit a file via Terminal, Dockge recognizes the changes instantly.
- Speed: Thanks to modern technology, switching pages or loading logs happens with almost zero latency.
- Integrated Terminal: The experience of interacting with containers directly in the browser feels native and lag-free.
After switching to Dockge on a 1GB RAM VPS, I saved about 120MB of RAM compared to Portainer. This is enough to run an additional WordPress instance or a small Telegram bot.
Install Dockge in 5 Minutes
You just need Docker and Docker Compose ready. If you haven’t installed them yet, please refer back to my basic guide.
Step 1: Create the directory structure
I always create a dedicated directory to group all stacks together. This makes backing up or migrating the server later extremely easy.
mkdir -p /opt/stacks /opt/dockge
cd /opt/dockge
Step 2: Create the Compose file for Dockge
Use the command nano compose.yaml and paste the following content:
version: "3.8"
services:
dockge:
image: louislam/dockge:1
restart: always
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
Note: The DOCKGE_STACKS_DIR variable is the heart of the system. It tells Dockge where you keep your projects. Don’t forget to mount the corresponding volume to avoid data loss when upgrading the container.
Step 3: Deployment
Run the familiar command:
docker compose up -d
Now, just access http://your-ip:5001. Create an admin account to start exploring.
Professional Stack Management
The Dockge interface is very easy to get used to. To install a new service (like Nginx), just click “Compose” in the top-left corner.
Dual-pane YAML Editor
My favorite feature is the side-by-side rendering. When you type YAML on the left, Dockge automatically generates input fields (Image, Ports, Volumes) on the right. You can edit either side, and the other will sync automatically. This helps avoid silly YAML indentation errors.
Try deploying a simple Nginx instance:
services:
my-web:
image: nginx:latest
ports:
- 8080:80
restart: always
Click Deploy, and a console window will appear below. You’ll see the docker pull process in real-time. No more guessing if the system is hung like in Portainer.
Update Containers with One Click
Updating to a new image in Dockge is a breeze. Just click the Update button. Dockge will automatically pull the new image, stop the old stack, and bring up the new one. Everything happens in seconds.
Real-world Experience
After 6 months of using Dockge for personal projects and staging, here are a few tips for you:
1. Organized Folder Structure
Dockge creates a folder for each stack in /opt/stacks. Inside, you should create separate data and config folders. When migrating to a new server, just compress the /opt/stacks folder, and you’re 100% done.
/opt/stacks/
├── nginx-proxy/
│ ├── compose.yaml
│ └── data/
└── uptime-kuma/
└── compose.yaml
2. The Dockge + Nginx Proxy Manager (NPM) Combo
Dockge doesn’t have built-in Domain/SSL management. The best way is to use Dockge to manage an NPM stack. NPM will then sit in front to provide Let’s Encrypt SSL for all other services. This is a killer combo for Homelab enthusiasts.
3. Security Considerations
Although Dockge has a login layer, you should still not expose port 5001 directly to the internet. Place it behind Basic Auth or use Cloudflare Zero Trust. Never expose your Docker management gateway to hackers.
Conclusion
Dockge is truly a minor revolution for those who love minimalism. It might lack complex Role-Based Access Control (RBAC) for large enterprises, but for individuals or small VPS setups, it’s number one. Speed, lightness, and transparency are what you get.
If you find Portainer too heavy, give Dockge a try today. Trust me, you won’t want to look back. Happy server optimizing!

