diff --git a/dockge/data/docker/.gitkeep b/dockge/data/docker/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/dockge/data/dockge-data/.gitkeep b/dockge/data/dockge-data/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/dockge/data/dockge-stacks/.gitkeep b/dockge/data/dockge-stacks/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/dockge/docker-compose.yml b/dockge/docker-compose.yml new file mode 100644 index 0000000000..caf3570cac --- /dev/null +++ b/dockge/docker-compose.yml @@ -0,0 +1,37 @@ +version: "3.7" + +services: + app_proxy: + environment: + APP_HOST: dockge_dockge_1 + APP_PORT: 5001 + + docker: + image: docker:24.0.5-dind@sha256:3c6e4dca7a63c9a32a4e00da40461ce067f255987ccc9721cf18ffa087bcd1ef + privileged: true + network_mode: host + stop_grace_period: 1m + restart: on-failure + environment: + DOCKER_ENSURE_BRIDGE: "dind0:10.32.0.1/16" + entrypoint: /entrypoint.sh + command: > + dockerd + --bridge dind0 + --data-root /data/data + --exec-root /data/exec + --host unix:///data/docker.sock + --pidfile /data/docker.pid + volumes: + - ${APP_DATA_DIR}/entrypoint.sh:/entrypoint.sh + - ${APP_DATA_DIR}/data/docker:/data + + dockge: + image: louislam/dockge:1.4.2@sha256:ec889251baff476366783bc4a092aaa08c601f377537a0f30fb922754edcd9b7 + restart: on-failure + volumes: + - ${APP_DATA_DIR}/data/docker:/var/run + - ${APP_DATA_DIR}/data/dockge-data:/app/data + - ${APP_DATA_DIR}/data/dockge-stacks:/opt/stacks + environment: + DOCKGE_STACKS_DIR: /opt/stacks diff --git a/dockge/entrypoint.sh b/dockge/entrypoint.sh new file mode 100755 index 0000000000..08740545c8 --- /dev/null +++ b/dockge/entrypoint.sh @@ -0,0 +1,47 @@ +#!/bin/sh + +# This hack can be removed if https://github.com/docker-library/docker/pull/444 gets merged. + +# Remove docker pidfile if it exists to ensure Docker can start up after a bad shutdown +pidfile="/var/run/docker.pid" +if [[ -f "${pidfile}" ]] +then + rm -f "${pidfile}" +fi + +# Use nftables as the backend for iptables +for command in iptables iptables-restore iptables-restore-translate iptables-save iptables-translate +do + ln -sf /sbin/xtables-nft-multi /sbin/$command +done + +# Ensure that a bridge exists with the given name +ensure_bridge_exists() { + local name="${1}" + local ip_range="${2}" + + # Check if the bridge already exists + if ip link show "${name}" &>/dev/null + then + echo "Bridge '${name}' already exists. Skipping creation." + ip addr show "${name}" + return + fi + + echo "Bridge '${name}' does not exist. Creating..." + ip link add "${name}" type bridge + ip addr add "${ip_range}" dev "${name}" + ip link set "${name}" up + + echo "Bridge '${name}' is now up with IP range '${ip_range}'." + ip addr show "${name}" +} + +if [[ "${DOCKER_ENSURE_BRIDGE}" != "" ]] +then + bridge="${DOCKER_ENSURE_BRIDGE%%:*}" + ip_range="${DOCKER_ENSURE_BRIDGE#*:}" + ensure_bridge_exists "${bridge}" "${ip_range}" +fi + +exec dockerd-entrypoint.sh $@ diff --git a/dockge/umbrel-app.yml b/dockge/umbrel-app.yml new file mode 100644 index 0000000000..a13415d4b4 --- /dev/null +++ b/dockge/umbrel-app.yml @@ -0,0 +1,51 @@ +manifestVersion: 1 +id: dockge +category: developer +name: Dockge +version: "1.4.2" +tagline: Easy to use Docker Compose manager +description: >- + ⚠️ 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. +website: https://dockge.kuma.pet +dependencies: [] +repo: https://github.com/louislam/dockge +support: https://github.com/louislam/dockge/issues +port: 5005 +gallery: + - 1.jpg + - 2.jpg + - 3.jpg +path: "" +defaultUsername: "" +defaultPassword: "" +releaseNotes: "" +developer: Louis Lam +submitter: FlyinPancake +submission: https://github.com/getumbrel/umbrel-apps/pull/1106 \ No newline at end of file