feat(routing): dynamic per-port subdomains + router-block toggle
Replace the static one-host-per-app model with per-port routers: each Traefik-managed port carries a subdomain (12-col PORT format) and gets a DOMAINSUBNAME_TAG_<n> host, so one container can serve unlimited hosts. tagsProcessorPortSubdomains stamps per-port hosts (subdomain @/empty = apex, multi-level allowed); tagsProcessorPortRouterBlocks comments out # TRAEFIK_PORT_<n>_BEGIN/END blocks for non-Traefik ports so unfilled placeholders never ship (mirrors GLUETUN_OFF). Convert all 27 router apps (subdomains seeded from HOST_NAME; headscale admin. prefix -> subdomain). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> Signed-off-by: librelad <librelad@digitalangels.vip>
This commit is contained in:
parent
5d47a6bad5
commit
dec3055b63
@ -65,7 +65,7 @@ CFG_ADGUARD_NETWORK=default
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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_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_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|"
|
CFG_ADGUARD_PORT_4="adguard-service|dns-alt|random:8053|disabled|tcp|false|false|false|Alternative DNS|"
|
||||||
|
|||||||
@ -20,13 +20,15 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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.service: adguard-service-webui
|
||||||
traefik.http.routers.adguard-service-webui.tls: true
|
traefik.http.routers.adguard-service-webui.tls: true
|
||||||
traefik.http.routers.adguard-service-webui.tls.certresolver: production
|
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.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.http.routers.adguard-service-webui.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1
|
||||||
|
# TRAEFIK_PORT_1_END
|
||||||
healthcheck:
|
healthcheck:
|
||||||
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
@ -71,4 +71,4 @@ CFG_AUTHELIA_NETWORK=default
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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"
|
||||||
|
|||||||
@ -24,12 +24,14 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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: true
|
||||||
traefik.http.routers.authelia-service.tls.certresolver: production
|
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.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
|
traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA
|
||||||
healthcheck:
|
healthcheck:
|
||||||
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
||||||
|
|||||||
@ -69,7 +69,7 @@ CFG_BOOKSTACK_NETWORK=default
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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)
|
# AUTH_PROFILE = capability tier for the WebUI auth tools (single_password | user_password | multi_user)
|
||||||
CFG_BOOKSTACK_AUTH_PROFILE=multi_user
|
CFG_BOOKSTACK_AUTH_PROFILE=multi_user
|
||||||
|
|||||||
@ -33,12 +33,14 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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: true
|
||||||
traefik.http.routers.bookstack-service.tls.certresolver: production
|
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.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
|
traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA
|
||||||
# GLUETUN_OFF_BEGIN
|
# GLUETUN_OFF_BEGIN
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
@ -59,7 +59,7 @@ CFG_DASHY_NETWORK=default
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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
|
# Comma-separated list of installed app slugs to surface as shortcuts on
|
||||||
# the dashy dashboard. Managed via the Tools tab → "Manage Shortcuts".
|
# the dashy dashboard. Managed via the Tools tab → "Manage Shortcuts".
|
||||||
# Empty = no app shortcuts (only the static page header survives).
|
# Empty = no app shortcuts (only the static page header survives).
|
||||||
|
|||||||
@ -28,12 +28,14 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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: true
|
||||||
traefik.http.routers.dashy-service.tls.certresolver: production
|
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.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
|
traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA
|
||||||
# GLUETUN_OFF_BEGIN
|
# GLUETUN_OFF_BEGIN
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
@ -23,12 +23,14 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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: true
|
||||||
traefik.http.routers.focalboard-service.tls.certresolver: production
|
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.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
|
traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA
|
||||||
# GLUETUN_OFF_BEGIN
|
# GLUETUN_OFF_BEGIN
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
@ -59,7 +59,7 @@ CFG_FOCALBOARD_NETWORK=default
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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)
|
# AUTH_PROFILE = capability tier for the WebUI auth tools (single_password | user_password | multi_user)
|
||||||
CFG_FOCALBOARD_AUTH_PROFILE=multi_user
|
CFG_FOCALBOARD_AUTH_PROFILE=multi_user
|
||||||
|
|||||||
@ -65,12 +65,14 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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: true
|
||||||
traefik.http.routers.gitea.tls.certresolver: production
|
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.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
|
traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA
|
||||||
|
|
||||||
gitea-cache: #LIBREPORTAL|SERVICE_TAG_2|gitea-cache
|
gitea-cache: #LIBREPORTAL|SERVICE_TAG_2|gitea-cache
|
||||||
|
|||||||
@ -63,7 +63,7 @@ CFG_GITEA_NETWORK=default
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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|"
|
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)
|
# AUTH_PROFILE = capability tier for the WebUI auth tools (single_password | user_password | multi_user)
|
||||||
|
|||||||
@ -24,12 +24,14 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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: true
|
||||||
traefik.http.routers.grafana-service.tls.certresolver: production
|
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.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
|
traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA
|
||||||
healthcheck:
|
healthcheck:
|
||||||
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
||||||
|
|||||||
@ -64,4 +64,4 @@ CFG_GRAFANA_NETWORK=default
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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"
|
||||||
|
|||||||
@ -56,9 +56,11 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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
|
traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA
|
||||||
ports:
|
ports:
|
||||||
- "PORTS_DATA_2" #LIBREPORTAL|PORTS_TAG_2|PORTS_DATA_2
|
- "PORTS_DATA_2" #LIBREPORTAL|PORTS_TAG_2|PORTS_DATA_2
|
||||||
|
|||||||
@ -60,4 +60,4 @@ CFG_HEADSCALE_NETWORK=default
|
|||||||
# - description: human-readable description of the service
|
# - 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_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"
|
||||||
|
|||||||
@ -43,12 +43,14 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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: true
|
||||||
traefik.http.routers.invidious-service.tls.certresolver: production
|
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.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
|
traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA
|
||||||
# GLUETUN_OFF_BEGIN
|
# GLUETUN_OFF_BEGIN
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
@ -62,7 +62,7 @@ CFG_INVIDIOUS_NETWORK=default
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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)
|
# AUTH_PROFILE = capability tier for the WebUI auth tools (single_password | user_password | multi_user)
|
||||||
CFG_INVIDIOUS_AUTH_PROFILE=multi_user
|
CFG_INVIDIOUS_AUTH_PROFILE=multi_user
|
||||||
|
|||||||
@ -17,12 +17,14 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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: true
|
||||||
traefik.http.routers.ipinfo-service.tls.certresolver: production
|
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.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
|
traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA
|
||||||
healthcheck:
|
healthcheck:
|
||||||
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
||||||
|
|||||||
@ -59,4 +59,4 @@ CFG_IPINFO_NETWORK=default
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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"
|
||||||
|
|||||||
@ -21,12 +21,14 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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: true
|
||||||
traefik.http.routers.jellyfin-service.tls.certresolver: production
|
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.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
|
traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA
|
||||||
healthcheck:
|
healthcheck:
|
||||||
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
||||||
|
|||||||
@ -59,4 +59,4 @@ CFG_JELLYFIN_NETWORK=default
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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"
|
||||||
|
|||||||
@ -23,12 +23,14 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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: true
|
||||||
traefik.http.routers.jitsimeet-service.tls.certresolver: production
|
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.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
|
traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA
|
||||||
networks:
|
networks:
|
||||||
DOCKER_NETWORK_DATA: #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA
|
DOCKER_NETWORK_DATA: #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA
|
||||||
|
|||||||
@ -59,6 +59,6 @@ CFG_JITSIMEET_NETWORK=default
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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_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)|"
|
CFG_JITSIMEET_PORT_3="jitsimeet-jvb|video-tcp|random:30300|public|tcp|false|false|false|Jitsi Video Bridge (TCP)|"
|
||||||
|
|||||||
@ -36,12 +36,14 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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: true
|
||||||
traefik.http.routers.libreportal-service.tls.certresolver: production
|
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.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
|
traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA
|
||||||
healthcheck:
|
healthcheck:
|
||||||
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
||||||
|
|||||||
@ -59,4 +59,4 @@ CFG_LIBREPORTAL_HOST_NAME=libreportal
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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"
|
||||||
|
|||||||
@ -19,12 +19,14 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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: true
|
||||||
traefik.http.routers.linkding-service.tls.certresolver: production
|
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.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
|
traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA
|
||||||
healthcheck:
|
healthcheck:
|
||||||
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
||||||
|
|||||||
@ -59,4 +59,4 @@ CFG_LINKDING_NETWORK=default
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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"
|
||||||
|
|||||||
@ -37,12 +37,14 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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: true
|
||||||
traefik.http.routers.mastodon-service.tls.certresolver: production
|
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.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
|
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"
|
command: bash -c "RAILS_ENV=production bundle exec rails db:migrate && RAILS_ENV=production bundle exec rails s -b 0.0.0.0"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
|||||||
@ -59,5 +59,5 @@ CFG_MASTODON_NETWORK=default
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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|"
|
CFG_MASTODON_PORT_2="mastodon-service|streaming|random:4010|public|tcp|false|false|false|Mastodon Streaming API|"
|
||||||
|
|||||||
@ -31,12 +31,14 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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: true
|
||||||
traefik.http.routers.moneyapp-service.tls.certresolver: production
|
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.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
|
traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA
|
||||||
# GLUETUN_OFF_BEGIN
|
# GLUETUN_OFF_BEGIN
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
@ -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
|
# 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.
|
# 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"
|
||||||
|
|||||||
@ -32,12 +32,14 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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: true
|
||||||
traefik.http.routers.nextcloud-service.tls.certresolver: production
|
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.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
|
traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA
|
||||||
# GLUETUN_OFF_BEGIN
|
# GLUETUN_OFF_BEGIN
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
@ -71,5 +71,5 @@ CFG_NEXTCLOUD_NETWORK=default
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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)|"
|
CFG_NEXTCLOUD_PORT_2="nextcloud-exporter|metrics|9205:9205|disabled|tcp|false|false|false|Metrics Exporter (sidecar, docker-network only)|"
|
||||||
|
|||||||
@ -19,12 +19,14 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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: true
|
||||||
traefik.http.routers.ollama-webui.tls.certresolver: production
|
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.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:
|
healthcheck:
|
||||||
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
@ -61,6 +61,6 @@ CFG_OLLAMA_NETWORK=default
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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_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)|"
|
CFG_OLLAMA_PORT_3="ollama-exporter|metrics|9778:9778|disabled|tcp|false|false|false|Metrics Exporter (sidecar, docker-network only)|"
|
||||||
|
|||||||
@ -18,15 +18,17 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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: true
|
||||||
traefik.http.routers.onlyoffice-service.tls.certresolver: production
|
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.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
|
# 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.customrequestheaders.X-Forwarded-Proto: https
|
||||||
traefik.http.middlewares.onlyoffice-headers.headers.accesscontrolalloworiginlist: "*"
|
traefik.http.middlewares.onlyoffice-headers.headers.accesscontrolalloworiginlist: "*"
|
||||||
|
# TRAEFIK_PORT_1_END
|
||||||
healthcheck:
|
healthcheck:
|
||||||
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
@ -59,4 +59,4 @@ CFG_ONLYOFFICE_NETWORK=default
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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"
|
||||||
|
|||||||
@ -33,12 +33,14 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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: true
|
||||||
traefik.http.routers.owncloud-service.tls.certresolver: production
|
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.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
|
traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "/usr/bin/healthcheck"]
|
test: ["CMD", "/usr/bin/healthcheck"]
|
||||||
|
|||||||
@ -69,4 +69,4 @@ CFG_OWNCLOUD_NETWORK=default
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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"
|
||||||
|
|||||||
@ -20,12 +20,14 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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: true
|
||||||
traefik.http.routers.pihole-service.tls.certresolver: production
|
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.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:
|
environment:
|
||||||
- FTLCONF_LOCAL_IPV4=PUBLIC_IP_DATA #LIBREPORTAL|PUBLIC_IP_TAG|PUBLIC_IP_DATA
|
- FTLCONF_LOCAL_IPV4=PUBLIC_IP_DATA #LIBREPORTAL|PUBLIC_IP_TAG|PUBLIC_IP_DATA
|
||||||
- TZ=TIMEZONE_DATA #LIBREPORTAL|TIMEZONE_TAG|TIMEZONE_DATA
|
- TZ=TIMEZONE_DATA #LIBREPORTAL|TIMEZONE_TAG|TIMEZONE_DATA
|
||||||
|
|||||||
@ -70,7 +70,7 @@ CFG_PIHOLE_NETWORK=default
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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_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_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|"
|
CFG_PIHOLE_PORT_4="pihole-service|https|random:443|disabled|tcp|false|false|false|HTTPS Interface|"
|
||||||
|
|||||||
@ -21,12 +21,14 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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: true
|
||||||
traefik.http.routers.prometheus-service.tls.certresolver: production
|
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.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:
|
healthcheck:
|
||||||
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
@ -59,4 +59,4 @@ CFG_PROMETHEUS_NETWORK=default
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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"
|
||||||
|
|||||||
@ -16,12 +16,14 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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: true
|
||||||
traefik.http.routers.searxng-service.tls.certresolver: production
|
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.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:
|
cap_drop:
|
||||||
- ALL
|
- ALL
|
||||||
cap_add:
|
cap_add:
|
||||||
|
|||||||
@ -66,4 +66,4 @@ CFG_SEARXNG_NETWORK=default
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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"
|
||||||
|
|||||||
@ -24,12 +24,14 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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: true
|
||||||
traefik.http.routers.speedtest-service.tls.certresolver: production
|
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.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:
|
healthcheck:
|
||||||
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
@ -67,4 +67,4 @@ CFG_SPEEDTEST_NETWORK=default
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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"
|
||||||
|
|||||||
@ -22,13 +22,15 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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.service: api@internal
|
||||||
traefik.http.routers.traefik-service-dashboard.tls: true
|
traefik.http.routers.traefik-service-dashboard.tls: true
|
||||||
traefik.http.routers.traefik-service-dashboard.tls.certresolver: production
|
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.tls.options: modern@file
|
||||||
traefik.http.routers.traefik-service-dashboard.middlewares: MIDDLEWARE_DATA_1 #LIBREPORTAL|MIDDLEWARE_TAG_1|MIDDLEWARE_DATA_1
|
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
|
traefik.docker.network: DOCKER_NETWORK_DATA #LIBREPORTAL|DOCKER_NETWORK_TAG|DOCKER_NETWORK_DATA
|
||||||
healthcheck:
|
healthcheck:
|
||||||
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
||||||
|
|||||||
@ -80,7 +80,7 @@ CFG_TRAEFIK_NETWORK=default
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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_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|"
|
CFG_TRAEFIK_PORT_3="traefik-service|http|80:80|disabled|tcp|false|false|false|HTTP Traffic|"
|
||||||
|
|
||||||
|
|||||||
@ -16,12 +16,14 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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: true
|
||||||
traefik.http.routers.trilium-service.tls.certresolver: production
|
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.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:
|
healthcheck:
|
||||||
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
@ -59,4 +59,4 @@ CFG_TRILIUM_NETWORK=default
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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"
|
||||||
|
|||||||
@ -26,12 +26,14 @@ services:
|
|||||||
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA
|
||||||
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA
|
||||||
traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_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.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: true
|
||||||
traefik.http.routers.vaultwarden-service.tls.certresolver: production
|
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.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:
|
healthcheck:
|
||||||
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA
|
||||||
# GLUETUN_OFF_BEGIN
|
# GLUETUN_OFF_BEGIN
|
||||||
|
|||||||
@ -70,5 +70,5 @@ CFG_VAULTWARDEN_NETWORK=default
|
|||||||
# - webui: if true, this port serves the main web interface
|
# - webui: if true, this port serves the main web interface
|
||||||
# - description: human-readable description of the service
|
# - 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)|"
|
CFG_VAULTWARDEN_PORT_2="vaultwarden-exporter|metrics|3001:3001|disabled|tcp|false|false|false|Metrics Exporter (sidecar, docker-network only)|"
|
||||||
|
|||||||
@ -60,6 +60,15 @@ dockerConfigSetupFileWithData()
|
|||||||
# and Authelia takes precedence when installed.
|
# and Authelia takes precedence when installed.
|
||||||
tagsProcessorPortMiddlewares "$full_file_path" "$app_name"
|
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_<n> placeholder can never ship.
|
||||||
|
tagsProcessorPortRouterBlocks "$full_file_path" "$app_name"
|
||||||
|
|
||||||
tagsProcessorTraefikControl "$full_file_path" "$public"
|
tagsProcessorTraefikControl "$full_file_path" "$public"
|
||||||
tagsManagerUpdateUniversalTag "$full_file_path" "DOMAINSUBNAME_TAG" "$host_setup"
|
tagsManagerUpdateUniversalTag "$full_file_path" "DOMAINSUBNAME_TAG" "$host_setup"
|
||||||
|
|
||||||
|
|||||||
96
scripts/network/traefik/traefik_port_subdomains.sh
Normal file
96
scripts/network/traefik/traefik_port_subdomains.sh
Normal file
@ -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_<i>, this stamps a per-port DOMAINSUBNAME_TAG_<i> 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_<APP>_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" -> <domain> (apex / root of domain)
|
||||||
|
# subdomain "vault" -> vault.<domain> (single label)
|
||||||
|
# subdomain "admin.headscale" -> admin.headscale.<domain> (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_<idx> and DOMAINSUBNAME_TAG_<idx> 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_<n> placeholder can never reach a live compose. Each router
|
||||||
|
# is wrapped in # TRAEFIK_PORT_<n>_BEGIN ... # TRAEFIK_PORT_<n>_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"
|
||||||
|
}
|
||||||
@ -38,6 +38,7 @@ network_scripts=(
|
|||||||
"network/traefik/traefik_login_credentials.sh"
|
"network/traefik/traefik_login_credentials.sh"
|
||||||
"network/traefik/traefik_middlewares.sh"
|
"network/traefik/traefik_middlewares.sh"
|
||||||
"network/traefik/traefik_port_middlewares.sh"
|
"network/traefik/traefik_port_middlewares.sh"
|
||||||
|
"network/traefik/traefik_port_subdomains.sh"
|
||||||
"network/traefik/traefik_whitelist.sh"
|
"network/traefik/traefik_whitelist.sh"
|
||||||
"network/variables/basic_scan.sh"
|
"network/variables/basic_scan.sh"
|
||||||
"network/variables/headscale_variables.sh"
|
"network/variables/headscale_variables.sh"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user