{"id":13457209,"url":"https://github.com/louislam/dockge","last_synced_at":"2026-10-18T21:19:16.836Z","repository":{"id":205812360,"uuid":"708775091","full_name":"louislam/dockge","owner":"louislam","description":"A fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager","archived":false,"fork":false,"pushed_at":"2026-04-25T02:28:26.000Z","size":1270,"stargazers_count":24532,"open_issues_count":172,"forks_count":837,"subscribers_count":95,"default_branch":"master","last_synced_at":"2026-10-04T04:25:54.161Z","etag":null,"topics":["docker","docker-compose","docker-deployment","docker-stack","docker-stack-deploy","docker-ui","responsive","self-hosted","selfhosted","single-page-app","socket-io","webapp","websocket"],"latest_commit_sha":null,"homepage":"https://dockge.kuma.pet","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/louislam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"louislam","open_collective":"uptime-kuma"}},"created_at":"2023-10-23T11:18:20.000Z","updated_at":"2026-10-04T04:16:08.000Z","dependencies_parsed_at":"2024-02-12T06:28:38.607Z","dependency_job_id":"f006e980-8d00-4753-907f-a423144e90b9","html_url":"https://github.com/louislam/dockge","commit_stats":{"total_commits":299,"total_committers":89,"mean_commits":3.359550561797753,"dds":0.5819397993311037,"last_synced_commit":"01906205f019e6a215551f644ec732c7c8e6086b"},"previous_names":["louislam/dockge"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/louislam/dockge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/louislam%2Fdockge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/louislam%2Fdockge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/louislam%2Fdockge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/louislam%2Fdockge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/louislam","download_url":"https://codeload.github.com/louislam/dockge/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/louislam%2Fdockge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":344872684,"owners_count":38341854,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-18T02:00:06.448Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-compose","docker-deployment","docker-stack","docker-stack-deploy","docker-ui","responsive","self-hosted","selfhosted","single-page-app","socket-io","webapp","websocket"],"created_at":"2024-07-31T08:01:35.886Z","updated_at":"2026-10-18T21:19:16.831Z","avatar_url":"https://github.com/louislam.png","language":"TypeScript","funding_links":["https://github.com/sponsors/louislam","https://opencollective.com/uptime-kuma"],"categories":["TypeScript","Apps","HarmonyOS","Networking and Distributed","docker管理","webapp","Docker-UI","websocket","Linux","docker","Self Hosted Applications","User Interfaces","🌐 Web Development - Frontend","Table of Contents","容器管理与运维 (Container Operations)","Containers and virtualization ![](https://img.shields.io/badge/_-CONTAINERS-2496ED?style=flat-square\u0026logo=docker\u0026logoColor=white)","Media automation (\\*arr stack)","Docker"],"sub_categories":["Container","Windows Manager","Cloud and Infrastructure","Docker","Web","Containers","可视化管理界面 (UI / Management)","Agent bridges"],"readme":"\u003cdiv align=\"center\" width=\"100%\"\u003e\n    \u003cimg src=\"./frontend/public/icon.svg\" width=\"128\" alt=\"\" /\u003e\n\u003c/div\u003e\n\n# Dockge\n\nA fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager.\n\n[![GitHub Repo stars](https://img.shields.io/github/stars/louislam/dockge?logo=github\u0026style=flat)](https://github.com/louislam/dockge) [![Docker Pulls](https://img.shields.io/docker/pulls/louislam/dockge?logo=docker)](https://hub.docker.com/r/louislam/dockge/tags) [![Docker Image Version (latest semver)](https://img.shields.io/docker/v/louislam/dockge/latest?label=docker%20image%20ver.)](https://hub.docker.com/r/louislam/dockge/tags) [![GitHub last commit (branch)](https://img.shields.io/github/last-commit/louislam/dockge/master?logo=github)](https://github.com/louislam/dockge/commits/master/)\n\n\u003cimg src=\"https://github.com/louislam/dockge/assets/1336778/26a583e1-ecb1-4a8d-aedf-76157d714ad7\" width=\"900\" alt=\"\" /\u003e\n\nView Video: https://youtu.be/AWAlOQeNpgU?t=48\n\n## ⭐ Features\n\n- 🧑‍💼 Manage your `compose.yaml` files\n  - Create/Edit/Start/Stop/Restart/Delete\n  - Update Docker Images\n- ⌨️ Interactive Editor for `compose.yaml`\n- 🦦 Interactive Web Terminal\n- 🕷️ (1.4.0 🆕) Multiple agents support - You can manage multiple stacks from different Docker hosts in one single interface\n- 🏪 Convert `docker run ...` commands into `compose.yaml`\n- 📙 File based structure - Dockge won't kidnap your compose files, they are stored on your drive as usual. You can interact with them using normal `docker compose` commands\n\n\u003cimg src=\"https://github.com/louislam/dockge/assets/1336778/cc071864-592e-4909-b73a-343a57494002\" width=300 /\u003e\n\n- 🚄 Reactive - Everything is just responsive. Progress (Pull/Up/Down) and terminal output are in real-time\n- 🐣 Easy-to-use \u0026 fancy UI - If you love Uptime Kuma's UI/UX, you will love this one too\n\n![](https://github.com/louislam/dockge/assets/1336778/89fc1023-b069-42c0-a01c-918c495f1a6a)\n\n## 🔧 How to Install\n\nRequirements:\n- [Docker](https://docs.docker.com/engine/install/) 20+ / Podman\n- (Podman only) podman-docker (Debian: `apt install podman-docker`)\n- OS:\n  - Major Linux distros that can run Docker/Podman such as:\n     - ✅ Ubuntu\n     - ✅ Debian (Bullseye or newer)\n     - ✅ Raspbian (Bullseye or newer)\n     - ✅ CentOS\n     - ✅ Fedora\n     - ✅ ArchLinux\n  - ❌ Debian/Raspbian Buster or lower is not supported\n  - ❌ Windows (Will be supported later)\n- Arch: armv7, arm64, amd64 (a.k.a x86_64)\n\n### Basic\n\n- Default Stacks Directory: `/opt/stacks`\n- Default Port: 5001\n\n```\n# Create directories that store your stacks and stores Dockge's stack\nmkdir -p /opt/stacks /opt/dockge\ncd /opt/dockge\n\n# Download the compose.yaml\ncurl https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml --output compose.yaml\n\n# Start the server\ndocker compose up -d\n\n# If you are using docker-compose V1 or Podman\n# docker-compose up -d\n```\n\nDockge is now running on http://localhost:5001\n\n### Advanced\n\nIf 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.\n\n```\n# Download your compose.yaml\ncurl \"https://dockge.kuma.pet/compose.yaml?port=5001\u0026stacksPath=/opt/stacks\" --output compose.yaml\n```\n\n- port=`5001`\n- stacksPath=`/opt/stacks`\n\nAlso, 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`\n\n```\n      # Both PUID and PGID must be set for it to do anything\n      - PUID=1000 # Set the stack file/dir ownership to this user\n      - PGID=1000 # Set the stack file/dir ownership to this group\n```\n\nInteractive compose.yaml generator is available on: \nhttps://dockge.kuma.pet\n\n### -OR-\nCopy and paste your compose from the following:\n\nIf you want to store your stacks in another directory, you can change the `DOCKGE_STACKS_DIR` environment variable and volumes.\n\ncompose:\n```\nservices:\n  dockge:\n    image: louislam/dockge:1\n    restart: unless-stopped\n    ports:\n      # Host Port:Container Port\n      - 5001:5001\n    volumes:\n      - /var/run/docker.sock:/var/run/docker.sock\n      - ./data:/app/data\n        \n      # If you want to use private registries, you need to share the auth file with Dockge:\n      # - /root/.docker/:/root/.docker\n\n      # Stacks Directory\n      # Your stacks directory in the host (The paths inside container must be the same as the host)\n      # ⚠️ If you did it wrong, your data could end up be written into a wrong path.\n      # ✔️ CORRECT EXAMPLE: - /my-stacks:/my-stacks (Both paths match)\n      # ❌ WRONG EXAMPLE: - /docker:/my-stacks (Both paths do not match)\n      - /opt/stacks:/opt/stacks\n    environment:\n      # Tell Dockge where your stacks directory is\n      - DOCKGE_STACKS_DIR=/opt/stacks\n      # Both PUID and PGID must be set for it to do anything\n      - PUID=1000 # Set the stack file/dir ownership to this user\n      - PGID=1000 # Set the stack file/dir ownership to this group\n```\n\n## How to Update\n\n```bash\ncd /opt/dockge\ndocker compose pull \u0026\u0026 docker compose up -d\n```\n\n## Screenshots\n\n![](https://github.com/louislam/dockge/assets/1336778/e7ff0222-af2e-405c-b533-4eab04791b40)\n\n\n![](https://github.com/louislam/dockge/assets/1336778/7139e88c-77ed-4d45-96e3-00b66d36d871)\n\n![](https://github.com/louislam/dockge/assets/1336778/f019944c-0e87-405b-a1b8-625b35de1eeb)\n\n![](https://github.com/louislam/dockge/assets/1336778/a4478d23-b1c4-4991-8768-1a7cad3472e3)\n\n\n## Motivations\n\n- I have been using Portainer for some time, but for the stack management, I am sometimes not satisfied with it. For example, sometimes when I try to deploy a stack, the loading icon keeps spinning for a few minutes without progress. And sometimes error messages are not clear.\n- Try to develop with ES Module + TypeScript\n\nIf you love this project, please consider giving it a ⭐.\n\n\n## 🗣️ Community and Contribution\n\n### Bug Report\nhttps://github.com/louislam/dockge/issues\n\n### Ask for Help / Discussions\nhttps://github.com/louislam/dockge/discussions\n\n### Translation\nIf you want to translate Dockge into your language, please read [Translation Guide](https://github.com/louislam/dockge/blob/master/frontend/src/lang/README.md)\n\n### Create a Pull Request\n\nBe sure to read the [guide](https://github.com/louislam/dockge/blob/master/CONTRIBUTING.md), as we don't accept all types of pull requests and don't want to waste your time.\n\n## FAQ\n\n#### \"Dockge\"?\n\n\"Dockge\" is a coinage word which is created by myself. I originally hoped it sounds like `Dodge`, but apparently many people called it `Dockage`, it is also acceptable.\n\nThe naming idea came from Twitch emotes like `sadge`, `bedge` or `wokege`. They all end in `-ge`.\n\n#### Can I manage a single container without `compose.yaml`?\n\nThe main objective of Dockge is to try to use the docker `compose.yaml` for everything. If you want to manage a single container, you can just use Portainer or Docker CLI.\n\n#### Can I manage existing stacks?\n\nYes, you can. However, you need to move your compose file into the stacks directory:\n\n1. Stop your stack\n2. Move your compose file into `/opt/stacks/\u003cstackName\u003e/compose.yaml`\n3. In Dockge, click the \" Scan Stacks Folder\" button in the top-right corner's dropdown menu\n4. Now you should see your stack in the list\n\n#### Is Dockge a Portainer replacement?\n\nYes or no. Portainer provides a lot of Docker features. While Dockge is currently only focusing on docker-compose with a better user interface and better user experience.\n\nIf you want to manage your container with docker-compose only, the answer may be yes.\n\nIf you still need to manage something like docker networks, single containers, the answer may be no.\n\n#### Can I install both Dockge and Portainer?\n\nYes, you can.\n\n## Others\n\nDockge is built on top of [Compose V2](https://docs.docker.com/compose/migrate/). `compose.yaml`  also known as `docker-compose.yml`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flouislam%2Fdockge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flouislam%2Fdockge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flouislam%2Fdockge/lists"}