⚠️ Make sure to only use named Docker volumes in your Compose files. Data in bind-mounted volumes will be lost when Dockge is restarted or updated. ⚠️ Watch out for port conflicts between your custom Docker containers and your umbrelOS apps. Dockge is a fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager to run custom Docker containers. It has an interactive editor for compose files and can convert docker run commands into docker-compose.yaml. 🛠️ Dockge on Umbrel is for power users, follow these best practices to avoid issues: 1. Data persistence: Make sure to only used named Docker volumes in your Compose files. Data in bind-mounted volumes will be lost when Dockge is restarted or updated. 2. Port management: Watch out for potential port conflicts between your custom containers and umbrelOS' service containers, apps you have installed from the Umbrel App Store or Community App Stores, and any apps you go to install in the future. 3. Container restart policy: Set your containers to "unless-stopped" or "always" restart policies. This will allow your containers to restart automatically when Dockge is restarted or updated. 4. Web access to containers: Access your custom containers in your browser at umbrel.local:PORT_NUMBER. For example, for a container with a web UI running on port 4545, navigate to umbrel.local:4545 to access it.
Dockge is commonly used as a self-hosted alternative to Portainer, Docker Desktop. Replacing a SaaS tool with a self-hosted equivalent lets you avoid recurring subscription fees, keep full control of your data, and continue working even when the original vendor changes pricing, ships limits, or shuts down.
License: MIT. Built with: TypeScript, Vue, SCSS, JavaScript, Dockerfile, Go, HTML. Website: https://dockge.kuma.pet. Source: https://github.com/louislam/dockge.
# Create directories that store your stacks and stores Dockge's stack mkdir -p /opt/stacks /opt/dockge cd /opt/dockge # Download the compose.yaml curl https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml --output compose.yaml # Start the server docker compose up -d # If you are using docker-compose V1 or Podman # docker-compose up -d ``` Dockge is now running on http://localhost:5001 ### Advanced If you want to store your stacks in another directory, you can generate your compose.yaml file by using the following URL with custom query strings. ``` # Download your compose.yaml curl "https://dockge.kuma.pet/compose.yaml?port=5001&stacksPath=/opt/stacks" --output compose.yaml ``` - port=`5001` - stacksPath=`/opt/stacks` Also, once compose is generated/downloaded, add the `PUID` and `PGID` section below to your compose `environment:` section to set stack ownership, otherwise default is `root` ``` # Both PUID and PGID must be set for it to do anything - PUID=1000 # Set the stack file/dir ownership to this user - PGID=1000 # Set the stack file/dir ownership to this group ``` Interactive compose.yaml generator is available on: https://dockge.kuma.pet ### -OR- Copy and paste your compose from the following: If you want to store your stacks in another directory, you can change the `DOCKGE_STACKS_DIR` environment variable and volumes. compose: ``` services: dockge: image: louislam/dockge:1 restart: unless-stopped ports: # Host Port:Container Port - 5001:5001 volumes: - /var/run/docker.sock:/var/run/docker.sock - ./data:/app/data # If you want to use private registries, you need to share the auth file with Dockge: # - /root/.docker/:/root/.docker # Stacks Directory # Your stacks directory in the host (The paths inside container must be the same as the host) # ⚠️ If you did it wrong, your data could end up be written into a wrong path. # ✔️ CORRECT EXAMPLE: - /my-stacks:/my-stacks (Both paths match) # ❌ WRONG EXAMPLE: - /docker:/my-stacks (Both paths do not match) - /opt/stacks:/opt/stacks environment: # Tell Dockge where your stacks directory is - DOCKGE_STACKS_DIR=/opt/stacks # Both PUID and PGID must be set for it to do anything - PUID=1000 # Set the stack file/dir ownership to this user - PGID=1000 # Set the stack file/dir ownership to this group
Self-hosting gives you three things SaaS can’t: data ownership (the files live on disks you control), cost predictability (a one-time setup vs. recurring per-seat fees that grow with your household or team), and longevity (open-source means the app keeps working even if the maintainers move on, since you can pin a working version). The trade-off is that you take on the operational work of running a server, applying updates, and handling backups.
Most self-hosted apps run comfortably on modest hardware — a Raspberry Pi 4, a mini PC, a NAS with Docker support, or a small VPS is usually enough for personal or family use. CPU and RAM requirements scale with how many simultaneous users or how much data you push through Dockge. Storage requirements depend on the kind of data you keep; check the README for guidance on data retention.