dockge

louislamMIT活跃维护

自托管的 Docker Compose 栈管理面板,用网页界面可视化管理 compose.yaml 文件,支持交互式编辑、启动停止和实时状态更新,省去手敲命令行。

A fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager

1.5.0发布于 2025-03-30 17:42 UTC24,796star +27 / 7 天870fork同步于 2026-11-10 17:22 UTC

怎么上手

由 README 提炼,执行前请确认
mkdir -p /opt/stacks /opt/dockge
cd /opt/dockge
curl https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml --output compose.yaml
docker compose up -d
硬件要求按 README 说明

需要 Docker 20+ 或 Podman(Podman 需装 podman-docker);支持 armv7、arm64、amd64 架构,可在 Ubuntu、Debian Bullseye+、Raspbian Bullseye+、CentOS、Fedora、ArchLinux 上运行;不支持 Windows 和 Debian/Raspbian Buster 及更低版本。README 未提及显存等 GPU 要求。

有 Docker 镜像
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

自托管的 compose.yaml 栈管理器,用网页界面替代命令行管理 Docker Compose 项目

自托管的 Docker Compose 栈管理面板,用网页界面可视化管理 compose.yaml 文件,支持交互式编辑、启动停止和实时状态更新,省去手敲命令行。

核心能力

  • 创建、编辑、启停、重启、删除 compose.yaml 栈
  • 内置交互式 compose.yaml 编辑器与 Web 终端
  • 把 docker run 命令转换成 compose.yaml
  • 支持多 agent,在一个界面管理多台 Docker 主机的栈
  • 实时显示拉取、启动、停止的进度与终端输出

容易踩的坑

