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/2fauth/config.json b/apps/2fauth/config.json index e70e810e..e01f23c2 100644 --- a/apps/2fauth/config.json +++ b/apps/2fauth/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "2fauth", - "tipi_version": 6, - "version": "4.2.3", + "tipi_version": 7, + "version": "4.2.4", "categories": [ "security" ], @@ -16,5 +16,8 @@ "source": "https://github.com/Bubka/2FAuth", "website": "https://docs.2fauth.app/", "form_fields": [], - "supported_architectures": ["arm64", "amd64"] + "supported_architectures": [ + "arm64", + "amd64" + ] } diff --git a/apps/2fauth/docker-compose.yml b/apps/2fauth/docker-compose.yml index 6bc0af10..ade974fb 100644 --- a/apps/2fauth/docker-compose.yml +++ b/apps/2fauth/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.7" services: 2fauth: - image: 2fauth/2fauth:4.2.3 + image: 2fauth/2fauth:4.2.4 container_name: 2fauth volumes: - ${APP_DATA_DIR}/data:/2fauth diff --git a/apps/activepieces/config.json b/apps/activepieces/config.json index bb9686bf..20344b8f 100644 --- a/apps/activepieces/config.json +++ b/apps/activepieces/config.json @@ -5,7 +5,7 @@ "exposable": true, "id": "activepieces", "description": "Your friendliest open source all-in-one automation tool.", - "tipi_version": 2, + "tipi_version": 3, "version": "0.13.0", "categories": [ "automation" diff --git a/apps/activepieces/docker-compose.yml b/apps/activepieces/docker-compose.yml index d90c2246..044ba2db 100644 --- a/apps/activepieces/docker-compose.yml +++ b/apps/activepieces/docker-compose.yml @@ -17,7 +17,7 @@ services: - AP_ENCRYPTION_KEY=${AP_ENCRYPTION_KEY} - AP_JWT_SECRET=${AP_JWT_SECRET} - AP_ENVIRONMENT=prod - - AP_FRONTEND_URL=http://localhost:8080 + - AP_FRONTEND_URL=${APP_PROTOCOL:-http}://${APP_DOMAIN} - AP_WEBHOOK_TIMEOUT_SECONDS=30 - AP_TRIGGER_DEFAULT_POLL_INTERVAL=5 - AP_POSTGRES_DATABASE=activepieces @@ -38,7 +38,7 @@ services: # Main traefik.enable: true traefik.http.middlewares.activepieces-web-redirect.redirectscheme.scheme: https - traefik.http.services.activepieces.loadbalancer.server.port: 8744 + traefik.http.services.activepieces.loadbalancer.server.port: 80 # Web traefik.http.routers.activepieces-insecure.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.activepieces-insecure.entrypoints: web @@ -65,7 +65,7 @@ services: restart: unless-stopped container_name: activepieces-postgres healthcheck: - test: pg_isready -U tipi + test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] interval: 30s timeout: 30s retries: 3 diff --git a/apps/authentik/config.json b/apps/authentik/config.json index 16eb6d7b..ba9745c0 100644 --- a/apps/authentik/config.json +++ b/apps/authentik/config.json @@ -5,9 +5,11 @@ "available": true, "exposable": true, "id": "authentik", - "tipi_version": 1, - "version": "2023.10.3", - "categories": ["development"], + "tipi_version": 3, + "version": "2023.10.4", + "categories": [ + "development" + ], "description": "The authentication glue you need.", "short_desc": "The authentication glue you need.", "author": "goauthentik", @@ -26,5 +28,8 @@ "env_variable": "AUTHENTIK_SECRET_KEY" } ], - "supported_architectures": ["arm64", "amd64"] + "supported_architectures": [ + "arm64", + "amd64" + ] } diff --git a/apps/authentik/docker-compose.yml b/apps/authentik/docker-compose.yml index 1f5c167f..76f8206a 100644 --- a/apps/authentik/docker-compose.yml +++ b/apps/authentik/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: authentik: - image: ghcr.io/goauthentik/server:2023.10.3 + image: ghcr.io/goauthentik/server:2023.10.4 restart: unless-stopped command: server container_name: authentik @@ -50,7 +50,7 @@ services: traefik.http.routers.authentik-local.service: authentik traefik.http.routers.authentik-local.tls: true authentik-worker: - image: ghcr.io/goauthentik/server:2023.10.3 + image: ghcr.io/goauthentik/server:2023.10.4 restart: unless-stopped command: worker container_name: authentik-worker @@ -81,7 +81,7 @@ services: authentik-db: container_name: authentik-db - image: docker.io/library/postgres:16-alpine + image: postgres:12-alpine restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"] @@ -99,7 +99,7 @@ services: - tipi_main_network authentik-redis: - image: docker.io/library/redis:alpine + image: redis:alpine command: --save 60 1 --loglevel warning container_name: authentik-redis restart: unless-stopped diff --git a/apps/budibase/config.json b/apps/budibase/config.json index c3bf11b4..ace4c9fc 100644 --- a/apps/budibase/config.json +++ b/apps/budibase/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "budibase", - "tipi_version": 35, - "version": "2.13.12", + "tipi_version": 37, + "version": "2.13.14", "categories": [ "development" ], diff --git a/apps/budibase/docker-compose.yml b/apps/budibase/docker-compose.yml index 89eacf47..5eb446e0 100644 --- a/apps/budibase/docker-compose.yml +++ b/apps/budibase/docker-compose.yml @@ -1,7 +1,7 @@ version: '3.7' services: budibase: - image: budibase/budibase:2.13.12 + image: budibase/budibase:2.13.14 restart: unless-stopped container_name: budibase ports: 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 00000000..1f279408 Binary files /dev/null and b/apps/dockge/metadata/logo.jpg differ diff --git a/apps/immich/config.json b/apps/immich/config.json index 5237f282..04dc104e 100644 --- a/apps/immich/config.json +++ b/apps/immich/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8128, "id": "immich", - "tipi_version": 55, - "version": "1.87.0", + "tipi_version": 56, + "version": "1.88.2", "categories": [ "data", "photography" diff --git a/apps/immich/docker-compose.yml b/apps/immich/docker-compose.yml index 8ccfd28d..c7f1ffb9 100644 --- a/apps/immich/docker-compose.yml +++ b/apps/immich/docker-compose.yml @@ -1,25 +1,38 @@ version: "3.7" services: + immich: container_name: immich - image: altran1502/immich-proxy:v1.87.0 - ports: - - ${APP_PORT}:8080 - depends_on: - - immich-server - restart: unless-stopped + image: altran1502/immich-server:v1.88.2 + command: ["start-server.sh"] + volumes: + - ${ROOT_FOLDER_HOST}/media/data/images/immich:/usr/src/app/upload environment: - - IMMICH_WEB_URL=http://immich-web:3000 - - IMMICH_SERVER_URL=http://immich-server:3001 - # - IMMICH_MACHINE_LEARNING_URL="http://immich-machine-learning:3003" + - NODE_ENV=production + - DB_HOSTNAME=immich-db + - DB_USERNAME=tipi + - DB_PASSWORD=${DB_PASSWORD} + - ENABLE_MAPBOX=false + - DB_DATABASE_NAME=immich + - REDIS_HOSTNAME=immich-redis + - JWT_SECRET=${JWT_SECRET} + - TYPESENSE_HOST=immich-typesense + - TYPESENSE_API_KEY=${IMMICH_TYPESENSE_API_KEY} + depends_on: + - immich-redis + - immich-db + - immich-typesense + ports: + - ${APP_PORT}:3001 + restart: unless-stopped networks: - tipi_main_network labels: # Main traefik.enable: true traefik.http.middlewares.immich-web-redirect.redirectscheme.scheme: https - traefik.http.services.immich.loadbalancer.server.port: 8080 + traefik.http.services.immich.loadbalancer.server.port: 3001 # Web traefik.http.routers.immich-insecure.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.immich-insecure.entrypoints: web @@ -41,34 +54,9 @@ services: traefik.http.routers.immich-local.service: immich traefik.http.routers.immich-local.tls: true - immich-server: - container_name: immich-server - image: altran1502/immich-server:v1.88.1 - command: ["start-server.sh"] - volumes: - - ${ROOT_FOLDER_HOST}/media/data/images/immich:/usr/src/app/upload - environment: - - NODE_ENV=production - - DB_HOSTNAME=immich-db - - DB_USERNAME=tipi - - DB_PASSWORD=${DB_PASSWORD} - - ENABLE_MAPBOX=false - - DB_DATABASE_NAME=immich - - REDIS_HOSTNAME=immich-redis - - JWT_SECRET=${JWT_SECRET} - - TYPESENSE_HOST=immich-typesense - - TYPESENSE_API_KEY=${IMMICH_TYPESENSE_API_KEY} - depends_on: - - immich-redis - - immich-db - - immich-typesense - restart: unless-stopped - networks: - - tipi_main_network - immich-microservices: container_name: immich-microservices - image: altran1502/immich-server:v1.88.1 + image: altran1502/immich-server:v1.88.2 command: ["start-microservices.sh"] volumes: - ${ROOT_FOLDER_HOST}/media/data/images/immich:/usr/src/app/upload @@ -93,7 +81,7 @@ services: immich-machine-learning: container_name: immich-machine-learning - image: altran1502/immich-machine-learning:v1.88.1 + image: altran1502/immich-machine-learning:v1.88.2 volumes: - ${ROOT_FOLDER_HOST}/media/data/images/immich:/usr/src/app/upload - ${APP_DATA_DIR}/data/immich-ml-cache:/cache @@ -112,13 +100,6 @@ services: networks: - tipi_main_network - immich-web: - container_name: immich-web - image: altran1502/immich-web:v1.87.0 - restart: unless-stopped - networks: - - tipi_main_network - immich-redis: container_name: immich-redis image: redis:6.2 diff --git a/apps/navidrome/config.json b/apps/navidrome/config.json index 119654f5..3e463d7f 100644 --- a/apps/navidrome/config.json +++ b/apps/navidrome/config.json @@ -5,8 +5,8 @@ "exposable": true, "id": "navidrome", "description": "Modern Music Server and Streamer compatible with Subsonic/Airsonic", - "tipi_version": 6, - "version": "0.50.0", + "tipi_version": 7, + "version": "0.50.1", "categories": [ "media", "music" diff --git a/apps/navidrome/docker-compose.yml b/apps/navidrome/docker-compose.yml index f28e66f7..9c83707e 100644 --- a/apps/navidrome/docker-compose.yml +++ b/apps/navidrome/docker-compose.yml @@ -2,7 +2,7 @@ version: "3" services: navidrome: container_name: navidrome - image: deluan/navidrome:0.50.0 + image: deluan/navidrome:0.50.1 ports: - ${APP_PORT}:4533 restart: unless-stopped diff --git a/apps/notemark/docker-compose.yml b/apps/notemark/docker-compose.yml index 9f1291f2..004c544f 100644 --- a/apps/notemark/docker-compose.yml +++ b/apps/notemark/docker-compose.yml @@ -37,7 +37,7 @@ services: traefik.http.routers.notemark-local.tls: true notemark-backend: - image: ghcr.io/enchant97/note-mark-backend:0.8.0 + image: ghcr.io/enchant97/note-mark-backend:0.9.0 container_name: notemark-backend restart: unless-stopped networks: diff --git a/apps/owncloud/config.json b/apps/owncloud/config.json index 37525e40..2d3f3aef 100644 --- a/apps/owncloud/config.json +++ b/apps/owncloud/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "owncloud", - "tipi_version": 8, - "version": "10.13.2", + "tipi_version": 9, + "version": "10.13.3", "categories": [ "data" ], @@ -39,5 +39,8 @@ "env_variable": "OWNCLOUD_PASSWORD" } ], - "supported_architectures": ["arm64", "amd64"] + "supported_architectures": [ + "arm64", + "amd64" + ] } diff --git a/apps/owncloud/docker-compose.yml b/apps/owncloud/docker-compose.yml index b463a0fa..7fe73370 100644 --- a/apps/owncloud/docker-compose.yml +++ b/apps/owncloud/docker-compose.yml @@ -2,7 +2,7 @@ version: "3" services: owncloud: - image: owncloud/server:10.13.2 + image: owncloud/server:10.13.3 container_name: owncloud restart: unless-stopped ports: diff --git a/apps/paperless-ngx/docker-compose.yml b/apps/paperless-ngx/docker-compose.yml index 66c5ca5f..074c6e13 100644 --- a/apps/paperless-ngx/docker-compose.yml +++ b/apps/paperless-ngx/docker-compose.yml @@ -75,7 +75,7 @@ services: - tipi_main_network gotenberg: - image: docker.io/gotenberg/gotenberg:7.9 + image: docker.io/gotenberg/gotenberg:7.10 restart: unless-stopped # The gotenberg chromium route is used to convert .eml files. We do not # want to allow external content like tracking pixels or even javascript. diff --git a/apps/pihole/config.json b/apps/pihole/config.json index dd4d1188..562d6be7 100644 --- a/apps/pihole/config.json +++ b/apps/pihole/config.json @@ -10,8 +10,8 @@ ] }, "id": "pihole", - "tipi_version": 10, - "version": "2023.10.0", + "tipi_version": 11, + "version": "2023.11.0", "url_suffix": "/admin", "categories": [ "network", @@ -37,5 +37,8 @@ "env_variable": "NETWORK_INTERFACE" } ], - "supported_architectures": ["arm64", "amd64"] + "supported_architectures": [ + "arm64", + "amd64" + ] } diff --git a/apps/pihole/docker-compose.yml b/apps/pihole/docker-compose.yml index 6f7e7767..4fa42095 100644 --- a/apps/pihole/docker-compose.yml +++ b/apps/pihole/docker-compose.yml @@ -3,7 +3,7 @@ version: "3.7" services: pihole: container_name: pihole - image: pihole/pihole:2023.10.0 + image: pihole/pihole:2023.11.0 restart: unless-stopped hostname: pihole dns: diff --git a/apps/portainer/config.json b/apps/portainer/config.json index 3d3b871a..d317ddb5 100644 --- a/apps/portainer/config.json +++ b/apps/portainer/config.json @@ -6,8 +6,8 @@ "exposable": true, "https": true, "id": "portainer", - "tipi_version": 15, - "version": "2.19.2-alpine", + "tipi_version": 16, + "version": "2.19.3-alpine", "categories": [ "utilities" ], diff --git a/apps/portainer/docker-compose.yml b/apps/portainer/docker-compose.yml index 4ebd56cf..9dd917b0 100644 --- a/apps/portainer/docker-compose.yml +++ b/apps/portainer/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: portainer: - image: portainer/portainer-ce:2.19.2-alpine + image: portainer/portainer-ce:2.19.3-alpine container_name: portainer restart: unless-stopped ports: diff --git a/apps/qbittorrent/config.json b/apps/qbittorrent/config.json index 268e4312..25ce1b36 100644 --- a/apps/qbittorrent/config.json +++ b/apps/qbittorrent/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8133, "id": "qbittorrent", - "tipi_version": 9, - "version": "4.6.0", + "tipi_version": 10, + "version": "4.6.1", "categories": [ "utilities" ], @@ -15,5 +15,8 @@ "author": "qBittorrent project", "source": "https://github.com/qbittorrent/qBittorrent", "form_fields": [], - "supported_architectures": ["arm64", "amd64"] + "supported_architectures": [ + "arm64", + "amd64" + ] } diff --git a/apps/qbittorrent/docker-compose.yml b/apps/qbittorrent/docker-compose.yml index d89b6f21..154508b2 100644 --- a/apps/qbittorrent/docker-compose.yml +++ b/apps/qbittorrent/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.7" services: qbittorrent: - image: lscr.io/linuxserver/qbittorrent:4.6.0 + image: lscr.io/linuxserver/qbittorrent:4.6.1 container_name: qbittorrent dns: - ${DNS_IP} diff --git a/apps/your-spotify/config.json b/apps/your-spotify/config.json index 8a19dec7..c5a8bf48 100644 --- a/apps/your-spotify/config.json +++ b/apps/your-spotify/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8103, "id": "your-spotify", - "tipi_version": 7, - "version": "1.7.2", + "tipi_version": 8, + "version": "1.7.3", "categories": [ "music", "utilities" diff --git a/apps/your-spotify/docker-compose.yml b/apps/your-spotify/docker-compose.yml index 0edf1b9e..70b1183c 100644 --- a/apps/your-spotify/docker-compose.yml +++ b/apps/your-spotify/docker-compose.yml @@ -3,7 +3,7 @@ version: "3" services: your-spotify: container_name: your-spotify - image: yooooomi/your_spotify_client:1.7.2 + image: yooooomi/your_spotify_client:1.7.3 depends_on: - your-spotify-server restart: unless-stopped diff --git a/apps/zipline/config.json b/apps/zipline/config.json index 2fa690be..feb61828 100644 --- a/apps/zipline/config.json +++ b/apps/zipline/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "zipline", - "tipi_version": 7, - "version": "3.7.6", + "tipi_version": 8, + "version": "3.7.7", "categories": [ "media" ], diff --git a/apps/zipline/docker-compose.yml b/apps/zipline/docker-compose.yml index 9db8923c..006ad57a 100644 --- a/apps/zipline/docker-compose.yml +++ b/apps/zipline/docker-compose.yml @@ -3,7 +3,7 @@ version: '3.7' services: zipline: container_name: zipline - image: ghcr.io/diced/zipline:3.7.6 + image: ghcr.io/diced/zipline:3.7.7 ports: - '${APP_PORT}:3000' restart: unless-stopped