From a3a7e6368da5d253e12b24b18b50d15a024f83e8 Mon Sep 17 00:00:00 2001 From: Stavros Date: Wed, 22 Nov 2023 16:28:21 +0200 Subject: [PATCH] feat(apps): add dockge (#1674) --- README.md | 1 + apps/dockge/config.json | 20 ++++++++++++++ apps/dockge/docker-compose.yml | 41 ++++++++++++++++++++++++++++ apps/dockge/metadata/description.md | 22 +++++++++++++++ apps/dockge/metadata/logo.jpg | Bin 0 -> 12989 bytes 5 files changed, 84 insertions(+) create mode 100644 apps/dockge/config.json create mode 100644 apps/dockge/docker-compose.yml create mode 100644 apps/dockge/metadata/description.md create mode 100644 apps/dockge/metadata/logo.jpg diff --git a/README.md b/README.md index 08242440..30368126 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ This is the official repository for the Tipi App Store. It contains all the apps - [Dashy](https://github.com/lissy93/dashy) - A self-hostable personal dashboard built for you. - [Databag](https://github.com/balzack/databag) - A tiny federated messenger web with clients for iOS, Android, and browser. - [Deluge](https://github.com/linuxserver/docker-deluge) - Deluge is a lightweight, Free Software, cross-platform BitTorrent client +- [Dockge](https://github.com/louislam/dockge) - A fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager. - [Deemix](https://gitlab.com/Bockiii/deemix-docker) - deemix is a barebone deezer downloader library built from the ashes of Deezloader Remix. - [DokuWiki](https://github.com/dokuwiki/dokuwiki) - DokuWiki is a simple to use and highly versatile Open Source wiki software - [Dozzle](https://github.com/amir20/dozzle) - Dozzle is a small web based app to monitor Docker logs diff --git a/apps/dockge/config.json b/apps/dockge/config.json new file mode 100644 index 00000000..31d611f5 --- /dev/null +++ b/apps/dockge/config.json @@ -0,0 +1,20 @@ +{ + "$schema": "../schema.json", + "name": "Dockge", + "port": 8768, + "available": true, + "exposable": true, + "id": "dockge", + "tipi_version": 1, + "version": "1.1.1", + "categories": [ + "utilities" + ], + "description": "A fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager.", + "short_desc": "Docker compose.yaml stack-oriented manager.", + "author": "Louis Lam", + "source": "https://github.com/louislam/dockge", + "form_fields": [], + "supported_architectures": ["arm64", "amd64"] + } + \ No newline at end of file diff --git a/apps/dockge/docker-compose.yml b/apps/dockge/docker-compose.yml new file mode 100644 index 00000000..895eaed1 --- /dev/null +++ b/apps/dockge/docker-compose.yml @@ -0,0 +1,41 @@ +version: "3.8" +services: + dockge: + image: louislam/dockge:1.1.1 + container_name: dockge + restart: unless-stopped + ports: + - ${APP_PORT}:5001 + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - ${APP_DATA_DIR}/data/app-data:/app/data + - ${APP_DATA_DIR}/data/stacks:${APP_DATA_DIR}/data/stacks + environment: + - DOCKGE_STACKS_DIR=${APP_DATA_DIR}/data/stacks + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.dockge-web-redirect.redirectscheme.scheme: https + traefik.http.services.dockge.loadbalancer.server.port: 5001 + # Web + traefik.http.routers.dockge-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.dockge-insecure.entrypoints: web + traefik.http.routers.dockge-insecure.service: dockge + traefik.http.routers.dockge-insecure.middlewares: dockge-web-redirect + # Websecure + traefik.http.routers.dockge.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.dockge.entrypoints: websecure + traefik.http.routers.dockge.service: dockge + traefik.http.routers.dockge.tls.certresolver: myresolver + # Local domain + traefik.http.routers.dockge-local-insecure.rule: Host(`dockge.${LOCAL_DOMAIN}`) + traefik.http.routers.dockge-local-insecure.entrypoints: web + traefik.http.routers.dockge-local-insecure.service: dockge + traefik.http.routers.dockge-local-insecure.middlewares: dockge-web-redirect + # Local domain secure + traefik.http.routers.dockge-local.rule: Host(`dockge.${LOCAL_DOMAIN}`) + traefik.http.routers.dockge-local.entrypoints: websecure + traefik.http.routers.dockge-local.service: dockge + traefik.http.routers.dockge-local.tls: true \ No newline at end of file diff --git a/apps/dockge/metadata/description.md b/apps/dockge/metadata/description.md new file mode 100644 index 00000000..52e0938c --- /dev/null +++ b/apps/dockge/metadata/description.md @@ -0,0 +1,22 @@ +# Dockge + +A fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager. + + + +View Video: https://youtu.be/AWAlOQeNpgU?t=48 + +## ⭐ Features + +- Manage `compose.yaml` + - Create/Edit/Start/Stop/Restart/Delete + - Update Docker Images +- Interactive Editor for `compose.yaml` +- Interactive Web Terminal +- 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 +- 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 diff --git a/apps/dockge/metadata/logo.jpg b/apps/dockge/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1f2794084d49f0b5419429ca2735272b3e07084d GIT binary patch literal 12989 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 V!2e?b{u@g8KN|llkkEUB{{s?P>>2<7 literal 0 HcmV?d00001