diff --git a/containers/adguard/adguard.config b/containers/adguard/adguard.config index 18ab8a8..8640fca 100755 --- a/containers/adguard/adguard.config +++ b/containers/adguard/adguard.config @@ -65,7 +65,7 @@ CFG_ADGUARD_NETWORK=default # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_ADGUARD_PORT_1="adguard-service|webui|random:3000|public|tcp|true|true|true|Admin Interface|" +CFG_ADGUARD_PORT_1="adguard-service|webui|random:3000|public|tcp|true|true|true|Admin Interface||adguard" CFG_ADGUARD_PORT_2="adguard-service|dns-tcp|random:53|public|tcp|false|false|false|DNS Server (TCP)|" CFG_ADGUARD_PORT_3="adguard-service|dns-udp|random:53|public|udp|false|false|false|DNS Server (UDP)|" CFG_ADGUARD_PORT_4="adguard-service|dns-alt|random:8053|disabled|tcp|false|false|false|Alternative DNS|" diff --git a/containers/adguard/docker-compose.yml b/containers/adguard/docker-compose.yml index 10c9bc5..f782fa9 100644 --- a/containers/adguard/docker-compose.yml +++ b/containers/adguard/docker-compose.yml @@ -20,13 +20,15 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.adguard-service-webui.entrypoints: web,websecure - traefik.http.routers.adguard-service-webui.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.adguard-service-webui.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.adguard-service-webui.service: adguard-service-webui traefik.http.routers.adguard-service-webui.tls: true traefik.http.routers.adguard-service-webui.tls.certresolver: production traefik.http.services.adguard-service-webui.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 traefik.http.routers.adguard-service-webui.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END healthcheck: disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA volumes: diff --git a/containers/authelia/authelia.config b/containers/authelia/authelia.config index bd19af9..f66731d 100755 --- a/containers/authelia/authelia.config +++ b/containers/authelia/authelia.config @@ -71,4 +71,4 @@ CFG_AUTHELIA_NETWORK=default # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_AUTHELIA_PORT_1="authelia-service|webui|random:9091|public|tcp|false|true|true|Web Interface|" +CFG_AUTHELIA_PORT_1="authelia-service|webui|random:9091|public|tcp|false|true|true|Web Interface||authelia" diff --git a/containers/authelia/docker-compose.yml b/containers/authelia/docker-compose.yml index 65a0a8d..aabbaa8 100755 --- a/containers/authelia/docker-compose.yml +++ b/containers/authelia/docker-compose.yml @@ -24,12 +24,14 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.authelia-service.entrypoints: web,websecure - traefik.http.routers.authelia-service.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.authelia-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.authelia-service.tls: true traefik.http.routers.authelia-service.tls.certresolver: production traefik.http.services.authelia-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 - traefik.http.routers.authelia-service.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.authelia-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA healthcheck: disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA diff --git a/containers/bookstack/bookstack.config b/containers/bookstack/bookstack.config index e577ddf..5fbff8d 100644 --- a/containers/bookstack/bookstack.config +++ b/containers/bookstack/bookstack.config @@ -69,7 +69,7 @@ CFG_BOOKSTACK_NETWORK=default # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_BOOKSTACK_PORT_1="bookstack-service|webui|random:80|public|tcp|false|true|true|Web Interface|" +CFG_BOOKSTACK_PORT_1="bookstack-service|webui|random:80|public|tcp|false|true|true|Web Interface||bookstack" # AUTH_PROFILE = capability tier for the WebUI auth tools (single_password | user_password | multi_user) CFG_BOOKSTACK_AUTH_PROFILE=multi_user diff --git a/containers/bookstack/docker-compose.yml b/containers/bookstack/docker-compose.yml index ebeafa5..5bb0f13 100755 --- a/containers/bookstack/docker-compose.yml +++ b/containers/bookstack/docker-compose.yml @@ -33,12 +33,14 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.bookstack-service.entrypoints: web,websecure - traefik.http.routers.bookstack-service.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.bookstack-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.bookstack-service.tls: true traefik.http.routers.bookstack-service.tls.certresolver: production traefik.http.services.bookstack-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 - traefik.http.routers.bookstack-service.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.bookstack-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA # GLUETUN_OFF_BEGIN networks: diff --git a/containers/dashy/dashy.config b/containers/dashy/dashy.config index 235942b..583c201 100755 --- a/containers/dashy/dashy.config +++ b/containers/dashy/dashy.config @@ -59,7 +59,7 @@ CFG_DASHY_NETWORK=default # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_DASHY_PORT_1="dashy-service|webui|random:8080|private|tcp|false|false|true|Dashboard|" +CFG_DASHY_PORT_1="dashy-service|webui|random:8080|private|tcp|false|false|true|Dashboard||dashy" # Comma-separated list of installed app slugs to surface as shortcuts on # the dashy dashboard. Managed via the Tools tab → "Manage Shortcuts". # Empty = no app shortcuts (only the static page header survives). diff --git a/containers/dashy/docker-compose.yml b/containers/dashy/docker-compose.yml index a67aff2..a63d37e 100755 --- a/containers/dashy/docker-compose.yml +++ b/containers/dashy/docker-compose.yml @@ -28,12 +28,14 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.dashy-service.entrypoints: web,websecure - traefik.http.routers.dashy-service.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.dashy-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.dashy-service.tls: true traefik.http.routers.dashy-service.tls.certresolver: production traefik.http.services.dashy-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 - traefik.http.routers.dashy-service.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.dashy-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA # GLUETUN_OFF_BEGIN networks: diff --git a/containers/focalboard/docker-compose.yml b/containers/focalboard/docker-compose.yml index e3c4152..7861f7e 100755 --- a/containers/focalboard/docker-compose.yml +++ b/containers/focalboard/docker-compose.yml @@ -23,12 +23,14 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.focalboard-service.entrypoints: web,websecure - traefik.http.routers.focalboard-service.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.focalboard-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.focalboard-service.tls: true traefik.http.routers.focalboard-service.tls.certresolver: production traefik.http.services.focalboard-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 - traefik.http.routers.focalboard-service.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.focalboard-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA # GLUETUN_OFF_BEGIN networks: diff --git a/containers/focalboard/focalboard.config b/containers/focalboard/focalboard.config index 21c4388..4357c2e 100755 --- a/containers/focalboard/focalboard.config +++ b/containers/focalboard/focalboard.config @@ -59,7 +59,7 @@ CFG_FOCALBOARD_NETWORK=default # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_FOCALBOARD_PORT_1="focalboard-service|webui|random:8000|public|tcp|false|true|true|Web Interface|" +CFG_FOCALBOARD_PORT_1="focalboard-service|webui|random:8000|public|tcp|false|true|true|Web Interface||board" # AUTH_PROFILE = capability tier for the WebUI auth tools (single_password | user_password | multi_user) CFG_FOCALBOARD_AUTH_PROFILE=multi_user diff --git a/containers/gitea/docker-compose.yml b/containers/gitea/docker-compose.yml index e6869a3..702327c 100755 --- a/containers/gitea/docker-compose.yml +++ b/containers/gitea/docker-compose.yml @@ -65,12 +65,14 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.gitea-service.entrypoints: web,websecure - traefik.http.routers.gitea-service.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.gitea-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.gitea.tls: true traefik.http.routers.gitea.tls.certresolver: production traefik.http.services.gitea.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 - traefik.http.routers.gitea.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.gitea.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA gitea-cache: #LIBREPORTAL|SERVICE_TAG_2|gitea-cache diff --git a/containers/gitea/gitea.config b/containers/gitea/gitea.config index 8f9da82..332d26f 100755 --- a/containers/gitea/gitea.config +++ b/containers/gitea/gitea.config @@ -63,7 +63,7 @@ CFG_GITEA_NETWORK=default # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_GITEA_PORT_1="gitea-service|webui|random:3000|public|tcp|false|true|true|Web Interface|" +CFG_GITEA_PORT_1="gitea-service|webui|random:3000|public|tcp|false|true|true|Web Interface||gitea" CFG_GITEA_PORT_2="gitea-service|ssh|random:22|private|tcp|false|false|false|Git SSH Access|" # AUTH_PROFILE = capability tier for the WebUI auth tools (single_password | user_password | multi_user) diff --git a/containers/grafana/docker-compose.yml b/containers/grafana/docker-compose.yml index 4329afe..7c518e9 100755 --- a/containers/grafana/docker-compose.yml +++ b/containers/grafana/docker-compose.yml @@ -24,12 +24,14 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.grafana-service.entrypoints: web,websecure - traefik.http.routers.grafana-service.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.grafana-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.grafana-service.tls: true traefik.http.routers.grafana-service.tls.certresolver: production traefik.http.services.grafana-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 - traefik.http.routers.grafana-service.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.grafana-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA healthcheck: disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA diff --git a/containers/grafana/grafana.config b/containers/grafana/grafana.config index 47226b8..b3e671a 100755 --- a/containers/grafana/grafana.config +++ b/containers/grafana/grafana.config @@ -64,4 +64,4 @@ CFG_GRAFANA_NETWORK=default # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_GRAFANA_PORT_1="grafana-service|webui|random:3000|public|tcp|false|true|true|Web Interface|" +CFG_GRAFANA_PORT_1="grafana-service|webui|random:3000|public|tcp|false|true|true|Web Interface||grafana" diff --git a/containers/headscale/docker-compose.yml b/containers/headscale/docker-compose.yml index ac5fc6f..fe36f52 100755 --- a/containers/headscale/docker-compose.yml +++ b/containers/headscale/docker-compose.yml @@ -56,9 +56,11 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA - traefik.http.routers.headscale-webui-service.rule: Host(`admin.DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + # TRAEFIK_PORT_2_BEGIN + traefik.http.routers.headscale-webui-service.rule: Host(`DOMAINSUBNAME_DATA_2`) #LIBREPORTAL|DOMAINSUBNAME_TAG_2|DOMAINSUBNAME_DATA_2 traefik.http.services.headscale-webui-service.loadbalancer.server.port: PORT_INTERNAL_DATA_2 #LIBREPORTAL|PORT_INTERNAL_TAG_2|PORT_INTERNAL_DATA_2 - traefik.http.routers.headscale-webui-service.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.headscale-webui-service.middlewares: MIDDLEWARE_DATA_2 #LIBREPORTAL|MIDDLEWARE_TAG_2|MIDDLEWARE_DATA_2 + # TRAEFIK_PORT_2_END traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA ports: - "PORTS_DATA_2" #LIBREPORTAL|PORTS_TAG_2|PORTS_DATA_2 diff --git a/containers/headscale/headscale.config b/containers/headscale/headscale.config index 234c0d2..07483f1 100755 --- a/containers/headscale/headscale.config +++ b/containers/headscale/headscale.config @@ -60,4 +60,4 @@ CFG_HEADSCALE_NETWORK=default # - description: human-readable description of the service # CFG_HEADSCALE_PORT_1="headscale-service|api|random:8080|private|tcp|false|false|false|Headscale API Server|" -CFG_HEADSCALE_PORT_2="headscale-webui-service|webui|random:5000|private|tcp|false|true|true|Web UI|" +CFG_HEADSCALE_PORT_2="headscale-webui-service|webui|random:5000|private|tcp|false|true|true|Web UI||admin.headscale" diff --git a/containers/invidious/docker-compose.yml b/containers/invidious/docker-compose.yml index 43e11ab..1aba516 100644 --- a/containers/invidious/docker-compose.yml +++ b/containers/invidious/docker-compose.yml @@ -43,12 +43,14 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.invidious-service.entrypoints: web,websecure - traefik.http.routers.invidious-service.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.invidious-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.invidious-service.tls: true traefik.http.routers.invidious-service.tls.certresolver: production traefik.http.services.invidious-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 - traefik.http.routers.invidious-service.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.invidious-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA # GLUETUN_OFF_BEGIN networks: diff --git a/containers/invidious/invidious.config b/containers/invidious/invidious.config index 8522012..2098831 100755 --- a/containers/invidious/invidious.config +++ b/containers/invidious/invidious.config @@ -62,7 +62,7 @@ CFG_INVIDIOUS_NETWORK=default # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_INVIDIOUS_PORT_1="invidious-service|webui|random:3000|public|tcp|false|true|true|Web Interface|" +CFG_INVIDIOUS_PORT_1="invidious-service|webui|random:3000|public|tcp|false|true|true|Web Interface||invidious" # AUTH_PROFILE = capability tier for the WebUI auth tools (single_password | user_password | multi_user) CFG_INVIDIOUS_AUTH_PROFILE=multi_user diff --git a/containers/ipinfo/docker-compose.yml b/containers/ipinfo/docker-compose.yml index 25c785c..c79384a 100755 --- a/containers/ipinfo/docker-compose.yml +++ b/containers/ipinfo/docker-compose.yml @@ -17,12 +17,14 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.ipinfo-service.entrypoints: web,websecure - traefik.http.routers.ipinfo-service.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.ipinfo-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.ipinfo-service.tls: true traefik.http.routers.ipinfo-service.tls.certresolver: production traefik.http.services.ipinfo-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 - traefik.http.routers.ipinfo-service.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.ipinfo-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA healthcheck: disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA diff --git a/containers/ipinfo/ipinfo.config b/containers/ipinfo/ipinfo.config index 9c0be28..cea64f0 100755 --- a/containers/ipinfo/ipinfo.config +++ b/containers/ipinfo/ipinfo.config @@ -59,4 +59,4 @@ CFG_IPINFO_NETWORK=default # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_IPINFO_PORT_1="ipinfo-service|webui|random:8080|public|tcp|false|true|true|Web Interface|" +CFG_IPINFO_PORT_1="ipinfo-service|webui|random:8080|public|tcp|false|true|true|Web Interface||ipinfo" diff --git a/containers/jellyfin/docker-compose.yml b/containers/jellyfin/docker-compose.yml index 0827078..f62ad95 100755 --- a/containers/jellyfin/docker-compose.yml +++ b/containers/jellyfin/docker-compose.yml @@ -21,12 +21,14 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.jellyfin-service.entrypoints: web,websecure - traefik.http.routers.jellyfin-service.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.jellyfin-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.jellyfin-service.tls: true traefik.http.routers.jellyfin-service.tls.certresolver: production traefik.http.services.jellyfin-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 - traefik.http.routers.jellyfin-service.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.jellyfin-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA healthcheck: disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA diff --git a/containers/jellyfin/jellyfin.config b/containers/jellyfin/jellyfin.config index 99947cd..52a4dab 100755 --- a/containers/jellyfin/jellyfin.config +++ b/containers/jellyfin/jellyfin.config @@ -59,4 +59,4 @@ CFG_JELLYFIN_NETWORK=default # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_JELLYFIN_PORT_1="jellyfin-service|webui|random:8096|public|tcp|false|true|true|Media Server|" +CFG_JELLYFIN_PORT_1="jellyfin-service|webui|random:8096|public|tcp|false|true|true|Media Server||jellyfin" diff --git a/containers/jitsimeet/docker-compose.yml b/containers/jitsimeet/docker-compose.yml index cf05fe5..553da92 100644 --- a/containers/jitsimeet/docker-compose.yml +++ b/containers/jitsimeet/docker-compose.yml @@ -23,12 +23,14 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.jitsimeet-service.entrypoints: web,websecure - traefik.http.routers.jitsimeet-service.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.jitsimeet-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.jitsimeet-service.tls: true traefik.http.routers.jitsimeet-service.tls.certresolver: production traefik.http.services.jitsimeet-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 - traefik.http.routers.jitsimeet-service.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.jitsimeet-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA networks: DOCKER_NETWORK_DATA: #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA diff --git a/containers/jitsimeet/jitsimeet.config b/containers/jitsimeet/jitsimeet.config index 497cfb5..e736d8c 100755 --- a/containers/jitsimeet/jitsimeet.config +++ b/containers/jitsimeet/jitsimeet.config @@ -59,6 +59,6 @@ CFG_JITSIMEET_NETWORK=default # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_JITSIMEET_PORT_1="jitsimeet-service|webui|random:80|public|tcp|false|true|true|Web Interface|" +CFG_JITSIMEET_PORT_1="jitsimeet-service|webui|random:80|public|tcp|false|true|true|Web Interface||meet" CFG_JITSIMEET_PORT_2="jitsimeet-jvb|video-bridge|random:10000|public|udp|false|false|false|Jitsi Video Bridge (UDP)|" CFG_JITSIMEET_PORT_3="jitsimeet-jvb|video-tcp|random:30300|public|tcp|false|false|false|Jitsi Video Bridge (TCP)|" diff --git a/containers/libreportal/docker-compose.yml b/containers/libreportal/docker-compose.yml index 1787080..c5e4f2a 100644 --- a/containers/libreportal/docker-compose.yml +++ b/containers/libreportal/docker-compose.yml @@ -36,12 +36,14 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.libreportal-service.entrypoints: web,websecure - traefik.http.routers.libreportal-service.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.libreportal-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.libreportal-service.tls: true traefik.http.routers.libreportal-service.tls.certresolver: production traefik.http.services.libreportal-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 - traefik.http.routers.libreportal-service.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.libreportal-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA healthcheck: disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA diff --git a/containers/libreportal/libreportal.config b/containers/libreportal/libreportal.config index d718aff..242f991 100755 --- a/containers/libreportal/libreportal.config +++ b/containers/libreportal/libreportal.config @@ -59,4 +59,4 @@ CFG_LIBREPORTAL_HOST_NAME=libreportal # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_LIBREPORTAL_PORT_1="libreportal-service|webui|random:1111|public|tcp|false|false|true|Web Interface|" +CFG_LIBREPORTAL_PORT_1="libreportal-service|webui|random:1111|public|tcp|false|false|true|Web Interface||libreportal" diff --git a/containers/linkding/docker-compose.yml b/containers/linkding/docker-compose.yml index d42ed70..32056ac 100755 --- a/containers/linkding/docker-compose.yml +++ b/containers/linkding/docker-compose.yml @@ -19,12 +19,14 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.linkding-service.entrypoints: web,websecure - traefik.http.routers.linkding-service.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.linkding-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.linkding-service.tls: true traefik.http.routers.linkding-service.tls.certresolver: production traefik.http.services.linkding-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 - traefik.http.routers.linkding-service.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.linkding-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA healthcheck: disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA diff --git a/containers/linkding/linkding.config b/containers/linkding/linkding.config index bdf57a8..6153d79 100755 --- a/containers/linkding/linkding.config +++ b/containers/linkding/linkding.config @@ -59,4 +59,4 @@ CFG_LINKDING_NETWORK=default # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_LINKDING_PORT_1="linkding-service|webui|random:9090|public|tcp|false|true|true|Web Interface|" +CFG_LINKDING_PORT_1="linkding-service|webui|random:9090|public|tcp|false|true|true|Web Interface||bookmark" diff --git a/containers/mastodon/docker-compose.yml b/containers/mastodon/docker-compose.yml index ead6145..fcadaa0 100755 --- a/containers/mastodon/docker-compose.yml +++ b/containers/mastodon/docker-compose.yml @@ -37,12 +37,14 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.mastodon-service.entrypoints: web,websecure - traefik.http.routers.mastodon-service.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.mastodon-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.mastodon-service.tls: true traefik.http.routers.mastodon-service.tls.certresolver: production traefik.http.services.mastodon-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 - traefik.http.routers.mastodon-service.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.mastodon-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA command: bash -c "RAILS_ENV=production bundle exec rails db:migrate && RAILS_ENV=production bundle exec rails s -b 0.0.0.0" healthcheck: diff --git a/containers/mastodon/mastodon.config b/containers/mastodon/mastodon.config index b1c0075..33e49e8 100755 --- a/containers/mastodon/mastodon.config +++ b/containers/mastodon/mastodon.config @@ -59,5 +59,5 @@ CFG_MASTODON_NETWORK=default # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_MASTODON_PORT_1="mastodon-service|webui|random:3010|public|tcp|false|false|true|Web Interface|" +CFG_MASTODON_PORT_1="mastodon-service|webui|random:3010|public|tcp|false|false|true|Web Interface||social" CFG_MASTODON_PORT_2="mastodon-service|streaming|random:4010|public|tcp|false|false|false|Mastodon Streaming API|" diff --git a/containers/moneyapp/docker-compose.yml b/containers/moneyapp/docker-compose.yml index b42fbd9..18b3811 100644 --- a/containers/moneyapp/docker-compose.yml +++ b/containers/moneyapp/docker-compose.yml @@ -31,12 +31,14 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.moneyapp-service.entrypoints: web,websecure - traefik.http.routers.moneyapp-service.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.moneyapp-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.moneyapp-service.tls: true traefik.http.routers.moneyapp-service.tls.certresolver: production traefik.http.services.moneyapp-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 - traefik.http.routers.moneyapp-service.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.moneyapp-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA # GLUETUN_OFF_BEGIN networks: diff --git a/containers/moneyapp/moneyapp.config b/containers/moneyapp/moneyapp.config index 3eee968..ca1d247 100644 --- a/containers/moneyapp/moneyapp.config +++ b/containers/moneyapp/moneyapp.config @@ -55,4 +55,4 @@ CFG_MONEYAPP_NETWORK=default # Schema (10 cols): service|name|external:internal|access|protocol|login|traefik|button_enabled|button_text|url_path # button_text + url_path may carry comma-separated parallel arrays for multi-button entries. # -CFG_MONEYAPP_PORT_1="moneyapp-service|webui|random:3000|public|tcp|false|true|true|MoneyApp|/" +CFG_MONEYAPP_PORT_1="moneyapp-service|webui|random:3000|public|tcp|false|true|true|MoneyApp|/|moneyapp" diff --git a/containers/nextcloud/docker-compose.yml b/containers/nextcloud/docker-compose.yml index b191e05..c95492e 100644 --- a/containers/nextcloud/docker-compose.yml +++ b/containers/nextcloud/docker-compose.yml @@ -32,12 +32,14 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.nextcloud-service.entrypoints: web,websecure - traefik.http.routers.nextcloud-service.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.nextcloud-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.nextcloud-service.tls: true traefik.http.routers.nextcloud-service.tls.certresolver: production traefik.http.services.nextcloud-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 - traefik.http.routers.nextcloud-service.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.nextcloud-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA # GLUETUN_OFF_BEGIN networks: diff --git a/containers/nextcloud/nextcloud.config b/containers/nextcloud/nextcloud.config index 5be79a2..ea1bc42 100755 --- a/containers/nextcloud/nextcloud.config +++ b/containers/nextcloud/nextcloud.config @@ -71,5 +71,5 @@ CFG_NEXTCLOUD_NETWORK=default # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_NEXTCLOUD_PORT_1="nextcloud-service|webui|random:80|public|tcp|false|true|true|Web Interface|" +CFG_NEXTCLOUD_PORT_1="nextcloud-service|webui|random:80|public|tcp|false|true|true|Web Interface||nextcloud" CFG_NEXTCLOUD_PORT_2="nextcloud-exporter|metrics|9205:9205|disabled|tcp|false|false|false|Metrics Exporter (sidecar, docker-network only)|" diff --git a/containers/ollama/docker-compose.yml b/containers/ollama/docker-compose.yml index eb3f58d..356ff63 100755 --- a/containers/ollama/docker-compose.yml +++ b/containers/ollama/docker-compose.yml @@ -19,12 +19,14 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.ollama-webui.entrypoints: web,websecure - traefik.http.routers.ollama-webui.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.ollama-webui.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.ollama-webui.tls: true traefik.http.routers.ollama-webui.tls.certresolver: production traefik.http.services.ollama-webui.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 - traefik.http.routers.ollama-webui.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.ollama-webui.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END healthcheck: disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA networks: diff --git a/containers/ollama/ollama.config b/containers/ollama/ollama.config index 7517953..a7e8740 100755 --- a/containers/ollama/ollama.config +++ b/containers/ollama/ollama.config @@ -61,6 +61,6 @@ CFG_OLLAMA_NETWORK=default # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_OLLAMA_PORT_1="ollama-webui|webui|random:8080|public|tcp|false|true|true|Web Interface|" +CFG_OLLAMA_PORT_1="ollama-webui|webui|random:8080|public|tcp|false|true|true|Web Interface||ollama" CFG_OLLAMA_PORT_2="ollama-service|api|random:11434|private|tcp|false|false|false|Ollama API|" CFG_OLLAMA_PORT_3="ollama-exporter|metrics|9778:9778|disabled|tcp|false|false|false|Metrics Exporter (sidecar, docker-network only)|" diff --git a/containers/onlyoffice/docker-compose.yml b/containers/onlyoffice/docker-compose.yml index 50be69c..a1f2331 100755 --- a/containers/onlyoffice/docker-compose.yml +++ b/containers/onlyoffice/docker-compose.yml @@ -18,15 +18,17 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.onlyoffice-service.entrypoints: web,websecure - traefik.http.routers.onlyoffice-service.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.onlyoffice-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.onlyoffice-service.tls: true traefik.http.routers.onlyoffice-service.tls.certresolver: production traefik.http.services.onlyoffice-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 - traefik.http.routers.onlyoffice-service.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.onlyoffice-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 # Headers for onlyoffice, https://github.com/ONLYOFFICE/onlyoffice-nextcloud/issues/151 traefik.http.middlewares.onlyoffice-headers.headers.customrequestheaders.X-Forwarded-Proto: https traefik.http.middlewares.onlyoffice-headers.headers.accesscontrolalloworiginlist: "*" + # TRAEFIK_PORT_1_END healthcheck: disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA volumes: diff --git a/containers/onlyoffice/onlyoffice.config b/containers/onlyoffice/onlyoffice.config index db772a8..8d0c6a3 100755 --- a/containers/onlyoffice/onlyoffice.config +++ b/containers/onlyoffice/onlyoffice.config @@ -59,4 +59,4 @@ CFG_ONLYOFFICE_NETWORK=default # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_ONLYOFFICE_PORT_1="onlyoffice-service|webui|random:80|public|tcp|false|true|true|Web Interface|" +CFG_ONLYOFFICE_PORT_1="onlyoffice-service|webui|random:80|public|tcp|false|true|true|Web Interface||onlyoffice" diff --git a/containers/owncloud/docker-compose.yml b/containers/owncloud/docker-compose.yml index 73b24cd..3200e19 100755 --- a/containers/owncloud/docker-compose.yml +++ b/containers/owncloud/docker-compose.yml @@ -33,12 +33,14 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.owncloud-service.entrypoints: web,websecure - traefik.http.routers.owncloud-service.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.owncloud-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.owncloud-service.tls: true traefik.http.routers.owncloud-service.tls.certresolver: production traefik.http.services.owncloud-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 - traefik.http.routers.owncloud-service.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.owncloud-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA healthcheck: test: ["CMD", "/usr/bin/healthcheck"] diff --git a/containers/owncloud/owncloud.config b/containers/owncloud/owncloud.config index 1be7993..460e848 100755 --- a/containers/owncloud/owncloud.config +++ b/containers/owncloud/owncloud.config @@ -69,4 +69,4 @@ CFG_OWNCLOUD_NETWORK=default # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_OWNCLOUD_PORT_1="owncloud-service|webui|random:8080|public|tcp|false|true|true|Web Interface|" +CFG_OWNCLOUD_PORT_1="owncloud-service|webui|random:8080|public|tcp|false|true|true|Web Interface||cloud" diff --git a/containers/pihole/docker-compose.yml b/containers/pihole/docker-compose.yml index 32a7257..4258987 100755 --- a/containers/pihole/docker-compose.yml +++ b/containers/pihole/docker-compose.yml @@ -20,12 +20,14 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.pihole-service.entrypoints: web,websecure - traefik.http.routers.pihole-service.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.pihole-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.pihole-service.tls: true traefik.http.routers.pihole-service.tls.certresolver: production traefik.http.services.pihole-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 - traefik.http.routers.pihole-service.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.pihole-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END environment: - FTLCONF_LOCAL_IPV4=PUBLIC_IP_DATA #LIBREPORTAL|PUBLIC_IP_TAG|PUBLIC_IP_DATA - TZ=TIMEZONE_DATA #LIBREPORTAL|TIMEZONE_TAG|TIMEZONE_DATA diff --git a/containers/pihole/pihole.config b/containers/pihole/pihole.config index 3f259a8..0b3e502 100755 --- a/containers/pihole/pihole.config +++ b/containers/pihole/pihole.config @@ -70,7 +70,7 @@ CFG_PIHOLE_NETWORK=default # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_PIHOLE_PORT_1="pihole-service|webui|random:80|private|tcp|false|false|true|Admin Interface|/admin/" +CFG_PIHOLE_PORT_1="pihole-service|webui|random:80|private|tcp|false|false|true|Admin Interface|/admin/|pihole" CFG_PIHOLE_PORT_2="pihole-service|dns-tcp|53:53|private|tcp|false|false|false|DNS Server (TCP)|" CFG_PIHOLE_PORT_3="pihole-service|dns-udp|53:53|private|udp|false|false|false|DNS Server (UDP)|" CFG_PIHOLE_PORT_4="pihole-service|https|random:443|disabled|tcp|false|false|false|HTTPS Interface|" diff --git a/containers/prometheus/docker-compose.yml b/containers/prometheus/docker-compose.yml index 182d391..e9956bc 100755 --- a/containers/prometheus/docker-compose.yml +++ b/containers/prometheus/docker-compose.yml @@ -21,12 +21,14 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.prometheus-service.entrypoints: web,websecure - traefik.http.routers.prometheus-service.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.prometheus-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.prometheus-service.tls: true traefik.http.routers.prometheus-service.tls.certresolver: production traefik.http.services.prometheus-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 - traefik.http.routers.prometheus-service.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.prometheus-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END healthcheck: disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA volumes: diff --git a/containers/prometheus/prometheus.config b/containers/prometheus/prometheus.config index 99ac99f..9da5b40 100755 --- a/containers/prometheus/prometheus.config +++ b/containers/prometheus/prometheus.config @@ -59,4 +59,4 @@ CFG_PROMETHEUS_NETWORK=default # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_PROMETHEUS_PORT_1="prometheus-service|webui|random:9090|public|tcp|false|true|true|Web Interface|" +CFG_PROMETHEUS_PORT_1="prometheus-service|webui|random:9090|public|tcp|false|true|true|Web Interface||prometheus" diff --git a/containers/searxng/docker-compose.yml b/containers/searxng/docker-compose.yml index 10e08a3..e48909b 100755 --- a/containers/searxng/docker-compose.yml +++ b/containers/searxng/docker-compose.yml @@ -16,12 +16,14 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.searxng-service.entrypoints: web,websecure - traefik.http.routers.searxng-service.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.searxng-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.searxng-service.tls: true traefik.http.routers.searxng-service.tls.certresolver: production traefik.http.services.searxng-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 - traefik.http.routers.searxng-service.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.searxng-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END cap_drop: - ALL cap_add: diff --git a/containers/searxng/searxng.config b/containers/searxng/searxng.config index 1ed7dc3..8b3547f 100755 --- a/containers/searxng/searxng.config +++ b/containers/searxng/searxng.config @@ -66,4 +66,4 @@ CFG_SEARXNG_NETWORK=default # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_SEARXNG_PORT_1="searxng-service|webui|8083:8080|public|tcp|false|true|true|Search Interface|" +CFG_SEARXNG_PORT_1="searxng-service|webui|8083:8080|public|tcp|false|true|true|Search Interface||search" diff --git a/containers/speedtest/docker-compose.yml b/containers/speedtest/docker-compose.yml index 5ce3754..969b841 100644 --- a/containers/speedtest/docker-compose.yml +++ b/containers/speedtest/docker-compose.yml @@ -24,12 +24,14 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.speedtest-service.entrypoints: web,websecure - traefik.http.routers.speedtest-service.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.speedtest-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.speedtest-service.tls: true traefik.http.routers.speedtest-service.tls.certresolver: production traefik.http.services.speedtest-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 - traefik.http.routers.speedtest-service.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.speedtest-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END healthcheck: disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA volumes: diff --git a/containers/speedtest/speedtest.config b/containers/speedtest/speedtest.config index d55ccb2..afb5df6 100755 --- a/containers/speedtest/speedtest.config +++ b/containers/speedtest/speedtest.config @@ -67,4 +67,4 @@ CFG_SPEEDTEST_NETWORK=default # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_SPEEDTEST_PORT_1="speedtest-service|webui|random:80|public|tcp|false|true|true|Speedtest,Results|/,/results/stats.php" +CFG_SPEEDTEST_PORT_1="speedtest-service|webui|random:80|public|tcp|false|true|true|Speedtest,Results|/,/results/stats.php|speedtest" diff --git a/containers/traefik/docker-compose.yml b/containers/traefik/docker-compose.yml index cccd4bd..75cd173 100644 --- a/containers/traefik/docker-compose.yml +++ b/containers/traefik/docker-compose.yml @@ -22,13 +22,15 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.traefik-service-dashboard.entrypoints: web,websecure - traefik.http.routers.traefik-service-dashboard.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.traefik-service-dashboard.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.traefik-service-dashboard.service: api@internal traefik.http.routers.traefik-service-dashboard.tls: true traefik.http.routers.traefik-service-dashboard.tls.certresolver: production traefik.http.routers.traefik-service-dashboard.tls.options: modern@file traefik.http.routers.traefik-service-dashboard.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA healthcheck: disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA diff --git a/containers/traefik/traefik.config b/containers/traefik/traefik.config index be8edb1..5967bb2 100755 --- a/containers/traefik/traefik.config +++ b/containers/traefik/traefik.config @@ -80,7 +80,7 @@ CFG_TRAEFIK_NETWORK=default # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_TRAEFIK_PORT_1="traefik-service|dashboard|random:8080|public|tcp|true|true|true|Admin Dashboard|" +CFG_TRAEFIK_PORT_1="traefik-service|dashboard|random:8080|public|tcp|true|true|true|Admin Dashboard||traefik" CFG_TRAEFIK_PORT_2="traefik-service|https|443:443|public|tcp|false|false|false|HTTPS Traffic|" CFG_TRAEFIK_PORT_3="traefik-service|http|80:80|disabled|tcp|false|false|false|HTTP Traffic|" diff --git a/containers/trilium/docker-compose.yml b/containers/trilium/docker-compose.yml index e7c7338..be3b544 100755 --- a/containers/trilium/docker-compose.yml +++ b/containers/trilium/docker-compose.yml @@ -16,12 +16,14 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.trilium-service.entrypoints: web,websecure - traefik.http.routers.trilium-service.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.trilium-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.trilium-service.tls: true traefik.http.routers.trilium-service.tls.certresolver: production traefik.http.services.trilium-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 - traefik.http.routers.trilium-service.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.trilium-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END healthcheck: disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA volumes: diff --git a/containers/trilium/trilium.config b/containers/trilium/trilium.config index b59b70e..2a2d301 100755 --- a/containers/trilium/trilium.config +++ b/containers/trilium/trilium.config @@ -59,4 +59,4 @@ CFG_TRILIUM_NETWORK=default # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_TRILIUM_PORT_1="trilium-service|webui|random:8080|private|tcp|false|true|true|Notes Interface|" +CFG_TRILIUM_PORT_1="trilium-service|webui|random:8080|private|tcp|false|true|true|Notes Interface||notes" diff --git a/containers/vaultwarden/docker-compose.yml b/containers/vaultwarden/docker-compose.yml index 934efce..d306d3b 100755 --- a/containers/vaultwarden/docker-compose.yml +++ b/containers/vaultwarden/docker-compose.yml @@ -26,12 +26,14 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA + # TRAEFIK_PORT_1_BEGIN traefik.http.routers.vaultwarden-service.entrypoints: web,websecure - traefik.http.routers.vaultwarden-service.rule: Host(`DOMAINSUBNAME_DATA`) #LIBREPORTAL|DOMAINSUBNAME_TAG|DOMAINSUBNAME_DATA + traefik.http.routers.vaultwarden-service.rule: Host(`DOMAINSUBNAME_DATA_1`) #LIBREPORTAL|DOMAINSUBNAME_TAG_1|DOMAINSUBNAME_DATA_1 traefik.http.routers.vaultwarden-service.tls: true traefik.http.routers.vaultwarden-service.tls.certresolver: production traefik.http.services.vaultwarden-service.loadbalancer.server.port: PORT_INTERNAL_DATA_1 #LIBREPORTAL|PORT_INTERNAL_TAG_1|PORT_INTERNAL_DATA_1 - traefik.http.routers.vaultwarden-service.middlewares: MIDDLEWARE_DATA #LIBREPORTAL|MIDDLEWARE_TAG|MIDDLEWARE_DATA + traefik.http.routers.vaultwarden-service.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1 + # TRAEFIK_PORT_1_END healthcheck: disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA # GLUETUN_OFF_BEGIN diff --git a/containers/vaultwarden/vaultwarden.config b/containers/vaultwarden/vaultwarden.config index 06955fb..4df0594 100755 --- a/containers/vaultwarden/vaultwarden.config +++ b/containers/vaultwarden/vaultwarden.config @@ -70,5 +70,5 @@ CFG_VAULTWARDEN_NETWORK=default # - webui: if true, this port serves the main web interface # - description: human-readable description of the service # -CFG_VAULTWARDEN_PORT_1="vaultwarden-service|webui|8201:80|public|tcp|false|true|true|Password Manager Interface|" +CFG_VAULTWARDEN_PORT_1="vaultwarden-service|webui|8201:80|public|tcp|false|true|true|Password Manager Interface||vault" CFG_VAULTWARDEN_PORT_2="vaultwarden-exporter|metrics|3001:3001|disabled|tcp|false|false|false|Metrics Exporter (sidecar, docker-network only)|" diff --git a/scripts/config/docker/docker_config_setup_data.sh b/scripts/config/docker/docker_config_setup_data.sh index 6010133..8515916 100755 --- a/scripts/config/docker/docker_config_setup_data.sh +++ b/scripts/config/docker/docker_config_setup_data.sh @@ -60,6 +60,15 @@ dockerConfigSetupFileWithData() # and Authelia takes precedence when installed. tagsProcessorPortMiddlewares "$full_file_path" "$app_name" + # Per-port subdomains (DOMAINSUBNAME_TAG_1, _2, ...). The dynamic + # replacement for the single static HOST_NAME — one host per + # Traefik-managed port, so a container can serve unlimited hosts. + tagsProcessorPortSubdomains "$full_file_path" "$app_name" + + # Strip (comment out) router blocks for ports that aren't Traefik-managed, + # so an unfilled DOMAINSUBNAME_DATA_ placeholder can never ship. + tagsProcessorPortRouterBlocks "$full_file_path" "$app_name" + tagsProcessorTraefikControl "$full_file_path" "$public" tagsManagerUpdateUniversalTag "$full_file_path" "DOMAINSUBNAME_TAG" "$host_setup" diff --git a/scripts/network/traefik/traefik_port_subdomains.sh b/scripts/network/traefik/traefik_port_subdomains.sh new file mode 100644 index 0000000..dd498eb --- /dev/null +++ b/scripts/network/traefik/traefik_port_subdomains.sh @@ -0,0 +1,96 @@ +#!/bin/bash + +# Per-port Traefik subdomain/host writer. +# +# Companion to traefik_port_middlewares.sh. Where that stamps a per-port +# MIDDLEWARE_TAG_, this stamps a per-port DOMAINSUBNAME_TAG_ holding the +# fully-qualified host for that port's Traefik router, derived from the port's +# `subdomain` column (the 11th field of the 12-col PORT format). +# +# This is the dynamic replacement for the old static, per-app +# CFG__HOST_NAME model: a single container can now expose any number of +# hosts — one per Traefik-managed port — instead of being limited to one. +# +# subdomain "" | "@" | "root" -> (apex / root of domain) +# subdomain "vault" -> vault. (single label) +# subdomain "admin.headscale" -> admin.headscale. (multi-level allowed) +# +# Index scheme matches traefik_port_middlewares.sh exactly: i walks every +# parsed port (0-based), idx = i+1 is the 1-based position used in the tag +# suffix, and only Traefik-managed ports (traefik=true) are stamped — so a +# port's MIDDLEWARE_TAG_ and DOMAINSUBNAME_TAG_ always line up on the +# same router. +tagsProcessorPortSubdomains() +{ + local file="$1" + local app_name="$2" + + if [[ -z "$file" || -z "$app_name" ]]; then + return 0 + fi + + local count=${#port_service_names[@]} + local i=0 + while [[ $i -lt $count ]]; do + local idx=$((i + 1)) + local p_traefik="${port_traefik_managed[$i]}" + local p_sub="${port_subdomains[$i]}" + + if [[ "$p_traefik" == "true" ]]; then + local host + if [[ -z "$p_sub" || "$p_sub" == "@" || "$p_sub" == "root" ]]; then + host="${domain_full}" # apex / root of the domain + else + host="${p_sub}.${domain_full}" # subdomain (single or multi-level) + fi + tagsManagerUpdateUniversalTag "$file" "DOMAINSUBNAME_TAG_${idx}" "$host" + fi + i=$((i + 1)) + done +} + +# Comments out the Traefik router block for any port that is NOT Traefik-managed +# (non-public, metrics-only, or a slot with no router at all), so an unfilled +# DOMAINSUBNAME_DATA_ placeholder can never reach a live compose. Each router +# is wrapped in # TRAEFIK_PORT__BEGIN ... # TRAEFIK_PORT__END markers; +# this mirrors the GLUETUN_OFF region-commenting in tags_processor_network_mode.sh. +tagsProcessorPortRouterBlocks() +{ + local file="$1" + local app_name="$2" + if [[ -z "$file" || ! -f "$file" ]]; then + return 0 + fi + + # Space-padded list of 1-based indices of Traefik-managed ports, e.g. " 1 3 ". + local active=" " + local count=${#port_service_names[@]} + local i=0 + while [[ $i -lt $count ]]; do + [[ "${port_traefik_managed[$i]}" == "true" ]] && active+="$((i + 1)) " + i=$((i + 1)) + done + + local tmp="${file}.routers.$$" + sudo awk -v active="$active" ' + BEGIN { off = 0 } + /#[[:space:]]*TRAEFIK_PORT_[0-9]+_BEGIN/ { + match($0, /TRAEFIK_PORT_[0-9]+/); key = substr($0, RSTART, RLENGTH) + sub(/TRAEFIK_PORT_/, "", key) + off = (index(active, " " key " ") > 0) ? 0 : 1 # off=1 -> comment the block + print; next + } + /#[[:space:]]*TRAEFIK_PORT_[0-9]+_END/ { off = 0; print; next } + { + if (off == 1 && $0 !~ /^[[:space:]]*#/) { + match($0, /^[[:space:]]*/) + indent = substr($0, RSTART, RLENGTH) + rest = substr($0, RLENGTH + 1) + print indent "# " rest + next + } + print + } + ' "$file" | sudo tee "$tmp" >/dev/null + sudo mv "$tmp" "$file" +} diff --git a/scripts/source/files/arrays/files_network.sh b/scripts/source/files/arrays/files_network.sh index 3283f85..14bebe3 100755 --- a/scripts/source/files/arrays/files_network.sh +++ b/scripts/source/files/arrays/files_network.sh @@ -38,6 +38,7 @@ network_scripts=( "network/traefik/traefik_login_credentials.sh" "network/traefik/traefik_middlewares.sh" "network/traefik/traefik_port_middlewares.sh" + "network/traefik/traefik_port_subdomains.sh" "network/traefik/traefik_whitelist.sh" "network/variables/basic_scan.sh" "network/variables/headscale_variables.sh"