默认端口是 5001,默认栈目录是 /opt/stacks,改目录要同时改 DOCKGE_STACKS_DIR 和卷映射;卷映射必须宿主机与容器内路径完全一致,否则数据会写到错误路径;要管理已有栈需先把 compose 文件移到 /opt/stacks//compose.yaml 再点 Scan Stacks Folder;用 Podman 或 docker-compose V1 时启动命令要换成 docker-compose up -d。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本1.5.0
  1. 1.5.0最新正式版2025-03-30 · 2025-03-30 17:42 UTC

    [!WARNING] Breaking change: Due to the security reason, the "Console" feature is now disabled by default. If you need this feature and understand the risk, you can enable it via the environment variable DOCKGE_ENABLE_CONSOLE=true.

    🆕 New Features

    • Docker client updated to 28.0.4
    • Docker Compose updated to 2.34.0
    • #767 Console Improvements

    ⬆️ Improvements

    • #642 Remove useless scrollbar (Thanks @cyril59310)
    • #473 #507 fix default compose version obsolete (Thanks @cyril59310 @oddysee)

    🐛 Bug Fixes

    • #685 fix bug #176: preserve YAML comments when reordering items (Thanks @turnah)
    • #740 Fix #727 (Thanks @Tor-del)
    • #446 Update json-yaml-validate to latest version (Thanks @GrantBirki)
    • #617 Fix #356 (Thanks @DomiiBunn)

    🦎 Translation Contributions

    • #396 #641 Translations update from Kuma Weblate (Thanks @Aluisio @Casp054a @Celer21 @CosmoAbdon @DogukanK @Dumach @Eventyret @Faisalalali @GunnarNorin @Jumala9163 @MatyiFKBT @MrEddX @NexiaMoe @ahmedtalaltwd7 @aindriu80 @albertparlys @altendorfme @brmvnml @bunducdragos @cyril59310 @djismgaming @er2de2 @erkenbilgin @gergepalfi @jgtorcal @k1llo @kiznick @letterlock @marco-doerig @mikeleord @pacoculebras @retmas-gh @rumplin @stanol @teatower @vipnetant @wial88)
    • #425 Added Irish language (Thanks @aindriu80)
    • #506 Translation keys (Thanks @cyril59310)

    ⬆️ Security Fixes

    • GHSA-7vx4-hf96-mqq6

    Others

    • Other small changes, code refactoring and comment/doc updates in this repo:
    • #636 #766

    Please let me know if your username is missing, if your pull request has been merged in this version, or your commit has s been included in one of the pull requests.

  2. 1.4.22024-01-21 · 2024-01-21 17:02 UTC
    查看更新说明

    🐛 Bug Fixes

    • #380 Fixed the startup issue that Dockge is no longer working after restart
    • #342 Fixed the login placeholder issue (Thanks @cyril59310)

    🦎 Translation Contributions

    • #340 #376 #381 Translations update from Kuma Weblate (Thanks @dng-nguyn @401U @Alanimdeo @MrEddX @NexiaMoe @Yirade @Zaid-maker @catfishlty @cyril59310 @gergepalfi @marco-doerig @nazo6 @oplexz @pacoculebras @queeup @stanol @tomeczekstecc)
    • #344 Added Hungarian (Thanks @gergepalfi)
    • #377 Added catalan (Thanks @pacoculebras)
    • #368 Added translate key (Thanks @cyril59310)

    Please let me know if your username is missing, if your pull request has been merged in this version, or your commit has been included in one of the pull requests.

  3. 1.4.02024-01-03 · 2024-01-03 12:29 UTC
    查看更新说明

    🆕 New Features

    • #200 Initial support for multiple Dockge instances

    🦎 Translation Contributions

    • #318 #324 Translations update from Kuma Weblate (Thanks @Alanimdeo @Bloeckchengrafik @D3-3109 @FreddieDK @GunnarNorin @MrEddX @NexiaMoe @RappyTV @Zandor300 @abnerssantana @cyril59310 @demonisius @djismgaming @dng-nguyn @leonsk29 @marco-doerig @rumplin @salvacmp @stanol)
    • Added a new language: Bahasa Indonesia (Thanks @NexiaMoe)
    • #332 Added Vietnamese language (Thanks @dng-nguyn)

    Please let me know if your username is missing, if your pull request has been merged in this version, or your commit has been included in one of the pull requests.

    How to setup multiple instances

    Assume that you have 4 Dockge instances currently.

    1. Find one Dockge instance as your primary Dockge
    2. Login to your primary Dockge
    3. In the homepage, you can connect to other Dockge instances by clicking New Agent.
    4. Now you should see all instances are online and all stacks across all Dockge instances are in the stack list.

    How it works?

    • Your browser only need to connect to Dockge 1. Dockge 2/3/4 are connected from Dockge 1.
    • Dockge 1 works like a proxy, it will forward requests/responses from Dockge 2/3/4 to your browser.
  4. 1.4.0-beta.0pre-release2023-12-26 · 2023-12-26 12:00 UTC
    查看更新说明

    🆕 New Features

    • #200 Multiple Dockge instances

    🦎 Translation Contributions

    • #318 Translations update from Kuma Weblate (Thanks @NexiaMoe @leonsk29 @rumplin @GunnarNorin @stanol @FreddieDK @demonisius)
    • Added a new language: Bahasa Indonesia (Thanks @NexiaMoe)

    Please let me know if your username is missing, if your pull request has been merged in this version, or your commit has been included in one of the pull requests.

    How to switch to the beta version?

    Open dockge's compose.yaml and change the image tag from 1 to beta like:

    ...
    services:
      dockge:
        image: louislam/dockge:beta
    ...
    

    And then update and restart the stack:

    docker compose pull
    docker compose up -d
    

    How to setup multiple instances

    Assume that you have 4 Dockge instances currently.

    1. Find one Dockge instance as your primary Dockge
    2. Login to your primary Dockge
    3. In the homepage, you can add new agent. Connect all 3 other Dockge instances.
    4. Now you should see all instances are online and all stacks across all Dockge instances are in the stack list.

    How it works?

    • Your browser only need to connect to Dockge 1. Dockge 2/3/4 are connected from Dockge 1.
    • Dockge 1 works like a proxy, it will forward requests/responses from Dockge 2/3/4 to your browser.
  5. 1.3.42023-12-16 · 2023-12-16 15:34 UTC
    查看更新说明

    ⬆️ Improvements

    • #299 The stack list no longer shows folders without a yaml file (Thanks @Ozy-Viking)
    • #285 Improved terminals' width. (Thanks @Ozy-Viking)

    🐛 Bug Fixes

    • #301 Fixed an envsubst issue that it won't work if the yaml contains non-string primitive types
    • #303 Updated Docker Dompose plugin from 2.21.0 to 2.23.3, which may fixed some upstream bugs

    🦎 Translation Contributions

    • #302 Translations update from Kuma Weblate (Thanks @JinToSek @MrEddX @PeterDaveHello @alexdelprete @cyril59310 @rumplin @stanol @watchakorn-18k)

    Please let me know if your username is missing, if your pull request has been merged in this version, or your commit has been included in one of the pull requests.

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Dockge

    A fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager.

    GitHub Repo stars Docker Pulls Docker Image Version (latest semver) GitHub last commit (branch)

    View Video: https://youtu.be/AWAlOQeNpgU?t=48

    ⭐ Features

    • 🧑‍💼 Manage your compose.yaml files
      • Create/Edit/Start/Stop/Restart/Delete
      • Update Docker Images
    • ⌨️ Interactive Editor for compose.yaml
    • 🦦 Interactive Web Terminal
    • 🕷️ (1.4.0 🆕) Multiple agents support - You can manage multiple stacks from different Docker hosts in one single interface
    • 🏪 Convert docker run ... commands into compose.yaml
    • 📙 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
    • 🚄 Reactive - Everything is just responsive. Progress (Pull/Up/Down) and terminal output are in real-time
    • 🐣 Easy-to-use & fancy UI - If you love Uptime Kuma's UI/UX, you will love this one too

    🔧 How to Install

    Requirements:

    • Docker 20+ / Podman
    • (Podman only) podman-docker (Debian: apt install podman-docker)
    • OS:
      • Major Linux distros that can run Docker/Podman such as:
        • ✅ Ubuntu
        • ✅ Debian (Bullseye or newer)
        • ✅ Raspbian (Bullseye or newer)
        • ✅ CentOS
        • ✅ Fedora
        • ✅ ArchLinux
      • ❌ Debian/Raspbian Buster or lower is not supported
      • ❌ Windows (Will be supported later)
    • Arch: armv7, arm64, amd64 (a.k.a x86_64)

    Basic

    • Default Stacks Directory: /opt/stacks
    • Default Port: 5001
    # 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
    

    How to Update

    cd /opt/dockge
    docker compose pull && docker compose up -d
    

    Screenshots

    Motivations

    • 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.
    • Try to develop with ES Module + TypeScript

    If you love this project, please consider giving it a ⭐.

    🗣️ Community and Contribution

    Bug Report

    https://github.com/louislam/dockge/issues

    Ask for Help / Discussions

    https://github.com/louislam/dockge/discussions

    Translation

    If you want to translate Dockge into your language, please read Translation Guide

    Create a Pull Request

    Be sure to read the guide, as we don't accept all types of pull requests and don't want to waste your time.

    FAQ

    "Dockge"?

    "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.

    The naming idea came from Twitch emotes like sadge, bedge or wokege. They all end in -ge.

    Can I manage a single container without compose.yaml?

    The 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.

    Can I manage existing stacks?

    Yes, you can. However, you need to move your compose file into the stacks directory:

    1. Stop your stack
    2. Move your compose file into /opt/stacks/<stackName>/compose.yaml
    3. In Dockge, click the " Scan Stacks Folder" button in the top-right corner's dropdown menu
    4. Now you should see your stack in the list
    Is Dockge a Portainer replacement?

    Yes 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.

    If you want to manage your container with docker-compose only, the answer may be yes.

    If you still need to manage something like docker networks, single containers, the answer may be no.

    Can I install both Dockge and Portainer?

    Yes, you can.

    Others

    Dockge is built on top of Compose V2. compose.yaml also known as docker-compose.yml.