From b721d0bb1d7709fcdd23acb0a3c0d390e64a6236 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noah=20F=C3=BCreder?= Date: Fri, 9 Jun 2023 15:23:55 +0200 Subject: [PATCH 01/11] Add forgejo --- apps/forgejo/config.json | 18 ++++ apps/forgejo/data/forgejo/gitea/conf/app.ini | 88 +++++++++++++++++++ apps/forgejo/docker-compose.yml | 44 ++++++++++ apps/forgejo/metadata/description.md | 6 ++ apps/forgejo/metadata/logo.jpg | Bin 0 -> 15304 bytes 5 files changed, 156 insertions(+) create mode 100644 apps/forgejo/config.json create mode 100644 apps/forgejo/data/forgejo/gitea/conf/app.ini create mode 100644 apps/forgejo/docker-compose.yml create mode 100644 apps/forgejo/metadata/description.md create mode 100644 apps/forgejo/metadata/logo.jpg diff --git a/apps/forgejo/config.json b/apps/forgejo/config.json new file mode 100644 index 00000000..40711b53 --- /dev/null +++ b/apps/forgejo/config.json @@ -0,0 +1,18 @@ +{ + "$schema": "../schema.json", + "name": "Forgejo", + "port": 8195, + "available": true, + "exposable": true, + "id": "forgejo", + "tipi_version": 7, + "version": "1.19.3-0", + "categories": [ + "development" + ], + "description": "Forgejo is a self-hosted lightweight software forge. Easy to install and low maintenance, it just does the job.", + "short_desc": "Beyond coding. We forge. · Lightweight and performant · Guaranteed 100% Free Software", + "author": "forgejo", + "source": "https://codeberg.org/forgejo/forgejo/", + "form_fields": [] +} \ No newline at end of file diff --git a/apps/forgejo/data/forgejo/gitea/conf/app.ini b/apps/forgejo/data/forgejo/gitea/conf/app.ini new file mode 100644 index 00000000..48e6686c --- /dev/null +++ b/apps/forgejo/data/forgejo/gitea/conf/app.ini @@ -0,0 +1,88 @@ +APP_NAME = Forgejo Beyond coding. We forge. +RUN_MODE = prod +RUN_USER = git + +[repository] +ROOT = /data/git/repositories + +[repository.local] +LOCAL_COPY_PATH = /data/gitea/tmp/local-repo + +[repository.upload] +TEMP_PATH = /data/gitea/uploads + +[server] +APP_DATA_PATH = /data/git +DOMAIN = localhost +SSH_DOMAIN = localhost +HTTP_PORT = 3000 +ROOT_URL = http://localhost:8108/ +DISABLE_SSH = false +SSH_PORT = 22 +SSH_LISTEN_PORT = 22 +LFS_START_SERVER = true +LFS_CONTENT_PATH = /data/git/lfs +LFS_JWT_SECRET = wo2G20l0nGsspUp8xsLNSNF7H8U-GQUVth5gj_q5cDk +OFFLINE_MODE = false + +[database] +PATH = /data/gitea/gitea.db +DB_TYPE = postgres +HOST = forgejo-db:5432 +NAME = forgejo +USER = forgejo +PASSWD = forgejo +LOG_SQL = false +SCHEMA = +SSL_MODE = disable +CHARSET = utf8 + +[indexer] +ISSUE_INDEXER_PATH = /data/gitea/indexers/issues.bleve + +[session] +PROVIDER_CONFIG = /data/gitea/sessions +PROVIDER = file + +[picture] +AVATAR_UPLOAD_PATH = /data/gitea/avatars +REPOSITORY_AVATAR_UPLOAD_PATH = /data/gitea/repo-avatars +DISABLE_GRAVATAR = false +ENABLE_FEDERATED_AVATAR = true + +[attachment] +PATH = /data/gitea/attachments + +[log] +MODE = console +LEVEL = info +ROUTER = console +ROOT_PATH = /data/gitea/log + +[security] +INSTALL_LOCK = true +SECRET_KEY = +REVERSE_PROXY_LIMIT = 1 +REVERSE_PROXY_TRUSTED_PROXIES = * +INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE2NTMyODU5ODh9.l7fPuVA8LSHZvdBum8YDrH47RZjEx_cZLbswO5pMDk8 +PASSWORD_HASH_ALGO = pbkdf2 + +[service] +DISABLE_REGISTRATION = false +REQUIRE_SIGNIN_VIEW = false +REGISTER_EMAIL_CONFIRM = false +ENABLE_NOTIFY_MAIL = false +ALLOW_ONLY_EXTERNAL_REGISTRATION = false +ENABLE_CAPTCHA = false +DEFAULT_KEEP_EMAIL_PRIVATE = false +DEFAULT_ALLOW_CREATE_ORGANIZATION = true +DEFAULT_ENABLE_TIMETRACKING = true +NO_REPLY_ADDRESS = noreply.localhost + +[mailer] +ENABLED = false + +[openid] +ENABLE_OPENID_SIGNIN = true +ENABLE_OPENID_SIGNUP = true + diff --git a/apps/forgejo/docker-compose.yml b/apps/forgejo/docker-compose.yml new file mode 100644 index 00000000..013ee4ff --- /dev/null +++ b/apps/forgejo/docker-compose.yml @@ -0,0 +1,44 @@ +version: "3.7" + +services: + forgejo: + image: codeberg.org/forgejo/forgejo:1.19.3-0 + container_name: forgejo + environment: + - USER_UID=1000 + - USER_GID=1000 + - FORGEJO__database__DB_TYPE=postgres + - FORGEJO__database__HOST=forgejo-db:5432 + - FORGEJO__database__NAME=forgejo + - FORGEJO__database__USER=forgejo + - FORGEJO__database__PASSWD=forgejo + restart: unless-stopped + volumes: + - ${APP_DATA_DIR}/data/forgejo:/data + ports: + - ${APP_PORT}:3000 + - "222:22" + depends_on: + - forgejo-db + networks: + - tipi_main_network + labels: + traefik.enable: ${APP_EXPOSED} + traefik.http.routers.forgejo.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.forgejo.entrypoints: websecure + traefik.http.routers.forgejo.service: forgejo + traefik.http.routers.forgejo.tls.certresolver: myresolver + traefik.http.services.forgejo.loadbalancer.server.port: 3000 + + forgejo-db: + container_name: forgejo-db + image: postgres:14 + restart: unless-stopped + environment: + - POSTGRES_USER=forgejo + - POSTGRES_PASSWORD=forgejo + - POSTGRES_DB=forgejo + volumes: + - ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data + networks: + - tipi_main_network diff --git a/apps/forgejo/metadata/description.md b/apps/forgejo/metadata/description.md new file mode 100644 index 00000000..e8555c16 --- /dev/null +++ b/apps/forgejo/metadata/description.md @@ -0,0 +1,6 @@ +# Forgejo Beyond coding. We forge. + +Hi there! Tired of big platforms playing monopoly? Providing Git hosting for your project, friends, company or community? Forgejo (/for'd͡ʒe.jo/ inspired by forĝejo – the Esperanto word for forge) has you covered with its intuitive interface, light and easy hosting and a lot of builtin functionality. + +Forgejo was [created in 2022](https://forgejo.org/2022-12-15-hello-forgejo/) because we think that the project should be owned by an independent community. If you second that, then Forgejo is for you! Our promise: Independent Free/Libre Software forever! + diff --git a/apps/forgejo/metadata/logo.jpg b/apps/forgejo/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f871c17ea8ef2c0ce23e79931b4427449b991d99 GIT binary patch literal 15304 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 Date: Thu, 8 Jun 2023 20:39:28 -0400 Subject: [PATCH 02/11] chore(deps): update lscr.io/linuxserver/jackett docker tag to v0.21.177 (#672) * chore(deps): update lscr.io/linuxserver/jackett docker tag to v0.21.177 * Update app version --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: github-action update-app-version --- apps/jackett/config.json | 4 ++-- apps/jackett/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/jackett/config.json b/apps/jackett/config.json index 487bded2..eea44fe5 100644 --- a/apps/jackett/config.json +++ b/apps/jackett/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8097, "id": "jackett", - "tipi_version": 42, - "version": "0.21.166", + "tipi_version": 43, + "version": "0.21.177", "description": "Jackett works as a proxy server: it translates queries from apps (Sonarr, Radarr, SickRage, CouchPotato, Mylar3, Lidarr, DuckieTV, qBittorrent, Nefarious etc.) into tracker-site-specific http queries, parses the html or json response, and then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches.", "short_desc": "API Support for your favorite torrent trackers ", "categories": [ diff --git a/apps/jackett/docker-compose.yml b/apps/jackett/docker-compose.yml index d80be91f..89c8a5f6 100644 --- a/apps/jackett/docker-compose.yml +++ b/apps/jackett/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.7" services: jackett: - image: lscr.io/linuxserver/jackett:0.21.166 + image: lscr.io/linuxserver/jackett:0.21.177 container_name: jackett environment: - PUID=1000 From 1e94e0cb183a10f336028c8f5342e558a00bb7ff Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 10 Jun 2023 13:33:56 +0200 Subject: [PATCH 03/11] chore(deps): update n8nio/n8n docker tag to v0.232.0 (#671) * chore(deps): update n8nio/n8n docker tag to v0.232.0 * Update app version --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: github-action update-app-version --- apps/n8n/config.json | 4 ++-- apps/n8n/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/n8n/config.json b/apps/n8n/config.json index 1c9e55f8..c32f9e41 100644 --- a/apps/n8n/config.json +++ b/apps/n8n/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8094, "id": "n8n", - "tipi_version": 13, - "version": "0.229.0", + "tipi_version": 14, + "version": "0.232.0", "categories": [ "automation" ], diff --git a/apps/n8n/docker-compose.yml b/apps/n8n/docker-compose.yml index f69d7dde..44221c75 100644 --- a/apps/n8n/docker-compose.yml +++ b/apps/n8n/docker-compose.yml @@ -3,7 +3,7 @@ version: '3.7' services: n8n: container_name: n8n - image: n8nio/n8n:0.230.2 + image: n8nio/n8n:0.232.0 restart: unless-stopped ports: - ${APP_PORT}:5678 From 0f4026d6b210ff6e3ab97879e523e29ef471a6a2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 10 Jun 2023 13:34:14 +0200 Subject: [PATCH 04/11] chore(deps): update lscr.io/linuxserver/sabnzbd docker tag to v4.0.2 (#670) * chore(deps): update lscr.io/linuxserver/sabnzbd docker tag to v4.0.2 * Update app version --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: github-action update-app-version --- apps/sabnzbd/config.json | 4 ++-- apps/sabnzbd/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/sabnzbd/config.json b/apps/sabnzbd/config.json index c48cd53f..430e113a 100644 --- a/apps/sabnzbd/config.json +++ b/apps/sabnzbd/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "sabnzbd", - "tipi_version": 4, - "version": "4.0.1", + "tipi_version": 5, + "version": "4.0.2", "categories": [ "media", "utilities" diff --git a/apps/sabnzbd/docker-compose.yml b/apps/sabnzbd/docker-compose.yml index 27118788..762948ea 100644 --- a/apps/sabnzbd/docker-compose.yml +++ b/apps/sabnzbd/docker-compose.yml @@ -2,7 +2,7 @@ version: '3' services: sabnzbd: - image: lscr.io/linuxserver/sabnzbd:4.0.1 + image: lscr.io/linuxserver/sabnzbd:4.0.2 container_name: sabnzbd ports: - ${APP_PORT}:8080 From 423ab7d7f885227261ef89f65f94951829a4386a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 10 Jun 2023 13:34:33 +0200 Subject: [PATCH 05/11] chore(deps): update adguard/adguardhome docker tag to v0.107.31 (#668) * chore(deps): update adguard/adguardhome docker tag to v0.107.31 * Update app version --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: github-action update-app-version --- apps/adguard/config.json | 4 ++-- apps/adguard/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/adguard/config.json b/apps/adguard/config.json index 01dcbc03..b73b1018 100644 --- a/apps/adguard/config.json +++ b/apps/adguard/config.json @@ -3,8 +3,8 @@ "name": "Adguard", "available": true, "exposable": true, - "tipi_version": 8, - "version": "0.107.29", + "tipi_version": 9, + "version": "0.107.31", "port": 8104, "id": "adguard", "categories": [ diff --git a/apps/adguard/docker-compose.yml b/apps/adguard/docker-compose.yml index d69f0b14..c67bb189 100644 --- a/apps/adguard/docker-compose.yml +++ b/apps/adguard/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: adguard: - image: adguard/adguardhome:v0.107.29 + image: adguard/adguardhome:v0.107.31 container_name: adguard volumes: - "${APP_DATA_DIR}/data/work:/opt/adguardhome/work" From da13e4367a6f555a0197ddfe7884ba6422d5f469 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 10 Jun 2023 13:34:51 +0200 Subject: [PATCH 06/11] chore(deps): update mrcas/mind docker tag to v1.3.1 (#673) * chore(deps): update mrcas/mind docker tag to v1.3.1 * Update app version --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: github-action update-app-version --- apps/mind/config.json | 4 ++-- apps/mind/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/mind/config.json b/apps/mind/config.json index c1ee73a2..5d1ee78f 100644 --- a/apps/mind/config.json +++ b/apps/mind/config.json @@ -5,8 +5,8 @@ "available": true, "exposable": true, "id": "mind", - "tipi_version": 3, - "version": "1.3.0", + "tipi_version": 4, + "version": "1.3.1", "categories": [ "utilities" ], diff --git a/apps/mind/docker-compose.yml b/apps/mind/docker-compose.yml index 60320a4b..67dc3fd3 100644 --- a/apps/mind/docker-compose.yml +++ b/apps/mind/docker-compose.yml @@ -3,7 +3,7 @@ version: '3.3' services: mind: container_name: mind - image: mrcas/mind:v1.3.0 + image: mrcas/mind:v1.3.1 volumes: - ${APP_DATA_DIR}/data/mind-db:/app/db environment: From 7d9ceba81558091f0bb0a2a7b82a7445f1c20a28 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 10 Jun 2023 13:35:05 +0200 Subject: [PATCH 07/11] chore(deps): update lscr.io/linuxserver/jackett docker tag to v0.21.186 (#674) * chore(deps): update lscr.io/linuxserver/jackett docker tag to v0.21.186 * Update app version --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: github-action update-app-version --- apps/jackett/config.json | 4 ++-- apps/jackett/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/jackett/config.json b/apps/jackett/config.json index eea44fe5..31f5cac2 100644 --- a/apps/jackett/config.json +++ b/apps/jackett/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 8097, "id": "jackett", - "tipi_version": 43, - "version": "0.21.177", + "tipi_version": 44, + "version": "0.21.186", "description": "Jackett works as a proxy server: it translates queries from apps (Sonarr, Radarr, SickRage, CouchPotato, Mylar3, Lidarr, DuckieTV, qBittorrent, Nefarious etc.) into tracker-site-specific http queries, parses the html or json response, and then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches.", "short_desc": "API Support for your favorite torrent trackers ", "categories": [ diff --git a/apps/jackett/docker-compose.yml b/apps/jackett/docker-compose.yml index 89c8a5f6..b675c6e8 100644 --- a/apps/jackett/docker-compose.yml +++ b/apps/jackett/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.7" services: jackett: - image: lscr.io/linuxserver/jackett:0.21.177 + image: lscr.io/linuxserver/jackett:0.21.186 container_name: jackett environment: - PUID=1000 From c85459ae79defdcbc558a9cd2572dcacb34b2dbe Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 10 Jun 2023 13:35:37 +0200 Subject: [PATCH 08/11] chore(deps): update shaneisrael/fireshare docker tag to v1.2.9 (#669) * chore(deps): update shaneisrael/fireshare docker tag to v1.2.9 * Update app version --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: github-action update-app-version --- apps/fireshare/config.json | 8 +++++--- apps/fireshare/docker-compose.yml | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/apps/fireshare/config.json b/apps/fireshare/config.json index bec2d026..c7932de9 100644 --- a/apps/fireshare/config.json +++ b/apps/fireshare/config.json @@ -5,9 +5,11 @@ "available": true, "exposable": true, "id": "fireshare", - "tipi_version": 1, - "version": "v1.2.8", - "categories": ["development"], + "tipi_version": 2, + "version": "1.2.9", + "categories": [ + "development" + ], "description": "Self host your media and share with unique links. Share your game clips, videos, or other media via unique links.", "short_desc": "Self host your media and share with unique links", "author": "https://github.com/ShaneIsrael", diff --git a/apps/fireshare/docker-compose.yml b/apps/fireshare/docker-compose.yml index 11182876..798de21c 100644 --- a/apps/fireshare/docker-compose.yml +++ b/apps/fireshare/docker-compose.yml @@ -3,7 +3,7 @@ version: '3' services: fireshare: container_name: fireshare - image: shaneisrael/fireshare:v1.2.8 + image: shaneisrael/fireshare:v1.2.9 ports: - ${APP_PORT}:80 volumes: From ee6467ad1ce8bfece26125da952449653e4b8ad1 Mon Sep 17 00:00:00 2001 From: Nicolas Meienberger <47644445+meienberger@users.noreply.github.com> Date: Sat, 10 Jun 2023 16:46:05 +0200 Subject: [PATCH 09/11] local domain configs A-G (#676) * feat(actual-budget): change config to support local domain * feat(adguard): change config to support local domain * feat(autobrr): change config to support local domain * feat(barrage): change config to support local domain * feat(bazarr): change config to support local domain * feat(booksonic): change config to support local domain * feat(bookstack): change config to support local domain * feat(calibre-web): change config to support local domain * feat(chatgpt-ui): change config to support local domain * feat(chatpad): change config to support local domain * feat(code-server): change config to support local domain * feat(codex-docs): change config to support local domain * feat(dailytxt): change config to support local domain * feat(dashdot): change config to support local domain * feat(deemix): change config to support local domain * feat(deluge): change config to support local domain * feat(dokuwiki): change config to support local domain * feat(dozzle): change config to support local domain * feat(duplicati): change config to support local domain * feat(emulatorjs): change config to support local domain * feat(excalidraw): change config to support local domain * feat(filebrowser): change config to support local domain * feat(filestash): change config to support local domain * feat(firefly-iii): change config to support local domain * feat(fireshare): change config to support local domain * feat(flatnotes): change config to support local domain * feat(freshrss): change config to support local domain * feat(ghost): change config to support local domain * feat(gitea): change config to support local domain * feat(gotify): change config to support local domain * feat(gotosocial): change config to support local domain * feat(grafana): change config to support local domain * feat(grav): change config to support local domain * feat(grocy): change config to support local domain --- apps/actual-budget/config.json | 6 ++-- apps/actual-budget/docker-compose.yml | 24 ++++++++++++++-- apps/adguard/config.json | 11 ++------ apps/adguard/docker-compose.yml | 23 +++++++++++++-- apps/autobrr/config.json | 6 ++-- apps/autobrr/docker-compose.yml | 26 ++++++++++++++--- apps/barrage/config.json | 2 +- apps/barrage/docker-compose.yml | 22 +++++++++++++-- apps/bazarr/config.json | 7 ++--- apps/bazarr/docker-compose.yml | 22 +++++++++++++-- apps/booksonic/config.json | 2 +- apps/booksonic/docker-compose.yml | 23 +++++++++++++-- apps/bookstack/config.json | 2 +- apps/bookstack/docker-compose.yml | 24 ++++++++++++++-- apps/calibre-web/config.json | 6 ++-- apps/calibre-web/docker-compose.yml | 22 +++++++++++++-- apps/chatgpt-ui/config.json | 10 ++----- apps/chatgpt-ui/docker-compose.yml | 34 +++++++++++++++++------ apps/chatpad/config.json | 6 ++-- apps/chatpad/docker-compose.yml | 24 ++++++++++++++-- apps/code-server/config.json | 6 ++-- apps/code-server/docker-compose.yml | 22 +++++++++++++-- apps/codex-docs/config.json | 2 +- apps/codex-docs/docker-compose.yml | 24 ++++++++++++++-- apps/dailytxt/config.json | 6 ++-- apps/dailytxt/docker-compose.yml | 26 ++++++++++++++--- apps/dashdot/config.json | 6 ++-- apps/dashdot/docker-compose.yml | 24 ++++++++++++++-- apps/deemix/config.json | 2 +- apps/deemix/docker-compose.yml | 22 +++++++++++++-- apps/deluge/config.json | 2 +- apps/deluge/docker-compose.yml | 24 ++++++++++++++-- apps/dokuwiki/config.json | 2 +- apps/dokuwiki/docker-compose.yml | 24 ++++++++++++++-- apps/dozzle/config.json | 2 +- apps/dozzle/docker-compose.yml | 23 +++++++++++++-- apps/duplicati/config.json | 6 ++-- apps/duplicati/docker-compose.yml | 24 ++++++++++++++-- apps/emulatorjs/config.json | 2 +- apps/emulatorjs/docker-compose.yml | 26 ++++++++++++++--- apps/excalidraw/config.json | 2 +- apps/excalidraw/docker-compose.yml | 24 ++++++++++++++-- apps/filebrowser/config.json | 2 +- apps/filebrowser/docker-compose.yml | 24 ++++++++++++++-- apps/filestash/config.json | 4 +-- apps/filestash/docker-compose.yml | 37 ++++++++++++++++++------- apps/firefly-iii/config.json | 2 +- apps/firefly-iii/docker-compose.yml | 28 +++++++++++++++---- apps/fireshare/config.json | 6 ++-- apps/fireshare/docker-compose.yml | 24 ++++++++++++++-- apps/flatnotes/config.json | 6 ++-- apps/flatnotes/docker-compose.yml | 24 ++++++++++++++-- apps/freshrss/config.json | 6 ++-- apps/freshrss/docker-compose.yml | 22 +++++++++++++-- apps/ghost/config.json | 7 ++--- apps/ghost/docker-compose.yml | 29 +++++++++++++++---- apps/gitea/config.json | 6 ++-- apps/gitea/docker-compose.yml | 22 +++++++++++++-- apps/gotify/config.json | 2 +- apps/gotify/docker-compose.arm.yml | 36 ++++++++++++++++-------- apps/gotify/docker-compose.arm64.yml | 40 ++++++++++++++++++--------- apps/gotify/docker-compose.yml | 40 ++++++++++++++++++--------- apps/gotosocial/config.json | 6 ++-- apps/gotosocial/docker-compose.yml | 26 ++++++++++++++--- apps/grafana/config.json | 6 ++-- apps/grafana/docker-compose.yml | 23 +++++++++++++-- apps/grav/config.json | 2 +- apps/grav/docker-compose.yml | 22 +++++++++++++-- apps/grocy/config.json | 7 ++--- apps/grocy/docker-compose.yml | 22 +++++++++++++-- 70 files changed, 834 insertions(+), 250 deletions(-) diff --git a/apps/actual-budget/config.json b/apps/actual-budget/config.json index a18e0fc5..81b79de6 100644 --- a/apps/actual-budget/config.json +++ b/apps/actual-budget/config.json @@ -5,11 +5,9 @@ "exposable": true, "port": 8011, "id": "actual-budget", - "tipi_version": 3, + "tipi_version": 4, "version": "23.6.0", - "categories": [ - "finance" - ], + "categories": ["finance"], "description": "Actual is a local-first personal finance tool. It is 100% free and open-source, written in NodeJS, it has a synchronization element so that all your changes can move between devices without any heavy lifting.", "short_desc": "Local-first OpenSource Budget tool", "author": "Shift Reset LLC", diff --git a/apps/actual-budget/docker-compose.yml b/apps/actual-budget/docker-compose.yml index c5a609c5..66f950bb 100644 --- a/apps/actual-budget/docker-compose.yml +++ b/apps/actual-budget/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.9' +version: "3.9" services: actual-budget: container_name: actual-budget @@ -11,9 +11,27 @@ services: volumes: - ${APP_DATA_DIR}/data:/data labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.actual-budget-web-redirect.redirectscheme.scheme: https + traefik.http.services.actual-budget.loadbalancer.server.port: 5006 + # Web + traefik.http.routers.actual-budget-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.actual-budget-insecure.entrypoints: web + traefik.http.routers.actual-budget-insecure.service: actual-budget + traefik.http.routers.actual-budget-insecure.middlewares: actual-budget-web-redirect + # Websecure traefik.http.routers.actual-budget.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.actual-budget.entrypoints: websecure traefik.http.routers.actual-budget.service: actual-budget traefik.http.routers.actual-budget.tls.certresolver: myresolver - traefik.http.services.actual-budget.loadbalancer.server.port: 5006 + # Local domain + traefik.http.routers.actual-budget-local-insecure.rule: Host(`actual-budget.${LOCAL_DOMAIN}`) + traefik.http.routers.actual-budget-local-insecure.entrypoints: web + traefik.http.routers.actual-budget-local-insecure.service: actual-budget + traefik.http.routers.actual-budget-local-insecure.middlewares: actual-budget-web-redirect + # Local domain secure + traefik.http.routers.actual-budget-local.rule: Host(`actual-budget.${LOCAL_DOMAIN}`) + traefik.http.routers.actual-budget-local.entrypoints: websecure + traefik.http.routers.actual-budget-local.service: actual-budget + traefik.http.routers.actual-budget-local.tls: true diff --git a/apps/adguard/config.json b/apps/adguard/config.json index b73b1018..eeb79789 100644 --- a/apps/adguard/config.json +++ b/apps/adguard/config.json @@ -3,22 +3,17 @@ "name": "Adguard", "available": true, "exposable": true, - "tipi_version": 9, + "tipi_version": 10, "version": "0.107.31", "port": 8104, "id": "adguard", - "categories": [ - "network", - "security" - ], + "categories": ["network", "security"], "description": "Adguard is the best way to get rid of annoying ads and online tracking and protect your computer from malware. Make your web surfing fast, safe and ad-free.", "short_desc": "World's most advanced adblocker!", "author": "AdguardTeam", "source": "https://github.com/AdguardTeam", "requirements": { - "ports": [ - 53 - ] + "ports": [53] }, "form_fields": [ { diff --git a/apps/adguard/docker-compose.yml b/apps/adguard/docker-compose.yml index c67bb189..89ac66a2 100644 --- a/apps/adguard/docker-compose.yml +++ b/apps/adguard/docker-compose.yml @@ -1,4 +1,3 @@ - version: "3.7" services: adguard: @@ -15,9 +14,27 @@ services: - ${NETWORK_INTERFACE:-0.0.0.0}:53:53/udp - ${APP_PORT}:80 labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.adguard-web-redirect.redirectscheme.scheme: https + traefik.http.services.adguard.loadbalancer.server.port: 80 + # Web + traefik.http.routers.adguard-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.adguard-insecure.entrypoints: web + traefik.http.routers.adguard-insecure.service: adguard + traefik.http.routers.adguard-insecure.middlewares: adguard-web-redirect + # Websecure traefik.http.routers.adguard.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.adguard.entrypoints: websecure traefik.http.routers.adguard.service: adguard traefik.http.routers.adguard.tls.certresolver: myresolver - traefik.http.services.adguard.loadbalancer.server.port: 80 + # Local domain + traefik.http.routers.adguard-local-insecure.rule: Host(`adguard.${LOCAL_DOMAIN}`) + traefik.http.routers.adguard-local-insecure.entrypoints: web + traefik.http.routers.adguard-local-insecure.service: adguard + traefik.http.routers.adguard-local-insecure.middlewares: adguard-web-redirect + # Local domain secure + traefik.http.routers.adguard-local.rule: Host(`adguard.${LOCAL_DOMAIN}`) + traefik.http.routers.adguard-local.entrypoints: websecure + traefik.http.routers.adguard-local.service: adguard + traefik.http.routers.adguard-local.tls: true diff --git a/apps/autobrr/config.json b/apps/autobrr/config.json index 3ffcd60d..5f752277 100644 --- a/apps/autobrr/config.json +++ b/apps/autobrr/config.json @@ -5,11 +5,9 @@ "available": true, "exposable": true, "id": "autobrr", - "tipi_version": 5, + "tipi_version": 6, "version": "1.26.1", - "categories": [ - "media" - ], + "categories": ["media"], "description": "autobrr is the modern download automation tool for torrents. With inspiration and ideas from tools like trackarr, autodl-irssi and flexget we built one tool that can do it all, and then some.", "short_desc": "Automation for downloads.", "author": "autobrr", diff --git a/apps/autobrr/docker-compose.yml b/apps/autobrr/docker-compose.yml index ff0b955e..f73ce6d8 100644 --- a/apps/autobrr/docker-compose.yml +++ b/apps/autobrr/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3' +version: "3" services: autobrr: @@ -9,15 +9,33 @@ services: - ${APP_PORT}:7474 volumes: - ${APP_DATA_DIR}/data/autobrr:/config - user: '1000:1000' + user: "1000:1000" environment: - TZ=${TZ} networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.autobrr-web-redirect.redirectscheme.scheme: https + traefik.http.services.autobrr.loadbalancer.server.port: 7474 + # Web + traefik.http.routers.autobrr-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.autobrr-insecure.entrypoints: web + traefik.http.routers.autobrr-insecure.service: autobrr + traefik.http.routers.autobrr-insecure.middlewares: autobrr-web-redirect + # Websecure traefik.http.routers.autobrr.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.autobrr.entrypoints: websecure traefik.http.routers.autobrr.service: autobrr traefik.http.routers.autobrr.tls.certresolver: myresolver - traefik.http.services.autobrr.loadbalancer.server.port: 7474 + # Local domain + traefik.http.routers.autobrr-local-insecure.rule: Host(`autobrr.${LOCAL_DOMAIN}`) + traefik.http.routers.autobrr-local-insecure.entrypoints: web + traefik.http.routers.autobrr-local-insecure.service: autobrr + traefik.http.routers.autobrr-local-insecure.middlewares: autobrr-web-redirect + # Local domain secure + traefik.http.routers.autobrr-local.rule: Host(`autobrr.${LOCAL_DOMAIN}`) + traefik.http.routers.autobrr-local.entrypoints: websecure + traefik.http.routers.autobrr-local.service: autobrr + traefik.http.routers.autobrr-local.tls: true diff --git a/apps/barrage/config.json b/apps/barrage/config.json index 2057980a..fe12e000 100644 --- a/apps/barrage/config.json +++ b/apps/barrage/config.json @@ -5,7 +5,7 @@ "available": true, "exposable": true, "id": "barrage", - "tipi_version": 2, + "tipi_version": 3, "version": "0.3.0", "categories": ["utilities"], "description": "Minimal Deluge WebUI with full mobile support", diff --git a/apps/barrage/docker-compose.yml b/apps/barrage/docker-compose.yml index a3a11d91..b237c568 100644 --- a/apps/barrage/docker-compose.yml +++ b/apps/barrage/docker-compose.yml @@ -15,9 +15,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.barrage-web-redirect.redirectscheme.scheme: https + traefik.http.services.barrage.loadbalancer.server.port: 3000 + # Web + traefik.http.routers.barrage-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.barrage-insecure.entrypoints: web + traefik.http.routers.barrage-insecure.service: barrage + traefik.http.routers.barrage-insecure.middlewares: barrage-web-redirect + # Websecure traefik.http.routers.barrage.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.barrage.entrypoints: websecure traefik.http.routers.barrage.service: barrage traefik.http.routers.barrage.tls.certresolver: myresolver - traefik.http.services.barrage.loadbalancer.server.port: 3000 + # Local domain + traefik.http.routers.barrage-local-insecure.rule: Host(`barrage.${LOCAL_DOMAIN}`) + traefik.http.routers.barrage-local-insecure.entrypoints: web + traefik.http.routers.barrage-local-insecure.service: barrage + traefik.http.routers.barrage-local-insecure.middlewares: barrage-web-redirect + # Local domain secure + traefik.http.routers.barrage-local.rule: Host(`barrage.${LOCAL_DOMAIN}`) + traefik.http.routers.barrage-local.entrypoints: websecure + traefik.http.routers.barrage-local.service: barrage + traefik.http.routers.barrage-local.tls: true diff --git a/apps/bazarr/config.json b/apps/bazarr/config.json index 1ee2810e..fd9436ae 100644 --- a/apps/bazarr/config.json +++ b/apps/bazarr/config.json @@ -5,12 +5,9 @@ "exposable": true, "port": 6767, "id": "bazarr", - "tipi_version": 5, + "tipi_version": 6, "version": "1.2.1", - "categories": [ - "media", - "utilities" - ], + "categories": ["media", "utilities"], "description": "Bazarr is a companion application to Sonarr and Radarr that manages and downloads subtitles based on your requirements.", "short_desc": "A companion application to Sonarr and Radarr that manages and downloads subtitles", "author": "morpheus65535", diff --git a/apps/bazarr/docker-compose.yml b/apps/bazarr/docker-compose.yml index 8998d3a5..f4579b2a 100644 --- a/apps/bazarr/docker-compose.yml +++ b/apps/bazarr/docker-compose.yml @@ -19,9 +19,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.bazarr-web-redirect.redirectscheme.scheme: https + traefik.http.services.bazarr.loadbalancer.server.port: 6767 + # Web + traefik.http.routers.bazarr-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.bazarr-insecure.entrypoints: web + traefik.http.routers.bazarr-insecure.service: bazarr + traefik.http.routers.bazarr-insecure.middlewares: bazarr-web-redirect + # Websecure traefik.http.routers.bazarr.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.bazarr.entrypoints: websecure traefik.http.routers.bazarr.service: bazarr traefik.http.routers.bazarr.tls.certresolver: myresolver - traefik.http.services.bazarr.loadbalancer.server.port: 6767 + # Local domain + traefik.http.routers.bazarr-local-insecure.rule: Host(`bazarr.${LOCAL_DOMAIN}`) + traefik.http.routers.bazarr-local-insecure.entrypoints: web + traefik.http.routers.bazarr-local-insecure.service: bazarr + traefik.http.routers.bazarr-local-insecure.middlewares: bazarr-web-redirect + # Local domain secure + traefik.http.routers.bazarr-local.rule: Host(`bazarr.${LOCAL_DOMAIN}`) + traefik.http.routers.bazarr-local.entrypoints: websecure + traefik.http.routers.bazarr-local.service: bazarr + traefik.http.routers.bazarr-local.tls: true diff --git a/apps/booksonic/config.json b/apps/booksonic/config.json index edf5b386..506df9d6 100644 --- a/apps/booksonic/config.json +++ b/apps/booksonic/config.json @@ -4,7 +4,7 @@ "available": true, "exposable": true, "port": 8040, - "tipi_version": 4, + "tipi_version": 5, "version": "2201.1.0", "id": "booksonic", "categories": ["books", "media"], diff --git a/apps/booksonic/docker-compose.yml b/apps/booksonic/docker-compose.yml index 4d3eb37c..62bdaa15 100644 --- a/apps/booksonic/docker-compose.yml +++ b/apps/booksonic/docker-compose.yml @@ -18,10 +18,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.booksonic-web-redirect.redirectscheme.scheme: https + traefik.http.services.booksonic.loadbalancer.server.port: 4040 + # Web + traefik.http.routers.booksonic-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.booksonic-insecure.entrypoints: web + traefik.http.routers.booksonic-insecure.service: booksonic + traefik.http.routers.booksonic-insecure.middlewares: booksonic-web-redirect + # Websecure traefik.http.routers.booksonic.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.booksonic.entrypoints: websecure traefik.http.routers.booksonic.service: booksonic traefik.http.routers.booksonic.tls.certresolver: myresolver - traefik.http.services.booksonic.loadbalancer.server.port: 4040 - \ No newline at end of file + # Local domain + traefik.http.routers.booksonic-local-insecure.rule: Host(`booksonic.${LOCAL_DOMAIN}`) + traefik.http.routers.booksonic-local-insecure.entrypoints: web + traefik.http.routers.booksonic-local-insecure.service: booksonic + traefik.http.routers.booksonic-local-insecure.middlewares: booksonic-web-redirect + # Local domain secure + traefik.http.routers.booksonic-local.rule: Host(`booksonic.${LOCAL_DOMAIN}`) + traefik.http.routers.booksonic-local.entrypoints: websecure + traefik.http.routers.booksonic-local.service: booksonic + traefik.http.routers.booksonic-local.tls: true diff --git a/apps/bookstack/config.json b/apps/bookstack/config.json index b47e7cb3..c3c80671 100644 --- a/apps/bookstack/config.json +++ b/apps/bookstack/config.json @@ -5,7 +5,7 @@ "exposable": true, "port": 8119, "id": "bookstack", - "tipi_version": 8, + "tipi_version": 9, "version": "23.05.20230503", "description": "BookStack is a simple, self-hosted, easy-to-use platform for organising and storing information. Default login: admin@admin.com password: password", "short_desc": "BookStack is a self-hosted platform for organising and storing information.", diff --git a/apps/bookstack/docker-compose.yml b/apps/bookstack/docker-compose.yml index bd952074..29bd6b99 100644 --- a/apps/bookstack/docker-compose.yml +++ b/apps/bookstack/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.7' +version: "3.7" services: bookstack: image: lscr.io/linuxserver/bookstack:23.05.20230503 @@ -21,12 +21,30 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.bookstack-web-redirect.redirectscheme.scheme: https + traefik.http.services.bookstack.loadbalancer.server.port: 80 + # Web + traefik.http.routers.bookstack-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.bookstack-insecure.entrypoints: web + traefik.http.routers.bookstack-insecure.service: bookstack + traefik.http.routers.bookstack-insecure.middlewares: bookstack-web-redirect + # Websecure traefik.http.routers.bookstack.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.bookstack.entrypoints: websecure traefik.http.routers.bookstack.service: bookstack traefik.http.routers.bookstack.tls.certresolver: myresolver - traefik.http.services.bookstack.loadbalancer.server.port: 80 + # Local domain + traefik.http.routers.bookstack-local-insecure.rule: Host(`bookstack.${LOCAL_DOMAIN}`) + traefik.http.routers.bookstack-local-insecure.entrypoints: web + traefik.http.routers.bookstack-local-insecure.service: bookstack + traefik.http.routers.bookstack-local-insecure.middlewares: bookstack-web-redirect + # Local domain secure + traefik.http.routers.bookstack-local.rule: Host(`bookstack.${LOCAL_DOMAIN}`) + traefik.http.routers.bookstack-local.entrypoints: websecure + traefik.http.routers.bookstack-local.service: bookstack + traefik.http.routers.bookstack-local.tls: true bookstack-db: image: lscr.io/linuxserver/mariadb diff --git a/apps/calibre-web/config.json b/apps/calibre-web/config.json index 94c9e18d..666f7097 100644 --- a/apps/calibre-web/config.json +++ b/apps/calibre-web/config.json @@ -4,12 +4,10 @@ "available": true, "exposable": true, "port": 8100, - "tipi_version": 5, + "tipi_version": 6, "version": "0.6.20", "id": "calibre-web", - "categories": [ - "books" - ], + "categories": ["books"], "description": "On the initial setup screen, enter /books as your calibre library location. \n Default admin login: Username: admin Password: admin123", "short_desc": "Calibre-web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database.", "author": "https://github.com/janeczku/", diff --git a/apps/calibre-web/docker-compose.yml b/apps/calibre-web/docker-compose.yml index 85cd46b4..6dfcd801 100644 --- a/apps/calibre-web/docker-compose.yml +++ b/apps/calibre-web/docker-compose.yml @@ -16,9 +16,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.calibre-web-web-redirect.redirectscheme.scheme: https + traefik.http.services.calibre-web.loadbalancer.server.port: 8083 + # Web + traefik.http.routers.calibre-web-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.calibre-web-insecure.entrypoints: web + traefik.http.routers.calibre-web-insecure.service: calibre-web + traefik.http.routers.calibre-web-insecure.middlewares: calibre-web-web-redirect + # Websecure traefik.http.routers.calibre-web.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.calibre-web.entrypoints: websecure traefik.http.routers.calibre-web.service: calibre-web traefik.http.routers.calibre-web.tls.certresolver: myresolver - traefik.http.services.calibre-web.loadbalancer.server.port: 8083 + # Local domain + traefik.http.routers.calibre-web-local-insecure.rule: Host(`calibre-web.${LOCAL_DOMAIN}`) + traefik.http.routers.calibre-web-local-insecure.entrypoints: web + traefik.http.routers.calibre-web-local-insecure.service: calibre-web + traefik.http.routers.calibre-web-local-insecure.middlewares: calibre-web-web-redirect + # Local domain secure + traefik.http.routers.calibre-web-local.rule: Host(`calibre-web.${LOCAL_DOMAIN}`) + traefik.http.routers.calibre-web-local.entrypoints: websecure + traefik.http.routers.calibre-web-local.service: calibre-web + traefik.http.routers.calibre-web-local.tls: true diff --git a/apps/chatgpt-ui/config.json b/apps/chatgpt-ui/config.json index eeb82740..8108b669 100644 --- a/apps/chatgpt-ui/config.json +++ b/apps/chatgpt-ui/config.json @@ -5,18 +5,14 @@ "available": true, "exposable": true, "id": "chatgpt-ui", - "tipi_version": 8, + "tipi_version": 9, "version": "2.5.5", - "categories": [ - "ai" - ], + "categories": ["ai"], "description": "A ChatGPT web client that supports multiple users, multiple languages, and multiple database connections for persistent data storage", "short_desc": "A ChatGPT web client that supports multiple users, multiple languages, and multiple database connections for persistent data storage", "author": "https://github.com/WongSaang", "source": "https://github.com/WongSaang/chatgpt-ui", - "supported_architectures": [ - "amd64" - ], + "supported_architectures": ["amd64"], "form_fields": [ { "type": "random", diff --git a/apps/chatgpt-ui/docker-compose.yml b/apps/chatgpt-ui/docker-compose.yml index 730b3ab8..95a90542 100644 --- a/apps/chatgpt-ui/docker-compose.yml +++ b/apps/chatgpt-ui/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3' +version: "3" services: chatgpt-ui: image: wongsaang/chatgpt-ui-client:v2.5.5 @@ -12,24 +12,42 @@ services: depends_on: - chatgpt-ui-web-server ports: - - '8200:80' + - "8200:80" restart: always networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.chatgpt-ui-web-redirect.redirectscheme.scheme: https + traefik.http.services.chatgpt-ui.loadbalancer.server.port: 80 + # Web + traefik.http.routers.chatgpt-ui-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.chatgpt-ui-insecure.entrypoints: web + traefik.http.routers.chatgpt-ui-insecure.service: chatgpt-ui + traefik.http.routers.chatgpt-ui-insecure.middlewares: chatgpt-ui-web-redirect + # Websecure traefik.http.routers.chatgpt-ui.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.chatgpt-ui.entrypoints: websecure traefik.http.routers.chatgpt-ui.service: chatgpt-ui traefik.http.routers.chatgpt-ui.tls.certresolver: myresolver - traefik.http.services.chatgpt-ui.loadbalancer.server.port: 80 - + # Local domain + traefik.http.routers.chatgpt-ui-local-insecure.rule: Host(`chatgpt-ui.${LOCAL_DOMAIN}`) + traefik.http.routers.chatgpt-ui-local-insecure.entrypoints: web + traefik.http.routers.chatgpt-ui-local-insecure.service: chatgpt-ui + traefik.http.routers.chatgpt-ui-local-insecure.middlewares: chatgpt-ui-web-redirect + # Local domain secure + traefik.http.routers.chatgpt-ui-local.rule: Host(`chatgpt-ui.${LOCAL_DOMAIN}`) + traefik.http.routers.chatgpt-ui-local.entrypoints: websecure + traefik.http.routers.chatgpt-ui-local.service: chatgpt-ui + traefik.http.routers.chatgpt-ui-local.tls: true + chatgpt-ui-wsgi-server: image: wongsaang/chatgpt-ui-wsgi-server:v2.5.1 container_name: chatgpt-ui-wsgi-server environment: - APP_DOMAIN=${INTERNAL_IP}:8201 - - SERVER_WORKERS=3 + - SERVER_WORKERS=3 - WORKER_TIMEOUT=180 - DB_URL=mysql://tipi:${CHATGPT_UI_DB_PASSWORD}@chatgpt-ui-db:3306/chatgptdb - DJANGO_SUPERUSER_USERNAME=${CHATGPT_UI_SUPERUSER_USERNAME} # default superuser name @@ -47,14 +65,14 @@ services: depends_on: - chatgpt-ui-db restart: always - + chatgpt-ui-web-server: image: wongsaang/chatgpt-ui-web-server:v2.5.1 container_name: chatgpt-ui-web-server environment: - BACKEND_URL=http://chatgpt-ui-wsgi-server:8000 ports: - - '8201:80' + - "8201:80" depends_on: - chatgpt-ui-wsgi-server - chatgpt-ui-db diff --git a/apps/chatpad/config.json b/apps/chatpad/config.json index 1f46fbdb..51056f97 100644 --- a/apps/chatpad/config.json +++ b/apps/chatpad/config.json @@ -5,11 +5,9 @@ "exposable": true, "port": 8179, "id": "chatpad", - "tipi_version": 2, + "tipi_version": 3, "version": "latest", - "categories": [ - "ai" - ], + "categories": ["ai"], "description": "Not just another ChatGPT user-interface!", "short_desc": "Not just another ChatGPT user-interface!", "author": "Andrei Canta", diff --git a/apps/chatpad/docker-compose.yml b/apps/chatpad/docker-compose.yml index e991d755..75653251 100644 --- a/apps/chatpad/docker-compose.yml +++ b/apps/chatpad/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.7' +version: "3.7" services: chatpad: image: ghcr.io/deiucanta/chatpad:latest @@ -9,9 +9,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.chatpad-web-redirect.redirectscheme.scheme: https + traefik.http.services.chatpad.loadbalancer.server.port: 80 + # Web + traefik.http.routers.chatpad-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.chatpad-insecure.entrypoints: web + traefik.http.routers.chatpad-insecure.service: chatpad + traefik.http.routers.chatpad-insecure.middlewares: chatpad-web-redirect + # Websecure traefik.http.routers.chatpad.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.chatpad.entrypoints: websecure traefik.http.routers.chatpad.service: chatpad traefik.http.routers.chatpad.tls.certresolver: myresolver - traefik.http.services.chatpad.loadbalancer.server.port: 80 + # Local domain + traefik.http.routers.chatpad-local-insecure.rule: Host(`chatpad.${LOCAL_DOMAIN}`) + traefik.http.routers.chatpad-local-insecure.entrypoints: web + traefik.http.routers.chatpad-local-insecure.service: chatpad + traefik.http.routers.chatpad-local-insecure.middlewares: chatpad-web-redirect + # Local domain secure + traefik.http.routers.chatpad-local.rule: Host(`chatpad.${LOCAL_DOMAIN}`) + traefik.http.routers.chatpad-local.entrypoints: websecure + traefik.http.routers.chatpad-local.service: chatpad + traefik.http.routers.chatpad-local.tls: true diff --git a/apps/code-server/config.json b/apps/code-server/config.json index f6423e0a..1bfc7a97 100644 --- a/apps/code-server/config.json +++ b/apps/code-server/config.json @@ -5,11 +5,9 @@ "exposable": true, "port": 8138, "id": "code-server", - "tipi_version": 8, + "tipi_version": 9, "version": "4.13.0", - "categories": [ - "development" - ], + "categories": ["development"], "description": "", "short_desc": "Code-server is VS Code running on a remote server, accessible through the browser.", "author": "https://github.com/coder", diff --git a/apps/code-server/docker-compose.yml b/apps/code-server/docker-compose.yml index 53f9f024..4df51932 100644 --- a/apps/code-server/docker-compose.yml +++ b/apps/code-server/docker-compose.yml @@ -18,9 +18,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.code-server-web-redirect.redirectscheme.scheme: https + traefik.http.services.code-server.loadbalancer.server.port: 8443 + # Web + traefik.http.routers.code-server-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.code-server-insecure.entrypoints: web + traefik.http.routers.code-server-insecure.service: code-server + traefik.http.routers.code-server-insecure.middlewares: code-server-web-redirect + # Websecure traefik.http.routers.code-server.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.code-server.entrypoints: websecure traefik.http.routers.code-server.service: code-server traefik.http.routers.code-server.tls.certresolver: myresolver - traefik.http.services.code-server.loadbalancer.server.port: 8443 + # Local domain + traefik.http.routers.code-server-local-insecure.rule: Host(`code-server.${LOCAL_DOMAIN}`) + traefik.http.routers.code-server-local-insecure.entrypoints: web + traefik.http.routers.code-server-local-insecure.service: code-server + traefik.http.routers.code-server-local-insecure.middlewares: code-server-web-redirect + # Local domain secure + traefik.http.routers.code-server-local.rule: Host(`code-server.${LOCAL_DOMAIN}`) + traefik.http.routers.code-server-local.entrypoints: websecure + traefik.http.routers.code-server-local.service: code-server + traefik.http.routers.code-server-local.tls: true diff --git a/apps/codex-docs/config.json b/apps/codex-docs/config.json index f67d1747..1d526d03 100644 --- a/apps/codex-docs/config.json +++ b/apps/codex-docs/config.json @@ -5,7 +5,7 @@ "exposable": true, "port": 8101, "id": "codex-docs", - "tipi_version": 1, + "tipi_version": 2, "version": "v2.1", "categories": ["media"], "description": "CodeX Docs is a free docs application. It's based on Editor.js ecosystem which gives all modern opportunities for working with content. You can use it for product documentation, for internal team docs, for personal notes or any other need. ", diff --git a/apps/codex-docs/docker-compose.yml b/apps/codex-docs/docker-compose.yml index a9743496..46fc164d 100644 --- a/apps/codex-docs/docker-compose.yml +++ b/apps/codex-docs/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.2' +version: "3.2" services: codex-docs: @@ -19,12 +19,30 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.codex-docs-web-redirect.redirectscheme.scheme: https + traefik.http.services.codex-docs.loadbalancer.server.port: 3000 + # Web + traefik.http.routers.codex-docs-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.codex-docs-insecure.entrypoints: web + traefik.http.routers.codex-docs-insecure.service: codex-docs + traefik.http.routers.codex-docs-insecure.middlewares: codex-docs-web-redirect + # Websecure traefik.http.routers.codex-docs.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.codex-docs.entrypoints: websecure traefik.http.routers.codex-docs.service: codex-docs traefik.http.routers.codex-docs.tls.certresolver: myresolver - traefik.http.services.codex-docs.loadbalancer.server.port: 3000 + # Local domain + traefik.http.routers.codex-docs-local-insecure.rule: Host(`codex-docs.${LOCAL_DOMAIN}`) + traefik.http.routers.codex-docs-local-insecure.entrypoints: web + traefik.http.routers.codex-docs-local-insecure.service: codex-docs + traefik.http.routers.codex-docs-local-insecure.middlewares: codex-docs-web-redirect + # Local domain secure + traefik.http.routers.codex-docs-local.rule: Host(`codex-docs.${LOCAL_DOMAIN}`) + traefik.http.routers.codex-docs-local.entrypoints: websecure + traefik.http.routers.codex-docs-local.service: codex-docs + traefik.http.routers.codex-docs-local.tls: true codex-db: container_name: codex-db diff --git a/apps/dailytxt/config.json b/apps/dailytxt/config.json index 419cac28..53fbf28e 100644 --- a/apps/dailytxt/config.json +++ b/apps/dailytxt/config.json @@ -5,11 +5,9 @@ "available": true, "exposable": true, "id": "dailytxt", - "tipi_version": 3, + "tipi_version": 4, "version": "1.0.12", - "categories": [ - "utilities" - ], + "categories": ["utilities"], "description": "DailyTxT is an encrypted Diary Web-App to write down your stories of the day and to find them again easily.", "short_desc": "Encrypted Diary Web-App", "author": "PhiTux", diff --git a/apps/dailytxt/docker-compose.yml b/apps/dailytxt/docker-compose.yml index 04036b7b..ee946f77 100644 --- a/apps/dailytxt/docker-compose.yml +++ b/apps/dailytxt/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.7' +version: "3.7" services: dailytxt: @@ -15,13 +15,31 @@ services: ports: - ${APP_PORT}:8765 volumes: - - '${APP_DATA_DIR}/data/dailytxt:/app/data/' + - "${APP_DATA_DIR}/data/dailytxt:/app/data/" networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.dailytxt-web-redirect.redirectscheme.scheme: https + traefik.http.services.dailytxt.loadbalancer.server.port: 8765 + # Web + traefik.http.routers.dailytxt-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.dailytxt-insecure.entrypoints: web + traefik.http.routers.dailytxt-insecure.service: dailytxt + traefik.http.routers.dailytxt-insecure.middlewares: dailytxt-web-redirect + # Websecure traefik.http.routers.dailytxt.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.dailytxt.entrypoints: websecure traefik.http.routers.dailytxt.service: dailytxt traefik.http.routers.dailytxt.tls.certresolver: myresolver - traefik.http.services.dailytxt.loadbalancer.server.port: 8765 + # Local domain + traefik.http.routers.dailytxt-local-insecure.rule: Host(`dailytxt.${LOCAL_DOMAIN}`) + traefik.http.routers.dailytxt-local-insecure.entrypoints: web + traefik.http.routers.dailytxt-local-insecure.service: dailytxt + traefik.http.routers.dailytxt-local-insecure.middlewares: dailytxt-web-redirect + # Local domain secure + traefik.http.routers.dailytxt-local.rule: Host(`dailytxt.${LOCAL_DOMAIN}`) + traefik.http.routers.dailytxt-local.entrypoints: websecure + traefik.http.routers.dailytxt-local.service: dailytxt + traefik.http.routers.dailytxt-local.tls: true diff --git a/apps/dashdot/config.json b/apps/dashdot/config.json index be17e054..4e761a6a 100644 --- a/apps/dashdot/config.json +++ b/apps/dashdot/config.json @@ -5,11 +5,9 @@ "available": true, "exposable": true, "id": "dashdot", - "tipi_version": 3, + "tipi_version": 4, "version": "5.2.1", - "categories": [ - "utilities" - ], + "categories": ["utilities"], "description": "dash. (or dashdot) is a modern server dashboard, running on the latest tech, designed with glassmorphism in mind. It is intended to be used for smaller VPS and private servers.", "short_desc": "A simple, modern server dashboard, primarily used by smaller private server", "author": "MauriceNino", diff --git a/apps/dashdot/docker-compose.yml b/apps/dashdot/docker-compose.yml index 1d01bf0f..0560ea3f 100644 --- a/apps/dashdot/docker-compose.yml +++ b/apps/dashdot/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.5' +version: "3.5" services: dashdot: image: mauricenino/dashdot:5.2.1 @@ -20,9 +20,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.dashdot-web-redirect.redirectscheme.scheme: https + traefik.http.services.dashdot.loadbalancer.server.port: 3001 + # Web + traefik.http.routers.dashdot-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.dashdot-insecure.entrypoints: web + traefik.http.routers.dashdot-insecure.service: dashdot + traefik.http.routers.dashdot-insecure.middlewares: dashdot-web-redirect + # Websecure traefik.http.routers.dashdot.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.dashdot.entrypoints: websecure traefik.http.routers.dashdot.service: dashdot traefik.http.routers.dashdot.tls.certresolver: myresolver - traefik.http.services.dashdot.loadbalancer.server.port: 3001 + # Local domain + traefik.http.routers.dashdot-local-insecure.rule: Host(`dashdot.${LOCAL_DOMAIN}`) + traefik.http.routers.dashdot-local-insecure.entrypoints: web + traefik.http.routers.dashdot-local-insecure.service: dashdot + traefik.http.routers.dashdot-local-insecure.middlewares: dashdot-web-redirect + # Local domain secure + traefik.http.routers.dashdot-local.rule: Host(`dashdot.${LOCAL_DOMAIN}`) + traefik.http.routers.dashdot-local.entrypoints: websecure + traefik.http.routers.dashdot-local.service: dashdot + traefik.http.routers.dashdot-local.tls: true diff --git a/apps/deemix/config.json b/apps/deemix/config.json index 116bdeae..d41b4abd 100644 --- a/apps/deemix/config.json +++ b/apps/deemix/config.json @@ -5,7 +5,7 @@ "available": true, "exposable": true, "id": "deemix", - "tipi_version": 1, + "tipi_version": 2, "version": "latest", "categories": ["media", "music"], "description": "deemix is a barebone deezer downloader library built from the ashes of Deezloader Remix.", diff --git a/apps/deemix/docker-compose.yml b/apps/deemix/docker-compose.yml index 8224e785..7dee8960 100644 --- a/apps/deemix/docker-compose.yml +++ b/apps/deemix/docker-compose.yml @@ -19,9 +19,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.deemix-web-redirect.redirectscheme.scheme: https + traefik.http.services.deemix.loadbalancer.server.port: 6595 + # Web + traefik.http.routers.deemix-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.deemix-insecure.entrypoints: web + traefik.http.routers.deemix-insecure.service: deemix + traefik.http.routers.deemix-insecure.middlewares: deemix-web-redirect + # Websecure traefik.http.routers.deemix.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.deemix.entrypoints: websecure traefik.http.routers.deemix.service: deemix traefik.http.routers.deemix.tls.certresolver: myresolver - traefik.http.services.deemix.loadbalancer.server.port: 6595 \ No newline at end of file + # Local domain + traefik.http.routers.deemix-local-insecure.rule: Host(`deemix.${LOCAL_DOMAIN}`) + traefik.http.routers.deemix-local-insecure.entrypoints: web + traefik.http.routers.deemix-local-insecure.service: deemix + traefik.http.routers.deemix-local-insecure.middlewares: deemix-web-redirect + # Local domain secure + traefik.http.routers.deemix-local.rule: Host(`deemix.${LOCAL_DOMAIN}`) + traefik.http.routers.deemix-local.entrypoints: websecure + traefik.http.routers.deemix-local.service: deemix + traefik.http.routers.deemix-local.tls: true diff --git a/apps/deluge/config.json b/apps/deluge/config.json index 7d32f6cb..f713415a 100644 --- a/apps/deluge/config.json +++ b/apps/deluge/config.json @@ -5,7 +5,7 @@ "available": true, "exposable": true, "id": "deluge", - "tipi_version": 2, + "tipi_version": 3, "version": "2.1.1", "categories": ["utilities"], "description": "Deluge is a lightweight, Free Software, cross-platform BitTorrent client.", diff --git a/apps/deluge/docker-compose.yml b/apps/deluge/docker-compose.yml index 0c9bef55..ef078bd0 100644 --- a/apps/deluge/docker-compose.yml +++ b/apps/deluge/docker-compose.yml @@ -1,4 +1,4 @@ -version: '2.1' +version: "2.1" services: deluge: image: lscr.io/linuxserver/deluge:2.1.1 @@ -19,9 +19,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.deluge-web-redirect.redirectscheme.scheme: https + traefik.http.services.deluge.loadbalancer.server.port: 8112 + # Web + traefik.http.routers.deluge-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.deluge-insecure.entrypoints: web + traefik.http.routers.deluge-insecure.service: deluge + traefik.http.routers.deluge-insecure.middlewares: deluge-web-redirect + # Websecure traefik.http.routers.deluge.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.deluge.entrypoints: websecure traefik.http.routers.deluge.service: deluge traefik.http.routers.deluge.tls.certresolver: myresolver - traefik.http.services.deluge.loadbalancer.server.port: 8112 + # Local domain + traefik.http.routers.deluge-local-insecure.rule: Host(`deluge.${LOCAL_DOMAIN}`) + traefik.http.routers.deluge-local-insecure.entrypoints: web + traefik.http.routers.deluge-local-insecure.service: deluge + traefik.http.routers.deluge-local-insecure.middlewares: deluge-web-redirect + # Local domain secure + traefik.http.routers.deluge-local.rule: Host(`deluge.${LOCAL_DOMAIN}`) + traefik.http.routers.deluge-local.entrypoints: websecure + traefik.http.routers.deluge-local.service: deluge + traefik.http.routers.deluge-local.tls: true diff --git a/apps/dokuwiki/config.json b/apps/dokuwiki/config.json index 9129efe6..b7e0e78c 100644 --- a/apps/dokuwiki/config.json +++ b/apps/dokuwiki/config.json @@ -5,7 +5,7 @@ "available": true, "exposable": true, "id": "dokuwiki", - "tipi_version": 1, + "tipi_version": 2, "version": "2022-07-31a-ls158", "categories": ["media"], "description": "DokuWiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database. It is loved by users for its clean and readable syntax. The ease of maintenance, backup and integration makes it an administrator's favorite. Built in access controls and authentication connectors make DokuWiki especially useful in the enterprise context and the large number of plugins contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki.", diff --git a/apps/dokuwiki/docker-compose.yml b/apps/dokuwiki/docker-compose.yml index c16a97c1..0b908dc5 100644 --- a/apps/dokuwiki/docker-compose.yml +++ b/apps/dokuwiki/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3' +version: "3" services: dokuwiki: @@ -13,9 +13,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.dokuwiki-web-redirect.redirectscheme.scheme: https + traefik.http.services.dokuwiki.loadbalancer.server.port: 80 + # Web + traefik.http.routers.dokuwiki-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.dokuwiki-insecure.entrypoints: web + traefik.http.routers.dokuwiki-insecure.service: dokuwiki + traefik.http.routers.dokuwiki-insecure.middlewares: dokuwiki-web-redirect + # Websecure traefik.http.routers.dokuwiki.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.dokuwiki.entrypoints: websecure traefik.http.routers.dokuwiki.service: dokuwiki traefik.http.routers.dokuwiki.tls.certresolver: myresolver - traefik.http.services.dokuwiki.loadbalancer.server.port: 80 + # Local domain + traefik.http.routers.dokuwiki-local-insecure.rule: Host(`dokuwiki.${LOCAL_DOMAIN}`) + traefik.http.routers.dokuwiki-local-insecure.entrypoints: web + traefik.http.routers.dokuwiki-local-insecure.service: dokuwiki + traefik.http.routers.dokuwiki-local-insecure.middlewares: dokuwiki-web-redirect + # Local domain secure + traefik.http.routers.dokuwiki-local.rule: Host(`dokuwiki.${LOCAL_DOMAIN}`) + traefik.http.routers.dokuwiki-local.entrypoints: websecure + traefik.http.routers.dokuwiki-local.service: dokuwiki + traefik.http.routers.dokuwiki-local.tls: true diff --git a/apps/dozzle/config.json b/apps/dozzle/config.json index 19a32c8c..bb15b97e 100644 --- a/apps/dozzle/config.json +++ b/apps/dozzle/config.json @@ -5,7 +5,7 @@ "exposable": true, "port": 8013, "id": "dozzle", - "tipi_version": 1, + "tipi_version": 2, "version": "latest", "categories": ["development"], "description": "Dozzle is a small web based app to monitor Docker logs.", diff --git a/apps/dozzle/docker-compose.yml b/apps/dozzle/docker-compose.yml index 5f260c3b..9515d706 100644 --- a/apps/dozzle/docker-compose.yml +++ b/apps/dozzle/docker-compose.yml @@ -15,10 +15,27 @@ services: - DOZZLE_USERNAME=${DOZZLE_USERNAME} - DOZZLE_PASSWORD=${DOZZLE_PASSWORD} labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.dozzle-web-redirect.redirectscheme.scheme: https + traefik.http.services.dozzle.loadbalancer.server.port: 8080 + # Web + traefik.http.routers.dozzle-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.dozzle-insecure.entrypoints: web + traefik.http.routers.dozzle-insecure.service: dozzle + traefik.http.routers.dozzle-insecure.middlewares: dozzle-web-redirect + # Websecure traefik.http.routers.dozzle.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.dozzle.entrypoints: websecure traefik.http.routers.dozzle.service: dozzle traefik.http.routers.dozzle.tls.certresolver: myresolver - traefik.http.services.dozzle.loadbalancer.server.port: 8080 - + # Local domain + traefik.http.routers.dozzle-local-insecure.rule: Host(`dozzle.${LOCAL_DOMAIN}`) + traefik.http.routers.dozzle-local-insecure.entrypoints: web + traefik.http.routers.dozzle-local-insecure.service: dozzle + traefik.http.routers.dozzle-local-insecure.middlewares: dozzle-web-redirect + # Local domain secure + traefik.http.routers.dozzle-local.rule: Host(`dozzle.${LOCAL_DOMAIN}`) + traefik.http.routers.dozzle-local.entrypoints: websecure + traefik.http.routers.dozzle-local.service: dozzle + traefik.http.routers.dozzle-local.tls: true diff --git a/apps/duplicati/config.json b/apps/duplicati/config.json index 522af331..50c80860 100644 --- a/apps/duplicati/config.json +++ b/apps/duplicati/config.json @@ -5,11 +5,9 @@ "available": true, "exposable": true, "id": "duplicati", - "tipi_version": 2, + "tipi_version": 3, "version": "2.0.7", - "categories": [ - "data" - ], + "categories": ["data"], "description": "Duplicati is a free, open source, backup client that securely stores encrypted, incremental, compressed backups on cloud storage services and remote file servers.", "short_desc": "Store securely encrypted backups in the cloud!", "author": "https://github.com/duplicati", diff --git a/apps/duplicati/docker-compose.yml b/apps/duplicati/docker-compose.yml index 9717b443..f65f6eaa 100644 --- a/apps/duplicati/docker-compose.yml +++ b/apps/duplicati/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.7' +version: "3.7" services: duplicati: @@ -17,9 +17,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.duplicati-web-redirect.redirectscheme.scheme: https + traefik.http.services.duplicati.loadbalancer.server.port: 8200 + # Web + traefik.http.routers.duplicati-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.duplicati-insecure.entrypoints: web + traefik.http.routers.duplicati-insecure.service: duplicati + traefik.http.routers.duplicati-insecure.middlewares: duplicati-web-redirect + # Websecure traefik.http.routers.duplicati.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.duplicati.entrypoints: websecure traefik.http.routers.duplicati.service: duplicati traefik.http.routers.duplicati.tls.certresolver: myresolver - traefik.http.services.duplicati.loadbalancer.server.port: 8200 + # Local domain + traefik.http.routers.duplicati-local-insecure.rule: Host(`duplicati.${LOCAL_DOMAIN}`) + traefik.http.routers.duplicati-local-insecure.entrypoints: web + traefik.http.routers.duplicati-local-insecure.service: duplicati + traefik.http.routers.duplicati-local-insecure.middlewares: duplicati-web-redirect + # Local domain secure + traefik.http.routers.duplicati-local.rule: Host(`duplicati.${LOCAL_DOMAIN}`) + traefik.http.routers.duplicati-local.entrypoints: websecure + traefik.http.routers.duplicati-local.service: duplicati + traefik.http.routers.duplicati-local.tls: true diff --git a/apps/emulatorjs/config.json b/apps/emulatorjs/config.json index 0b49d45f..914f2754 100644 --- a/apps/emulatorjs/config.json +++ b/apps/emulatorjs/config.json @@ -5,7 +5,7 @@ "available": true, "exposable": true, "id": "emulatorjs", - "tipi_version": 1, + "tipi_version": 2, "version": "1.7.2", "categories": ["gaming"], "description": "Self-hosted Javascript emulation for various system.", diff --git a/apps/emulatorjs/docker-compose.yml b/apps/emulatorjs/docker-compose.yml index 28634532..00be35a7 100644 --- a/apps/emulatorjs/docker-compose.yml +++ b/apps/emulatorjs/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.7' +version: "3.7" services: emulatorjs: @@ -16,9 +16,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.emulatorjs-web-redirect.redirectscheme.scheme: https + traefik.http.services.emulatorjs.loadbalancer.server.port: 80 + # Web + traefik.http.routers.emulatorjs-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.emulatorjs-insecure.entrypoints: web + traefik.http.routers.emulatorjs-insecure.service: emulatorjs + traefik.http.routers.emulatorjs-insecure.middlewares: emulatorjs-web-redirect + # Websecure traefik.http.routers.emulatorjs.rule: Host(`${APP_DOMAIN}`) - traefik.http.routers.appname.entrypoints: websecure + traefik.http.routers.emulatorjs.entrypoints: websecure traefik.http.routers.emulatorjs.service: emulatorjs traefik.http.routers.emulatorjs.tls.certresolver: myresolver - traefik.http.services.emulatorjs.loadbalancer.server.port: 80 + # Local domain + traefik.http.routers.emulatorjs-local-insecure.rule: Host(`emulatorjs.${LOCAL_DOMAIN}`) + traefik.http.routers.emulatorjs-local-insecure.entrypoints: web + traefik.http.routers.emulatorjs-local-insecure.service: emulatorjs + traefik.http.routers.emulatorjs-local-insecure.middlewares: emulatorjs-web-redirect + # Local domain secure + traefik.http.routers.emulatorjs-local.rule: Host(`emulatorjs.${LOCAL_DOMAIN}`) + traefik.http.routers.emulatorjs-local.entrypoints: websecure + traefik.http.routers.emulatorjs-local.service: emulatorjs + traefik.http.routers.emulatorjs-local.tls: true diff --git a/apps/excalidraw/config.json b/apps/excalidraw/config.json index 1ad319dd..f1f77eb1 100644 --- a/apps/excalidraw/config.json +++ b/apps/excalidraw/config.json @@ -5,7 +5,7 @@ "available": true, "exposable": true, "id": "excalidraw", - "tipi_version": 1, + "tipi_version": 2, "version": "latest", "categories": ["utilities"], "description": "Virtual whiteboard for sketching hand-drawn like diagrams", diff --git a/apps/excalidraw/docker-compose.yml b/apps/excalidraw/docker-compose.yml index f61a13f4..8ee7b612 100644 --- a/apps/excalidraw/docker-compose.yml +++ b/apps/excalidraw/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.7' +version: "3.7" services: excalidraw: @@ -10,9 +10,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.excalidraw-web-redirect.redirectscheme.scheme: https + traefik.http.services.excalidraw.loadbalancer.server.port: 80 + # Web + traefik.http.routers.excalidraw-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.excalidraw-insecure.entrypoints: web + traefik.http.routers.excalidraw-insecure.service: excalidraw + traefik.http.routers.excalidraw-insecure.middlewares: excalidraw-web-redirect + # Websecure traefik.http.routers.excalidraw.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.excalidraw.entrypoints: websecure traefik.http.routers.excalidraw.service: excalidraw traefik.http.routers.excalidraw.tls.certresolver: myresolver - traefik.http.services.excalidraw.loadbalancer.server.port: 80 + # Local domain + traefik.http.routers.excalidraw-local-insecure.rule: Host(`excalidraw.${LOCAL_DOMAIN}`) + traefik.http.routers.excalidraw-local-insecure.entrypoints: web + traefik.http.routers.excalidraw-local-insecure.service: excalidraw + traefik.http.routers.excalidraw-local-insecure.middlewares: excalidraw-web-redirect + # Local domain secure + traefik.http.routers.excalidraw-local.rule: Host(`excalidraw.${LOCAL_DOMAIN}`) + traefik.http.routers.excalidraw-local.entrypoints: websecure + traefik.http.routers.excalidraw-local.service: excalidraw + traefik.http.routers.excalidraw-local.tls: true diff --git a/apps/filebrowser/config.json b/apps/filebrowser/config.json index 1e7bab8e..8636cdff 100644 --- a/apps/filebrowser/config.json +++ b/apps/filebrowser/config.json @@ -5,7 +5,7 @@ "exposable": true, "port": 8096, "id": "filebrowser", - "tipi_version": 2, + "tipi_version": 3, "version": "s6", "categories": ["utilities"], "description": "Reliable and Performant File Management Desktop Sync and File Sharing\n Default credentials: admin / admin", diff --git a/apps/filebrowser/docker-compose.yml b/apps/filebrowser/docker-compose.yml index b9c58ec7..00cc0598 100644 --- a/apps/filebrowser/docker-compose.yml +++ b/apps/filebrowser/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.7' +version: "3.7" services: filebrowser: container_name: filebrowser @@ -16,9 +16,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.filebrowser-web-redirect.redirectscheme.scheme: https + traefik.http.services.filebrowser.loadbalancer.server.port: 80 + # Web + traefik.http.routers.filebrowser-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.filebrowser-insecure.entrypoints: web + traefik.http.routers.filebrowser-insecure.service: filebrowser + traefik.http.routers.filebrowser-insecure.middlewares: filebrowser-web-redirect + # Websecure traefik.http.routers.filebrowser.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.filebrowser.entrypoints: websecure traefik.http.routers.filebrowser.service: filebrowser traefik.http.routers.filebrowser.tls.certresolver: myresolver - traefik.http.services.filebrowser.loadbalancer.server.port: 80 + # Local domain + traefik.http.routers.filebrowser-local-insecure.rule: Host(`filebrowser.${LOCAL_DOMAIN}`) + traefik.http.routers.filebrowser-local-insecure.entrypoints: web + traefik.http.routers.filebrowser-local-insecure.service: filebrowser + traefik.http.routers.filebrowser-local-insecure.middlewares: filebrowser-web-redirect + # Local domain secure + traefik.http.routers.filebrowser-local.rule: Host(`filebrowser.${LOCAL_DOMAIN}`) + traefik.http.routers.filebrowser-local.entrypoints: websecure + traefik.http.routers.filebrowser-local.service: filebrowser + traefik.http.routers.filebrowser-local.tls: true diff --git a/apps/filestash/config.json b/apps/filestash/config.json index 4a77cc34..4573fd59 100644 --- a/apps/filestash/config.json +++ b/apps/filestash/config.json @@ -5,7 +5,7 @@ "available": true, "exposable": true, "id": "filestash", - "tipi_version": 1, + "tipi_version": 2, "version": "397fd8b", "categories": ["utilities"], "description": "A modern web client for SFTP, S3, FTP, WebDAV, Git, Minio, LDAP, CalDAV, CardDAV, Mysql, Backblaze", @@ -18,7 +18,7 @@ "label": "(Optional) Google Drive Client ID", "required": false, "env_variable": "FILESTASH_GDRIVE_CLIENT_ID" - }, + }, { "type": "text", "label": "(Optional) Google Drive Client Secret", diff --git a/apps/filestash/docker-compose.yml b/apps/filestash/docker-compose.yml index 250bbdff..6f53490e 100644 --- a/apps/filestash/docker-compose.yml +++ b/apps/filestash/docker-compose.yml @@ -1,28 +1,46 @@ -version: '2' +version: "2" services: filestash: container_name: filestash image: machines/filestash:397fd8b restart: unless-stopped environment: - - APPLICATION_URL=${APP_DOMAIN} - - GDRIVE_CLIENT_ID=${FILESTASH_GDRIVE_CLIENT_ID} - - GDRIVE_CLIENT_SECRET=${FILESTASH_GDRIVE_CLIENT_SECRET} - - DROPBOX_CLIENT_ID=${FILESTASH_DROPBOX_CLIENT_ID} - - ONLYOFFICE_URL=http://filestash-onlyoffice + - APPLICATION_URL=${APP_DOMAIN} + - GDRIVE_CLIENT_ID=${FILESTASH_GDRIVE_CLIENT_ID} + - GDRIVE_CLIENT_SECRET=${FILESTASH_GDRIVE_CLIENT_SECRET} + - DROPBOX_CLIENT_ID=${FILESTASH_DROPBOX_CLIENT_ID} + - ONLYOFFICE_URL=http://filestash-onlyoffice ports: - - ${APP_PORT}:8334 + - ${APP_PORT}:8334 depends_on: - filestash-onlyoffice networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.filestash-web-redirect.redirectscheme.scheme: https + traefik.http.services.filestash.loadbalancer.server.port: 8334 + # Web + traefik.http.routers.filestash-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.filestash-insecure.entrypoints: web + traefik.http.routers.filestash-insecure.service: filestash + traefik.http.routers.filestash-insecure.middlewares: filestash-web-redirect + # Websecure traefik.http.routers.filestash.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.filestash.entrypoints: websecure traefik.http.routers.filestash.service: filestash traefik.http.routers.filestash.tls.certresolver: myresolver - traefik.http.services.filestash.loadbalancer.server.port: 8334 + # Local domain + traefik.http.routers.filestash-local-insecure.rule: Host(`filestash.${LOCAL_DOMAIN}`) + traefik.http.routers.filestash-local-insecure.entrypoints: web + traefik.http.routers.filestash-local-insecure.service: filestash + traefik.http.routers.filestash-local-insecure.middlewares: filestash-web-redirect + # Local domain secure + traefik.http.routers.filestash-local.rule: Host(`filestash.${LOCAL_DOMAIN}`) + traefik.http.routers.filestash-local.entrypoints: websecure + traefik.http.routers.filestash-local.service: filestash + traefik.http.routers.filestash-local.tls: true filestash-onlyoffice: container_name: filestash_oods @@ -32,4 +50,3 @@ services: - seccomp:unconfined networks: - tipi_main_network - diff --git a/apps/firefly-iii/config.json b/apps/firefly-iii/config.json index 89c6e157..df24cc98 100644 --- a/apps/firefly-iii/config.json +++ b/apps/firefly-iii/config.json @@ -4,7 +4,7 @@ "available": true, "exposable": true, "port": 8115, - "tipi_version": 3, + "tipi_version": 4, "version": "version-5.7.11", "id": "firefly-iii", "categories": ["finance"], diff --git a/apps/firefly-iii/docker-compose.yml b/apps/firefly-iii/docker-compose.yml index 44369aa8..3c6bccf7 100644 --- a/apps/firefly-iii/docker-compose.yml +++ b/apps/firefly-iii/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.9' +version: "3.9" services: firefly-iii: @@ -43,16 +43,34 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.firefly-iii-web-redirect.redirectscheme.scheme: https + traefik.http.services.firefly-iii.loadbalancer.server.port: 8080 + # Web + traefik.http.routers.firefly-iii-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.firefly-iii-insecure.entrypoints: web + traefik.http.routers.firefly-iii-insecure.service: firefly-iii + traefik.http.routers.firefly-iii-insecure.middlewares: firefly-iii-web-redirect + # Websecure traefik.http.routers.firefly-iii.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.firefly-iii.entrypoints: websecure traefik.http.routers.firefly-iii.service: firefly-iii traefik.http.routers.firefly-iii.tls.certresolver: myresolver - traefik.http.services.firefly-iii.loadbalancer.server.port: 8080 - + # Local domain + traefik.http.routers.firefly-iii-local-insecure.rule: Host(`firefly-iii.${LOCAL_DOMAIN}`) + traefik.http.routers.firefly-iii-local-insecure.entrypoints: web + traefik.http.routers.firefly-iii-local-insecure.service: firefly-iii + traefik.http.routers.firefly-iii-local-insecure.middlewares: firefly-iii-web-redirect + # Local domain secure + traefik.http.routers.firefly-iii-local.rule: Host(`firefly-iii.${LOCAL_DOMAIN}`) + traefik.http.routers.firefly-iii-local.entrypoints: websecure + traefik.http.routers.firefly-iii-local.service: firefly-iii + traefik.http.routers.firefly-iii-local.tls: true + firefly-iii-db: container_name: firefly-iii-db - image: mariadb + image: mariadb hostname: fireflyiii-db restart: unless-stopped environment: diff --git a/apps/fireshare/config.json b/apps/fireshare/config.json index c7932de9..5388f3b5 100644 --- a/apps/fireshare/config.json +++ b/apps/fireshare/config.json @@ -5,11 +5,9 @@ "available": true, "exposable": true, "id": "fireshare", - "tipi_version": 2, + "tipi_version": 3, "version": "1.2.9", - "categories": [ - "development" - ], + "categories": ["development"], "description": "Self host your media and share with unique links. Share your game clips, videos, or other media via unique links.", "short_desc": "Self host your media and share with unique links", "author": "https://github.com/ShaneIsrael", diff --git a/apps/fireshare/docker-compose.yml b/apps/fireshare/docker-compose.yml index 798de21c..61dd9010 100644 --- a/apps/fireshare/docker-compose.yml +++ b/apps/fireshare/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3' +version: "3" services: fireshare: @@ -20,9 +20,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.fireshare-web-redirect.redirectscheme.scheme: https + traefik.http.services.fireshare.loadbalancer.server.port: 80 + # Web + traefik.http.routers.fireshare-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.fireshare-insecure.entrypoints: web + traefik.http.routers.fireshare-insecure.service: fireshare + traefik.http.routers.fireshare-insecure.middlewares: fireshare-web-redirect + # Websecure traefik.http.routers.fireshare.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.fireshare.entrypoints: websecure traefik.http.routers.fireshare.service: fireshare traefik.http.routers.fireshare.tls.certresolver: myresolver - traefik.http.services.fireshare.loadbalancer.server.port: 80 + # Local domain + traefik.http.routers.fireshare-local-insecure.rule: Host(`fireshare.${LOCAL_DOMAIN}`) + traefik.http.routers.fireshare-local-insecure.entrypoints: web + traefik.http.routers.fireshare-local-insecure.service: fireshare + traefik.http.routers.fireshare-local-insecure.middlewares: fireshare-web-redirect + # Local domain secure + traefik.http.routers.fireshare-local.rule: Host(`fireshare.${LOCAL_DOMAIN}`) + traefik.http.routers.fireshare-local.entrypoints: websecure + traefik.http.routers.fireshare-local.service: fireshare + traefik.http.routers.fireshare-local.tls: true diff --git a/apps/flatnotes/config.json b/apps/flatnotes/config.json index 07115061..05c84093 100644 --- a/apps/flatnotes/config.json +++ b/apps/flatnotes/config.json @@ -5,11 +5,9 @@ "exposable": true, "id": "flatnotes", "port": 8137, - "tipi_version": 6, + "tipi_version": 7, "version": "3.1.0", - "categories": [ - "utilities" - ], + "categories": ["utilities"], "description": "A self-hosted, database-less note taking web app that utilises a flat folder of markdown files for storage.", "short_desc": "A self-hosted, database-less note taking web app", "author": "Dullage", diff --git a/apps/flatnotes/docker-compose.yml b/apps/flatnotes/docker-compose.yml index 43565798..7850604f 100644 --- a/apps/flatnotes/docker-compose.yml +++ b/apps/flatnotes/docker-compose.yml @@ -13,16 +13,34 @@ services: volumes: - "${APP_DATA_DIR}/data:/data" # - "./index:/app/data/.flatnotes" - # Optional. Allows you to save the search index in a different location. + # Optional. Allows you to save the search index in a different location. ports: - ${APP_PORT}:8080 restart: unless-stopped networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.flatnotes-web-redirect.redirectscheme.scheme: https + traefik.http.services.flatnotes.loadbalancer.server.port: 8080 + # Web + traefik.http.routers.flatnotes-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.flatnotes-insecure.entrypoints: web + traefik.http.routers.flatnotes-insecure.service: flatnotes + traefik.http.routers.flatnotes-insecure.middlewares: flatnotes-web-redirect + # Websecure traefik.http.routers.flatnotes.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.flatnotes.entrypoints: websecure traefik.http.routers.flatnotes.service: flatnotes traefik.http.routers.flatnotes.tls.certresolver: myresolver - traefik.http.services.flatnotes.loadbalancer.server.port: 8080 \ No newline at end of file + # Local domain + traefik.http.routers.flatnotes-local-insecure.rule: Host(`flatnotes.${LOCAL_DOMAIN}`) + traefik.http.routers.flatnotes-local-insecure.entrypoints: web + traefik.http.routers.flatnotes-local-insecure.service: flatnotes + traefik.http.routers.flatnotes-local-insecure.middlewares: flatnotes-web-redirect + # Local domain secure + traefik.http.routers.flatnotes-local.rule: Host(`flatnotes.${LOCAL_DOMAIN}`) + traefik.http.routers.flatnotes-local.entrypoints: websecure + traefik.http.routers.flatnotes-local.service: flatnotes + traefik.http.routers.flatnotes-local.tls: true diff --git a/apps/freshrss/config.json b/apps/freshrss/config.json index 4bbdfe33..a9199562 100644 --- a/apps/freshrss/config.json +++ b/apps/freshrss/config.json @@ -5,11 +5,9 @@ "exposable": true, "port": 8086, "id": "freshrss", - "tipi_version": 4, + "tipi_version": 5, "version": "1.21.0", - "categories": [ - "utilities" - ], + "categories": ["utilities"], "description": "FreshRSS is a self-hosted RSS feed aggregator like Leed or Kriss Feed.\nIt is lightweight, easy to work with, powerful, and customizable.\n\nIt is a multi-user application with an anonymous reading mode. It supports custom tags. There is an API for (mobile) clients, and a Command-Line Interface.\n\nThanks to the WebSub standard (formerly PubSubHubbub), FreshRSS is able to receive instant push notifications from compatible sources, such as Mastodon, Friendica, WordPress, Blogger, FeedBurner, etc.\n\nFreshRSS natively supports basic Web scraping, based on XPath, for Web sites not providing any RSS / Atom feed.\n\nFinally, it supports extensions for further tuning.", "short_desc": "A free, self-hostable aggregator… ", "author": "https://freshrss.org/", diff --git a/apps/freshrss/docker-compose.yml b/apps/freshrss/docker-compose.yml index 88924f13..384b5446 100644 --- a/apps/freshrss/docker-compose.yml +++ b/apps/freshrss/docker-compose.yml @@ -16,9 +16,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.freshrss-web-redirect.redirectscheme.scheme: https + traefik.http.services.freshrss.loadbalancer.server.port: 80 + # Web + traefik.http.routers.freshrss-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.freshrss-insecure.entrypoints: web + traefik.http.routers.freshrss-insecure.service: freshrss + traefik.http.routers.freshrss-insecure.middlewares: freshrss-web-redirect + # Websecure traefik.http.routers.freshrss.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.freshrss.entrypoints: websecure traefik.http.routers.freshrss.service: freshrss traefik.http.routers.freshrss.tls.certresolver: myresolver - traefik.http.services.freshrss.loadbalancer.server.port: 80 \ No newline at end of file + # Local domain + traefik.http.routers.freshrss-local-insecure.rule: Host(`freshrss.${LOCAL_DOMAIN}`) + traefik.http.routers.freshrss-local-insecure.entrypoints: web + traefik.http.routers.freshrss-local-insecure.service: freshrss + traefik.http.routers.freshrss-local-insecure.middlewares: freshrss-web-redirect + # Local domain secure + traefik.http.routers.freshrss-local.rule: Host(`freshrss.${LOCAL_DOMAIN}`) + traefik.http.routers.freshrss-local.entrypoints: websecure + traefik.http.routers.freshrss-local.service: freshrss + traefik.http.routers.freshrss-local.tls: true diff --git a/apps/ghost/config.json b/apps/ghost/config.json index e4d9f46a..79f3d62f 100644 --- a/apps/ghost/config.json +++ b/apps/ghost/config.json @@ -5,12 +5,9 @@ "available": true, "exposable": true, "id": "ghost", - "tipi_version": 21, + "tipi_version": 22, "version": "5.49.3", - "categories": [ - "social", - "media" - ], + "categories": ["social", "media"], "description": "Ghost is a powerful app for new-media creators to publish, share, and grow a business around their content. It comes with modern tools to build a website, publish content, send newsletters & offer paid subscriptions to members.", "short_desc": "Ghost - Turn your audience into a business.", "author": "TryGhost", diff --git a/apps/ghost/docker-compose.yml b/apps/ghost/docker-compose.yml index 7915cca3..003983cf 100644 --- a/apps/ghost/docker-compose.yml +++ b/apps/ghost/docker-compose.yml @@ -1,12 +1,11 @@ -version: '3.9' +version: "3.9" services: - ghost: image: ghost:5.49.3 container_name: ghost depends_on: - - ghostdb + - ghostdb restart: unless-stopped ports: - ${APP_PORT}:2368 @@ -23,12 +22,30 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.ghost-web-redirect.redirectscheme.scheme: https + traefik.http.services.ghost.loadbalancer.server.port: 2368 + # Web + traefik.http.routers.ghost-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.ghost-insecure.entrypoints: web + traefik.http.routers.ghost-insecure.service: ghost + traefik.http.routers.ghost-insecure.middlewares: ghost-web-redirect + # Websecure traefik.http.routers.ghost.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.ghost.entrypoints: websecure traefik.http.routers.ghost.service: ghost traefik.http.routers.ghost.tls.certresolver: myresolver - traefik.http.services.ghost.loadbalancer.server.port: 2368 + # Local domain + traefik.http.routers.ghost-local-insecure.rule: Host(`ghost.${LOCAL_DOMAIN}`) + traefik.http.routers.ghost-local-insecure.entrypoints: web + traefik.http.routers.ghost-local-insecure.service: ghost + traefik.http.routers.ghost-local-insecure.middlewares: ghost-web-redirect + # Local domain secure + traefik.http.routers.ghost-local.rule: Host(`ghost.${LOCAL_DOMAIN}`) + traefik.http.routers.ghost-local.entrypoints: websecure + traefik.http.routers.ghost-local.service: ghost + traefik.http.routers.ghost-local.tls: true ghostdb: container_name: ghostdb @@ -41,4 +58,4 @@ services: volumes: - ${APP_DATA_DIR}/data/db:/var/lib/mysql networks: - - tipi_main_network \ No newline at end of file + - tipi_main_network diff --git a/apps/gitea/config.json b/apps/gitea/config.json index 48c1884b..623534b0 100644 --- a/apps/gitea/config.json +++ b/apps/gitea/config.json @@ -5,11 +5,9 @@ "available": true, "exposable": true, "id": "gitea", - "tipi_version": 7, + "tipi_version": 8, "version": "1.19.3", - "categories": [ - "development" - ], + "categories": ["development"], "description": "Gitea is a painless self-hosted Git service. It is similar to GitHub, Bitbucket, and GitLab. Gitea is a fork of Gogs. See the Gitea Announcement blog post to read about the justification for a fork.", "short_desc": "Gitea - Git with a cup of tea · A painless self-hosted Git service. · Cross-platform · Easy to install · Lightweight · Open Source.", "author": "go-gitea", diff --git a/apps/gitea/docker-compose.yml b/apps/gitea/docker-compose.yml index 56e5d17b..51bb6b01 100644 --- a/apps/gitea/docker-compose.yml +++ b/apps/gitea/docker-compose.yml @@ -23,12 +23,30 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.gitea-web-redirect.redirectscheme.scheme: https + traefik.http.services.gitea.loadbalancer.server.port: 3000 + # Web + traefik.http.routers.gitea-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.gitea-insecure.entrypoints: web + traefik.http.routers.gitea-insecure.service: gitea + traefik.http.routers.gitea-insecure.middlewares: gitea-web-redirect + # Websecure traefik.http.routers.gitea.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.gitea.entrypoints: websecure traefik.http.routers.gitea.service: gitea traefik.http.routers.gitea.tls.certresolver: myresolver - traefik.http.services.gitea.loadbalancer.server.port: 3000 + # Local domain + traefik.http.routers.gitea-local-insecure.rule: Host(`gitea.${LOCAL_DOMAIN}`) + traefik.http.routers.gitea-local-insecure.entrypoints: web + traefik.http.routers.gitea-local-insecure.service: gitea + traefik.http.routers.gitea-local-insecure.middlewares: gitea-web-redirect + # Local domain secure + traefik.http.routers.gitea-local.rule: Host(`gitea.${LOCAL_DOMAIN}`) + traefik.http.routers.gitea-local.entrypoints: websecure + traefik.http.routers.gitea-local.service: gitea + traefik.http.routers.gitea-local.tls: true gitea-db: container_name: gitea-db diff --git a/apps/gotify/config.json b/apps/gotify/config.json index 64db6f98..eb092e69 100644 --- a/apps/gotify/config.json +++ b/apps/gotify/config.json @@ -5,7 +5,7 @@ "port": 8129, "id": "gotify", "exposable": true, - "tipi_version": 2, + "tipi_version": 3, "version": "2.2.4", "categories": ["utilities"], "description": "Simple server for sending and receiving notification messages.", diff --git a/apps/gotify/docker-compose.arm.yml b/apps/gotify/docker-compose.arm.yml index d361c39c..9d17f001 100644 --- a/apps/gotify/docker-compose.arm.yml +++ b/apps/gotify/docker-compose.arm.yml @@ -14,17 +14,31 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} - # Traefik Redirect to HTTPS - traefik.http.middlewares.redirect-https.redirectScheme.scheme: https - traefik.http.middlewares.redirect-https.redirectScheme.permanent: true - # Traefik Router + Service Configuration + # Main + traefik.enable: true + traefik.http.middlewares.gotify-web-redirect.redirectscheme.scheme: https + traefik.http.middlewares.gotify-web-redirect.redirectscheme.permanent: true + traefik.http.middlewares.sslheader.headers.customrequestheaders.X-Forwarded-Proto: http + traefik.http.services.gotify.loadbalancer.server.port: 80 + traefik.http.services.gotify.loadbalancer.passhostheader: true + traefik.http.services.gotify.loadbalancer.sticky: true + # Web + traefik.http.routers.gotify-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.gotify-insecure.entrypoints: web + traefik.http.routers.gotify-insecure.service: gotify + traefik.http.routers.gotify-insecure.middlewares: gotify-web-redirect + # Websecure traefik.http.routers.gotify.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.gotify.entrypoints: websecure - traefik.http.routers.gotify.tls.certresolver: myresolver - traefik.http.routers.gotify.middlewares: redirect-https traefik.http.routers.gotify.service: gotify - traefik.http.services.gotify.loadbalancer.passhostheader: true - traefik.http.services.gotify.loadbalancer.server.port: 80 - traefik.http.services.gotify.loadbalancer.sticky: true - traefik.http.middlewares.sslheader.headers.customrequestheaders.X-Forwarded-Proto: http + traefik.http.routers.gotify.tls.certresolver: myresolver + # Local domain + traefik.http.routers.gotify-local-insecure.rule: Host(`gotify.${LOCAL_DOMAIN}`) + traefik.http.routers.gotify-local-insecure.entrypoints: web + traefik.http.routers.gotify-local-insecure.service: gotify + traefik.http.routers.gotify-local-insecure.middlewares: gotify-web-redirect + # Local domain secure + traefik.http.routers.gotify-local.rule: Host(`gotify.${LOCAL_DOMAIN}`) + traefik.http.routers.gotify-local.entrypoints: websecure + traefik.http.routers.gotify-local.service: gotify + traefik.http.routers.gotify-local.tls: true diff --git a/apps/gotify/docker-compose.arm64.yml b/apps/gotify/docker-compose.arm64.yml index 02d73011..b0a52087 100644 --- a/apps/gotify/docker-compose.arm64.yml +++ b/apps/gotify/docker-compose.arm64.yml @@ -1,4 +1,4 @@ -version: '3.7' +version: "3.7" services: gotify: @@ -6,7 +6,7 @@ services: container_name: gotify restart: unless-stopped volumes: - - '${APP_DATA_DIR}/data:/app/data' + - "${APP_DATA_DIR}/data:/app/data" environment: - GOTIFY_DEFAULTUSER_PASS=${GOTIFY_DEFAULTUSER_PASS} ports: @@ -14,17 +14,31 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} - # Traefik Redirect to HTTPS - traefik.http.middlewares.redirect-https.redirectScheme.scheme: https - traefik.http.middlewares.redirect-https.redirectScheme.permanent: true - # Traefik Router + Service Configuration + # Main + traefik.enable: true + traefik.http.middlewares.gotify-web-redirect.redirectscheme.scheme: https + traefik.http.middlewares.gotify-web-redirect.redirectscheme.permanent: true + traefik.http.middlewares.sslheader.headers.customrequestheaders.X-Forwarded-Proto: http + traefik.http.services.gotify.loadbalancer.server.port: 80 + traefik.http.services.gotify.loadbalancer.passhostheader: true + traefik.http.services.gotify.loadbalancer.sticky: true + # Web + traefik.http.routers.gotify-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.gotify-insecure.entrypoints: web + traefik.http.routers.gotify-insecure.service: gotify + traefik.http.routers.gotify-insecure.middlewares: gotify-web-redirect + # Websecure traefik.http.routers.gotify.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.gotify.entrypoints: websecure - traefik.http.routers.gotify.tls.certresolver: myresolver - traefik.http.routers.gotify.middlewares: redirect-https traefik.http.routers.gotify.service: gotify - traefik.http.services.gotify.loadbalancer.passhostheader: true - traefik.http.services.gotify.loadbalancer.server.port: 80 - traefik.http.services.gotify.loadbalancer.sticky: true - traefik.http.middlewares.sslheader.headers.customrequestheaders.X-Forwarded-Proto: http + traefik.http.routers.gotify.tls.certresolver: myresolver + # Local domain + traefik.http.routers.gotify-local-insecure.rule: Host(`gotify.${LOCAL_DOMAIN}`) + traefik.http.routers.gotify-local-insecure.entrypoints: web + traefik.http.routers.gotify-local-insecure.service: gotify + traefik.http.routers.gotify-local-insecure.middlewares: gotify-web-redirect + # Local domain secure + traefik.http.routers.gotify-local.rule: Host(`gotify.${LOCAL_DOMAIN}`) + traefik.http.routers.gotify-local.entrypoints: websecure + traefik.http.routers.gotify-local.service: gotify + traefik.http.routers.gotify-local.tls: true diff --git a/apps/gotify/docker-compose.yml b/apps/gotify/docker-compose.yml index 6da3d15a..bf2173f9 100644 --- a/apps/gotify/docker-compose.yml +++ b/apps/gotify/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.7' +version: "3.7" services: gotify: @@ -6,7 +6,7 @@ services: container_name: gotify restart: unless-stopped volumes: - - '${APP_DATA_DIR}/data:/app/data' + - "${APP_DATA_DIR}/data:/app/data" environment: - GOTIFY_DEFAULTUSER_NAME=${GOTIFY_DEFAULTUSER_NAME} - GOTIFY_DEFAULTUSER_PASS=${GOTIFY_DEFAULTUSER_PASS} @@ -15,17 +15,31 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} - # Traefik Redirect to HTTPS - traefik.http.middlewares.redirect-https.redirectScheme.scheme: https - traefik.http.middlewares.redirect-https.redirectScheme.permanent: true - # Traefik Router + Service Configuration + # Main + traefik.enable: true + traefik.http.middlewares.gotify-web-redirect.redirectscheme.scheme: https + traefik.http.middlewares.gotify-web-redirect.redirectscheme.permanent: true + traefik.http.middlewares.sslheader.headers.customrequestheaders.X-Forwarded-Proto: http + traefik.http.services.gotify.loadbalancer.server.port: 80 + traefik.http.services.gotify.loadbalancer.passhostheader: true + traefik.http.services.gotify.loadbalancer.sticky: true + # Web + traefik.http.routers.gotify-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.gotify-insecure.entrypoints: web + traefik.http.routers.gotify-insecure.service: gotify + traefik.http.routers.gotify-insecure.middlewares: gotify-web-redirect + # Websecure traefik.http.routers.gotify.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.gotify.entrypoints: websecure - traefik.http.routers.gotify.tls.certresolver: myresolver - traefik.http.routers.gotify.middlewares: redirect-https traefik.http.routers.gotify.service: gotify - traefik.http.services.gotify.loadbalancer.passhostheader: true - traefik.http.services.gotify.loadbalancer.server.port: 80 - traefik.http.services.gotify.loadbalancer.sticky: true - traefik.http.middlewares.sslheader.headers.customrequestheaders.X-Forwarded-Proto: http + traefik.http.routers.gotify.tls.certresolver: myresolver + # Local domain + traefik.http.routers.gotify-local-insecure.rule: Host(`gotify.${LOCAL_DOMAIN}`) + traefik.http.routers.gotify-local-insecure.entrypoints: web + traefik.http.routers.gotify-local-insecure.service: gotify + traefik.http.routers.gotify-local-insecure.middlewares: gotify-web-redirect + # Local domain secure + traefik.http.routers.gotify-local.rule: Host(`gotify.${LOCAL_DOMAIN}`) + traefik.http.routers.gotify-local.entrypoints: websecure + traefik.http.routers.gotify-local.service: gotify + traefik.http.routers.gotify-local.tls: true diff --git a/apps/gotosocial/config.json b/apps/gotosocial/config.json index 77075372..33bf0ca5 100644 --- a/apps/gotosocial/config.json +++ b/apps/gotosocial/config.json @@ -6,13 +6,11 @@ "exposable": true, "force_expose": true, "id": "gotosocial", - "tipi_version": 4, + "tipi_version": 5, "uid": 1000, "gid": 1000, "version": "0.9.0", - "categories": [ - "social" - ], + "categories": ["social"], "description": "Fast, fun, ActivityPub server, powered by Go.", "short_desc": "Fast, fun, ActivityPub server, powered by Go.", "author": "superseriousbusiness", diff --git a/apps/gotosocial/docker-compose.yml b/apps/gotosocial/docker-compose.yml index 09f177bf..7059254e 100644 --- a/apps/gotosocial/docker-compose.yml +++ b/apps/gotosocial/docker-compose.yml @@ -30,13 +30,31 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.gotosocial-web-redirect.redirectscheme.scheme: https + traefik.http.services.gotosocial.loadbalancer.server.port: 8080 + # Web + traefik.http.routers.gotosocial-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.gotosocial-insecure.entrypoints: web + traefik.http.routers.gotosocial-insecure.service: gotosocial + traefik.http.routers.gotosocial-insecure.middlewares: gotosocial-web-redirect + # Websecure traefik.http.routers.gotosocial.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.gotosocial.entrypoints: websecure traefik.http.routers.gotosocial.service: gotosocial traefik.http.routers.gotosocial.tls.certresolver: myresolver - traefik.http.services.gotosocial.loadbalancer.server.port: 8080 - + # Local domain + traefik.http.routers.gotosocial-local-insecure.rule: Host(`gotosocial.${LOCAL_DOMAIN}`) + traefik.http.routers.gotosocial-local-insecure.entrypoints: web + traefik.http.routers.gotosocial-local-insecure.service: gotosocial + traefik.http.routers.gotosocial-local-insecure.middlewares: gotosocial-web-redirect + # Local domain secure + traefik.http.routers.gotosocial-local.rule: Host(`gotosocial.${LOCAL_DOMAIN}`) + traefik.http.routers.gotosocial-local.entrypoints: websecure + traefik.http.routers.gotosocial-local.service: gotosocial + traefik.http.routers.gotosocial-local.tls: true + gotosocial-db: container_name: gotosocial-db image: postgres:14 @@ -49,4 +67,4 @@ services: - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data restart: unless-stopped networks: - - tipi_main_network \ No newline at end of file + - tipi_main_network diff --git a/apps/grafana/config.json b/apps/grafana/config.json index 45dcd750..2f6fb6e9 100644 --- a/apps/grafana/config.json +++ b/apps/grafana/config.json @@ -5,11 +5,9 @@ "available": true, "exposable": true, "id": "grafana", - "tipi_version": 6, + "tipi_version": 7, "version": "9.5.3", - "categories": [ - "data" - ], + "categories": ["data"], "description": "The open and composable observability and data visualization platform", "short_desc": "The open and composable observability and data visualization platform", "author": "Grafana Labs", diff --git a/apps/grafana/docker-compose.yml b/apps/grafana/docker-compose.yml index de028137..bc274e14 100644 --- a/apps/grafana/docker-compose.yml +++ b/apps/grafana/docker-compose.yml @@ -6,15 +6,32 @@ services: image: grafana/grafana-oss:9.5.3 ports: - ${APP_PORT}:3000 - user: "1000" volumes: - ${APP_DATA_DIR}/data/grafana:/var/lib/grafana networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.grafana-web-redirect.redirectscheme.scheme: https + traefik.http.services.grafana.loadbalancer.server.port: 3000 + # Web + traefik.http.routers.grafana-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.grafana-insecure.entrypoints: web + traefik.http.routers.grafana-insecure.service: grafana + traefik.http.routers.grafana-insecure.middlewares: grafana-web-redirect + # Websecure traefik.http.routers.grafana.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.grafana.entrypoints: websecure traefik.http.routers.grafana.service: grafana traefik.http.routers.grafana.tls.certresolver: myresolver - traefik.http.services.grafana.loadbalancer.server.port: 3000 + # Local domain + traefik.http.routers.grafana-local-insecure.rule: Host(`grafana.${LOCAL_DOMAIN}`) + traefik.http.routers.grafana-local-insecure.entrypoints: web + traefik.http.routers.grafana-local-insecure.service: grafana + traefik.http.routers.grafana-local-insecure.middlewares: grafana-web-redirect + # Local domain secure + traefik.http.routers.grafana-local.rule: Host(`grafana.${LOCAL_DOMAIN}`) + traefik.http.routers.grafana-local.entrypoints: websecure + traefik.http.routers.grafana-local.service: grafana + traefik.http.routers.grafana-local.tls: true diff --git a/apps/grav/config.json b/apps/grav/config.json index b5409e65..392e3739 100644 --- a/apps/grav/config.json +++ b/apps/grav/config.json @@ -5,7 +5,7 @@ "available": true, "exposable": true, "id": "grav", - "tipi_version": 1, + "tipi_version": 2, "version": "1.7.39.4-ls97", "categories": ["social", "media"], "description": "Grav is a Fast, Simple, and Flexible, file-based Web-platform. There is Zero installation required. It follows similar principles to other flat-file CMS platforms, but has a different design philosophy than most. Grav comes with a powerful Package Management System to allow for simple installation and upgrading of plugins and themes, as well as simple updating of Grav itself.", diff --git a/apps/grav/docker-compose.yml b/apps/grav/docker-compose.yml index d6846cdf..d6310164 100644 --- a/apps/grav/docker-compose.yml +++ b/apps/grav/docker-compose.yml @@ -15,9 +15,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.grav-web-redirect.redirectscheme.scheme: https + traefik.http.services.grav.loadbalancer.server.port: 80 + # Web + traefik.http.routers.grav-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.grav-insecure.entrypoints: web + traefik.http.routers.grav-insecure.service: grav + traefik.http.routers.grav-insecure.middlewares: grav-web-redirect + # Websecure traefik.http.routers.grav.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.grav.entrypoints: websecure traefik.http.routers.grav.service: grav traefik.http.routers.grav.tls.certresolver: myresolver - traefik.http.services.grav.loadbalancer.server.port: 80 \ No newline at end of file + # Local domain + traefik.http.routers.grav-local-insecure.rule: Host(`grav.${LOCAL_DOMAIN}`) + traefik.http.routers.grav-local-insecure.entrypoints: web + traefik.http.routers.grav-local-insecure.service: grav + traefik.http.routers.grav-local-insecure.middlewares: grav-web-redirect + # Local domain secure + traefik.http.routers.grav-local.rule: Host(`grav.${LOCAL_DOMAIN}`) + traefik.http.routers.grav-local.entrypoints: websecure + traefik.http.routers.grav-local.service: grav + traefik.http.routers.grav-local.tls: true diff --git a/apps/grocy/config.json b/apps/grocy/config.json index 4f94df1d..9e29c487 100644 --- a/apps/grocy/config.json +++ b/apps/grocy/config.json @@ -3,14 +3,11 @@ "name": "Grocy", "available": true, "exposable": true, - "tipi_version": 2, + "tipi_version": 3, "version": "3.3.2", "port": 8136, "id": "grocy", - "categories": [ - "automation", - "finance" - ], + "categories": ["automation", "finance"], "description": "grocy is a web-based self-hosted groceries & household management solution for your home", "short_desc": "ERP beyond your fridge", "author": "berrnd", diff --git a/apps/grocy/docker-compose.yml b/apps/grocy/docker-compose.yml index 3ed86593..7dc3804b 100644 --- a/apps/grocy/docker-compose.yml +++ b/apps/grocy/docker-compose.yml @@ -15,9 +15,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.grocy-web-redirect.redirectscheme.scheme: https + traefik.http.services.grocy.loadbalancer.server.port: 80 + # Web + traefik.http.routers.grocy-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.grocy-insecure.entrypoints: web + traefik.http.routers.grocy-insecure.service: grocy + traefik.http.routers.grocy-insecure.middlewares: grocy-web-redirect + # Websecure traefik.http.routers.grocy.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.grocy.entrypoints: websecure traefik.http.routers.grocy.service: grocy traefik.http.routers.grocy.tls.certresolver: myresolver - traefik.http.services.grocy.loadbalancer.server.port: 80 + # Local domain + traefik.http.routers.grocy-local-insecure.rule: Host(`grocy.${LOCAL_DOMAIN}`) + traefik.http.routers.grocy-local-insecure.entrypoints: web + traefik.http.routers.grocy-local-insecure.service: grocy + traefik.http.routers.grocy-local-insecure.middlewares: grocy-web-redirect + # Local domain secure + traefik.http.routers.grocy-local.rule: Host(`grocy.${LOCAL_DOMAIN}`) + traefik.http.routers.grocy-local.entrypoints: websecure + traefik.http.routers.grocy-local.service: grocy + traefik.http.routers.grocy-local.tls: true From 9d9c0de0973b2194d12e966a271a43c785a0b378 Mon Sep 17 00:00:00 2001 From: Nicolas Meienberger <47644445+meienberger@users.noreply.github.com> Date: Sat, 10 Jun 2023 17:29:03 +0200 Subject: [PATCH 10/11] local domain configs H-L (#678) * feat(halo): change config to support local domain * feat(hammond): change config to support local domain * feat(haven): change config to support local domain * feat(hedgedoc): change config to support local domain * feat(hello-world): change config to support local domain * feat(homarr): change config to support local domain * feat(homebox): change config to support local domain * feat(immich): change config to support local domain * feat(invidious): change config to support local domain * feat(it-tools): change config to support local domain * feat(jackett): change config to support local domain * feat(jellyseerr): change config to support local domain * feat(joplin): change config to support local domain * feat(kandboard): change config to support local domain * feat(kapowarr): change config to support local domain * feat(kavita): change config to support local domain * feat(libreddit): change config to support local domain * feat(librephotos): change config to support local domain * feat(libretranslate): change config to support local domain * feat(lidarr): change config to support local domain * feat(lidarr-deemix): change config to support local domain * feat(linkstack): change config to support local domain * feat(lodestone-core): change config to support local domain --- apps/halo/config.json | 7 +--- apps/halo/docker-compose.yml | 29 +++++++++++--- apps/hammond/config.json | 2 +- apps/hammond/docker-compose.yml | 22 ++++++++++- apps/haven/config.json | 2 +- apps/haven/docker-compose.yml | 52 ++++++++++++++++++------- apps/hedgedoc/config.json | 10 ++--- apps/hedgedoc/docker-compose.yml | 24 ++++++++++-- apps/hello-world/config.json | 6 +-- apps/hello-world/docker-compose.yml | 24 ++++++++++-- apps/homarr/config.json | 6 +-- apps/homarr/docker-compose.yml | 24 ++++++++++-- apps/homebox/config.json | 6 +-- apps/homebox/docker-compose.yml | 30 +++++++++++--- apps/immich/config.json | 2 +- apps/immich/docker-compose.yml | 28 ++++++++++--- apps/invidious/config.json | 2 +- apps/invidious/docker-compose.arm64.yml | 21 +++++++++- apps/invidious/docker-compose.yml | 22 ++++++++++- apps/it-tools/config.json | 2 +- apps/it-tools/docker-compose.yml | 23 +++++++++-- apps/jackett/config.json | 7 +--- apps/jackett/docker-compose.yml | 22 ++++++++++- apps/jellyseerr/config.json | 7 +--- apps/jellyseerr/docker-compose.yml | 22 ++++++++++- apps/joplin/README.md | 13 ------- apps/joplin/config.json | 6 +-- apps/joplin/docker-compose.yml | 28 ++++++++++--- apps/kanboard/config.json | 6 +-- apps/kanboard/docker-compose.yml | 24 ++++++++++-- apps/kapowarr/config.json | 7 +--- apps/kapowarr/docker-compose.yml | 22 ++++++++++- apps/kavita/config.json | 2 +- apps/kavita/docker-compose.yml | 26 +++++++++++-- apps/libreddit/config.json | 2 +- apps/libreddit/docker-compose.arm.yml | 22 ++++++++++- apps/libreddit/docker-compose.arm64.yml | 22 ++++++++++- apps/libreddit/docker-compose.yml | 23 +++++++++-- apps/librephotos/config.json | 2 +- apps/librephotos/docker-compose.yml | 26 +++++++++++-- apps/libretranslate/config.json | 6 +-- apps/libretranslate/docker-compose.yml | 23 +++++++++-- apps/lidarr-deemix/config.json | 6 +-- apps/lidarr-deemix/docker-compose.yml | 22 ++++++++++- apps/lidarr/config.json | 7 +--- apps/lidarr/docker-compose.yml | 22 ++++++++++- apps/linkstack/config.json | 2 +- apps/linkstack/docker-compose.yml | 40 +++++++++++++------ apps/lodestone-core/config.json | 6 +-- apps/lodestone-core/docker-compose.yml | 22 ++++++++++- 50 files changed, 606 insertions(+), 183 deletions(-) delete mode 100644 apps/joplin/README.md diff --git a/apps/halo/config.json b/apps/halo/config.json index 9e9bea9c..f5be12df 100644 --- a/apps/halo/config.json +++ b/apps/halo/config.json @@ -5,14 +5,11 @@ "exposable": true, "port": 8092, "id": "halo", - "tipi_version": 2, + "tipi_version": 3, "version": "2.6.0", "description": "Halo is a powerful and easy-to-use open source website building tool.", "short_desc": "Halo - Open source website building tool.", - "categories": [ - "social", - "media" - ], + "categories": ["social", "media"], "author": "halo-dev", "source": "https://github.com/halo-dev/halo", "website": "https://halo.run", diff --git a/apps/halo/docker-compose.yml b/apps/halo/docker-compose.yml index 841bb467..689ed618 100644 --- a/apps/halo/docker-compose.yml +++ b/apps/halo/docker-compose.yml @@ -15,11 +15,12 @@ services: ports: - ${APP_PORT}:8090 healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"] + test: + ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"] interval: 30s timeout: 5s retries: 5 - start_period: 30s + start_period: 30s command: - --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo - --spring.r2dbc.username=halo @@ -29,12 +30,30 @@ services: - --halo.security.initializer.superadminusername=${HALO_ADMIN_USERNAME} - --halo.security.initializer.superadminpassword=${HALO_ADMIN_PASSWORD} labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.halo-web-redirect.redirectscheme.scheme: https + traefik.http.services.halo.loadbalancer.server.port: 8090 + # Web + traefik.http.routers.halo-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.halo-insecure.entrypoints: web + traefik.http.routers.halo-insecure.service: halo + traefik.http.routers.halo-insecure.middlewares: halo-web-redirect + # Websecure traefik.http.routers.halo.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.halo.entrypoints: websecure traefik.http.routers.halo.service: halo traefik.http.routers.halo.tls.certresolver: myresolver - traefik.http.services.halo.loadbalancer.server.port: 8090 + # Local domain + traefik.http.routers.halo-local-insecure.rule: Host(`halo.${LOCAL_DOMAIN}`) + traefik.http.routers.halo-local-insecure.entrypoints: web + traefik.http.routers.halo-local-insecure.service: halo + traefik.http.routers.halo-local-insecure.middlewares: halo-web-redirect + # Local domain secure + traefik.http.routers.halo-local.rule: Host(`halo.${LOCAL_DOMAIN}`) + traefik.http.routers.halo-local.entrypoints: websecure + traefik.http.routers.halo-local.service: halo + traefik.http.routers.halo-local.tls: true halodb: image: postgres:latest @@ -45,7 +64,7 @@ services: volumes: - ${APP_DATA_DIR}/db:/var/lib/postgresql/data healthcheck: - test: [ "CMD", "pg_isready" ] + test: ["CMD", "pg_isready"] interval: 10s timeout: 5s retries: 5 diff --git a/apps/hammond/config.json b/apps/hammond/config.json index 51c2c2ee..fd3562ea 100644 --- a/apps/hammond/config.json +++ b/apps/hammond/config.json @@ -5,7 +5,7 @@ "available": true, "exposable": true, "id": "hammond", - "tipi_version": 1, + "tipi_version": 2, "version": "1.0.0", "categories": ["utilities"], "description": "Self hosted vehicle and expense management system. Like Clarkson, but better", diff --git a/apps/hammond/docker-compose.yml b/apps/hammond/docker-compose.yml index 8c337b24..f2317a3d 100644 --- a/apps/hammond/docker-compose.yml +++ b/apps/hammond/docker-compose.yml @@ -13,9 +13,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.hammond-web-redirect.redirectscheme.scheme: https + traefik.http.services.hammond.loadbalancer.server.port: 3000 + # Web + traefik.http.routers.hammond-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.hammond-insecure.entrypoints: web + traefik.http.routers.hammond-insecure.service: hammond + traefik.http.routers.hammond-insecure.middlewares: hammond-web-redirect + # Websecure traefik.http.routers.hammond.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.hammond.entrypoints: websecure traefik.http.routers.hammond.service: hammond traefik.http.routers.hammond.tls.certresolver: myresolver - traefik.http.services.hammond.loadbalancer.server.port: 3000 \ No newline at end of file + # Local domain + traefik.http.routers.hammond-local-insecure.rule: Host(`hammond.${LOCAL_DOMAIN}`) + traefik.http.routers.hammond-local-insecure.entrypoints: web + traefik.http.routers.hammond-local-insecure.service: hammond + traefik.http.routers.hammond-local-insecure.middlewares: hammond-web-redirect + # Local domain secure + traefik.http.routers.hammond-local.rule: Host(`hammond.${LOCAL_DOMAIN}`) + traefik.http.routers.hammond-local.entrypoints: websecure + traefik.http.routers.hammond-local.service: hammond + traefik.http.routers.hammond-local.tls: true diff --git a/apps/haven/config.json b/apps/haven/config.json index 116e3acd..2bbcf2a5 100644 --- a/apps/haven/config.json +++ b/apps/haven/config.json @@ -5,7 +5,7 @@ "exposable": true, "port": 8130, "id": "haven", - "tipi_version": 1, + "tipi_version": 2, "version": "a0280ce", "categories": ["social"], "description": "Self-hostable private blogging", diff --git a/apps/haven/docker-compose.yml b/apps/haven/docker-compose.yml index ce2b07ee..29583b07 100644 --- a/apps/haven/docker-compose.yml +++ b/apps/haven/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.7' +version: "3.7" services: haven: image: ghcr.io/havenweb/haven:a0280ce @@ -20,26 +20,52 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.haven-web-redirect.redirectscheme.scheme: https + traefik.http.services.haven.loadbalancer.server.port: 3000 + # Web + traefik.http.routers.haven-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.haven-insecure.entrypoints: web + traefik.http.routers.haven-insecure.service: haven + traefik.http.routers.haven-insecure.middlewares: haven-web-redirect + # Websecure traefik.http.routers.haven.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.haven.entrypoints: websecure traefik.http.routers.haven.service: haven traefik.http.routers.haven.tls.certresolver: myresolver - traefik.http.services.haven.loadbalancer.server.port: 3000 + # Local domain + traefik.http.routers.haven-local-insecure.rule: Host(`haven.${LOCAL_DOMAIN}`) + traefik.http.routers.haven-local-insecure.entrypoints: web + traefik.http.routers.haven-local-insecure.service: haven + traefik.http.routers.haven-local-insecure.middlewares: haven-web-redirect + # Local domain secure + traefik.http.routers.haven-local.rule: Host(`haven.${LOCAL_DOMAIN}`) + traefik.http.routers.haven-local.entrypoints: websecure + traefik.http.routers.haven-local.service: haven + traefik.http.routers.haven-local.tls: true haven-db: image: postgres:13.2-alpine container_name: haven-db - command: [ - "postgres", - "-c", "max_connections=1000", - "-c", "synchronous_commit=off", - "-c", "fsync=off", - "-c", "full_page_writes=off", - "-c", "max_wal_size=4GB", - "-c", "checkpoint_timeout=30min", - "-c", "wal_level=logical" - ] + command: + [ + "postgres", + "-c", + "max_connections=1000", + "-c", + "synchronous_commit=off", + "-c", + "fsync=off", + "-c", + "full_page_writes=off", + "-c", + "max_wal_size=4GB", + "-c", + "checkpoint_timeout=30min", + "-c", + "wal_level=logical", + ] environment: POSTGRES_HOST_AUTH_METHOD: trust POSTGRES_USER: haven diff --git a/apps/hedgedoc/config.json b/apps/hedgedoc/config.json index ef588023..4aa70ad1 100644 --- a/apps/hedgedoc/config.json +++ b/apps/hedgedoc/config.json @@ -5,19 +5,15 @@ "available": true, "exposable": true, "id": "hedgedoc", - "tipi_version": 2, + "tipi_version": 3, "version": "1.9.8", - "categories": [ - "media" - ], + "categories": ["media"], "description": "HedgeDoc (formerly known as CodiMD) is an open-source, web-based, self-hosted, collaborative markdown editor. You can use it to easily collaborate on notes, graphs and even presentations in real-time. All you need to do is to share your note-link to your co-workers and they’re ready to go.", "short_desc": "A Collaborative Markdown and Note Taking App", "website": "https://hedgedoc.org/", "author": "https://github.com/hedgedoc", "source": "https://github.com/hedgedoc/hedgedoc", - "supported_architectures": [ - "amd64" - ], + "supported_architectures": ["amd64"], "form_fields": [ { "type": "random", diff --git a/apps/hedgedoc/docker-compose.yml b/apps/hedgedoc/docker-compose.yml index 4e5b48f1..b4e25bb7 100644 --- a/apps/hedgedoc/docker-compose.yml +++ b/apps/hedgedoc/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.7' +version: "3.7" services: hedgedoc: @@ -18,12 +18,30 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.hedgedoc-web-redirect.redirectscheme.scheme: https + traefik.http.services.hedgedoc.loadbalancer.server.port: 3000 + # Web + traefik.http.routers.hedgedoc-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.hedgedoc-insecure.entrypoints: web + traefik.http.routers.hedgedoc-insecure.service: hedgedoc + traefik.http.routers.hedgedoc-insecure.middlewares: hedgedoc-web-redirect + # Websecure traefik.http.routers.hedgedoc.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.hedgedoc.entrypoints: websecure traefik.http.routers.hedgedoc.service: hedgedoc traefik.http.routers.hedgedoc.tls.certresolver: myresolver - traefik.http.services.hedgedoc.loadbalancer.server.port: 3000 + # Local domain + traefik.http.routers.hedgedoc-local-insecure.rule: Host(`hedgedoc.${LOCAL_DOMAIN}`) + traefik.http.routers.hedgedoc-local-insecure.entrypoints: web + traefik.http.routers.hedgedoc-local-insecure.service: hedgedoc + traefik.http.routers.hedgedoc-local-insecure.middlewares: hedgedoc-web-redirect + # Local domain secure + traefik.http.routers.hedgedoc-local.rule: Host(`hedgedoc.${LOCAL_DOMAIN}`) + traefik.http.routers.hedgedoc-local.entrypoints: websecure + traefik.http.routers.hedgedoc-local.service: hedgedoc + traefik.http.routers.hedgedoc-local.tls: true hedgedoc-db: container_name: hedgedoc-db diff --git a/apps/hello-world/config.json b/apps/hello-world/config.json index 3d177d32..cd3d8f97 100644 --- a/apps/hello-world/config.json +++ b/apps/hello-world/config.json @@ -5,11 +5,9 @@ "exposable": true, "port": 8000, "id": "hello-world", - "tipi_version": 1, + "tipi_version": 2, "version": "1.0.0", - "categories": [ - "utilities" - ], + "categories": ["utilities"], "description": "Hello World web server in under 2 MB", "short_desc": "Hello World web server in under 2 MB", "author": "crccheck", diff --git a/apps/hello-world/docker-compose.yml b/apps/hello-world/docker-compose.yml index 03d95808..6612c5fe 100644 --- a/apps/hello-world/docker-compose.yml +++ b/apps/hello-world/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.7' +version: "3.7" services: hello-world: container_name: hello-world @@ -9,9 +9,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.hello-world-web-redirect.redirectscheme.scheme: https + traefik.http.services.hello-world.loadbalancer.server.port: 8000 + # Web + traefik.http.routers.hello-world-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.hello-world-insecure.entrypoints: web + traefik.http.routers.hello-world-insecure.service: hello-world + traefik.http.routers.hello-world-insecure.middlewares: hello-world-web-redirect + # Websecure traefik.http.routers.hello-world.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.hello-world.entrypoints: websecure traefik.http.routers.hello-world.service: hello-world traefik.http.routers.hello-world.tls.certresolver: myresolver - traefik.http.services.hello-world.loadbalancer.server.port: 7575 + # Local domain + traefik.http.routers.hello-world-local-insecure.rule: Host(`hello-world.${LOCAL_DOMAIN}`) + traefik.http.routers.hello-world-local-insecure.entrypoints: web + traefik.http.routers.hello-world-local-insecure.service: hello-world + traefik.http.routers.hello-world-local-insecure.middlewares: hello-world-web-redirect + # Local domain secure + traefik.http.routers.hello-world-local.rule: Host(`hello-world.${LOCAL_DOMAIN}`) + traefik.http.routers.hello-world-local.entrypoints: websecure + traefik.http.routers.hello-world-local.service: hello-world + traefik.http.routers.hello-world-local.tls: true diff --git a/apps/homarr/config.json b/apps/homarr/config.json index d0cb844e..9be857a0 100644 --- a/apps/homarr/config.json +++ b/apps/homarr/config.json @@ -5,11 +5,9 @@ "exposable": true, "port": 8102, "id": "homarr", - "tipi_version": 11, + "tipi_version": 12, "version": "0.12.2", - "categories": [ - "utilities" - ], + "categories": ["utilities"], "description": "A homepage for your server.", "short_desc": "Homarr is a simple and lightweight homepage for your server, that helps you easily access all of your services in one place.", "author": "ajnart", diff --git a/apps/homarr/docker-compose.yml b/apps/homarr/docker-compose.yml index d39e6da0..42515dcb 100644 --- a/apps/homarr/docker-compose.yml +++ b/apps/homarr/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.7' +version: "3.7" services: homarr: container_name: homarr @@ -17,9 +17,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.homarr-web-redirect.redirectscheme.scheme: https + traefik.http.services.homarr.loadbalancer.server.port: 7575 + # Web + traefik.http.routers.homarr-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.homarr-insecure.entrypoints: web + traefik.http.routers.homarr-insecure.service: homarr + traefik.http.routers.homarr-insecure.middlewares: homarr-web-redirect + # Websecure traefik.http.routers.homarr.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.homarr.entrypoints: websecure traefik.http.routers.homarr.service: homarr traefik.http.routers.homarr.tls.certresolver: myresolver - traefik.http.services.homarr.loadbalancer.server.port: 7575 + # Local domain + traefik.http.routers.homarr-local-insecure.rule: Host(`homarr.${LOCAL_DOMAIN}`) + traefik.http.routers.homarr-local-insecure.entrypoints: web + traefik.http.routers.homarr-local-insecure.service: homarr + traefik.http.routers.homarr-local-insecure.middlewares: homarr-web-redirect + # Local domain secure + traefik.http.routers.homarr-local.rule: Host(`homarr.${LOCAL_DOMAIN}`) + traefik.http.routers.homarr-local.entrypoints: websecure + traefik.http.routers.homarr-local.service: homarr + traefik.http.routers.homarr-local.tls: true diff --git a/apps/homebox/config.json b/apps/homebox/config.json index 586ee733..86086c9e 100644 --- a/apps/homebox/config.json +++ b/apps/homebox/config.json @@ -5,11 +5,9 @@ "available": true, "exposable": true, "id": "homebox", - "tipi_version": 4, + "tipi_version": 5, "version": "0.9.2", - "categories": [ - "utilities" - ], + "categories": ["utilities"], "description": "Homebox is the inventory and organization system built for the Home User", "short_desc": "Homebox is the inventory and organization system built for the Home User", "author": "hay-kot", diff --git a/apps/homebox/docker-compose.yml b/apps/homebox/docker-compose.yml index c2016116..95ee1290 100644 --- a/apps/homebox/docker-compose.yml +++ b/apps/homebox/docker-compose.yml @@ -6,10 +6,10 @@ services: container_name: homebox restart: always environment: - - HBOX_LOG_LEVEL=info - - HBOX_LOG_FORMAT=text - - HBOX_WEB_MAX_UPLOAD_SIZE=10 - - HBOX_OPTIONS_ALLOW_REGISTRATION=${HBOX_OPTIONS_ALLOW_REGISTRATION} + - HBOX_LOG_LEVEL=info + - HBOX_LOG_FORMAT=text + - HBOX_WEB_MAX_UPLOAD_SIZE=10 + - HBOX_OPTIONS_ALLOW_REGISTRATION=${HBOX_OPTIONS_ALLOW_REGISTRATION} volumes: - ${APP_DATA_DIR}/data/homebox-data:/data/ ports: @@ -17,9 +17,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.homebox-web-redirect.redirectscheme.scheme: https + traefik.http.services.homebox.loadbalancer.server.port: 7745 + # Web + traefik.http.routers.homebox-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.homebox-insecure.entrypoints: web + traefik.http.routers.homebox-insecure.service: homebox + traefik.http.routers.homebox-insecure.middlewares: homebox-web-redirect + # Websecure traefik.http.routers.homebox.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.homebox.entrypoints: websecure traefik.http.routers.homebox.service: homebox traefik.http.routers.homebox.tls.certresolver: myresolver - traefik.http.services.homebox.loadbalancer.server.port: 7745 \ No newline at end of file + # Local domain + traefik.http.routers.homebox-local-insecure.rule: Host(`homebox.${LOCAL_DOMAIN}`) + traefik.http.routers.homebox-local-insecure.entrypoints: web + traefik.http.routers.homebox-local-insecure.service: homebox + traefik.http.routers.homebox-local-insecure.middlewares: homebox-web-redirect + # Local domain secure + traefik.http.routers.homebox-local.rule: Host(`homebox.${LOCAL_DOMAIN}`) + traefik.http.routers.homebox-local.entrypoints: websecure + traefik.http.routers.homebox-local.service: homebox + traefik.http.routers.homebox-local.tls: true diff --git a/apps/immich/config.json b/apps/immich/config.json index 0d912db6..a0a5e84a 100644 --- a/apps/immich/config.json +++ b/apps/immich/config.json @@ -5,7 +5,7 @@ "exposable": true, "port": 8128, "id": "immich", - "tipi_version": 16, + "tipi_version": 17, "version": "v1.60.0", "categories": ["data", "photography"], "description": "Photo and video backup solution directly from your mobile phone.", diff --git a/apps/immich/docker-compose.yml b/apps/immich/docker-compose.yml index 3581d841..42de1d8c 100644 --- a/apps/immich/docker-compose.yml +++ b/apps/immich/docker-compose.yml @@ -12,16 +12,34 @@ services: environment: - IMMICH_WEB_URL=http://immich-web:3000 - IMMICH_SERVER_URL=http://immich-server:3001 - # - IMMICH_MACHINE_LEARNING_URL="http://immich-machine-learning:3003" + # - IMMICH_MACHINE_LEARNING_URL="http://immich-machine-learning:3003" networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.immich-web-redirect.redirectscheme.scheme: https + traefik.http.services.immich.loadbalancer.server.port: 8080 + # Web + traefik.http.routers.immich-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.immich-insecure.entrypoints: web + traefik.http.routers.immich-insecure.service: immich + traefik.http.routers.immich-insecure.middlewares: immich-web-redirect + # Websecure traefik.http.routers.immich.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.immich.entrypoints: websecure traefik.http.routers.immich.service: immich traefik.http.routers.immich.tls.certresolver: myresolver - traefik.http.services.immich.loadbalancer.server.port: 8080 + # Local domain + traefik.http.routers.immich-local-insecure.rule: Host(`immich.${LOCAL_DOMAIN}`) + traefik.http.routers.immich-local-insecure.entrypoints: web + traefik.http.routers.immich-local-insecure.service: immich + traefik.http.routers.immich-local-insecure.middlewares: immich-web-redirect + # Local domain secure + traefik.http.routers.immich-local.rule: Host(`immich.${LOCAL_DOMAIN}`) + traefik.http.routers.immich-local.entrypoints: websecure + traefik.http.routers.immich-local.service: immich + traefik.http.routers.immich-local.tls: true immich-server: container_name: immich-server @@ -121,7 +139,7 @@ services: restart: unless-stopped networks: - tipi_main_network - + immich-typesense: container_name: immich-typesense image: typesense/typesense:0.24.0 @@ -134,4 +152,4 @@ services: - ${APP_DATA_DIR}/data/typesense:/data restart: always networks: - - tipi_main_network \ No newline at end of file + - tipi_main_network diff --git a/apps/invidious/config.json b/apps/invidious/config.json index 0410f2d5..9ad8640d 100644 --- a/apps/invidious/config.json +++ b/apps/invidious/config.json @@ -6,7 +6,7 @@ "port": 8095, "id": "invidious", "version": "latest", - "tipi_version": 4, + "tipi_version": 5, "supported_architectures": ["arm64", "amd64"], "categories": ["media", "social"], "description": "Invidious is an open source alternative front-end to YouTube.", diff --git a/apps/invidious/docker-compose.arm64.yml b/apps/invidious/docker-compose.arm64.yml index b3759d1d..8690583d 100644 --- a/apps/invidious/docker-compose.arm64.yml +++ b/apps/invidious/docker-compose.arm64.yml @@ -28,12 +28,29 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.invidious-web-redirect.redirectscheme.scheme: https + traefik.http.services.invidious.loadbalancer.server.port: 3000 + # Web + traefik.http.routers.invidious-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.invidious-insecure.entrypoints: web + traefik.http.routers.invidious-insecure.service: invidious + traefik.http.routers.invidious-insecure.middlewares: invidious-web-redirect + # Websecure traefik.http.routers.invidious.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.invidious.entrypoints: websecure traefik.http.routers.invidious.service: invidious traefik.http.routers.invidious.tls.certresolver: myresolver - traefik.http.services.invidious.loadbalancer.server.port: 3000 + # Local domain + traefik.http.routers.invidious-local-insecure.rule: Host(`invidious.${LOCAL_DOMAIN}`) + traefik.http.routers.invidious-local-insecure.entrypoints: web + traefik.http.routers.invidious-local-insecure.service: invidious + traefik.http.routers.invidious-local-insecure.middlewares: invidious-web-redirect + # Local domain secure + traefik.http.routers.invidious-local.rule: Host(`invidious.${LOCAL_DOMAIN}`) + traefik.http.routers.invidious-local.entrypoints: websecure + traefik.http.routers.invidious-local.service: invidious invidious-db: container_name: invidious-db diff --git a/apps/invidious/docker-compose.yml b/apps/invidious/docker-compose.yml index c208b148..39f8de47 100644 --- a/apps/invidious/docker-compose.yml +++ b/apps/invidious/docker-compose.yml @@ -29,12 +29,30 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.invidious-web-redirect.redirectscheme.scheme: https + traefik.http.services.invidious.loadbalancer.server.port: 3000 + # Web + traefik.http.routers.invidious-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.invidious-insecure.entrypoints: web + traefik.http.routers.invidious-insecure.service: invidious + traefik.http.routers.invidious-insecure.middlewares: invidious-web-redirect + # Websecure traefik.http.routers.invidious.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.invidious.entrypoints: websecure traefik.http.routers.invidious.service: invidious traefik.http.routers.invidious.tls.certresolver: myresolver - traefik.http.services.invidious.loadbalancer.server.port: 3000 + # Local domain + traefik.http.routers.invidious-local-insecure.rule: Host(`invidious.${LOCAL_DOMAIN}`) + traefik.http.routers.invidious-local-insecure.entrypoints: web + traefik.http.routers.invidious-local-insecure.service: invidious + traefik.http.routers.invidious-local-insecure.middlewares: invidious-web-redirect + # Local domain secure + traefik.http.routers.invidious-local.rule: Host(`invidious.${LOCAL_DOMAIN}`) + traefik.http.routers.invidious-local.entrypoints: websecure + traefik.http.routers.invidious-local.service: invidious + traefik.http.routers.invidious-local.tls: true invidious-db: container_name: invidious-db diff --git a/apps/it-tools/config.json b/apps/it-tools/config.json index 62d395ee..fc7fda7b 100644 --- a/apps/it-tools/config.json +++ b/apps/it-tools/config.json @@ -5,7 +5,7 @@ "available": true, "exposable": true, "id": "it-tools", - "tipi_version": 1, + "tipi_version": 2, "version": "latest", "categories": ["development"], "description": "Useful tools for developer and people working in IT. ", diff --git a/apps/it-tools/docker-compose.yml b/apps/it-tools/docker-compose.yml index afd2c287..db9a3398 100644 --- a/apps/it-tools/docker-compose.yml +++ b/apps/it-tools/docker-compose.yml @@ -10,10 +10,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.it-tools-web-redirect.redirectscheme.scheme: https + traefik.http.services.it-tools.loadbalancer.server.port: 80 + # Web + traefik.http.routers.it-tools-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.it-tools-insecure.entrypoints: web + traefik.http.routers.it-tools-insecure.service: it-tools + traefik.http.routers.it-tools-insecure.middlewares: it-tools-web-redirect + # Websecure traefik.http.routers.it-tools.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.it-tools.entrypoints: websecure traefik.http.routers.it-tools.service: it-tools traefik.http.routers.it-tools.tls.certresolver: myresolver - traefik.http.services.it-tools.loadbalancer.server.port: 80 - + # Local domain + traefik.http.routers.it-tools-local-insecure.rule: Host(`it-tools.${LOCAL_DOMAIN}`) + traefik.http.routers.it-tools-local-insecure.entrypoints: web + traefik.http.routers.it-tools-local-insecure.service: it-tools + traefik.http.routers.it-tools-local-insecure.middlewares: it-tools-web-redirect + # Local domain secure + traefik.http.routers.it-tools-local.rule: Host(`it-tools.${LOCAL_DOMAIN}`) + traefik.http.routers.it-tools-local.entrypoints: websecure + traefik.http.routers.it-tools-local.service: it-tools + traefik.http.routers.it-tools-local.tls: true diff --git a/apps/jackett/config.json b/apps/jackett/config.json index 31f5cac2..e227dd45 100644 --- a/apps/jackett/config.json +++ b/apps/jackett/config.json @@ -5,14 +5,11 @@ "exposable": true, "port": 8097, "id": "jackett", - "tipi_version": 44, + "tipi_version": 45, "version": "0.21.186", "description": "Jackett works as a proxy server: it translates queries from apps (Sonarr, Radarr, SickRage, CouchPotato, Mylar3, Lidarr, DuckieTV, qBittorrent, Nefarious etc.) into tracker-site-specific http queries, parses the html or json response, and then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches.", "short_desc": "API Support for your favorite torrent trackers ", - "categories": [ - "media", - "utilities" - ], + "categories": ["media", "utilities"], "author": "", "source": "https://github.com/Jackett/Jackett", "form_fields": [] diff --git a/apps/jackett/docker-compose.yml b/apps/jackett/docker-compose.yml index b675c6e8..9f67d54c 100644 --- a/apps/jackett/docker-compose.yml +++ b/apps/jackett/docker-compose.yml @@ -19,9 +19,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.jackett-web-redirect.redirectscheme.scheme: https + traefik.http.services.jackett.loadbalancer.server.port: 9117 + # Web + traefik.http.routers.jackett-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.jackett-insecure.entrypoints: web + traefik.http.routers.jackett-insecure.service: jackett + traefik.http.routers.jackett-insecure.middlewares: jackett-web-redirect + # Websecure traefik.http.routers.jackett.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.jackett.entrypoints: websecure traefik.http.routers.jackett.service: jackett traefik.http.routers.jackett.tls.certresolver: myresolver - traefik.http.services.jackett.loadbalancer.server.port: 9117 + # Local domain + traefik.http.routers.jackett-local-insecure.rule: Host(`jackett.${LOCAL_DOMAIN}`) + traefik.http.routers.jackett-local-insecure.entrypoints: web + traefik.http.routers.jackett-local-insecure.service: jackett + traefik.http.routers.jackett-local-insecure.middlewares: jackett-web-redirect + # Local domain secure + traefik.http.routers.jackett-local.rule: Host(`jackett.${LOCAL_DOMAIN}`) + traefik.http.routers.jackett-local.entrypoints: websecure + traefik.http.routers.jackett-local.service: jackett + traefik.http.routers.jackett-local.tls: true diff --git a/apps/jellyseerr/config.json b/apps/jellyseerr/config.json index b9a10598..4b25b25d 100644 --- a/apps/jellyseerr/config.json +++ b/apps/jellyseerr/config.json @@ -5,12 +5,9 @@ "exposable": true, "port": 8163, "id": "jellyseerr", - "tipi_version": 2, + "tipi_version": 3, "version": "1.5.0", - "categories": [ - "media", - "utilities" - ], + "categories": ["media", "utilities"], "description": "Jellyseerr is a free and open source software application for managing requests for your media library. It is a a fork of Overseerr built to bring support for Jellyfin & Emby media servers!", "short_desc": "Fork of overseerr for Jellyfin support", "author": "Fallenbagel", diff --git a/apps/jellyseerr/docker-compose.yml b/apps/jellyseerr/docker-compose.yml index 3b7ffcea..9eedd37f 100644 --- a/apps/jellyseerr/docker-compose.yml +++ b/apps/jellyseerr/docker-compose.yml @@ -15,9 +15,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.jellyseerr-web-redirect.redirectscheme.scheme: https + traefik.http.services.jellyseerr.loadbalancer.server.port: 5055 + # Web + traefik.http.routers.jellyseerr-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.jellyseerr-insecure.entrypoints: web + traefik.http.routers.jellyseerr-insecure.service: jellyseerr + traefik.http.routers.jellyseerr-insecure.middlewares: jellyseerr-web-redirect + # Websecure traefik.http.routers.jellyseerr.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.jellyseerr.entrypoints: websecure traefik.http.routers.jellyseerr.service: jellyseerr traefik.http.routers.jellyseerr.tls.certresolver: myresolver - traefik.http.services.jellyseerr.loadbalancer.server.port: 5055 + # Local domain + traefik.http.routers.jellyseerr-local-insecure.rule: Host(`jellyseerr.${LOCAL_DOMAIN}`) + traefik.http.routers.jellyseerr-local-insecure.entrypoints: web + traefik.http.routers.jellyseerr-local-insecure.service: jellyseerr + traefik.http.routers.jellyseerr-local-insecure.middlewares: jellyseerr-web-redirect + # Local domain secure + traefik.http.routers.jellyseerr-local.rule: Host(`jellyseerr.${LOCAL_DOMAIN}`) + traefik.http.routers.jellyseerr-local.entrypoints: websecure + traefik.http.routers.jellyseerr-local.service: jellyseerr + traefik.http.routers.jellyseerr-local.tls: true diff --git a/apps/joplin/README.md b/apps/joplin/README.md deleted file mode 100644 index 63665775..00000000 --- a/apps/joplin/README.md +++ /dev/null @@ -1,13 +0,0 @@ -Joplin is a free, open source note taking and to-do application, which can handle a large number of notes organised into notebooks. The notes are searchable, can be copied, tagged and modified either from the applications directly or from your own text editor. The notes are in Markdown format. -Notes exported from Evernote can be imported into Joplin, including the formatted content (which is converted to Markdown), resources (images, attachments, etc.) and complete metadata (geolocation, updated time, created time, etc.). Plain Markdown files can also be imported. - -The notes can be securely synchronised using end-to-end encryption with various cloud services including Nextcloud, Dropbox, OneDrive and Joplin Cloud. - -Full text search is available on all platforms to quickly find the information you need. The app can be customised using plugins and themes, and you can also easily create your own. - -The application is available for Windows, Linux, macOS, Android and iOS. A Web Clipper, to save web pages and screenshots from your browser, is also available for Firefox and Chrome. - -## Credentials - -Username: admin@localhost -Password: admin diff --git a/apps/joplin/config.json b/apps/joplin/config.json index c9dac3d4..8029ee5d 100644 --- a/apps/joplin/config.json +++ b/apps/joplin/config.json @@ -5,11 +5,9 @@ "exposable": true, "port": 8099, "id": "joplin", - "tipi_version": 5, + "tipi_version": 6, "version": "2.10.11", - "categories": [ - "utilities" - ], + "categories": ["utilities"], "description": "Default credentials: admin@localhost / admin", "short_desc": "Note taking and to-do application with synchronisation", "author": "https://github.com/laurent22", diff --git a/apps/joplin/docker-compose.yml b/apps/joplin/docker-compose.yml index 5143b0de..c2bea328 100644 --- a/apps/joplin/docker-compose.yml +++ b/apps/joplin/docker-compose.yml @@ -24,16 +24,32 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.joplin-web-redirect.redirectscheme.scheme: https + traefik.http.services.joplin.loadbalancer.passhostheader: true + traefik.http.services.joplin.loadbalancer.server.port: 22300 + # Web + traefik.http.routers.joplin-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.joplin-insecure.entrypoints: web + traefik.http.routers.joplin-insecure.service: joplin + traefik.http.routers.joplin-insecure.middlewares: joplin-web-redirect + # Websecure traefik.http.routers.joplin.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.joplin.entrypoints: websecure traefik.http.routers.joplin.service: joplin traefik.http.routers.joplin.tls.certresolver: myresolver - traefik.http.services.joplin.loadbalancer.server.port: 22300 - traefik.http.services.joplin.loadbalancer.passhostheader: true - traefik.http.middlewares.joplin-sslheader.headers.customrequestheaders.X-Forwarded-Proto: http - traefik.http.routers.joplin-sslheader.middlewares: joplin-sslheader@docker - + # Local domain + traefik.http.routers.joplin-local-insecure.rule: Host(`joplin.${LOCAL_DOMAIN}`) + traefik.http.routers.joplin-local-insecure.entrypoints: web + traefik.http.routers.joplin-local-insecure.service: joplin + traefik.http.routers.joplin-local-insecure.middlewares: joplin-web-redirect + # Local domain secure + traefik.http.routers.joplin-local.rule: Host(`joplin.${LOCAL_DOMAIN}`) + traefik.http.routers.joplin-local.entrypoints: websecure + traefik.http.routers.joplin-local.service: joplin + traefik.http.routers.joplin-local.tls: true + db-joplin: container_name: db-joplin image: postgres:14.2 diff --git a/apps/kanboard/config.json b/apps/kanboard/config.json index 677285a8..49cfa62b 100644 --- a/apps/kanboard/config.json +++ b/apps/kanboard/config.json @@ -5,11 +5,9 @@ "port": 8010, "id": "kanboard", "description": "Kanboard is a free and open source Kanban project management software.", - "tipi_version": 3, + "tipi_version": 4, "version": "1.2.30", - "categories": [ - "development" - ], + "categories": ["development"], "short_desc": "Open Source Kanban Board", "author": "Frédéric Guillot", "source": "https://github.com/kanboard/kanboard", diff --git a/apps/kanboard/docker-compose.yml b/apps/kanboard/docker-compose.yml index f608382f..1ddab497 100644 --- a/apps/kanboard/docker-compose.yml +++ b/apps/kanboard/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.9' +version: "3.9" services: kanboard: @@ -15,9 +15,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.kanboard-web-redirect.redirectscheme.scheme: https + traefik.http.services.kanboard.loadbalancer.server.port: 80 + # Web + traefik.http.routers.kanboard-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.kanboard-insecure.entrypoints: web + traefik.http.routers.kanboard-insecure.service: kanboard + traefik.http.routers.kanboard-insecure.middlewares: kanboard-web-redirect + # Websecure traefik.http.routers.kanboard.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.kanboard.entrypoints: websecure traefik.http.routers.kanboard.service: kanboard traefik.http.routers.kanboard.tls.certresolver: myresolver - traefik.http.services.kanboard.loadbalancer.server.port: 80 + # Local domain + traefik.http.routers.kanboard-local-insecure.rule: Host(`kanboard.${LOCAL_DOMAIN}`) + traefik.http.routers.kanboard-local-insecure.entrypoints: web + traefik.http.routers.kanboard-local-insecure.service: kanboard + traefik.http.routers.kanboard-local-insecure.middlewares: kanboard-web-redirect + # Local domain secure + traefik.http.routers.kanboard-local.rule: Host(`kanboard.${LOCAL_DOMAIN}`) + traefik.http.routers.kanboard-local.entrypoints: websecure + traefik.http.routers.kanboard-local.service: kanboard + traefik.http.routers.kanboard-local.tls: true diff --git a/apps/kapowarr/config.json b/apps/kapowarr/config.json index a60ce820..46e7addf 100644 --- a/apps/kapowarr/config.json +++ b/apps/kapowarr/config.json @@ -5,12 +5,9 @@ "exposable": true, "port": 8194, "id": "kapowarr", - "tipi_version": 1, + "tipi_version": 2, "version": "v1.0.0-beta-1", - "categories": [ - "media", - "utilities" - ], + "categories": ["media", "utilities"], "description": "Kapowarr is a software to build and manage a comic book library, fitting in the *arr suite of software.", "short_desc": "Kapowarr is a software to build and manage a comic book library, fitting in the *arr suite of software.", "author": "Casvt", diff --git a/apps/kapowarr/docker-compose.yml b/apps/kapowarr/docker-compose.yml index 545dc949..cef66410 100644 --- a/apps/kapowarr/docker-compose.yml +++ b/apps/kapowarr/docker-compose.yml @@ -14,9 +14,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.kapowarr-web-redirect.redirectscheme.scheme: https + traefik.http.services.kapowarr.loadbalancer.server.port: 5656 + # Web + traefik.http.routers.kapowarr-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.kapowarr-insecure.entrypoints: web + traefik.http.routers.kapowarr-insecure.service: kapowarr + traefik.http.routers.kapowarr-insecure.middlewares: kapowarr-web-redirect + # Websecure traefik.http.routers.kapowarr.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.kapowarr.entrypoints: websecure traefik.http.routers.kapowarr.service: kapowarr traefik.http.routers.kapowarr.tls.certresolver: myresolver - traefik.http.services.kapowarr.loadbalancer.server.port: 5656 + # Local domain + traefik.http.routers.kapowarr-local-insecure.rule: Host(`kapowarr.${LOCAL_DOMAIN}`) + traefik.http.routers.kapowarr-local-insecure.entrypoints: web + traefik.http.routers.kapowarr-local-insecure.service: kapowarr + traefik.http.routers.kapowarr-local-insecure.middlewares: kapowarr-web-redirect + # Local domain secure + traefik.http.routers.kapowarr-local.rule: Host(`kapowarr.${LOCAL_DOMAIN}`) + traefik.http.routers.kapowarr-local.entrypoints: websecure + traefik.http.routers.kapowarr-local.service: kapowarr + traefik.http.routers.kapowarr-local.tls: true diff --git a/apps/kavita/config.json b/apps/kavita/config.json index 31855e9a..8d1be496 100644 --- a/apps/kavita/config.json +++ b/apps/kavita/config.json @@ -5,7 +5,7 @@ "available": true, "exposable": true, "id": "kavita", - "tipi_version": 1, + "tipi_version": 2, "version": "nightly-0.7.1.4", "categories": ["media"], "description": "Kavita is a fast, feature rich, cross platform reading server", diff --git a/apps/kavita/docker-compose.yml b/apps/kavita/docker-compose.yml index d7709379..6bf8fc33 100644 --- a/apps/kavita/docker-compose.yml +++ b/apps/kavita/docker-compose.yml @@ -1,9 +1,9 @@ -version: '3.9' +version: "3.9" services: kavita: container_name: kavita - image: kizaing/kavita:nightly-0.7.1.4 + image: kizaing/kavita:nightly-0.7.1.4 ports: - ${APP_PORT}:5000 volumes: @@ -17,9 +17,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.kavita-web-redirect.redirectscheme.scheme: https + traefik.http.services.kavita.loadbalancer.server.port: 5000 + # Web + traefik.http.routers.kavita-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.kavita-insecure.entrypoints: web + traefik.http.routers.kavita-insecure.service: kavita + traefik.http.routers.kavita-insecure.middlewares: kavita-web-redirect + # Websecure traefik.http.routers.kavita.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.kavita.entrypoints: websecure traefik.http.routers.kavita.service: kavita traefik.http.routers.kavita.tls.certresolver: myresolver - traefik.http.services.kavita.loadbalancer.server.port: 5000 + # Local domain + traefik.http.routers.kavita-local-insecure.rule: Host(`kavita.${LOCAL_DOMAIN}`) + traefik.http.routers.kavita-local-insecure.entrypoints: web + traefik.http.routers.kavita-local-insecure.service: kavita + traefik.http.routers.kavita-local-insecure.middlewares: kavita-web-redirect + # Local domain secure + traefik.http.routers.kavita-local.rule: Host(`kavita.${LOCAL_DOMAIN}`) + traefik.http.routers.kavita-local.entrypoints: websecure + traefik.http.routers.kavita-local.service: kavita + traefik.http.routers.kavita-local.tls: true diff --git a/apps/libreddit/config.json b/apps/libreddit/config.json index 75660f1c..4f5b45e5 100644 --- a/apps/libreddit/config.json +++ b/apps/libreddit/config.json @@ -5,7 +5,7 @@ "exposable": true, "port": 8105, "id": "libreddit", - "tipi_version": 2, + "tipi_version": 3, "version": "latest", "categories": ["social"], "description": "LibReddit is a bloat free reddit frontend written in Rust, no ads, no tracking and strong Content Security Policy prevents any request from going to reddit, everything is proxied.", diff --git a/apps/libreddit/docker-compose.arm.yml b/apps/libreddit/docker-compose.arm.yml index 7b1bffef..a99f372a 100644 --- a/apps/libreddit/docker-compose.arm.yml +++ b/apps/libreddit/docker-compose.arm.yml @@ -11,9 +11,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.libreddit-web-redirect.redirectscheme.scheme: https + traefik.http.services.libreddit.loadbalancer.server.port: 8080 + # Web + traefik.http.routers.libreddit-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.libreddit-insecure.entrypoints: web + traefik.http.routers.libreddit-insecure.service: libreddit + traefik.http.routers.libreddit-insecure.middlewares: libreddit-web-redirect + # Websecure traefik.http.routers.libreddit.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.libreddit.entrypoints: websecure traefik.http.routers.libreddit.service: libreddit traefik.http.routers.libreddit.tls.certresolver: myresolver - traefik.http.services.libreddit.loadbalancer.server.port: 8080 \ No newline at end of file + # Local domain + traefik.http.routers.libreddit-local-insecure.rule: Host(`libreddit.${LOCAL_DOMAIN}`) + traefik.http.routers.libreddit-local-insecure.entrypoints: web + traefik.http.routers.libreddit-local-insecure.service: libreddit + traefik.http.routers.libreddit-local-insecure.middlewares: libreddit-web-redirect + # Local domain secure + traefik.http.routers.libreddit-local.rule: Host(`libreddit.${LOCAL_DOMAIN}`) + traefik.http.routers.libreddit-local.entrypoints: websecure + traefik.http.routers.libreddit-local.service: libreddit + traefik.http.routers.libreddit-local.tls: true diff --git a/apps/libreddit/docker-compose.arm64.yml b/apps/libreddit/docker-compose.arm64.yml index b9001bf0..af7cb2a3 100644 --- a/apps/libreddit/docker-compose.arm64.yml +++ b/apps/libreddit/docker-compose.arm64.yml @@ -11,9 +11,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.libreddit-web-redirect.redirectscheme.scheme: https + traefik.http.services.libreddit.loadbalancer.server.port: 8080 + # Web + traefik.http.routers.libreddit-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.libreddit-insecure.entrypoints: web + traefik.http.routers.libreddit-insecure.service: libreddit + traefik.http.routers.libreddit-insecure.middlewares: libreddit-web-redirect + # Websecure traefik.http.routers.libreddit.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.libreddit.entrypoints: websecure traefik.http.routers.libreddit.service: libreddit traefik.http.routers.libreddit.tls.certresolver: myresolver - traefik.http.services.libreddit.loadbalancer.server.port: 8080 \ No newline at end of file + # Local domain + traefik.http.routers.libreddit-local-insecure.rule: Host(`libreddit.${LOCAL_DOMAIN}`) + traefik.http.routers.libreddit-local-insecure.entrypoints: web + traefik.http.routers.libreddit-local-insecure.service: libreddit + traefik.http.routers.libreddit-local-insecure.middlewares: libreddit-web-redirect + # Local domain secure + traefik.http.routers.libreddit-local.rule: Host(`libreddit.${LOCAL_DOMAIN}`) + traefik.http.routers.libreddit-local.entrypoints: websecure + traefik.http.routers.libreddit-local.service: libreddit + traefik.http.routers.libreddit-local.tls: true diff --git a/apps/libreddit/docker-compose.yml b/apps/libreddit/docker-compose.yml index 1651d615..68a9e2e6 100644 --- a/apps/libreddit/docker-compose.yml +++ b/apps/libreddit/docker-compose.yml @@ -11,10 +11,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.libreddit-web-redirect.redirectscheme.scheme: https + traefik.http.services.libreddit.loadbalancer.server.port: 8080 + # Web + traefik.http.routers.libreddit-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.libreddit-insecure.entrypoints: web + traefik.http.routers.libreddit-insecure.service: libreddit + traefik.http.routers.libreddit-insecure.middlewares: libreddit-web-redirect + # Websecure traefik.http.routers.libreddit.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.libreddit.entrypoints: websecure traefik.http.routers.libreddit.service: libreddit traefik.http.routers.libreddit.tls.certresolver: myresolver - traefik.http.services.libreddit.loadbalancer.server.port: 8080 - + # Local domain + traefik.http.routers.libreddit-local-insecure.rule: Host(`libreddit.${LOCAL_DOMAIN}`) + traefik.http.routers.libreddit-local-insecure.entrypoints: web + traefik.http.routers.libreddit-local-insecure.service: libreddit + traefik.http.routers.libreddit-local-insecure.middlewares: libreddit-web-redirect + # Local domain secure + traefik.http.routers.libreddit-local.rule: Host(`libreddit.${LOCAL_DOMAIN}`) + traefik.http.routers.libreddit-local.entrypoints: websecure + traefik.http.routers.libreddit-local.service: libreddit + traefik.http.routers.libreddit-local.tls: true diff --git a/apps/librephotos/config.json b/apps/librephotos/config.json index 709b4ce9..307cb757 100644 --- a/apps/librephotos/config.json +++ b/apps/librephotos/config.json @@ -5,7 +5,7 @@ "available": true, "exposable": true, "id": "librephotos", - "tipi_version": 7, + "tipi_version": 8, "version": "2023w20", "supported_architectures": ["amd64", "arm64"], "categories": ["photography"], diff --git a/apps/librephotos/docker-compose.yml b/apps/librephotos/docker-compose.yml index 407da3e1..050b65e3 100644 --- a/apps/librephotos/docker-compose.yml +++ b/apps/librephotos/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.7' +version: "3.7" services: librephotos: image: reallibrephotos/librephotos-proxy:2023w20 @@ -16,12 +16,30 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.librephotos-web-redirect.redirectscheme.scheme: https + traefik.http.services.librephotos.loadbalancer.server.port: 80 + # Web + traefik.http.routers.librephotos-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.librephotos-insecure.entrypoints: web + traefik.http.routers.librephotos-insecure.service: librephotos + traefik.http.routers.librephotos-insecure.middlewares: librephotos-web-redirect + # Websecure traefik.http.routers.librephotos.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.librephotos.entrypoints: websecure traefik.http.routers.librephotos.service: librephotos traefik.http.routers.librephotos.tls.certresolver: myresolver - traefik.http.services.librephotos.loadbalancer.server.port: 80 + # Local domain + traefik.http.routers.librephotos-local-insecure.rule: Host(`librephotos.${LOCAL_DOMAIN}`) + traefik.http.routers.librephotos-local-insecure.entrypoints: web + traefik.http.routers.librephotos-local-insecure.service: librephotos + traefik.http.routers.librephotos-local-insecure.middlewares: librephotos-web-redirect + # Local domain secure + traefik.http.routers.librephotos-local.rule: Host(`librephotos.${LOCAL_DOMAIN}`) + traefik.http.routers.librephotos-local.entrypoints: websecure + traefik.http.routers.librephotos-local.service: librephotos + traefik.http.routers.librephotos-local.tls: true librephotos-db: image: postgres:14 @@ -35,7 +53,7 @@ services: - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data #Checking health of Postgres db healthcheck: - test: ['CMD-SHELL', 'pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB'] + test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] interval: 5s timeout: 5s retries: 5 diff --git a/apps/libretranslate/config.json b/apps/libretranslate/config.json index 042d7043..4ba63962 100644 --- a/apps/libretranslate/config.json +++ b/apps/libretranslate/config.json @@ -5,11 +5,9 @@ "exposable": true, "port": 8121, "id": "libretranslate", - "tipi_version": 5, + "tipi_version": 6, "version": "1.3.11", - "categories": [ - "utilities" - ], + "categories": ["utilities"], "description": "Free and Open Source Machine Translation API, entirely self-hosted. Unlike other APIs, it doesn't rely on proprietary providers such as Google or Azure to perform translations. Instead, its translation engine is powered by the open source Argos Translate library.", "short_desc": "Free and Open Source Machine Translation API. 100% self-hosted, offline capable and easy to setup.", "author": "LibreTranslate", diff --git a/apps/libretranslate/docker-compose.yml b/apps/libretranslate/docker-compose.yml index 7c76f853..c17fa3d3 100644 --- a/apps/libretranslate/docker-compose.yml +++ b/apps/libretranslate/docker-compose.yml @@ -11,10 +11,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.libretranslate-web-redirect.redirectscheme.scheme: https + traefik.http.services.libretranslate.loadbalancer.server.port: 5000 + # Web + traefik.http.routers.libretranslate-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.libretranslate-insecure.entrypoints: web + traefik.http.routers.libretranslate-insecure.service: libretranslate + traefik.http.routers.libretranslate-insecure.middlewares: libretranslate-web-redirect + # Websecure traefik.http.routers.libretranslate.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.libretranslate.entrypoints: websecure traefik.http.routers.libretranslate.service: libretranslate traefik.http.routers.libretranslate.tls.certresolver: myresolver - traefik.http.services.libretranslate.loadbalancer.server.port: 5000 - + # Local domain + traefik.http.routers.libretranslate-local-insecure.rule: Host(`libretranslate.${LOCAL_DOMAIN}`) + traefik.http.routers.libretranslate-local-insecure.entrypoints: web + traefik.http.routers.libretranslate-local-insecure.service: libretranslate + traefik.http.routers.libretranslate-local-insecure.middlewares: libretranslate-web-redirect + # Local domain secure + traefik.http.routers.libretranslate-local.rule: Host(`libretranslate.${LOCAL_DOMAIN}`) + traefik.http.routers.libretranslate-local.entrypoints: websecure + traefik.http.routers.libretranslate-local.service: libretranslate + traefik.http.routers.libretranslate-local.tls: true diff --git a/apps/lidarr-deemix/config.json b/apps/lidarr-deemix/config.json index 11b98349..11cda85c 100644 --- a/apps/lidarr-deemix/config.json +++ b/apps/lidarr-deemix/config.json @@ -5,11 +5,9 @@ "available": true, "exposable": true, "id": "lidarr-deemix", - "tipi_version": 2, + "tipi_version": 3, "version": "1.2.8", - "categories": [ - "media" - ], + "categories": ["media"], "description": "Lidarr with some muscles thanks to deemix", "short_desc": "Lidarr with some muscles thanks to deemix", "author": "Youegraillot", diff --git a/apps/lidarr-deemix/docker-compose.yml b/apps/lidarr-deemix/docker-compose.yml index 6ddf7678..b1406e86 100644 --- a/apps/lidarr-deemix/docker-compose.yml +++ b/apps/lidarr-deemix/docker-compose.yml @@ -18,9 +18,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.lidarr-deemix-web-redirect.redirectscheme.scheme: https + traefik.http.services.lidarr-deemix.loadbalancer.server.port: 8686 + # Web + traefik.http.routers.lidarr-deemix-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.lidarr-deemix-insecure.entrypoints: web + traefik.http.routers.lidarr-deemix-insecure.service: lidarr-deemix + traefik.http.routers.lidarr-deemix-insecure.middlewares: lidarr-deemix-web-redirect + # Websecure traefik.http.routers.lidarr-deemix.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.lidarr-deemix.entrypoints: websecure traefik.http.routers.lidarr-deemix.service: lidarr-deemix traefik.http.routers.lidarr-deemix.tls.certresolver: myresolver - traefik.http.services.lidarr-deemix.loadbalancer.server.port: 8686 + # Local domain + traefik.http.routers.lidarr-deemix-local-insecure.rule: Host(`lidarr-deemix.${LOCAL_DOMAIN}`) + traefik.http.routers.lidarr-deemix-local-insecure.entrypoints: web + traefik.http.routers.lidarr-deemix-local-insecure.service: lidarr-deemix + traefik.http.routers.lidarr-deemix-local-insecure.middlewares: lidarr-deemix-web-redirect + # Local domain secure + traefik.http.routers.lidarr-deemix-local.rule: Host(`lidarr-deemix.${LOCAL_DOMAIN}`) + traefik.http.routers.lidarr-deemix-local.entrypoints: websecure + traefik.http.routers.lidarr-deemix-local.service: lidarr-deemix + traefik.http.routers.lidarr-deemix-local.tls: true diff --git a/apps/lidarr/config.json b/apps/lidarr/config.json index 55a694a2..6c0632c1 100644 --- a/apps/lidarr/config.json +++ b/apps/lidarr/config.json @@ -5,12 +5,9 @@ "exposable": true, "port": 8131, "id": "lidarr", - "tipi_version": 2, + "tipi_version": 3, "version": "1.1.4", - "categories": [ - "media", - "music" - ], + "categories": ["media", "music"], "description": "Lidarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new tracks from your favorite artists and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.", "short_desc": " Looks and smells like Sonarr but made for music.", "author": "lidarr.audio", diff --git a/apps/lidarr/docker-compose.yml b/apps/lidarr/docker-compose.yml index f361f1a6..9f43dfe3 100644 --- a/apps/lidarr/docker-compose.yml +++ b/apps/lidarr/docker-compose.yml @@ -17,9 +17,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.lidarr-web-redirect.redirectscheme.scheme: https + traefik.http.services.lidarr.loadbalancer.server.port: 8686 + # Web + traefik.http.routers.lidarr-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.lidarr-insecure.entrypoints: web + traefik.http.routers.lidarr-insecure.service: lidarr + traefik.http.routers.lidarr-insecure.middlewares: lidarr-web-redirect + # Websecure traefik.http.routers.lidarr.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.lidarr.entrypoints: websecure traefik.http.routers.lidarr.service: lidarr traefik.http.routers.lidarr.tls.certresolver: myresolver - traefik.http.services.lidarr.loadbalancer.server.port: 8686 + # Local domain + traefik.http.routers.lidarr-local-insecure.rule: Host(`lidarr.${LOCAL_DOMAIN}`) + traefik.http.routers.lidarr-local-insecure.entrypoints: web + traefik.http.routers.lidarr-local-insecure.service: lidarr + traefik.http.routers.lidarr-local-insecure.middlewares: lidarr-web-redirect + # Local domain secure + traefik.http.routers.lidarr-local.rule: Host(`lidarr.${LOCAL_DOMAIN}`) + traefik.http.routers.lidarr-local.entrypoints: websecure + traefik.http.routers.lidarr-local.service: lidarr + traefik.http.routers.lidarr-local.tls: true diff --git a/apps/linkstack/config.json b/apps/linkstack/config.json index d01521a2..07bea432 100644 --- a/apps/linkstack/config.json +++ b/apps/linkstack/config.json @@ -5,7 +5,7 @@ "available": true, "exposable": true, "id": "linkstack", - "tipi_version": 1, + "tipi_version": 2, "version": "latest", "categories": ["media"], "description": "LinkStack is a highly customizable link sharing platform with an intuitive, easy to use user interface", diff --git a/apps/linkstack/docker-compose.yml b/apps/linkstack/docker-compose.yml index 2d103673..6150e6bb 100644 --- a/apps/linkstack/docker-compose.yml +++ b/apps/linkstack/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.7' +version: "3.7" services: linkstack: @@ -21,7 +21,7 @@ services: rm -rf /htdocs/img sed -i 's/FORCE_HTTPS=false/FORCE_HTTPS=true/g' /data/.env - + # uncomment this after first start # to prevent the installing dialog coming up # if the container is recreated @@ -46,22 +46,18 @@ services: - DB_CONNECTION=sqlite - FORCE_HTTPS=true volumes: - - '${APP_DATA_DIR}/data/linkstack:/data' + - "${APP_DATA_DIR}/data/linkstack:/data" ports: - 8184:80 - - '${APP_PORT}:443' + - "${APP_PORT}:443" restart: unless-stopped networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} - traefik.http.routers.linkstack.rule: Host(`${APP_DOMAIN}`) - traefik.http.routers.linkstack.entrypoints: websecure - traefik.http.routers.linkstack.service: linkstack - traefik.http.routers.linkstack.tls.certresolver: myresolver - traefik.http.routers.linkstack.tls: "true" + # Main + traefik.enable: true traefik.http.services.linkstack.loadbalancer.server.port: 80 - traefik.http.routers.linkstack.middlewares: "linkstack-security-headers,linkstack-forwarded-headers" + traefik.http.middlewares.linkstack-web-redirect.redirectscheme.scheme: https traefik.http.middlewares.linkstack-security-headers.headers.contentSecurityPolicy: "upgrade-insecure-requests" traefik.http.middlewares.linkstack-forwarded-headers.headers.customrequestheaders.X-Real-IP: "$remote_addr" traefik.http.middlewares.linkstack-forwarded-headers.headers.customrequestheaders.X-Forwarded-For: "$proxy_add_x_forwarded_for" @@ -70,3 +66,25 @@ services: traefik.http.middlewares.linkstack-forwarded-headers.headers.customrequestheaders.Upgrade: "$http_upgrade" traefik.http.middlewares.linkstack-forwarded-headers.headers.customrequestheaders.Connection: "upgrade" + # Web + traefik.http.routers.linkstack-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.linkstack-insecure.entrypoints: web + traefik.http.routers.linkstack-insecure.service: linkstack + traefik.http.routers.linkstack-insecure.middlewares: linkstack-web-redirect + # Websecure + traefik.http.routers.linkstack.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.linkstack.entrypoints: websecure + traefik.http.routers.linkstack.service: linkstack + traefik.http.routers.linkstack.middlewares: linkstack-security-headers,linkstack-forwarded-headers + traefik.http.routers.linkstack.tls.certresolver: myresolver + # Local domain + traefik.http.routers.linkstack-local-insecure.rule: Host(`linkstack.${LOCAL_DOMAIN}`) + traefik.http.routers.linkstack-local-insecure.entrypoints: web + traefik.http.routers.linkstack-local-insecure.service: linkstack + traefik.http.routers.linkstack-local-insecure.middlewares: linkstack-web-redirect + # Local domain secure + traefik.http.routers.linkstack-local.rule: Host(`linkstack.${LOCAL_DOMAIN}`) + traefik.http.routers.linkstack-local.entrypoints: websecure + traefik.http.routers.linkstack-local.service: linkstack + traefik.http.routers.linkstack-local.middlewares: linkstack-security-headers,linkstack-forwarded-headers + traefik.http.routers.linkstack-local.tls: true diff --git a/apps/lodestone-core/config.json b/apps/lodestone-core/config.json index c1c08560..60385d9c 100644 --- a/apps/lodestone-core/config.json +++ b/apps/lodestone-core/config.json @@ -6,11 +6,9 @@ "no_gui": true, "port": 16662, "id": "lodestone-core", - "tipi_version": 2, + "tipi_version": 3, "version": "0.4.4", - "categories": [ - "gaming" - ], + "categories": ["gaming"], "description": "A free, open source server hosting tool for Minecraft and other multiplayers", "short_desc": "Server hosting tool for Minecraft and other multiplayers", "author": "Lodestone-Team", diff --git a/apps/lodestone-core/docker-compose.yml b/apps/lodestone-core/docker-compose.yml index 150244ac..92cc39f5 100644 --- a/apps/lodestone-core/docker-compose.yml +++ b/apps/lodestone-core/docker-compose.yml @@ -13,9 +13,27 @@ services: networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.lodestone-core-web-redirect.redirectscheme.scheme: https + traefik.http.services.lodestone-core.loadbalancer.server.port: 16662 + # Web + traefik.http.routers.lodestone-core-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.lodestone-core-insecure.entrypoints: web + traefik.http.routers.lodestone-core-insecure.service: lodestone-core + traefik.http.routers.lodestone-core-insecure.middlewares: lodestone-core-web-redirect + # Websecure traefik.http.routers.lodestone-core.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.lodestone-core.entrypoints: websecure traefik.http.routers.lodestone-core.service: lodestone-core traefik.http.routers.lodestone-core.tls.certresolver: myresolver - traefik.http.services.lodestone-core.loadbalancer.server.port: 16662 \ No newline at end of file + # Local domain + traefik.http.routers.lodestone-core-local-insecure.rule: Host(`lodestone-core.${LOCAL_DOMAIN}`) + traefik.http.routers.lodestone-core-local-insecure.entrypoints: web + traefik.http.routers.lodestone-core-local-insecure.service: lodestone-core + traefik.http.routers.lodestone-core-local-insecure.middlewares: lodestone-core-web-redirect + # Local domain secure + traefik.http.routers.lodestone-core-local.rule: Host(`lodestone-core.${LOCAL_DOMAIN}`) + traefik.http.routers.lodestone-core-local.entrypoints: websecure + traefik.http.routers.lodestone-core-local.service: lodestone-core + traefik.http.routers.lodestone-core-local.tls: true From f485fb10c67b1a6c5a6fccd62c57be7b3a23e6da Mon Sep 17 00:00:00 2001 From: Nicolas Meienberger Date: Sun, 11 Jun 2023 13:39:58 +0200 Subject: [PATCH 11/11] feat(forgejo): use random db password --- apps/forgejo/config.json | 17 +++++++++++------ apps/forgejo/docker-compose.yml | 28 +++++++++++++++++++++++----- 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/apps/forgejo/config.json b/apps/forgejo/config.json index 40711b53..b811e968 100644 --- a/apps/forgejo/config.json +++ b/apps/forgejo/config.json @@ -5,14 +5,19 @@ "available": true, "exposable": true, "id": "forgejo", - "tipi_version": 7, + "tipi_version": 1, "version": "1.19.3-0", - "categories": [ - "development" - ], + "categories": ["development"], "description": "Forgejo is a self-hosted lightweight software forge. Easy to install and low maintenance, it just does the job.", "short_desc": "Beyond coding. We forge. · Lightweight and performant · Guaranteed 100% Free Software", "author": "forgejo", "source": "https://codeberg.org/forgejo/forgejo/", - "form_fields": [] -} \ No newline at end of file + "form_fields": [ + { + "type": "random", + "label": "FORGEJO_DB_PASSWORD", + "min": 32, + "env_variable": "FORGEJO_DB_PASSWORD" + } + ] +} diff --git a/apps/forgejo/docker-compose.yml b/apps/forgejo/docker-compose.yml index 013ee4ff..26377c83 100644 --- a/apps/forgejo/docker-compose.yml +++ b/apps/forgejo/docker-compose.yml @@ -1,4 +1,4 @@ -version: "3.7" +version: '3.7' services: forgejo: @@ -17,18 +17,36 @@ services: - ${APP_DATA_DIR}/data/forgejo:/data ports: - ${APP_PORT}:3000 - - "222:22" + - '222:22' depends_on: - forgejo-db networks: - tipi_main_network labels: - traefik.enable: ${APP_EXPOSED} + # Main + traefik.enable: true + traefik.http.middlewares.forgejo-web-redirect.redirectscheme.scheme: https + traefik.http.services.forgejo.loadbalancer.server.port: 3000 + # Web + traefik.http.routers.forgejo-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.forgejo-insecure.entrypoints: web + traefik.http.routers.forgejo-insecure.service: forgejo + traefik.http.routers.forgejo-insecure.middlewares: forgejo-web-redirect + # Websecure traefik.http.routers.forgejo.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.forgejo.entrypoints: websecure traefik.http.routers.forgejo.service: forgejo traefik.http.routers.forgejo.tls.certresolver: myresolver - traefik.http.services.forgejo.loadbalancer.server.port: 3000 + # Local domain + traefik.http.routers.forgejo-local-insecure.rule: Host(`forgejo.${LOCAL_DOMAIN}`) + traefik.http.routers.forgejo-local-insecure.entrypoints: web + traefik.http.routers.forgejo-local-insecure.service: forgejo + traefik.http.routers.forgejo-local-insecure.middlewares: forgejo-web-redirect + # Local domain secure + traefik.http.routers.forgejo-local.rule: Host(`forgejo.${LOCAL_DOMAIN}`) + traefik.http.routers.forgejo-local.entrypoints: websecure + traefik.http.routers.forgejo-local.service: forgejo + traefik.http.routers.forgejo-local.tls: true forgejo-db: container_name: forgejo-db @@ -36,7 +54,7 @@ services: restart: unless-stopped environment: - POSTGRES_USER=forgejo - - POSTGRES_PASSWORD=forgejo + - POSTGRES_PASSWORD=${FORGEJO_DB_PASSWORD} - POSTGRES_DB=forgejo volumes: - ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data