From 7dee12c6a6556050bcad4d8f3f2cf11c4d1e0e02 Mon Sep 17 00:00:00 2001 From: Benjamin Stolz Date: Sun, 13 Sep 2026 00:18:11 +0200 Subject: [PATCH] add dns and local proxy, remove homepage and it-tools, add euro office --- cloud/docker-compose.override.yml | 6 ++ cloud/docker-compose.yml | 51 +++++++++++++++-- {homepage => dns}/autostart | 0 {it-tools => dns}/docker-compose.override.yml | 6 +- dns/docker-compose.yml | 19 +++++++ dns/name | 1 + game-servers/docker-compose.yml | 16 ++++++ homepage/docker-compose.override.yml | 13 ----- homepage/docker-compose.yml | 56 ------------------- homepage/name | 1 - immich/docker-compose.yml | 20 ++++--- it-tools/autostart | 1 - it-tools/docker-compose.yml | 33 ----------- it-tools/name | 1 - local-proxy/autostart | 1 + local-proxy/docker-compose.override.yml | 7 +++ local-proxy/docker-compose.yml | 53 ++++++++++++++++++ local-proxy/name | 1 + media-streaming/docker-compose.yml | 54 +++++++++++------- notetaking/docker-compose.yml | 28 ++++++++++ password-manager/docker-compose.yml | 18 ++++-- proxy/docker-compose.yml | 2 +- smart-home/docker-compose.yml | 14 +++-- time-tracking/docker-compose.yml | 18 ++++-- torrent/docker-compose.yml | 23 ++++---- version-control/docker-compose.yml | 26 ++++++--- 26 files changed, 291 insertions(+), 178 deletions(-) rename {homepage => dns}/autostart (100%) rename {it-tools => dns}/docker-compose.override.yml (61%) create mode 100644 dns/docker-compose.yml create mode 100644 dns/name delete mode 100644 homepage/docker-compose.override.yml delete mode 100644 homepage/docker-compose.yml delete mode 100644 homepage/name delete mode 100644 it-tools/autostart delete mode 100644 it-tools/docker-compose.yml delete mode 100644 it-tools/name create mode 100644 local-proxy/autostart create mode 100644 local-proxy/docker-compose.override.yml create mode 100644 local-proxy/docker-compose.yml create mode 100644 local-proxy/name diff --git a/cloud/docker-compose.override.yml b/cloud/docker-compose.override.yml index 643ad6b..dde2b74 100644 --- a/cloud/docker-compose.override.yml +++ b/cloud/docker-compose.override.yml @@ -23,3 +23,9 @@ services: net.unraid.docker.icon: 'https://raw.githubusercontent.com/linuxserver/docker-templates/refs/heads/master/linuxserver.io/img/nextcloud-icon.png' net.unraid.docker.webui: 'https://${DOMAIN}' net.unraid.docker.shell: '' + euro-office: + labels: + net.unraid.docker.managed: 'composeman' + net.unraid.docker.icon: 'https://raw.githubusercontent.com/linuxserver/docker-templates/refs/heads/master/linuxserver.io/img/nextcloud-icon.png' + net.unraid.docker.webui: 'https://${OFFICE_DOMAIN}' + net.unraid.docker.shell: '' diff --git a/cloud/docker-compose.yml b/cloud/docker-compose.yml index d02d0be..02f66fb 100644 --- a/cloud/docker-compose.yml +++ b/cloud/docker-compose.yml @@ -35,6 +35,7 @@ services: networks: - default - pangolin + - traefik_proxy labels: net.unraid.docker.icon: "https://raw.githubusercontent.com/linuxserver/docker-templates/refs/heads/master/linuxserver.io/img/nextcloud-icon.png" net.unraid.docker.webui: "https://${DOMAIN}" @@ -50,6 +51,15 @@ services: pangolin.public-resources.nextcloud-server.targets[0].hostname: "nextcloud-proxy" pangolin.public-resources.nextcloud-server.targets[0].port: 8080 + # local proxy + traefik.enable: true + traefik.http.services.cloud.loadbalancer.server.port: 8080 + traefik.http.routers.cloud.rule: "Host(`${DOMAIN}`)" + traefik.http.routers.cloud.entrypoints: websecure + traefik.http.routers.cloud.tls: true + traefik.http.routers.cloud.tls.certresolver: cloudflare + traefik.http.routers.cloud.tls.domains[0].main: "*.homecube.org" + app: image: nextcloud:34 container_name: nextcloud @@ -77,15 +87,44 @@ services: net.unraid.docker.icon: "https://raw.githubusercontent.com/linuxserver/docker-templates/refs/heads/master/linuxserver.io/img/nextcloud-icon.png" net.unraid.docker.webui: "https://${DOMAIN}" folder.view3: "Services" + + euro-office: + image: ghcr.io/euro-office/documentserver:latest + container_name: euro-office + networks: + - pangolin + - traefik_proxy + environment: + - JWT_ENABLED=true + - JWT_SECRET=${EURO_OFFICE_SECRET} + labels: + net.unraid.docker.icon: "https://raw.githubusercontent.com/linuxserver/docker-templates/refs/heads/master/linuxserver.io/img/nextcloud-icon.png" + net.unraid.docker.webui: "https://${OFFICE_DOMAIN}" + folder.view3: "Infrastructure" + + pangolin.public-resources.euro-office.name: "${OFFICE_RESOURCE_NAME}" + pangolin.public-resources.euro-office.full-domain: "${OFFICE_DOMAIN}" + pangolin.public-resources.euro-office.protocol: "http" - # HOMEPAGE - homepage.group: Cloud - homepage.name: Nextcloud - homepage.icon: nextcloud.png - homepage.href: "https://${DOMAIN}" - homepage.description: Files and collaboration + pangolin.public-resources.euro-office.auth.sso-enabled: false + + pangolin.public-resources.euro-office.targets[0].method: "http" + pangolin.public-resources.euro-office.targets[0].hostname: "euro-office" + pangolin.public-resources.euro-office.targets[0].port: 80 + + # local proxy + traefik.enable: true + traefik.http.services.office.loadbalancer.server.port: 80 + traefik.http.routers.office.rule: "Host(`${OFFICE_DOMAIN}`)" + traefik.http.routers.office.entrypoints: websecure + traefik.http.routers.office.tls: true + traefik.http.routers.office.tls.certresolver: cloudflare + traefik.http.routers.office.tls.domains[0].main: "*.homecube.org" networks: pangolin: name: pangolin_net external: true + + traefik_proxy: + external: true diff --git a/homepage/autostart b/dns/autostart similarity index 100% rename from homepage/autostart rename to dns/autostart diff --git a/it-tools/docker-compose.override.yml b/dns/docker-compose.override.yml similarity index 61% rename from it-tools/docker-compose.override.yml rename to dns/docker-compose.override.yml index e4eac6b..d59f76c 100644 --- a/it-tools/docker-compose.override.yml +++ b/dns/docker-compose.override.yml @@ -1,7 +1,7 @@ services: - it-tools: + adguardhome: labels: net.unraid.docker.managed: 'composeman' - net.unraid.docker.icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/it-tools.png' - net.unraid.docker.webui: 'https://tools.homecube.org/' + net.unraid.docker.icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/adguard-home.png' + net.unraid.docker.webui: 'http://10.0.0.10' net.unraid.docker.shell: '' diff --git a/dns/docker-compose.yml b/dns/docker-compose.yml new file mode 100644 index 0000000..23b5e72 --- /dev/null +++ b/dns/docker-compose.yml @@ -0,0 +1,19 @@ +services: + adguardhome: + image: adguard/adguardhome:latest + container_name: adguardhome + networks: + adguard_lan: + ipv4_address: 10.0.0.10 + volumes: + - /mnt/user/appdata/adguardhome/conf:/opt/adguardhome/conf + - /mnt/user/appdata/adguardhome/work:/opt/adguardhome/work + labels: + net.unraid.docker.icon: "https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/adguard-home.png" + net.unraid.docker.webui: "http://10.0.0.10" + folder.view3: "Networking" + +networks: + adguard_lan: + external: true + name: br0 diff --git a/dns/name b/dns/name new file mode 100644 index 0000000..01d7a5d --- /dev/null +++ b/dns/name @@ -0,0 +1 @@ +dns \ No newline at end of file diff --git a/game-servers/docker-compose.yml b/game-servers/docker-compose.yml index cbd9d72..463039b 100644 --- a/game-servers/docker-compose.yml +++ b/game-servers/docker-compose.yml @@ -66,6 +66,9 @@ services: - MAIL_FROM=${MAIL_FROM} volumes: - /mnt/user/appdata/pterodactyl-panel/data:/app/var/ + networks: + - default + - traefik_proxy ports: - "6001:80" depends_on: @@ -78,6 +81,15 @@ services: net.unraid.docker.webui: "https://game-servers.homecube.org" folder.view3: "Game Servers" + # local proxy + traefik.enable: true + traefik.http.services.game-servers.loadbalancer.server.port: 6001 + traefik.http.routers.game-servers.rule: "Host(`game-servers.homecube.org`)" + traefik.http.routers.game-servers.entrypoints: websecure + traefik.http.routers.game-servers.tls: true + traefik.http.routers.game-servers.tls.certresolver: cloudflare + traefik.http.routers.game-servers.tls.domains[0].main: "*.homecube.org" + pterodactyl-wings: image: ghcr.io/pterodactyl/wings:latest container_name: pterodactyl-wings @@ -98,3 +110,7 @@ services: labels: net.unraid.docker.icon: "https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/pterodactyl.png" folder.view3: "Game Servers" + +networks: + traefik_proxy: + external: true diff --git a/homepage/docker-compose.override.yml b/homepage/docker-compose.override.yml deleted file mode 100644 index ec59231..0000000 --- a/homepage/docker-compose.override.yml +++ /dev/null @@ -1,13 +0,0 @@ -services: - dockerproxy: - labels: - net.unraid.docker.managed: 'composeman' - net.unraid.docker.icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/homepage.png' - net.unraid.docker.webui: '' - net.unraid.docker.shell: '' - homepage: - labels: - net.unraid.docker.managed: 'composeman' - net.unraid.docker.icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/homepage.png' - net.unraid.docker.webui: 'https://${FULL_DOMAIN}' - net.unraid.docker.shell: '' diff --git a/homepage/docker-compose.yml b/homepage/docker-compose.yml deleted file mode 100644 index 904b275..0000000 --- a/homepage/docker-compose.yml +++ /dev/null @@ -1,56 +0,0 @@ -services: - dockerproxy: - image: ghcr.io/tecnativa/docker-socket-proxy:latest - container_name: homepage-dockerproxy - environment: - - CONTAINERS=1 # Allow access to viewing containers - - SERVICES=0 # Allow access to viewing services (necessary when using Docker Swarm) - - TASKS=0 # Allow access to viewing tasks (necessary when using Docker Swarm) - - POST=0 # Disallow any POST operations (effectively read-only) - volumes: - - /var/run/docker.sock:/var/run/docker.sock:ro # Mounted as read-only - labels: - net.unraid.docker.icon: "https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/homepage.png" - folder.view3: "Infrastructure" - - homepage: - image: ghcr.io/gethomepage/homepage:latest - container_name: homepage - environment: - HOMEPAGE_ALLOWED_HOSTS: "${FULL_DOMAIN},10.0.0.1:8027,cube.internal:8027" - PUID: 99 - PGID: 100 - ports: - - 8027:3000 - volumes: - - /mnt/user/appdata/homepage:/app/config - networks: - - default - - pangolin - labels: - net.unraid.docker.icon: "https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/homepage.png" - net.unraid.docker.webui: "https://${FULL_DOMAIN}" - folder.view3: "Services" - - pangolin.public-resources.gethomepage-homepage.name: "${RESOURCE_NAME}" - pangolin.public-resources.gethomepage-homepage.full-domain: "${FULL_DOMAIN}" - pangolin.public-resources.gethomepage-homepage.protocol: "http" - - pangolin.public-resources.gethomepage-homepage.auth.sso-enabled: true - pangolin.public-resources.gethomepage-homepage.auth.sso-roles[0]: "Member" - - pangolin.public-resources.gethomepage-homepage.targets[0].method: "http" - - pangolin.public-resources.gethomepage-homepage.targets[0].healthcheck.enabled: true - pangolin.public-resources.gethomepage-homepage.targets[0].healthcheck.hostname: "homepage" - pangolin.public-resources.gethomepage-homepage.targets[0].healthcheck.port: 3000 - pangolin.public-resources.gethomepage-homepage.targets[0].healthcheck.path: "/" - pangolin.public-resources.gethomepage-homepage.targets[0].healthcheck.method: "GET" - pangolin.public-resources.gethomepage-homepage.targets[0].healthcheck.status: 200 - pangolin.public-resources.gethomepage-homepage.targets[0].healthcheck.interval: 30 - pangolin.public-resources.gethomepage-homepage.targets[0].healthcheck.timeout: 5 - -networks: - pangolin: - name: pangolin_net - external: true diff --git a/homepage/name b/homepage/name deleted file mode 100644 index 01eab7e..0000000 --- a/homepage/name +++ /dev/null @@ -1 +0,0 @@ -homepage \ No newline at end of file diff --git a/immich/docker-compose.yml b/immich/docker-compose.yml index 178ea6b..b00c825 100644 --- a/immich/docker-compose.yml +++ b/immich/docker-compose.yml @@ -26,7 +26,6 @@ services: - ${UPLOAD_LOCATION}:/data - /mnt/user/volume1/photo:/mnt/media/master-library:ro # Mount External Library "Master Library" - /mnt/user/nextcloud-data/tonitrus/files/photos:/mnt/media/tonitrus-photos:ro # Mount External Library "Tonitrus Photos" - - /mnt/user/nextcloud-data/Purplebunny/files/photos:/mnt/media/purplebunny-photos:ro # Mount External Library "Purplebunny Photos" - /etc/localtime:/etc/localtime:ro ports: - "2283:2283" @@ -41,6 +40,7 @@ services: networks: - default - pangolin + - traefik_proxy labels: - net.unraid.docker.icon=https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/immich.png - net.unraid.docker.webui=https://${FULL_DOMAIN} @@ -53,6 +53,7 @@ services: - pangolin.public-resources.immich-server.auth.sso-enabled=true - pangolin.public-resources.immich-server.auth.sso-roles[0]=Member - pangolin.public-resources.immich-server.auth.whitelist-users[0]=katrin.lang@drei.at + - pangolin.public-resources.immich-server.auth.whitelist-users[1]=rainer.brandmaier@gmx.de - pangolin.public-resources.immich-server.targets[0].method=http @@ -72,12 +73,14 @@ services: - pangolin.public-resources.immich-server.rules[1].match=path - pangolin.public-resources.immich-server.rules[1].value=/.well-known/immich - # HOMEPAGE - - homepage.group=Media - - homepage.name=Immich - - homepage.icon=immich.png - - homepage.href=https://${FULL_DOMAIN} - - homepage.description=Photo management + # local proxy + - traefik.enable=true + - traefik.http.services.immich.loadbalancer.server.port=2283 + - traefik.http.routers.immich.rule=Host(`${FULL_DOMAIN}`) + - traefik.http.routers.immich.entrypoints=websecure + - traefik.http.routers.immich.tls=true + - traefik.http.routers.immich.tls.certresolver=cloudflare + - traefik.http.routers.immich.tls.domains[0].main=*.homecube.org immich-machine-learning: container_name: immich_machine_learning @@ -134,3 +137,6 @@ networks: pangolin: name: pangolin_net external: true + + traefik_proxy: + external: true diff --git a/it-tools/autostart b/it-tools/autostart deleted file mode 100644 index 02e4a84..0000000 --- a/it-tools/autostart +++ /dev/null @@ -1 +0,0 @@ -false \ No newline at end of file diff --git a/it-tools/docker-compose.yml b/it-tools/docker-compose.yml deleted file mode 100644 index c02f008..0000000 --- a/it-tools/docker-compose.yml +++ /dev/null @@ -1,33 +0,0 @@ -services: - it-tools: - image: corentinth/it-tools:latest - container_name: it-tools - networks: - - pangolin - labels: - - net.unraid.docker.icon=https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/it-tools.png - - net.unraid.docker.webui=https://${FULL_DOMAIN} - - folder.view3=Services - - - pangolin.public-resources.it-tools.name=IT-Tools - - pangolin.public-resources.it-tools.full-domain=${FULL_DOMAIN} - - pangolin.public-resources.it-tools.protocol=http - - - pangolin.public-resources.it-tools.auth.sso-enabled=true - - pangolin.public-resources.it-tools.auth.sso-roles[0]=Member - - - pangolin.public-resources.it-tools.targets[0].method=http - - - pangolin.public-resources.it-tools.targets[0].healthcheck.enabled=true - - pangolin.public-resources.it-tools.targets[0].healthcheck.hostname=it-tools - - pangolin.public-resources.it-tools.targets[0].healthcheck.port=80 - - pangolin.public-resources.it-tools.targets[0].healthcheck.path=/ - - pangolin.public-resources.it-tools.targets[0].healthcheck.method=GET - - pangolin.public-resources.it-tools.targets[0].healthcheck.status=200 - - pangolin.public-resources.it-tools.targets[0].healthcheck.interval=30 - - pangolin.public-resources.it-tools.targets[0].healthcheck.timeout=5 - -networks: - pangolin: - name: pangolin_net - external: true diff --git a/it-tools/name b/it-tools/name deleted file mode 100644 index b9ea027..0000000 --- a/it-tools/name +++ /dev/null @@ -1 +0,0 @@ -it-tools \ No newline at end of file diff --git a/local-proxy/autostart b/local-proxy/autostart new file mode 100644 index 0000000..f32a580 --- /dev/null +++ b/local-proxy/autostart @@ -0,0 +1 @@ +true \ No newline at end of file diff --git a/local-proxy/docker-compose.override.yml b/local-proxy/docker-compose.override.yml new file mode 100644 index 0000000..c410caa --- /dev/null +++ b/local-proxy/docker-compose.override.yml @@ -0,0 +1,7 @@ +services: + traefik: + labels: + net.unraid.docker.managed: 'composeman' + net.unraid.docker.icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/traefik-light.png' + net.unraid.docker.webui: '' + net.unraid.docker.shell: '' diff --git a/local-proxy/docker-compose.yml b/local-proxy/docker-compose.yml new file mode 100644 index 0000000..f1a5c9f --- /dev/null +++ b/local-proxy/docker-compose.yml @@ -0,0 +1,53 @@ +services: + traefik: + image: traefik:v3.7 + container_name: traefik + security_opt: + - no-new-privileges:true + networks: + traefik_lan: + ipv4_address: 10.0.0.11 + traefik_proxy: + environment: + CF_DNS_API_TOKEN: ${CF_DNS_API_TOKEN} + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + - /mnt/user/appdata/traefik/letsencrypt:/letsencrypt + command: + # Docker provider + - "--providers.docker=true" + - "--providers.docker.exposedbydefault=false" + - "--providers.docker.network=traefik_proxy" + + # HTTP + - "--entrypoints.web.address=:80" + - "--entrypoints.web.http.redirections.entrypoint.to=websecure" + - "--entrypoints.web.http.redirections.entrypoint.scheme=https" + - "--entrypoints.web.http.redirections.entrypoint.permanent=true" + + # HTTPS + - "--entrypoints.websecure.address=:443" + + # Other + - "--entrypoints.gitea-ssh.address=:222" + + # Let's Encrypt / Cloudflare DNS-01 + - "--certificatesresolvers.cloudflare.acme.email=${ACME_EMAIL}" + - "--certificatesresolvers.cloudflare.acme.storage=/letsencrypt/acme.json" + - "--certificatesresolvers.cloudflare.acme.dnschallenge=true" + - "--certificatesresolvers.cloudflare.acme.dnschallenge.provider=cloudflare" + + # Logging + - "--log.level=INFO" + - "--accesslog=true" + labels: + net.unraid.docker.icon: "https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/traefik-light.png" + folder.view3: "Networking" + +networks: + traefik_lan: + external: true + name: br0 + + traefik_proxy: + external: true diff --git a/local-proxy/name b/local-proxy/name new file mode 100644 index 0000000..9fc9aa5 --- /dev/null +++ b/local-proxy/name @@ -0,0 +1 @@ +local-proxy \ No newline at end of file diff --git a/media-streaming/docker-compose.yml b/media-streaming/docker-compose.yml index 3ce1ecf..fdd6183 100644 --- a/media-streaming/docker-compose.yml +++ b/media-streaming/docker-compose.yml @@ -22,6 +22,8 @@ services: - /mnt/user/jellyfin-media/tv-shows:/media - /mnt/user/jellyfin-media/movies:/media2 - /mnt/user/jellyfin-media/books:/media3 + networks: + - traefik_proxy ports: - 8096:8096 - 7359:7359/udp # auto-discovery @@ -30,21 +32,15 @@ services: net.unraid.docker.icon: "https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/jellyfin.png" net.unraid.docker.webui: "https://${JELLYFIN_FULL_DOMAIN}" folder.view3: "Services" - - # HOMEPAGE - homepage.group: Media - homepage.name: Jellyfin - homepage.icon: jellyfin.png - homepage.href: "https://${JELLYFIN_FULL_DOMAIN}" - homepage.description: Media server - # widget - homepage.widget.type: jellyfin - homepage.widget.version: 2 - homepage.widget.enableBlocks: true - homepage.widget.enableMediaControl: false - homepage.widget.expandOneStreamToTwoRows: false - homepage.widget.url: http://10.0.0.1:8096 - homepage.widget.key: ${JELLYFIN_API_KEY} + + # local proxy + traefik.enable: true + traefik.http.services.tv.loadbalancer.server.port: 8096 + traefik.http.routers.tv.rule: "Host(`${JELLYFIN_FULL_DOMAIN}`)" + traefik.http.routers.tv.entrypoints: websecure + traefik.http.routers.tv.tls: true + traefik.http.routers.tv.tls.certresolver: cloudflare + traefik.http.routers.tv.tls.domains[0].main: "*.homecube.org" lms: image: epoupon/lms @@ -57,6 +53,7 @@ services: - /mnt/user/nextcloud-data/tonitrus/files/music:/music:ro networks: - pangolin + - traefik_proxy labels: net.unraid.docker.icon: "https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/lyrion-music-server.png" net.unraid.docker.webui: "https://${LMS_FULL_DOMAIN}" @@ -84,12 +81,14 @@ services: pangolin.public-resources.lightweight-music-server.rules[0].match: "path" pangolin.public-resources.lightweight-music-server.rules[0].value: "/rest/*" # OpenSubsonicAPI - # HOMEPAGE - homepage.group: Media - homepage.name: LMS - homepage.icon: navidrome.png - homepage.href: "https://${LMS_FULL_DOMAIN}" - homepage.description: Lightweight Music Server + # local proxy + traefik.enable: true + traefik.http.services.music.loadbalancer.server.port: 5082 + traefik.http.routers.music.rule: "Host(`${LMS_FULL_DOMAIN}`)" + traefik.http.routers.music.entrypoints: websecure + traefik.http.routers.music.tls: true + traefik.http.routers.music.tls.certresolver: cloudflare + traefik.http.routers.music.tls.domains[0].main: "*.homecube.org" lms2: image: epoupon/lms @@ -102,6 +101,7 @@ services: - /mnt/user/volume1/music:/music:ro networks: - pangolin + - traefik_proxy labels: net.unraid.docker.icon: "https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/lyrion-music-server.png" net.unraid.docker.webui: "https://${LMS_FULL_DOMAIN_2}" @@ -129,7 +129,19 @@ services: pangolin.public-resources.lightweight-music-server-2.rules[0].match: "path" pangolin.public-resources.lightweight-music-server-2.rules[0].value: "/rest/*" # OpenSubsonicAPI + # local proxy + traefik.enable: true + traefik.http.services.music2.loadbalancer.server.port: 5082 + traefik.http.routers.music2.rule: "Host(`${LMS_FULL_DOMAIN_2}`)" + traefik.http.routers.music2.entrypoints: websecure + traefik.http.routers.music2.tls: true + traefik.http.routers.music2.tls.certresolver: cloudflare + traefik.http.routers.music2.tls.domains[0].main: "*.homecube.org" + networks: pangolin: name: pangolin_net external: true + + traefik_proxy: + external: true diff --git a/notetaking/docker-compose.yml b/notetaking/docker-compose.yml index cf04b78..6e0098a 100644 --- a/notetaking/docker-compose.yml +++ b/notetaking/docker-compose.yml @@ -14,6 +14,9 @@ services: - /mnt/user/appdata/couchdb-obsidian-livesync/etc/local.d:/opt/couchdb/etc/local.d ports: - "5984:5984" + networks: + - default + - traefik_proxy restart: unless-stopped labels: net.unraid.docker.icon: "https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/couchdb.png" @@ -21,6 +24,15 @@ services: net.unraid.docker.shell: bash folder.view3: "Databases" + # local proxy + traefik.enable: true + traefik.http.services.obsidian.loadbalancer.server.port: 5984 + traefik.http.routers.obsidian.rule: "Host(`obsidian.homecube.org`)" + traefik.http.routers.obsidian.entrypoints: websecure + traefik.http.routers.obsidian.tls: true + traefik.http.routers.obsidian.tls.certresolver: cloudflare + traefik.http.routers.obsidian.tls.domains[0].main: "*.homecube.org" + obsidian: image: lscr.io/linuxserver/obsidian:latest container_name: obsidian @@ -32,9 +44,25 @@ services: - /mnt/user/appdata/obsidian/config:/config ports: - 3000:3000 + networks: + - default + - traefik_proxy shm_size: "1gb" labels: net.unraid.docker.webui: "https://notes.obsidian.homecube.org" net.unraid.docker.icon: "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/obsidian-logo.png" net.unraid.docker.shell: bash folder.view3: "Services" + + # local proxy + traefik.enable: true + traefik.http.services.notes-obsidian.loadbalancer.server.port: 3000 + traefik.http.routers.notes-obsidian.rule: "Host(`notes.obsidian.homecube.org`)" + traefik.http.routers.notes-obsidian.entrypoints: websecure + traefik.http.routers.notes-obsidian.tls: true + traefik.http.routers.notes-obsidian.tls.certresolver: cloudflare + traefik.http.routers.notes-obsidian.tls.domains[0].main: "*.homecube.org" + +networks: + traefik_proxy: + external: true diff --git a/password-manager/docker-compose.yml b/password-manager/docker-compose.yml index a6a1944..c07bd60 100644 --- a/password-manager/docker-compose.yml +++ b/password-manager/docker-compose.yml @@ -4,6 +4,7 @@ services: container_name: vaultwarden networks: - pangolin + - traefik_proxy environment: DOMAIN: "https://${DOMAIN}" ADMIN_TOKEN: ${VAULTWARDEN_ADMIN_TOKEN} @@ -45,14 +46,19 @@ services: pangolin.public-resources.vaultwarden-server.rules[3].match: "path" pangolin.public-resources.vaultwarden-server.rules[3].value: "/admin/*" - # HOMEPAGE - homepage.group: Security - homepage.name: "${RESOURCE_NAME}" - homepage.icon: vaultwarden.png - homepage.href: "https://${DOMAIN}" - homepage.description: Password Manager + # local proxy + traefik.enable: true + traefik.http.services.vaultwarden.loadbalancer.server.port: 80 + traefik.http.routers.vaultwarden.rule: "Host(`${DOMAIN}`)" + traefik.http.routers.vaultwarden.entrypoints: websecure + traefik.http.routers.vaultwarden.tls: true + traefik.http.routers.vaultwarden.tls.certresolver: cloudflare + traefik.http.routers.vaultwarden.tls.domains[0].main: "*.homecube.org" networks: pangolin: name: pangolin_net external: true + + traefik_proxy: + external: true diff --git a/proxy/docker-compose.yml b/proxy/docker-compose.yml index e58f689..05d4d27 100644 --- a/proxy/docker-compose.yml +++ b/proxy/docker-compose.yml @@ -1,6 +1,6 @@ services: newt: - image: fosrl/newt:1.14.0 + image: fosrl/newt:1.16.0 networks: - pangolin container_name: newt diff --git a/smart-home/docker-compose.yml b/smart-home/docker-compose.yml index 9170db0..f21b280 100644 --- a/smart-home/docker-compose.yml +++ b/smart-home/docker-compose.yml @@ -14,12 +14,14 @@ services: net.unraid.docker.webui: "https://home-assistant.homecube.org" folder.view3: "Services" - # HOMEPAGE - homepage.group: Infrastructure - homepage.name: Home Assistant - homepage.icon: home-assistant.png - homepage.href: https://home-assistant.homecube.org - homepage.description: Smart Home + # local proxy + traefik.enable: true + traefik.http.routers.home-assistant.rule: "Host(`home-assistant.homecube.org`)" + traefik.http.routers.home-assistant.entrypoints: websecure + traefik.http.routers.home-assistant.tls: true + traefik.http.routers.home-assistant.tls.certresolver: cloudflare + traefik.http.routers.home-assistant.tls.domains[0].main: "*.homecube.org" + traefik.http.services.home-assistant.loadbalancer.server.url: "http://10.0.0.1:8123" # hass_otbr: # container_name: hass_otbr diff --git a/time-tracking/docker-compose.yml b/time-tracking/docker-compose.yml index 012e03b..1724b4f 100644 --- a/time-tracking/docker-compose.yml +++ b/time-tracking/docker-compose.yml @@ -29,6 +29,7 @@ services: networks: - default - pangolin + - traefik_proxy environment: - ADMINMAIL=${ADMIN_EMAIL} - ADMINPASS=${ADMIN_PASSWORD} @@ -60,14 +61,19 @@ services: pangolin.public-resources.kimai-time-tracking.targets[0].healthcheck.interval: 30 pangolin.public-resources.kimai-time-tracking.targets[0].healthcheck.timeout: 5 - # HOMEPAGE - homepage.group: Productivity - homepage.name: Kimai - homepage.icon: kimai.png - homepage.href: https://${DOMAIN} - homepage.description: Time Tracking + # local proxy + traefik.enable: true + traefik.http.services.kimai.loadbalancer.server.port: 8001 + traefik.http.routers.kimai.rule: "Host(`${DOMAIN}`)" + traefik.http.routers.kimai.entrypoints: websecure + traefik.http.routers.kimai.tls: true + traefik.http.routers.kimai.tls.certresolver: cloudflare + traefik.http.routers.kimai.tls.domains[0].main: "*.homecube.org" networks: pangolin: name: pangolin_net external: true + + traefik_proxy: + external: true diff --git a/torrent/docker-compose.yml b/torrent/docker-compose.yml index 76428cb..dcc96ee 100644 --- a/torrent/docker-compose.yml +++ b/torrent/docker-compose.yml @@ -8,6 +8,7 @@ services: - /dev/net/tun:/dev/net/tun networks: - pangolin + - traefik_proxy ports: - 47965:47965 - 47965:47965/udp @@ -55,6 +56,15 @@ services: pangolin.public-resources.qbittorrent-torrent.targets[0].healthcheck.interval: 30 pangolin.public-resources.qbittorrent-torrent.targets[0].healthcheck.timeout: 5 + # local proxy + traefik.enable: true + traefik.http.services.torrent.loadbalancer.server.port: 8080 + traefik.http.routers.torrent.rule: "Host(`${DOMAIN}`)" + traefik.http.routers.torrent.entrypoints: websecure + traefik.http.routers.torrent.tls: true + traefik.http.routers.torrent.tls.certresolver: cloudflare + traefik.http.routers.torrent.tls.domains[0].main: "*.homecube.org" + qbittorrent: image: lscr.io/linuxserver/qbittorrent:latest container_name: qbittorrent @@ -74,17 +84,10 @@ services: net.unraid.docker.icon: "https://raw.githubusercontent.com/linuxserver/docker-templates/refs/heads/master/linuxserver.io/img/qbittorrent-icon.png" folder.view3: "Services" - # HOMEPAGE - homepage.group: Downloads - homepage.name: qBittorrent - homepage.icon: qbittorrent.png - homepage.href: https://${DOMAIN} - homepage.description: Torrents - # widget - homepage.widget.type: qbittorrent - homepage.widget.url: http://10.0.0.1:8080 - networks: pangolin: name: pangolin_net external: true + + traefik_proxy: + external: true diff --git a/version-control/docker-compose.yml b/version-control/docker-compose.yml index c362426..aaceaf0 100644 --- a/version-control/docker-compose.yml +++ b/version-control/docker-compose.yml @@ -5,6 +5,7 @@ services: networks: - default - pangolin + - traefik_proxy environment: - USER_UID=1000 - USER_GID=1000 @@ -65,13 +66,21 @@ services: pangolin.public-resources.gitea-version-control-ssh.targets[0].hostname: "gitea" pangolin.public-resources.gitea-version-control-ssh.targets[0].port: 22 - # HOMEPAGE - homepage.group: Development - homepage.name: Gitea - homepage.icon: gitea.png - homepage.href: "https://${DOMAIN}" - homepage.description: Git server - + # local proxy + traefik.enable: true + traefik.http.services.gitea.loadbalancer.server.port: 3000 + traefik.http.routers.gitea.rule: "Host(`${DOMAIN}`)" + traefik.http.routers.gitea.entrypoints: websecure + traefik.http.routers.gitea.tls: true + traefik.http.routers.gitea.tls.certresolver: cloudflare + traefik.http.routers.gitea.tls.domains[0].main: "*.homecube.org" + + # local SSH + traefik.tcp.routers.gitea-ssh.entrypoints: gitea-ssh + traefik.tcp.routers.gitea-ssh.rule: "HostSNI(`*`)" + traefik.tcp.routers.gitea-ssh.service: gitea-ssh + traefik.tcp.services.gitea-ssh.loadbalancer.server.port: 22 + runner: image: docker.io/gitea/act_runner:latest container_name: gitea-runner @@ -97,3 +106,6 @@ networks: pangolin: name: pangolin_net external: true + + traefik_proxy: + external: true