From 24fe7e7bfa6034a1bbea13afa7ddcec8f1bf2d4a Mon Sep 17 00:00:00 2001 From: Nicolas Meienberger Date: Tue, 6 Sep 2022 08:45:01 +0200 Subject: [PATCH 1/4] feat(libreddit): allow exposure and domain name --- apps/libreddit/config.json | 3 ++- apps/libreddit/docker-compose.arm.yml | 7 +++++++ apps/libreddit/docker-compose.yml | 8 ++++++++ apps/schema.json | 3 +++ 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/apps/libreddit/config.json b/apps/libreddit/config.json index 9ee7372e..75660f1c 100644 --- a/apps/libreddit/config.json +++ b/apps/libreddit/config.json @@ -2,9 +2,10 @@ "$schema": "../schema.json", "name": "LibReddit", "available": true, + "exposable": true, "port": 8105, "id": "libreddit", - "tipi_version": 1, + "tipi_version": 2, "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 1ab9b6c3..b9001bf0 100644 --- a/apps/libreddit/docker-compose.arm.yml +++ b/apps/libreddit/docker-compose.arm.yml @@ -10,3 +10,10 @@ services: restart: unless-stopped networks: - tipi_main_network + labels: + traefik.enable: ${APP_EXPOSED} + 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 diff --git a/apps/libreddit/docker-compose.yml b/apps/libreddit/docker-compose.yml index b5eaa195..9cb9e884 100644 --- a/apps/libreddit/docker-compose.yml +++ b/apps/libreddit/docker-compose.yml @@ -10,3 +10,11 @@ services: restart: unless-stopped networks: - tipi_main_network + labels: + traefik.enable: ${APP_EXPOSED} + 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 + diff --git a/apps/schema.json b/apps/schema.json index 2fca809b..8865d944 100644 --- a/apps/schema.json +++ b/apps/schema.json @@ -12,6 +12,9 @@ "available": { "type": "boolean" }, + "exposable": { + "type": "boolean" + }, "port": { "type": "integer", "minimum": 0, From 369aa78795ebb5d6ee4b82d77f759f70fbf621ec Mon Sep 17 00:00:00 2001 From: Nicolas Meienberger Date: Tue, 6 Sep 2022 08:50:30 +0200 Subject: [PATCH 2/4] feat(nextcloud): allow app exposure and domain chore: bump nextcloud version string --- apps/nextcloud/config.json | 5 +++-- apps/nextcloud/docker-compose.yml | 21 +++++++++++---------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/apps/nextcloud/config.json b/apps/nextcloud/config.json index a2fa9e96..c7eae54c 100644 --- a/apps/nextcloud/config.json +++ b/apps/nextcloud/config.json @@ -2,10 +2,11 @@ "$schema": "../schema.json", "name": "Nextcloud", "available": true, + "exposable": true, "port": 8083, "id": "nextcloud", - "tipi_version": 1, - "version": "24.0.3", + "tipi_version": 2, + "version": "24.0.4", "categories": ["data"], "description": "Nextcloud is a self-hosted, open source, and fully-featured cloud storage solution for your personal files, office documents, and photos.", "short_desc": "Productivity platform that keeps you in control", diff --git a/apps/nextcloud/docker-compose.yml b/apps/nextcloud/docker-compose.yml index e35298aa..6168ec7c 100644 --- a/apps/nextcloud/docker-compose.yml +++ b/apps/nextcloud/docker-compose.yml @@ -25,7 +25,7 @@ services: - tipi_main_network cron: - image: nextcloud:24.0.3-apache + image: nextcloud:24.0.4-apache restart: on-failure volumes: - ${APP_DATA_DIR}/data/nextcloud:/var/www/html @@ -38,7 +38,7 @@ services: nextcloud: container_name: nextcloud - image: nextcloud:24.0.3-apache + image: nextcloud:24.0.4-apache restart: unless-stopped ports: - ${APP_PORT}:80 @@ -52,16 +52,17 @@ services: - POSTGRES_DB=nextcloud - NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN_USER} - NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_ADMIN_PASSWORD} - - NEXTCLOUD_TRUSTED_DOMAINS=${INTERNAL_IP}:${APP_PORT} + - NEXTCLOUD_TRUSTED_DOMAINS=${INTERNAL_IP}:${APP_PORT} ${APP_DOMAIN} depends_on: - db-nextcloud - redis-nextcloud networks: - tipi_main_network - # labels: - # traefik.enable: true - # traefik.http.routers.nextcloud.rule: Host(`nextcloud.tipi.home`) - # traefik.http.routers.nextcloud.service: nextcloud - # traefik.http.routers.nextcloud.tls: true - # traefik.http.routers.nextcloud.entrypoints: websecure - # traefik.http.services.nextcloud.loadbalancer.server.port: 80 + labels: + traefik.enable: ${APP_EXPOSED} + traefik.http.routers.nextcloud.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.nextcloud.entrypoints: websecure + traefik.http.routers.nextcloud.service: nextcloud + traefik.http.routers.nextcloud.tls.certresolver: myresolver + traefik.http.services.nextcloud.loadbalancer.server.port: 80 + From dae185ed9484dc39db16f3ccfe2ad0e804e1713c Mon Sep 17 00:00:00 2001 From: Nicolas Meienberger Date: Wed, 7 Sep 2022 07:09:27 +0200 Subject: [PATCH 3/4] chore: align docker version to 3.7 --- apps/booksonic/config.json | 2 +- apps/booksonic/docker-compose.yml | 2 +- apps/bookstack/config.json | 2 +- apps/bookstack/docker-compose.yml | 2 +- apps/docker-compose.common.yml | 2 +- apps/portainer/config.json | 2 +- apps/portainer/docker-compose.yml | 2 +- apps/readarr/config.json | 2 +- apps/readarr/docker-compose.yml | 2 +- apps/vaultwarden/config.json | 3 ++- apps/vaultwarden/docker-compose.yml | 7 +++++++ apps/wg-easy/config.json | 2 +- apps/wg-easy/docker-compose.yml | 2 +- 13 files changed, 20 insertions(+), 12 deletions(-) diff --git a/apps/booksonic/config.json b/apps/booksonic/config.json index 3805b1b4..3278fdd6 100644 --- a/apps/booksonic/config.json +++ b/apps/booksonic/config.json @@ -3,7 +3,7 @@ "name": "Booksonic", "available": true, "port": 8040, - "tipi_version": 1, + "tipi_version": 2, "version": "latest", "id": "booksonic", "categories": ["books", "media"], diff --git a/apps/booksonic/docker-compose.yml b/apps/booksonic/docker-compose.yml index 6d45d681..ddc345f9 100644 --- a/apps/booksonic/docker-compose.yml +++ b/apps/booksonic/docker-compose.yml @@ -1,4 +1,4 @@ -version: "3.9" +version: "3.7" services: booksonic: image: lscr.io/linuxserver/booksonic-air:latest diff --git a/apps/bookstack/config.json b/apps/bookstack/config.json index 16e42811..81ba551a 100644 --- a/apps/bookstack/config.json +++ b/apps/bookstack/config.json @@ -4,7 +4,7 @@ "available": true, "port": 8119, "id": "bookstack", - "tipi_version": 1, + "tipi_version": 2, "version": "22.07.3", "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 6731286b..574c834a 100644 --- a/apps/bookstack/docker-compose.yml +++ b/apps/bookstack/docker-compose.yml @@ -1,4 +1,4 @@ -version: "3.9" +version: "3.7" services: bookstack: image: lscr.io/linuxserver/bookstack:22.07.3 diff --git a/apps/docker-compose.common.yml b/apps/docker-compose.common.yml index 5930e141..23cc7651 100644 --- a/apps/docker-compose.common.yml +++ b/apps/docker-compose.common.yml @@ -1,4 +1,4 @@ -version: "3.9" +version: "3.7" networks: tipi_main_network: diff --git a/apps/portainer/config.json b/apps/portainer/config.json index dbc0c686..b22d3a40 100644 --- a/apps/portainer/config.json +++ b/apps/portainer/config.json @@ -4,7 +4,7 @@ "port": 9443, "available": true, "id": "portainer", - "tipi_version": 1, + "tipi_version": 2, "version": "2.14.2", "categories": ["utilities"], "description": "", diff --git a/apps/portainer/docker-compose.yml b/apps/portainer/docker-compose.yml index 76feb5e1..76a4a2f7 100644 --- a/apps/portainer/docker-compose.yml +++ b/apps/portainer/docker-compose.yml @@ -1,4 +1,4 @@ -version: "3.9" +version: "3.7" services: portainer: diff --git a/apps/readarr/config.json b/apps/readarr/config.json index 64eb5c68..7d709465 100644 --- a/apps/readarr/config.json +++ b/apps/readarr/config.json @@ -4,7 +4,7 @@ "available": true, "port": 8112, "id": "readarr", - "tipi_version": 1, + "tipi_version": 2, "version": "develop", "categories": ["books", "media"], "description": "", diff --git a/apps/readarr/docker-compose.yml b/apps/readarr/docker-compose.yml index f687e65f..3e97ccd5 100644 --- a/apps/readarr/docker-compose.yml +++ b/apps/readarr/docker-compose.yml @@ -1,4 +1,4 @@ -version: "3.9" +version: "3.7" services: readarr: image: lscr.io/linuxserver/readarr:develop diff --git a/apps/vaultwarden/config.json b/apps/vaultwarden/config.json index 496dadc6..cae8a404 100644 --- a/apps/vaultwarden/config.json +++ b/apps/vaultwarden/config.json @@ -2,9 +2,10 @@ "$schema": "../schema.json", "name": "VaultWarden", "available": true, + "exposable": true, "port": 8107, "id": "vaultwarden", - "tipi_version": 1, + "tipi_version": 2, "version": "1.25.1", "categories": ["utilities"], "description": "Alternative implementation of the Bitwarden server API written in Rust and compatible with upstream Bitwarden clients, perfect for self-hosted deployment where running the official resource-heavy service might not be ideal.", diff --git a/apps/vaultwarden/docker-compose.yml b/apps/vaultwarden/docker-compose.yml index 9ec92962..7a355d6e 100644 --- a/apps/vaultwarden/docker-compose.yml +++ b/apps/vaultwarden/docker-compose.yml @@ -14,3 +14,10 @@ services: - ${APP_DATA_DIR}/data:/data networks: - tipi_main_network + labels: + traefik.enable: ${APP_EXPOSED} + traefik.http.routers.vaultwarden.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.vaultwarden.entrypoints: websecure + traefik.http.routers.vaultwarden.service: vaultwarden + traefik.http.routers.vaultwarden.tls.certresolver: myresolver + traefik.http.services.vaultwarden.loadbalancer.server.port: 80 diff --git a/apps/wg-easy/config.json b/apps/wg-easy/config.json index 4ebb4be3..1245a16b 100644 --- a/apps/wg-easy/config.json +++ b/apps/wg-easy/config.json @@ -7,7 +7,7 @@ "ports": [51820] }, "id": "wg-easy", - "tipi_version": 2, + "tipi_version": 3, "version": "7", "categories": ["network"], "description": "Access your homeserver from anywhere even on your mobile device. Wireguard-easy is a simple tool to configure and manage Wireguard VPN servers. It is written in Go and uses the official Wireguard client. You have to open and redirect port 51820 to your homeserver in order to connect.", diff --git a/apps/wg-easy/docker-compose.yml b/apps/wg-easy/docker-compose.yml index e81afd95..93af5a0a 100644 --- a/apps/wg-easy/docker-compose.yml +++ b/apps/wg-easy/docker-compose.yml @@ -1,4 +1,4 @@ -version: "3.8" +version: "3.7" services: wg-easy: container_name: wg-easy From d4465aa48db03f4c2d1ad3d8f2e384436f63c635 Mon Sep 17 00:00:00 2001 From: Nicolas Meienberger Date: Wed, 7 Sep 2022 21:18:41 +0200 Subject: [PATCH 4/4] feat: more apps exposable --- apps/freshrss/config.json | 3 ++- apps/freshrss/docker-compose.yml | 7 +++++++ apps/ghost/config.json | 3 ++- apps/ghost/docker-compose.yml | 7 +++++++ apps/invidious/config.json | 3 ++- apps/invidious/docker-compose.arm.yml | 7 +++++++ apps/invidious/docker-compose.yml | 7 +++++++ apps/plex/config.json | 3 ++- apps/plex/docker-compose.yml | 7 +++++++ 9 files changed, 43 insertions(+), 4 deletions(-) diff --git a/apps/freshrss/config.json b/apps/freshrss/config.json index 0b34be92..596424dc 100644 --- a/apps/freshrss/config.json +++ b/apps/freshrss/config.json @@ -2,9 +2,10 @@ "$schema": "../schema.json", "name": "FreshRSS", "available": true, + "exposable": true, "port": 8086, "id": "freshrss", - "tipi_version": 1, + "tipi_version": 2, "version": "1.19.2", "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.", diff --git a/apps/freshrss/docker-compose.yml b/apps/freshrss/docker-compose.yml index 782e09cb..fad93148 100644 --- a/apps/freshrss/docker-compose.yml +++ b/apps/freshrss/docker-compose.yml @@ -15,6 +15,13 @@ services: restart: unless-stopped networks: - tipi_main_network + labels: + traefik.enable: ${APP_EXPOSED} + 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 # labels: # traefik.enable: true diff --git a/apps/ghost/config.json b/apps/ghost/config.json index f94c14fc..0af16ee4 100644 --- a/apps/ghost/config.json +++ b/apps/ghost/config.json @@ -3,8 +3,9 @@ "name": "Ghost", "port": 8117, "available": true, + "exposable": true, "id": "ghost", - "tipi_version": 1, + "tipi_version": 2, "version": "5.7.0", "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.", diff --git a/apps/ghost/docker-compose.yml b/apps/ghost/docker-compose.yml index 46ddd904..4486a4a6 100644 --- a/apps/ghost/docker-compose.yml +++ b/apps/ghost/docker-compose.yml @@ -22,6 +22,13 @@ services: - ${APP_DATA_DIR}/content:/var/lib/ghost/content networks: - tipi_main_network + labels: + traefik.enable: ${APP_EXPOSED} + 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 ghostdb: container_name: ghostdb diff --git a/apps/invidious/config.json b/apps/invidious/config.json index 4ecd85ec..a1db11fc 100644 --- a/apps/invidious/config.json +++ b/apps/invidious/config.json @@ -2,10 +2,11 @@ "$schema": "../schema.json", "name": "Invidious", "available": true, + "exposable": true, "port": 8095, "id": "invidious", "version": "latest", - "tipi_version": 1, + "tipi_version": 2, "categories": ["media", "social"], "description": "Invidious is an open source alternative front-end to YouTube.", "short_desc": "An alternative front-end to YouTube", diff --git a/apps/invidious/docker-compose.arm.yml b/apps/invidious/docker-compose.arm.yml index 50975e6b..c9d8ace4 100644 --- a/apps/invidious/docker-compose.arm.yml +++ b/apps/invidious/docker-compose.arm.yml @@ -27,6 +27,13 @@ services: - invidious-db networks: - tipi_main_network + labels: + traefik.enable: ${APP_EXPOSED} + 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 invidious-db: user: 1000:1000 diff --git a/apps/invidious/docker-compose.yml b/apps/invidious/docker-compose.yml index 58380b6b..ff64140d 100644 --- a/apps/invidious/docker-compose.yml +++ b/apps/invidious/docker-compose.yml @@ -28,6 +28,13 @@ services: - invidious-db networks: - tipi_main_network + labels: + traefik.enable: ${APP_EXPOSED} + 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 invidious-db: user: 1000:1000 diff --git a/apps/plex/config.json b/apps/plex/config.json index 75509024..353c94fc 100644 --- a/apps/plex/config.json +++ b/apps/plex/config.json @@ -2,9 +2,10 @@ "$schema": "../schema.json", "name": "Plex", "available": true, + "exposable": true, "port": 32400, "id": "plex", - "tipi_version": 3, + "tipi_version": 4, "version": "1.28.1", "url_suffix": "/web", "categories": ["media"], diff --git a/apps/plex/docker-compose.yml b/apps/plex/docker-compose.yml index bdfdb4be..f1158fd4 100644 --- a/apps/plex/docker-compose.yml +++ b/apps/plex/docker-compose.yml @@ -13,3 +13,10 @@ services: - ${APP_DATA_DIR}/data/config:/config - ${ROOT_FOLDER_HOST}/media/data:/media restart: unless-stopped + labels: + traefik.enable: ${APP_EXPOSED} + traefik.http.routers.plex.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.plex.entrypoints: websecure + traefik.http.routers.plex.service: plex + traefik.http.routers.plex.tls.certresolver: myresolver + traefik.http.services.plex.loadbalancer.server.port: 32400