commit c1e489cadf2da90ad79ced4f98ad2dfeb68a24a7 Author: Keith Solomon Date: Fri Jul 17 18:31:50 2026 -0500 Initial commit diff --git a/authelia/config/configuration.yml b/authelia/config/configuration.yml new file mode 100644 index 0000000..2a8fb45 --- /dev/null +++ b/authelia/config/configuration.yml @@ -0,0 +1,89 @@ +--- +theme: dark + +server: + address: tcp://0.0.0.0:9091 + buffers: + read: 65536 + write: 65536 + +log: + level: info + format: text + file_path: /var/log/authelia/authelia.log + keep_stdout: true + +access_control: + default_policy: deny + networks: + - name: internal + networks: + - 192.168.2.0/24 + rules: + # Internal LAN can bypass auth for *.keithsolomon.net + - domain: "*.keithsolomon.net" + policy: bypass + networks: + - internal + + # Everything else hitting *.keithsolomon.net must at least single-factor auth + - domain: "*.keithsolomon.net" + policy: one_factor + +totp: + issuer: "keithsolomon.net" + period: 30 + skew: 1 + +authentication_backend: + refresh_interval: 5m + password_reset: + disable: false + file: + path: /config/users_database.yml + password: + algorithm: argon2id + iterations: 3 + salt_length: 16 + parallelism: 4 + memory: 65536 + +session: + name: authelia_session + secret: "{{ env `AUTHELIA_SESSION_SECRET` }}" + inactivity: 5d + expiration: 30d + remember_me: 30d + cookies: + - domain: "keithsolomon.net" + authelia_url: "https://auth.keithsolomon.net" + default_redirection_url: "https://keithsolomon.net" + name: "authelia_session" + inactivity: 5d + expiration: 30d + remember_me: 60d + +regulation: + max_retries: 5 + find_time: 120m + ban_time: 300m + +storage: + encryption_key: "{{ env `AUTHELIA_STORAGE_ENCRYPTION_KEY` }}" + local: + path: /config/db.sqlite3 + +notifier: + smtp: + address: submission://smtp.gmail.com:587 + username: "ksolomon@gmail.com" + sender: "ksolomon+authelia@gmail.com" + password: "jrbjskxtxcftkqsj" + subject: "[Authelia] %s" + +ntp: + address: time.cloudflare.com:123 + version: 3 + max_desync: 3s + disable_startup_check: false + disable_failure: false diff --git a/authelia/config/users_database.yml b/authelia/config/users_database.yml new file mode 100644 index 0000000..ff88adb --- /dev/null +++ b/authelia/config/users_database.yml @@ -0,0 +1,9 @@ +users: + keith: + disabled: false + displayname: 'Keith' + # to generate, run docker run authelia/authelia:latest authelia crypto hash generate argon2 -i 1 -p 8 -v argon2id --password your-password + password: '$argon2id$v=19$m=65536,t=1,p=8$RhfsQk15MuBOXOXVxKHAVw$s4aeGIpNi7V8ps96ATXSx8eBU2wJnmJS/kB0+hYhHqs' + email: 'keith@keithsolomon.net' + groups: + - 'admins' diff --git a/backups/config.yml b/backups/config.yml new file mode 100644 index 0000000..c8b1901 --- /dev/null +++ b/backups/config.yml @@ -0,0 +1,85 @@ +--- +theme: dark + +server: + address: tcp://0.0.0.0:9091 + buffers: + read: 65536 + write: 65536 + +access_control: + default_policy: deny + networks: + - name: internal + networks: + - 192.168.2.0/24 + rules: + - domain: "*.keithsolomon.net" + policy: bypass + networks: + - internal + - domain: "*.keithsolomon.net" + policy: one_factor + +log: + level: info + file_path: /logs/authelia.log + format: json + keep_stdout: true + +identity_validation: + reset_password: + jwt_secret: "{{ env `AUTHELIA_JWT_SECRET` }}" + +#default_redirection_url: https://auth.keithsolomon.net + +totp: + issuer: authelia.com + +# docker run authelia/authelia:latest authelia hash-password 'yourpassword' +authentication_backend: + refresh_interval: 5m + file: + path: /config/users_database.yml + password: + algorithm: argon2id + iterations: 1 + salt_length: 16 + parallelism: 8 + memory: 64 + +session: + name: authelia_session + inactivity: 5d # 5 day + expiration: 30d # 1 h + remember_me: 30d + cookies: + - domain: 'keithsolomon.net' + authelia_url: 'https://auth.keithsolomon.net' + default_redirection_url: 'https://keithsolomon.net' + name: 'authelia_session' + inactivity: 5d # 5 days + expiration: 30d # 30 days + remember_me: 60d # 60 days + +regulation: + max_retries: 5 + find_time: 120m + ban_time: 300m + +storage: + local: + path: /config/db.sqlite3 + +notifier: + smtp: + address: submission://smtp.gmail.com:587 + username: ksolomon@gmail.com + sender: ksolomon+authelia@gmail.com + +ntp: + address: time.cloudflare.com:123 + version: 3 + max_desync: 3s + disable_startup_check: false + disable_failure: false diff --git a/backups/configuration.yml b/backups/configuration.yml new file mode 100644 index 0000000..30bd8b2 --- /dev/null +++ b/backups/configuration.yml @@ -0,0 +1,87 @@ +--- +theme: dark + +server: + address: tcp://0.0.0.0:9091 + buffers: + read: 65536 + write: 65536 + +access_control: + default_policy: deny + networks: + - name: internal + networks: + - 192.168.2.0/24 + rules: + - domain: "*.keithsolomon.net" + policy: bypass + networks: + - internal + - domain: "*.keithsolomon.net" + policy: one_factor + +log: + level: info + file_path: /logs/authelia.log + format: json + keep_stdout: true + +#default_redirection_url: https://auth.keithsolomon.net + +totp: + issuer: authelia.com + +identity_validation: + reset_password: + jwt_secret: "{{ env `AUTHELIA_JWT_SECRET` }}" + +# docker run authelia/authelia:latest authelia hash-password 'yourpassword' +authentication_backend: + refresh_interval: 5m + file: + path: /config/users_database.yml + password: + algorithm: argon2id + iterations: 1 + salt_length: 16 + parallelism: 8 + memory: 64 + +session: + name: authelia_session + secret: "{{ env `AUTHELIA_SESSION_SECRET` }}" + inactivity: 5d # 5 days + expiration: 30d # 30 days + remember_me: 60d # 60 days + cookies: + - domain: 'keithsolomon.net' + authelia_url: 'https://auth.keithsolomon.net' + default_redirection_url: 'https://keithsolomon.net' + name: 'authelia_session' + inactivity: 5d # 5 days + expiration: 30d # 30 days + remember_me: 60d # 60 days + +regulation: + max_retries: 5 + find_time: 120m + ban_time: 300m + +storage: + encryption_key: "{{ env `AUTHELIA_STORAGE_ENCRYPTION_KEY` }}" + local: + path: /config/db.sqlite3 + +notifier: + smtp: + address: submission://smtp.gmail.com:587 + username: ksolomon@gmail.com + sender: ksolomon+authelia@gmail.com + +ntp: + address: time.cloudflare.com:123 + version: 3 + max_desync: 3s + disable_startup_check: false + disable_failure: false diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..7fd1033 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,127 @@ +services: + traefik: + container_name: Traefik + image: traefik:latest + restart: always + + networks: + traefik_macvlan: + ipv4_address: 192.168.2.253 # Traefik's LAN IP + proxy: {} + + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + - ./traefik/traefik.yml:/traefik.yml:ro + - ./traefik/config:/traefik_config + - ./traefik/config/otlp.htpasswd:/etc/traefik/otlp.htpasswd:ro + - ./traefik/cert:/traefik_cert + - ./traefik/logs:/logs + + environment: + - TZ=America/Winnipeg + - CLOUDFLARE_API_KEY=${CLOUDFLARE_API_KEY} + - CLOUDFLARE_EMAIL=${CLOUDFLARE_EMAIL} + + labels: + - "traefik.enable=true" + + # Dashboard (behind Authelia) + - "traefik.http.routers.traefik.rule=Host(`tfk.keithsolomon.net`)" + - "traefik.http.routers.traefik.entrypoints=https" + - "traefik.http.routers.traefik.tls.certresolver=cloudflare" + - "traefik.http.routers.traefik.service=api@internal" + - "traefik.http.routers.traefik.middlewares=authelia@docker" + + authelia: + container_name: Authelia + restart: always + image: authelia/authelia:latest + + command: --config /config/configuration.yml + + networks: + - proxy + + volumes: + - ./authelia/config:/config + - ./authelia/secrets:/secrets:ro + - ./authelia/logs:/var/log/authelia + + environment: + - TZ=America/Winnipeg + - X_AUTHELIA_CONFIG_FILTERS=template + - AUTHELIA_SESSION_SECRET=${AUTHELIA_SESSION_SECRET} + - AUTHELIA_STORAGE_ENCRYPTION_KEY=${AUTHELIA_STORAGE_ENCRYPTION_KEY} + - AUTHELIA_LOG_LEVEL=debug + - AUTHELIA_IDENTITY_VALIDATION_RESET_PASSWORD_JWT_SECRET=${AUTHELIA_IDENTITY_VALIDATION_RESET_PASSWORD_JWT_SECRET} + + labels: + - "traefik.enable=true" + - "traefik.docker.network=proxy" + - "traefik.http.routers.authelia.rule=Host(`auth.keithsolomon.net`)" + - "traefik.http.routers.authelia.entrypoints=https" + - "traefik.http.routers.authelia.tls.certresolver=cloudflare" + + - "traefik.http.middlewares.authelia.forwardAuth.address=http://authelia:9091/api/authz/forward-auth" + - "traefik.http.middlewares.authelia.forwardAuth.trustForwardHeader=true" + - "traefik.http.middlewares.authelia.forwardAuth.authResponseHeaders=Remote-User,Remote-Groups,Remote-Name,Remote-Email" + + traefik-gui: + container_name: Traefik-GUI + restart: always + image: ghcr.io/rahn-it/traefik-gui:master + + networks: + - proxy + + volumes: + - ./traefik-gui/db:/app/db + - ./traefik/config:/app/traefik + + environment: + - TZ=America/Winnipeg + + labels: + - "traefik.enable=true" + - "traefik.docker.network=proxy" + - "traefik.http.routers.traefik-gui.rule=Host(`tfk-admin.keithsolomon.net`)" + - "traefik.http.routers.traefik-gui.entrypoints=https" + - "traefik.http.routers.traefik-gui.tls.certresolver=cloudflare" + - "traefik.http.routers.traefik-gui.middlewares=authelia@docker" + + traefik-manager: + container_name: traefik-manager + restart: unless-stopped + image: ghcr.io/chr0nzz/traefik-manager:latest + + environment: + - COOKIE_SECURE=false + - TZ=America/Winnipeg + + labels: + - "traefik.enable=true" + - "traefik.docker.network=proxy" + - "traefik.http.routers.traefik-manager.rule=Host(`tfkman.keithsolomon.net`)" + - "traefik.http.routers.traefik-manager.entrypoints=https" + - "traefik.http.routers.traefik-manager.tls.certresolver=cloudflare" + - "traefik.http.services.traefik-manager.loadbalancer.server.port=5000" + # - "traefik.http.routers.traefik-manager.middlewares=authelia@docker" + + networks: + - traefik_macvlan + - proxy + + ports: + - "5000:5000" + + volumes: + - ./traefik/config/gui.yml:/app/config/dynamic.yml + - ./traefik-manager/config:/app/config + - ./traefik-manager/backups:/app/backups + +networks: + traefik_macvlan: + external: true + proxy: + name: proxy + driver: bridge diff --git a/traefik-gui/db/config.yaml b/traefik-gui/db/config.yaml new file mode 100644 index 0000000..1a4bca3 --- /dev/null +++ b/traefik-gui/db/config.yaml @@ -0,0 +1 @@ +acme_provider_name: cloudflare diff --git a/traefik-gui/db/db.sqlite b/traefik-gui/db/db.sqlite new file mode 100644 index 0000000..ec56dbf Binary files /dev/null and b/traefik-gui/db/db.sqlite differ diff --git a/traefik-gui/db/db.sqlite-shm b/traefik-gui/db/db.sqlite-shm new file mode 100644 index 0000000..119171c Binary files /dev/null and b/traefik-gui/db/db.sqlite-shm differ diff --git a/traefik-gui/db/db.sqlite-wal b/traefik-gui/db/db.sqlite-wal new file mode 100644 index 0000000..a6babfe Binary files /dev/null and b/traefik-gui/db/db.sqlite-wal differ diff --git a/traefik-manager/backups/dynamic.yml.20260713_210522.bak b/traefik-manager/backups/dynamic.yml.20260713_210522.bak new file mode 100644 index 0000000..de081f6 --- /dev/null +++ b/traefik-manager/backups/dynamic.yml.20260713_210522.bak @@ -0,0 +1,232 @@ +http: + routers: + gui-https-10-CommaFeed: + rule: ( Host(`commafeed.keithsolomon.net`) ) + service: gui-https-10-CommaFeed + tls: + certResolver: cloudflare + gui-https-11-OpenGist: + rule: ( Host(`gist.keithsolomon.net`) ) + service: gui-https-11-OpenGist + tls: + certResolver: cloudflare + gui-https-12-PromptBase: + rule: ( Host(`prompts.keithsolomon.net`) ) + service: gui-https-12-PromptBase + tls: + certResolver: cloudflare + gui-https-13-Uptime-Kuma: + rule: ( Host(`kuma.keithsolomon.net`) ) + service: gui-https-13-Uptime-Kuma + tls: + certResolver: cloudflare + gui-https-14-Emby: + rule: ( Host(`emby.keithsolomon.net`) ) + service: gui-https-14-Emby + tls: + certResolver: cloudflare + gui-https-15-Plex: + rule: ( Host(`plex.keithsolomon.net`) ) + service: gui-https-15-Plex + tls: + certResolver: cloudflare + gui-https-18-Termix: + rule: ( Host(`term.keithsolomon.net`) ) + service: gui-https-18-Termix + tls: + certResolver: cloudflare + gui-https-19-BillTrak: + rule: ( Host(`bills.keithsolomon.net`) ) + service: gui-https-19-BillTrak + tls: + certResolver: cloudflare + gui-https-2-Calibre: + rule: ( Host(`cwa.keithsolomon.net`) ) + service: gui-https-2-Calibre + tls: + certResolver: cloudflare + gui-https-21-Tautulli: + rule: ( Host(`tautulli.keithsolomon.net`) ) + service: gui-https-21-Tautulli + tls: + certResolver: cloudflare + gui-https-22-Listenarr: + rule: ( Host(`listen.keithsolomon.net`) ) + service: gui-https-22-Listenarr + tls: + certResolver: cloudflare + gui-https-23-Seerr: + rule: ( Host(`seerr.keithsolomon.net`) ) + service: gui-https-23-Seerr + tls: + certResolver: cloudflare + gui-https-24-Ironpad: + rule: ( Host(`pm.keithsolomon.net`) ) + service: gui-https-24-Ironpad + tls: + certResolver: cloudflare + gui-https-25-A11y Tester: + rule: ( Host(`pw-a11y.keithsolomon.net`) ) + service: gui-https-25-A11y Tester + tls: + certResolver: cloudflare + gui-https-26-Beszel: + rule: ( Host(`beszel.keithsolomon.net`) ) + service: gui-https-26-Beszel + tls: + certResolver: cloudflare + gui-https-27-FoundryVTT: + rule: ( Host(`foundry.keithsolomon.net`) ) + service: gui-https-27-FoundryVTT + tls: + certResolver: cloudflare + gui-https-28-SolidTime: + rule: ( Host(`time.keithsolomon.net`) ) + service: gui-https-28-SolidTime + tls: + certResolver: cloudflare + gui-https-29-Grafana: + rule: ( Host(`grafana.keithsolomon.net`) ) + service: gui-https-29-Grafana + tls: + certResolver: cloudflare + gui-https-3-KaraKeep: + rule: ( Host(`kara.keithsolomon.net`) ) + service: gui-https-3-KaraKeep + tls: + certResolver: cloudflare + gui-https-30-DroppedNeedle: + rule: ( Host(`needle.keithsolomon.net`) ) + service: gui-https-30-DroppedNeedle + tls: + certResolver: cloudflare + gui-https-31-Grafana-OTLP: + rule: (( Host(`grafana.keithsolomon.net`) ) && PathPrefix(`/otlp`)) + service: gui-https-31-Grafana-OTLP + tls: + certResolver: cloudflare + gui-https-4-Duplicati: + rule: ( Host(`backups.keithsolomon.net`) ) + service: gui-https-4-Duplicati + tls: + certResolver: cloudflare + gui-https-7-Paperless: + rule: ( Host(`paperless.keithsolomon.net`) ) + service: gui-https-7-Paperless + tls: + certResolver: cloudflare + gui-https-8-Tautulli: + rule: ( Host(`tautulli.keithsolomon.net`) ) + service: gui-https-8-Tautulli + tls: + certResolver: cloudflare + gui-https-9-YTDL: + rule: ( Host(`ytdl.keithsolomon.net`) ) + service: gui-https-9-YTDL + tls: + certResolver: cloudflare + services: + gui-https-10-CommaFeed: + loadBalancer: + servers: + - url: http://192.168.2.23:8082 + gui-https-11-OpenGist: + loadBalancer: + servers: + - url: http://192.168.2.23:6157 + gui-https-12-PromptBase: + loadBalancer: + servers: + - url: http://192.168.2.23:4321 + gui-https-13-Uptime-Kuma: + loadBalancer: + servers: + - url: http://192.168.2.23:3031 + gui-https-14-Emby: + loadBalancer: + servers: + - url: http://192.168.2.51:8096 + gui-https-15-Plex: + loadBalancer: + servers: + - url: http://192.168.2.51:32400 + gui-https-18-Termix: + loadBalancer: + servers: + - url: http://192.168.2.51:8182 + gui-https-19-BillTrak: + loadBalancer: + servers: + - url: http://192.168.2.23:8989 + gui-https-2-Calibre: + loadBalancer: + servers: + - url: http://192.168.2.51:8083 + gui-https-21-Tautulli: + loadBalancer: + servers: + - url: http://192.168.2.51:8181/home + gui-https-22-Listenarr: + loadBalancer: + servers: + - url: http://192.168.2.9:5000 + gui-https-23-Seerr: + loadBalancer: + servers: + - url: http://192.168.2.51:5055 + gui-https-24-Ironpad: + loadBalancer: + servers: + - url: http://192.168.2.23:2828/ + gui-https-25-A11y Tester: + loadBalancer: + servers: + - url: http://192.168.2.9:3001 + gui-https-26-Beszel: + loadBalancer: + servers: + - url: http://192.168.2.9:8090/ + gui-https-27-FoundryVTT: + loadBalancer: + servers: + - url: http://192.168.2.23:30000 + gui-https-28-SolidTime: + loadBalancer: + servers: + - url: http://192.168.2.23:8580 + gui-https-29-Grafana: + loadBalancer: + servers: + - url: http://192.168.2.18:3000 + gui-https-3-KaraKeep: + loadBalancer: + servers: + - url: http://192.168.2.51:3849 + gui-https-30-DroppedNeedle: + loadBalancer: + servers: + - url: http://192.168.2.17:8688 + gui-https-31-Grafana-OTLP: + loadBalancer: + servers: + - url: http://192.168.2.18:4318 + gui-https-4-Duplicati: + loadBalancer: + servers: + - url: http://192.168.2.51:8200 + gui-https-7-Paperless: + loadBalancer: + servers: + - url: http://192.168.2.51:8010 + gui-https-8-Tautulli: + loadBalancer: + servers: + - url: http://192.168.2.51:8181 + gui-https-9-YTDL: + loadBalancer: + servers: + - url: http://192.168.2.51:8998 + middlewares: + https-redirect: + redirectScheme: + scheme: https diff --git a/traefik-manager/backups/dynamic.yml.20260713_210838.bak b/traefik-manager/backups/dynamic.yml.20260713_210838.bak new file mode 100644 index 0000000..248a70d --- /dev/null +++ b/traefik-manager/backups/dynamic.yml.20260713_210838.bak @@ -0,0 +1,236 @@ +http: + routers: + gui-https-10-CommaFeed: + rule: ( Host(`commafeed.keithsolomon.net`) ) + service: gui-https-10-CommaFeed + tls: + certResolver: cloudflare + gui-https-11-OpenGist: + rule: ( Host(`gist.keithsolomon.net`) ) + service: gui-https-11-OpenGist + tls: + certResolver: cloudflare + gui-https-12-PromptBase: + rule: ( Host(`prompts.keithsolomon.net`) ) + service: gui-https-12-PromptBase + tls: + certResolver: cloudflare + gui-https-13-Uptime-Kuma: + rule: ( Host(`kuma.keithsolomon.net`) ) + service: gui-https-13-Uptime-Kuma + tls: + certResolver: cloudflare + gui-https-14-Emby: + rule: ( Host(`emby.keithsolomon.net`) ) + service: gui-https-14-Emby + tls: + certResolver: cloudflare + gui-https-15-Plex: + rule: ( Host(`plex.keithsolomon.net`) ) + service: gui-https-15-Plex + tls: + certResolver: cloudflare + gui-https-18-Termix: + rule: ( Host(`term.keithsolomon.net`) ) + service: gui-https-18-Termix + tls: + certResolver: cloudflare + gui-https-19-BillTrak: + rule: ( Host(`bills.keithsolomon.net`) ) + service: gui-https-19-BillTrak + tls: + certResolver: cloudflare + gui-https-2-Calibre: + rule: ( Host(`cwa.keithsolomon.net`) ) + service: gui-https-2-Calibre + tls: + certResolver: cloudflare + gui-https-21-Tautulli: + rule: ( Host(`tautulli.keithsolomon.net`) ) + service: gui-https-21-Tautulli + tls: + certResolver: cloudflare + gui-https-22-Listenarr: + rule: ( Host(`listen.keithsolomon.net`) ) + service: gui-https-22-Listenarr + tls: + certResolver: cloudflare + gui-https-23-Seerr: + rule: ( Host(`seerr.keithsolomon.net`) ) + service: gui-https-23-Seerr + tls: + certResolver: cloudflare + gui-https-24-Ironpad: + rule: ( Host(`pm.keithsolomon.net`) ) + service: gui-https-24-Ironpad + tls: + certResolver: cloudflare + gui-https-25-A11y Tester: + rule: ( Host(`pw-a11y.keithsolomon.net`) ) + service: gui-https-25-A11y Tester + tls: + certResolver: cloudflare + gui-https-26-Beszel: + rule: ( Host(`beszel.keithsolomon.net`) ) + service: gui-https-26-Beszel + tls: + certResolver: cloudflare + gui-https-27-FoundryVTT: + rule: ( Host(`foundry.keithsolomon.net`) ) + service: gui-https-27-FoundryVTT + tls: + certResolver: cloudflare + gui-https-28-SolidTime: + rule: ( Host(`time.keithsolomon.net`) ) + service: gui-https-28-SolidTime + tls: + certResolver: cloudflare + gui-https-29-Grafana: + rule: ( Host(`grafana.keithsolomon.net`) ) + service: gui-https-29-Grafana + tls: + certResolver: cloudflare + gui-https-3-KaraKeep: + rule: ( Host(`kara.keithsolomon.net`) ) + service: gui-https-3-KaraKeep + tls: + certResolver: cloudflare + gui-https-30-DroppedNeedle: + rule: ( Host(`needle.keithsolomon.net`) ) + service: gui-https-30-DroppedNeedle + tls: + certResolver: cloudflare + gui-https-31-Grafana-OTLP: + rule: (( Host(`grafana.keithsolomon.net`) ) && PathPrefix(`/otlp`)) + service: gui-https-31-Grafana-OTLP + tls: + certResolver: cloudflare + gui-https-4-Duplicati: + rule: ( Host(`backups.keithsolomon.net`) ) + service: gui-https-4-Duplicati + tls: + certResolver: cloudflare + gui-https-7-Paperless: + rule: ( Host(`paperless.keithsolomon.net`) ) + service: gui-https-7-Paperless + tls: + certResolver: cloudflare + gui-https-8-Tautulli: + rule: ( Host(`tautulli.keithsolomon.net`) ) + service: gui-https-8-Tautulli + tls: + certResolver: cloudflare + gui-https-9-YTDL: + rule: ( Host(`ytdl.keithsolomon.net`) ) + service: gui-https-9-YTDL + tls: + certResolver: cloudflare + services: + gui-https-10-CommaFeed: + loadBalancer: + servers: + - url: http://192.168.2.23:8082 + gui-https-11-OpenGist: + loadBalancer: + servers: + - url: http://192.168.2.23:6157 + gui-https-12-PromptBase: + loadBalancer: + servers: + - url: http://192.168.2.23:4321 + gui-https-13-Uptime-Kuma: + loadBalancer: + servers: + - url: http://192.168.2.23:3031 + gui-https-14-Emby: + loadBalancer: + servers: + - url: http://192.168.2.51:8096 + gui-https-15-Plex: + loadBalancer: + servers: + - url: http://192.168.2.51:32400 + gui-https-18-Termix: + loadBalancer: + servers: + - url: http://192.168.2.51:8182 + gui-https-19-BillTrak: + loadBalancer: + servers: + - url: http://192.168.2.23:8989 + gui-https-2-Calibre: + loadBalancer: + servers: + - url: http://192.168.2.51:8083 + gui-https-21-Tautulli: + loadBalancer: + servers: + - url: http://192.168.2.51:8181/home + gui-https-22-Listenarr: + loadBalancer: + servers: + - url: http://192.168.2.9:5000 + gui-https-23-Seerr: + loadBalancer: + servers: + - url: http://192.168.2.51:5055 + gui-https-24-Ironpad: + loadBalancer: + servers: + - url: http://192.168.2.23:2828/ + gui-https-25-A11y Tester: + loadBalancer: + servers: + - url: http://192.168.2.9:3001 + gui-https-26-Beszel: + loadBalancer: + servers: + - url: http://192.168.2.9:8090/ + gui-https-27-FoundryVTT: + loadBalancer: + servers: + - url: http://192.168.2.23:30000 + gui-https-28-SolidTime: + loadBalancer: + servers: + - url: http://192.168.2.23:8580 + gui-https-29-Grafana: + loadBalancer: + servers: + - url: http://192.168.2.18:3000 + gui-https-3-KaraKeep: + loadBalancer: + servers: + - url: http://192.168.2.51:3849 + gui-https-30-DroppedNeedle: + loadBalancer: + servers: + - url: http://192.168.2.17:8688 + gui-https-31-Grafana-OTLP: + loadBalancer: + servers: + - url: http://192.168.2.18:4318 + gui-https-4-Duplicati: + loadBalancer: + servers: + - url: http://192.168.2.51:8200 + gui-https-7-Paperless: + loadBalancer: + servers: + - url: http://192.168.2.51:8010 + gui-https-8-Tautulli: + loadBalancer: + servers: + - url: http://192.168.2.51:8181 + gui-https-9-YTDL: + loadBalancer: + servers: + - url: http://192.168.2.51:8998 + middlewares: + https-redirect: + redirectScheme: + scheme: https + otlp-strip: + stripPrefix: + prefixes: + - /otlp diff --git a/traefik-manager/backups/dynamic.yml.20260713_210944.bak b/traefik-manager/backups/dynamic.yml.20260713_210944.bak new file mode 100644 index 0000000..9a1a813 --- /dev/null +++ b/traefik-manager/backups/dynamic.yml.20260713_210944.bak @@ -0,0 +1,239 @@ +http: + routers: + gui-https-10-CommaFeed: + rule: ( Host(`commafeed.keithsolomon.net`) ) + service: gui-https-10-CommaFeed + tls: + certResolver: cloudflare + gui-https-11-OpenGist: + rule: ( Host(`gist.keithsolomon.net`) ) + service: gui-https-11-OpenGist + tls: + certResolver: cloudflare + gui-https-12-PromptBase: + rule: ( Host(`prompts.keithsolomon.net`) ) + service: gui-https-12-PromptBase + tls: + certResolver: cloudflare + gui-https-13-Uptime-Kuma: + rule: ( Host(`kuma.keithsolomon.net`) ) + service: gui-https-13-Uptime-Kuma + tls: + certResolver: cloudflare + gui-https-14-Emby: + rule: ( Host(`emby.keithsolomon.net`) ) + service: gui-https-14-Emby + tls: + certResolver: cloudflare + gui-https-15-Plex: + rule: ( Host(`plex.keithsolomon.net`) ) + service: gui-https-15-Plex + tls: + certResolver: cloudflare + gui-https-18-Termix: + rule: ( Host(`term.keithsolomon.net`) ) + service: gui-https-18-Termix + tls: + certResolver: cloudflare + gui-https-19-BillTrak: + rule: ( Host(`bills.keithsolomon.net`) ) + service: gui-https-19-BillTrak + tls: + certResolver: cloudflare + gui-https-2-Calibre: + rule: ( Host(`cwa.keithsolomon.net`) ) + service: gui-https-2-Calibre + tls: + certResolver: cloudflare + gui-https-21-Tautulli: + rule: ( Host(`tautulli.keithsolomon.net`) ) + service: gui-https-21-Tautulli + tls: + certResolver: cloudflare + gui-https-22-Listenarr: + rule: ( Host(`listen.keithsolomon.net`) ) + service: gui-https-22-Listenarr + tls: + certResolver: cloudflare + gui-https-23-Seerr: + rule: ( Host(`seerr.keithsolomon.net`) ) + service: gui-https-23-Seerr + tls: + certResolver: cloudflare + gui-https-24-Ironpad: + rule: ( Host(`pm.keithsolomon.net`) ) + service: gui-https-24-Ironpad + tls: + certResolver: cloudflare + gui-https-25-A11y Tester: + rule: ( Host(`pw-a11y.keithsolomon.net`) ) + service: gui-https-25-A11y Tester + tls: + certResolver: cloudflare + gui-https-26-Beszel: + rule: ( Host(`beszel.keithsolomon.net`) ) + service: gui-https-26-Beszel + tls: + certResolver: cloudflare + gui-https-27-FoundryVTT: + rule: ( Host(`foundry.keithsolomon.net`) ) + service: gui-https-27-FoundryVTT + tls: + certResolver: cloudflare + gui-https-28-SolidTime: + rule: ( Host(`time.keithsolomon.net`) ) + service: gui-https-28-SolidTime + tls: + certResolver: cloudflare + gui-https-29-Grafana: + rule: ( Host(`grafana.keithsolomon.net`) ) + service: gui-https-29-Grafana + tls: + certResolver: cloudflare + gui-https-3-KaraKeep: + rule: ( Host(`kara.keithsolomon.net`) ) + service: gui-https-3-KaraKeep + tls: + certResolver: cloudflare + gui-https-30-DroppedNeedle: + rule: ( Host(`needle.keithsolomon.net`) ) + service: gui-https-30-DroppedNeedle + tls: + certResolver: cloudflare + gui-https-31-Grafana-OTLP: + rule: (( Host(`grafana.keithsolomon.net`) ) && PathPrefix(`/otlp`)) + service: gui-https-31-Grafana-OTLP + tls: + certResolver: cloudflare + gui-https-4-Duplicati: + rule: ( Host(`backups.keithsolomon.net`) ) + service: gui-https-4-Duplicati + tls: + certResolver: cloudflare + gui-https-7-Paperless: + rule: ( Host(`paperless.keithsolomon.net`) ) + service: gui-https-7-Paperless + tls: + certResolver: cloudflare + gui-https-8-Tautulli: + rule: ( Host(`tautulli.keithsolomon.net`) ) + service: gui-https-8-Tautulli + tls: + certResolver: cloudflare + gui-https-9-YTDL: + rule: ( Host(`ytdl.keithsolomon.net`) ) + service: gui-https-9-YTDL + tls: + certResolver: cloudflare + services: + gui-https-10-CommaFeed: + loadBalancer: + servers: + - url: http://192.168.2.23:8082 + gui-https-11-OpenGist: + loadBalancer: + servers: + - url: http://192.168.2.23:6157 + gui-https-12-PromptBase: + loadBalancer: + servers: + - url: http://192.168.2.23:4321 + gui-https-13-Uptime-Kuma: + loadBalancer: + servers: + - url: http://192.168.2.23:3031 + gui-https-14-Emby: + loadBalancer: + servers: + - url: http://192.168.2.51:8096 + gui-https-15-Plex: + loadBalancer: + servers: + - url: http://192.168.2.51:32400 + gui-https-18-Termix: + loadBalancer: + servers: + - url: http://192.168.2.51:8182 + gui-https-19-BillTrak: + loadBalancer: + servers: + - url: http://192.168.2.23:8989 + gui-https-2-Calibre: + loadBalancer: + servers: + - url: http://192.168.2.51:8083 + gui-https-21-Tautulli: + loadBalancer: + servers: + - url: http://192.168.2.51:8181/home + gui-https-22-Listenarr: + loadBalancer: + servers: + - url: http://192.168.2.9:5000 + gui-https-23-Seerr: + loadBalancer: + servers: + - url: http://192.168.2.51:5055 + gui-https-24-Ironpad: + loadBalancer: + servers: + - url: http://192.168.2.23:2828/ + gui-https-25-A11y Tester: + loadBalancer: + servers: + - url: http://192.168.2.9:3001 + gui-https-26-Beszel: + loadBalancer: + servers: + - url: http://192.168.2.9:8090/ + gui-https-27-FoundryVTT: + loadBalancer: + servers: + - url: http://192.168.2.23:30000 + gui-https-28-SolidTime: + loadBalancer: + servers: + - url: http://192.168.2.23:8580 + gui-https-29-Grafana: + loadBalancer: + servers: + - url: http://192.168.2.18:3000 + gui-https-3-KaraKeep: + loadBalancer: + servers: + - url: http://192.168.2.51:3849 + gui-https-30-DroppedNeedle: + loadBalancer: + servers: + - url: http://192.168.2.17:8688 + gui-https-31-Grafana-OTLP: + loadBalancer: + servers: + - url: http://192.168.2.18:4318 + gui-https-4-Duplicati: + loadBalancer: + servers: + - url: http://192.168.2.51:8200 + gui-https-7-Paperless: + loadBalancer: + servers: + - url: http://192.168.2.51:8010 + gui-https-8-Tautulli: + loadBalancer: + servers: + - url: http://192.168.2.51:8181 + gui-https-9-YTDL: + loadBalancer: + servers: + - url: http://192.168.2.51:8998 + middlewares: + https-redirect: + redirectScheme: + scheme: https + otlp-strip: + stripPrefix: + prefixes: + - /otlp + otlp-auth: + basicAuth: + usersFile: /etc/traefik/otlp.htpasswd diff --git a/traefik-manager/backups/dynamic.yml.20260713_211817.bak b/traefik-manager/backups/dynamic.yml.20260713_211817.bak new file mode 100644 index 0000000..b23c795 --- /dev/null +++ b/traefik-manager/backups/dynamic.yml.20260713_211817.bak @@ -0,0 +1,244 @@ +http: + routers: + gui-https-10-CommaFeed: + rule: ( Host(`commafeed.keithsolomon.net`) ) + service: gui-https-10-CommaFeed + tls: + certResolver: cloudflare + gui-https-11-OpenGist: + rule: ( Host(`gist.keithsolomon.net`) ) + service: gui-https-11-OpenGist + tls: + certResolver: cloudflare + gui-https-12-PromptBase: + rule: ( Host(`prompts.keithsolomon.net`) ) + service: gui-https-12-PromptBase + tls: + certResolver: cloudflare + gui-https-13-Uptime-Kuma: + rule: ( Host(`kuma.keithsolomon.net`) ) + service: gui-https-13-Uptime-Kuma + tls: + certResolver: cloudflare + gui-https-14-Emby: + rule: ( Host(`emby.keithsolomon.net`) ) + service: gui-https-14-Emby + tls: + certResolver: cloudflare + gui-https-15-Plex: + rule: ( Host(`plex.keithsolomon.net`) ) + service: gui-https-15-Plex + tls: + certResolver: cloudflare + gui-https-18-Termix: + rule: ( Host(`term.keithsolomon.net`) ) + service: gui-https-18-Termix + tls: + certResolver: cloudflare + gui-https-19-BillTrak: + rule: ( Host(`bills.keithsolomon.net`) ) + service: gui-https-19-BillTrak + tls: + certResolver: cloudflare + gui-https-2-Calibre: + rule: ( Host(`cwa.keithsolomon.net`) ) + service: gui-https-2-Calibre + tls: + certResolver: cloudflare + gui-https-21-Tautulli: + rule: ( Host(`tautulli.keithsolomon.net`) ) + service: gui-https-21-Tautulli + tls: + certResolver: cloudflare + gui-https-22-Listenarr: + rule: ( Host(`listen.keithsolomon.net`) ) + service: gui-https-22-Listenarr + tls: + certResolver: cloudflare + gui-https-23-Seerr: + rule: ( Host(`seerr.keithsolomon.net`) ) + service: gui-https-23-Seerr + tls: + certResolver: cloudflare + gui-https-24-Ironpad: + rule: ( Host(`pm.keithsolomon.net`) ) + service: gui-https-24-Ironpad + tls: + certResolver: cloudflare + gui-https-25-A11y Tester: + rule: ( Host(`pw-a11y.keithsolomon.net`) ) + service: gui-https-25-A11y Tester + tls: + certResolver: cloudflare + gui-https-26-Beszel: + rule: ( Host(`beszel.keithsolomon.net`) ) + service: gui-https-26-Beszel + tls: + certResolver: cloudflare + gui-https-27-FoundryVTT: + rule: ( Host(`foundry.keithsolomon.net`) ) + service: gui-https-27-FoundryVTT + tls: + certResolver: cloudflare + gui-https-28-SolidTime: + rule: ( Host(`time.keithsolomon.net`) ) + service: gui-https-28-SolidTime + tls: + certResolver: cloudflare + gui-https-29-Grafana: + rule: ( Host(`grafana.keithsolomon.net`) ) + service: gui-https-29-Grafana + tls: + certResolver: cloudflare + gui-https-3-KaraKeep: + rule: ( Host(`kara.keithsolomon.net`) ) + service: gui-https-3-KaraKeep + tls: + certResolver: cloudflare + gui-https-30-DroppedNeedle: + rule: ( Host(`needle.keithsolomon.net`) ) + service: gui-https-30-DroppedNeedle + tls: + certResolver: cloudflare + gui-https-31-Grafana-OTLP: + rule: (( Host(`grafana.keithsolomon.net`) ) && PathPrefix(`/otlp`)) + entryPoints: + - https + service: gui-https-31-Grafana-OTLP-service + middlewares: + - otlp-strip + - otlp-auth + tls: + certResolver: cloudflare + gui-https-4-Duplicati: + rule: ( Host(`backups.keithsolomon.net`) ) + service: gui-https-4-Duplicati + tls: + certResolver: cloudflare + gui-https-7-Paperless: + rule: ( Host(`paperless.keithsolomon.net`) ) + service: gui-https-7-Paperless + tls: + certResolver: cloudflare + gui-https-8-Tautulli: + rule: ( Host(`tautulli.keithsolomon.net`) ) + service: gui-https-8-Tautulli + tls: + certResolver: cloudflare + gui-https-9-YTDL: + rule: ( Host(`ytdl.keithsolomon.net`) ) + service: gui-https-9-YTDL + tls: + certResolver: cloudflare + services: + gui-https-10-CommaFeed: + loadBalancer: + servers: + - url: http://192.168.2.23:8082 + gui-https-11-OpenGist: + loadBalancer: + servers: + - url: http://192.168.2.23:6157 + gui-https-12-PromptBase: + loadBalancer: + servers: + - url: http://192.168.2.23:4321 + gui-https-13-Uptime-Kuma: + loadBalancer: + servers: + - url: http://192.168.2.23:3031 + gui-https-14-Emby: + loadBalancer: + servers: + - url: http://192.168.2.51:8096 + gui-https-15-Plex: + loadBalancer: + servers: + - url: http://192.168.2.51:32400 + gui-https-18-Termix: + loadBalancer: + servers: + - url: http://192.168.2.51:8182 + gui-https-19-BillTrak: + loadBalancer: + servers: + - url: http://192.168.2.23:8989 + gui-https-2-Calibre: + loadBalancer: + servers: + - url: http://192.168.2.51:8083 + gui-https-21-Tautulli: + loadBalancer: + servers: + - url: http://192.168.2.51:8181/home + gui-https-22-Listenarr: + loadBalancer: + servers: + - url: http://192.168.2.9:5000 + gui-https-23-Seerr: + loadBalancer: + servers: + - url: http://192.168.2.51:5055 + gui-https-24-Ironpad: + loadBalancer: + servers: + - url: http://192.168.2.23:2828/ + gui-https-25-A11y Tester: + loadBalancer: + servers: + - url: http://192.168.2.9:3001 + gui-https-26-Beszel: + loadBalancer: + servers: + - url: http://192.168.2.9:8090/ + gui-https-27-FoundryVTT: + loadBalancer: + servers: + - url: http://192.168.2.23:30000 + gui-https-28-SolidTime: + loadBalancer: + servers: + - url: http://192.168.2.23:8580 + gui-https-29-Grafana: + loadBalancer: + servers: + - url: http://192.168.2.18:3000 + gui-https-3-KaraKeep: + loadBalancer: + servers: + - url: http://192.168.2.51:3849 + gui-https-30-DroppedNeedle: + loadBalancer: + servers: + - url: http://192.168.2.17:8688 + gui-https-4-Duplicati: + loadBalancer: + servers: + - url: http://192.168.2.51:8200 + gui-https-7-Paperless: + loadBalancer: + servers: + - url: http://192.168.2.51:8010 + gui-https-8-Tautulli: + loadBalancer: + servers: + - url: http://192.168.2.51:8181 + gui-https-9-YTDL: + loadBalancer: + servers: + - url: http://192.168.2.51:8998 + gui-https-31-Grafana-OTLP-service: + loadBalancer: + servers: + - url: http://192.168.2.18:4318 + middlewares: + https-redirect: + redirectScheme: + scheme: https + otlp-strip: + stripPrefix: + prefixes: + - /otlp + otlp-auth: + basicAuth: + usersFile: /etc/traefik/otlp.htpasswd diff --git a/traefik-manager/backups/dynamic.yml.20260713_211830.bak b/traefik-manager/backups/dynamic.yml.20260713_211830.bak new file mode 100644 index 0000000..1b49db7 --- /dev/null +++ b/traefik-manager/backups/dynamic.yml.20260713_211830.bak @@ -0,0 +1,235 @@ +http: + routers: + gui-https-10-CommaFeed: + rule: ( Host(`commafeed.keithsolomon.net`) ) + service: gui-https-10-CommaFeed + tls: + certResolver: cloudflare + gui-https-11-OpenGist: + rule: ( Host(`gist.keithsolomon.net`) ) + service: gui-https-11-OpenGist + tls: + certResolver: cloudflare + gui-https-12-PromptBase: + rule: ( Host(`prompts.keithsolomon.net`) ) + service: gui-https-12-PromptBase + tls: + certResolver: cloudflare + gui-https-13-Uptime-Kuma: + rule: ( Host(`kuma.keithsolomon.net`) ) + service: gui-https-13-Uptime-Kuma + tls: + certResolver: cloudflare + gui-https-14-Emby: + rule: ( Host(`emby.keithsolomon.net`) ) + service: gui-https-14-Emby + tls: + certResolver: cloudflare + gui-https-15-Plex: + rule: ( Host(`plex.keithsolomon.net`) ) + service: gui-https-15-Plex + tls: + certResolver: cloudflare + gui-https-18-Termix: + rule: ( Host(`term.keithsolomon.net`) ) + service: gui-https-18-Termix + tls: + certResolver: cloudflare + gui-https-19-BillTrak: + rule: ( Host(`bills.keithsolomon.net`) ) + service: gui-https-19-BillTrak + tls: + certResolver: cloudflare + gui-https-2-Calibre: + rule: ( Host(`cwa.keithsolomon.net`) ) + service: gui-https-2-Calibre + tls: + certResolver: cloudflare + gui-https-21-Tautulli: + rule: ( Host(`tautulli.keithsolomon.net`) ) + service: gui-https-21-Tautulli + tls: + certResolver: cloudflare + gui-https-22-Listenarr: + rule: ( Host(`listen.keithsolomon.net`) ) + service: gui-https-22-Listenarr + tls: + certResolver: cloudflare + gui-https-23-Seerr: + rule: ( Host(`seerr.keithsolomon.net`) ) + service: gui-https-23-Seerr + tls: + certResolver: cloudflare + gui-https-24-Ironpad: + rule: ( Host(`pm.keithsolomon.net`) ) + service: gui-https-24-Ironpad + tls: + certResolver: cloudflare + gui-https-25-A11y Tester: + rule: ( Host(`pw-a11y.keithsolomon.net`) ) + service: gui-https-25-A11y Tester + tls: + certResolver: cloudflare + gui-https-27-FoundryVTT: + rule: ( Host(`foundry.keithsolomon.net`) ) + service: gui-https-27-FoundryVTT + tls: + certResolver: cloudflare + gui-https-28-SolidTime: + rule: ( Host(`time.keithsolomon.net`) ) + service: gui-https-28-SolidTime + tls: + certResolver: cloudflare + gui-https-29-Grafana: + rule: ( Host(`grafana.keithsolomon.net`) ) + service: gui-https-29-Grafana + tls: + certResolver: cloudflare + gui-https-3-KaraKeep: + rule: ( Host(`kara.keithsolomon.net`) ) + service: gui-https-3-KaraKeep + tls: + certResolver: cloudflare + gui-https-30-DroppedNeedle: + rule: ( Host(`needle.keithsolomon.net`) ) + service: gui-https-30-DroppedNeedle + tls: + certResolver: cloudflare + gui-https-31-Grafana-OTLP: + rule: (( Host(`grafana.keithsolomon.net`) ) && PathPrefix(`/otlp`)) + entryPoints: + - https + service: gui-https-31-Grafana-OTLP-service + middlewares: + - otlp-strip + - otlp-auth + tls: + certResolver: cloudflare + gui-https-4-Duplicati: + rule: ( Host(`backups.keithsolomon.net`) ) + service: gui-https-4-Duplicati + tls: + certResolver: cloudflare + gui-https-7-Paperless: + rule: ( Host(`paperless.keithsolomon.net`) ) + service: gui-https-7-Paperless + tls: + certResolver: cloudflare + gui-https-8-Tautulli: + rule: ( Host(`tautulli.keithsolomon.net`) ) + service: gui-https-8-Tautulli + tls: + certResolver: cloudflare + gui-https-9-YTDL: + rule: ( Host(`ytdl.keithsolomon.net`) ) + service: gui-https-9-YTDL + tls: + certResolver: cloudflare + services: + gui-https-10-CommaFeed: + loadBalancer: + servers: + - url: http://192.168.2.23:8082 + gui-https-11-OpenGist: + loadBalancer: + servers: + - url: http://192.168.2.23:6157 + gui-https-12-PromptBase: + loadBalancer: + servers: + - url: http://192.168.2.23:4321 + gui-https-13-Uptime-Kuma: + loadBalancer: + servers: + - url: http://192.168.2.23:3031 + gui-https-14-Emby: + loadBalancer: + servers: + - url: http://192.168.2.51:8096 + gui-https-15-Plex: + loadBalancer: + servers: + - url: http://192.168.2.51:32400 + gui-https-18-Termix: + loadBalancer: + servers: + - url: http://192.168.2.51:8182 + gui-https-19-BillTrak: + loadBalancer: + servers: + - url: http://192.168.2.23:8989 + gui-https-2-Calibre: + loadBalancer: + servers: + - url: http://192.168.2.51:8083 + gui-https-21-Tautulli: + loadBalancer: + servers: + - url: http://192.168.2.51:8181/home + gui-https-22-Listenarr: + loadBalancer: + servers: + - url: http://192.168.2.9:5000 + gui-https-23-Seerr: + loadBalancer: + servers: + - url: http://192.168.2.51:5055 + gui-https-24-Ironpad: + loadBalancer: + servers: + - url: http://192.168.2.23:2828/ + gui-https-25-A11y Tester: + loadBalancer: + servers: + - url: http://192.168.2.9:3001 + gui-https-27-FoundryVTT: + loadBalancer: + servers: + - url: http://192.168.2.23:30000 + gui-https-28-SolidTime: + loadBalancer: + servers: + - url: http://192.168.2.23:8580 + gui-https-29-Grafana: + loadBalancer: + servers: + - url: http://192.168.2.18:3000 + gui-https-3-KaraKeep: + loadBalancer: + servers: + - url: http://192.168.2.51:3849 + gui-https-30-DroppedNeedle: + loadBalancer: + servers: + - url: http://192.168.2.17:8688 + gui-https-4-Duplicati: + loadBalancer: + servers: + - url: http://192.168.2.51:8200 + gui-https-7-Paperless: + loadBalancer: + servers: + - url: http://192.168.2.51:8010 + gui-https-8-Tautulli: + loadBalancer: + servers: + - url: http://192.168.2.51:8181 + gui-https-9-YTDL: + loadBalancer: + servers: + - url: http://192.168.2.51:8998 + gui-https-31-Grafana-OTLP-service: + loadBalancer: + servers: + - url: http://192.168.2.18:4318 + middlewares: + https-redirect: + redirectScheme: + scheme: https + otlp-strip: + stripPrefix: + prefixes: + - /otlp + otlp-auth: + basicAuth: + usersFile: /etc/traefik/otlp.htpasswd diff --git a/traefik-manager/backups/dynamic.yml.20260713_211842.bak b/traefik-manager/backups/dynamic.yml.20260713_211842.bak new file mode 100644 index 0000000..ac4fed7 --- /dev/null +++ b/traefik-manager/backups/dynamic.yml.20260713_211842.bak @@ -0,0 +1,226 @@ +http: + routers: + gui-https-10-CommaFeed: + rule: ( Host(`commafeed.keithsolomon.net`) ) + service: gui-https-10-CommaFeed + tls: + certResolver: cloudflare + gui-https-11-OpenGist: + rule: ( Host(`gist.keithsolomon.net`) ) + service: gui-https-11-OpenGist + tls: + certResolver: cloudflare + gui-https-12-PromptBase: + rule: ( Host(`prompts.keithsolomon.net`) ) + service: gui-https-12-PromptBase + tls: + certResolver: cloudflare + gui-https-13-Uptime-Kuma: + rule: ( Host(`kuma.keithsolomon.net`) ) + service: gui-https-13-Uptime-Kuma + tls: + certResolver: cloudflare + gui-https-14-Emby: + rule: ( Host(`emby.keithsolomon.net`) ) + service: gui-https-14-Emby + tls: + certResolver: cloudflare + gui-https-15-Plex: + rule: ( Host(`plex.keithsolomon.net`) ) + service: gui-https-15-Plex + tls: + certResolver: cloudflare + gui-https-18-Termix: + rule: ( Host(`term.keithsolomon.net`) ) + service: gui-https-18-Termix + tls: + certResolver: cloudflare + gui-https-19-BillTrak: + rule: ( Host(`bills.keithsolomon.net`) ) + service: gui-https-19-BillTrak + tls: + certResolver: cloudflare + gui-https-2-Calibre: + rule: ( Host(`cwa.keithsolomon.net`) ) + service: gui-https-2-Calibre + tls: + certResolver: cloudflare + gui-https-21-Tautulli: + rule: ( Host(`tautulli.keithsolomon.net`) ) + service: gui-https-21-Tautulli + tls: + certResolver: cloudflare + gui-https-22-Listenarr: + rule: ( Host(`listen.keithsolomon.net`) ) + service: gui-https-22-Listenarr + tls: + certResolver: cloudflare + gui-https-23-Seerr: + rule: ( Host(`seerr.keithsolomon.net`) ) + service: gui-https-23-Seerr + tls: + certResolver: cloudflare + gui-https-24-Ironpad: + rule: ( Host(`pm.keithsolomon.net`) ) + service: gui-https-24-Ironpad + tls: + certResolver: cloudflare + gui-https-27-FoundryVTT: + rule: ( Host(`foundry.keithsolomon.net`) ) + service: gui-https-27-FoundryVTT + tls: + certResolver: cloudflare + gui-https-28-SolidTime: + rule: ( Host(`time.keithsolomon.net`) ) + service: gui-https-28-SolidTime + tls: + certResolver: cloudflare + gui-https-29-Grafana: + rule: ( Host(`grafana.keithsolomon.net`) ) + service: gui-https-29-Grafana + tls: + certResolver: cloudflare + gui-https-3-KaraKeep: + rule: ( Host(`kara.keithsolomon.net`) ) + service: gui-https-3-KaraKeep + tls: + certResolver: cloudflare + gui-https-30-DroppedNeedle: + rule: ( Host(`needle.keithsolomon.net`) ) + service: gui-https-30-DroppedNeedle + tls: + certResolver: cloudflare + gui-https-31-Grafana-OTLP: + rule: (( Host(`grafana.keithsolomon.net`) ) && PathPrefix(`/otlp`)) + entryPoints: + - https + service: gui-https-31-Grafana-OTLP-service + middlewares: + - otlp-strip + - otlp-auth + tls: + certResolver: cloudflare + gui-https-4-Duplicati: + rule: ( Host(`backups.keithsolomon.net`) ) + service: gui-https-4-Duplicati + tls: + certResolver: cloudflare + gui-https-7-Paperless: + rule: ( Host(`paperless.keithsolomon.net`) ) + service: gui-https-7-Paperless + tls: + certResolver: cloudflare + gui-https-8-Tautulli: + rule: ( Host(`tautulli.keithsolomon.net`) ) + service: gui-https-8-Tautulli + tls: + certResolver: cloudflare + gui-https-9-YTDL: + rule: ( Host(`ytdl.keithsolomon.net`) ) + service: gui-https-9-YTDL + tls: + certResolver: cloudflare + services: + gui-https-10-CommaFeed: + loadBalancer: + servers: + - url: http://192.168.2.23:8082 + gui-https-11-OpenGist: + loadBalancer: + servers: + - url: http://192.168.2.23:6157 + gui-https-12-PromptBase: + loadBalancer: + servers: + - url: http://192.168.2.23:4321 + gui-https-13-Uptime-Kuma: + loadBalancer: + servers: + - url: http://192.168.2.23:3031 + gui-https-14-Emby: + loadBalancer: + servers: + - url: http://192.168.2.51:8096 + gui-https-15-Plex: + loadBalancer: + servers: + - url: http://192.168.2.51:32400 + gui-https-18-Termix: + loadBalancer: + servers: + - url: http://192.168.2.51:8182 + gui-https-19-BillTrak: + loadBalancer: + servers: + - url: http://192.168.2.23:8989 + gui-https-2-Calibre: + loadBalancer: + servers: + - url: http://192.168.2.51:8083 + gui-https-21-Tautulli: + loadBalancer: + servers: + - url: http://192.168.2.51:8181/home + gui-https-22-Listenarr: + loadBalancer: + servers: + - url: http://192.168.2.9:5000 + gui-https-23-Seerr: + loadBalancer: + servers: + - url: http://192.168.2.51:5055 + gui-https-24-Ironpad: + loadBalancer: + servers: + - url: http://192.168.2.23:2828/ + gui-https-27-FoundryVTT: + loadBalancer: + servers: + - url: http://192.168.2.23:30000 + gui-https-28-SolidTime: + loadBalancer: + servers: + - url: http://192.168.2.23:8580 + gui-https-29-Grafana: + loadBalancer: + servers: + - url: http://192.168.2.18:3000 + gui-https-3-KaraKeep: + loadBalancer: + servers: + - url: http://192.168.2.51:3849 + gui-https-30-DroppedNeedle: + loadBalancer: + servers: + - url: http://192.168.2.17:8688 + gui-https-4-Duplicati: + loadBalancer: + servers: + - url: http://192.168.2.51:8200 + gui-https-7-Paperless: + loadBalancer: + servers: + - url: http://192.168.2.51:8010 + gui-https-8-Tautulli: + loadBalancer: + servers: + - url: http://192.168.2.51:8181 + gui-https-9-YTDL: + loadBalancer: + servers: + - url: http://192.168.2.51:8998 + gui-https-31-Grafana-OTLP-service: + loadBalancer: + servers: + - url: http://192.168.2.18:4318 + middlewares: + https-redirect: + redirectScheme: + scheme: https + otlp-strip: + stripPrefix: + prefixes: + - /otlp + otlp-auth: + basicAuth: + usersFile: /etc/traefik/otlp.htpasswd diff --git a/traefik-manager/backups/dynamic.yml.20260713_211855.bak b/traefik-manager/backups/dynamic.yml.20260713_211855.bak new file mode 100644 index 0000000..2c8af22 --- /dev/null +++ b/traefik-manager/backups/dynamic.yml.20260713_211855.bak @@ -0,0 +1,235 @@ +http: + routers: + gui-https-10-CommaFeed: + rule: ( Host(`commafeed.keithsolomon.net`) ) + service: gui-https-10-CommaFeed + tls: + certResolver: cloudflare + gui-https-11-OpenGist: + rule: ( Host(`gist.keithsolomon.net`) ) + service: gui-https-11-OpenGist + tls: + certResolver: cloudflare + gui-https-12-PromptBase: + rule: ( Host(`prompts.keithsolomon.net`) ) + service: gui-https-12-PromptBase + tls: + certResolver: cloudflare + gui-https-13-Uptime-Kuma: + rule: ( Host(`kuma.keithsolomon.net`) ) + service: gui-https-13-Uptime-Kuma + tls: + certResolver: cloudflare + gui-https-14-Emby: + rule: ( Host(`emby.keithsolomon.net`) ) + service: gui-https-14-Emby + tls: + certResolver: cloudflare + gui-https-15-Plex: + rule: ( Host(`plex.keithsolomon.net`) ) + service: gui-https-15-Plex + tls: + certResolver: cloudflare + gui-https-18-Termix: + rule: ( Host(`term.keithsolomon.net`) ) + service: gui-https-18-Termix + tls: + certResolver: cloudflare + gui-https-19-BillTrak: + rule: ( Host(`bills.keithsolomon.net`) ) + service: gui-https-19-BillTrak + tls: + certResolver: cloudflare + gui-https-2-Calibre: + rule: ( Host(`cwa.keithsolomon.net`) ) + service: gui-https-2-Calibre + tls: + certResolver: cloudflare + gui-https-21-Tautulli: + rule: ( Host(`tautulli.keithsolomon.net`) ) + service: gui-https-21-Tautulli + tls: + certResolver: cloudflare + gui-https-22-Listenarr: + rule: ( Host(`listen.keithsolomon.net`) ) + service: gui-https-22-Listenarr + tls: + certResolver: cloudflare + gui-https-23-Seerr: + rule: ( Host(`seerr.keithsolomon.net`) ) + service: gui-https-23-Seerr + tls: + certResolver: cloudflare + gui-https-24-Ironpad: + rule: ( Host(`pm.keithsolomon.net`) ) + service: gui-https-24-Ironpad + tls: + certResolver: cloudflare + gui-https-27-FoundryVTT: + rule: ( Host(`foundry.keithsolomon.net`) ) + service: gui-https-27-FoundryVTT + tls: + certResolver: cloudflare + gui-https-28-SolidTime: + rule: ( Host(`time.keithsolomon.net`) ) + service: gui-https-28-SolidTime + tls: + certResolver: cloudflare + gui-https-29-Grafana: + rule: ( Host(`grafana.keithsolomon.net`) ) + service: gui-https-29-Grafana + tls: + certResolver: cloudflare + gui-https-3-KaraKeep: + rule: ( Host(`kara.keithsolomon.net`) ) + service: gui-https-3-KaraKeep + tls: + certResolver: cloudflare + gui-https-30-DroppedNeedle: + rule: ( Host(`needle.keithsolomon.net`) ) + service: gui-https-30-DroppedNeedle + tls: + certResolver: cloudflare + gui-https-31-Grafana-OTLP: + rule: (( Host(`grafana.keithsolomon.net`) ) && PathPrefix(`/otlp`)) + entryPoints: + - https + service: gui-https-31-Grafana-OTLP-service + middlewares: + - otlp-strip + - otlp-auth + tls: + certResolver: cloudflare + gui-https-4-Duplicati: + rule: ( Host(`backups.keithsolomon.net`) ) + service: gui-https-4-Duplicati + tls: + certResolver: cloudflare + gui-https-7-Paperless: + rule: ( Host(`paperless.keithsolomon.net`) ) + service: gui-https-7-Paperless + tls: + certResolver: cloudflare + gui-https-8-Tautulli: + rule: ( Host(`tautulli.keithsolomon.net`) ) + service: gui-https-8-Tautulli + tls: + certResolver: cloudflare + gui-https-9-YTDL: + rule: ( Host(`ytdl.keithsolomon.net`) ) + service: gui-https-9-YTDL + tls: + certResolver: cloudflare + gui-https-25-A11y Tester: + rule: ( Host(`pw-a11y.keithsolomon.net`) ) + service: gui-https-25-A11y Tester + tls: + certResolver: cloudflare + services: + gui-https-10-CommaFeed: + loadBalancer: + servers: + - url: http://192.168.2.23:8082 + gui-https-11-OpenGist: + loadBalancer: + servers: + - url: http://192.168.2.23:6157 + gui-https-12-PromptBase: + loadBalancer: + servers: + - url: http://192.168.2.23:4321 + gui-https-13-Uptime-Kuma: + loadBalancer: + servers: + - url: http://192.168.2.23:3031 + gui-https-14-Emby: + loadBalancer: + servers: + - url: http://192.168.2.51:8096 + gui-https-15-Plex: + loadBalancer: + servers: + - url: http://192.168.2.51:32400 + gui-https-18-Termix: + loadBalancer: + servers: + - url: http://192.168.2.51:8182 + gui-https-19-BillTrak: + loadBalancer: + servers: + - url: http://192.168.2.23:8989 + gui-https-2-Calibre: + loadBalancer: + servers: + - url: http://192.168.2.51:8083 + gui-https-21-Tautulli: + loadBalancer: + servers: + - url: http://192.168.2.51:8181/home + gui-https-22-Listenarr: + loadBalancer: + servers: + - url: http://192.168.2.9:5000 + gui-https-23-Seerr: + loadBalancer: + servers: + - url: http://192.168.2.51:5055 + gui-https-24-Ironpad: + loadBalancer: + servers: + - url: http://192.168.2.23:2828/ + gui-https-27-FoundryVTT: + loadBalancer: + servers: + - url: http://192.168.2.23:30000 + gui-https-28-SolidTime: + loadBalancer: + servers: + - url: http://192.168.2.23:8580 + gui-https-29-Grafana: + loadBalancer: + servers: + - url: http://192.168.2.18:3000 + gui-https-3-KaraKeep: + loadBalancer: + servers: + - url: http://192.168.2.51:3849 + gui-https-30-DroppedNeedle: + loadBalancer: + servers: + - url: http://192.168.2.17:8688 + gui-https-4-Duplicati: + loadBalancer: + servers: + - url: http://192.168.2.51:8200 + gui-https-7-Paperless: + loadBalancer: + servers: + - url: http://192.168.2.51:8010 + gui-https-8-Tautulli: + loadBalancer: + servers: + - url: http://192.168.2.51:8181 + gui-https-9-YTDL: + loadBalancer: + servers: + - url: http://192.168.2.51:8998 + gui-https-31-Grafana-OTLP-service: + loadBalancer: + servers: + - url: http://192.168.2.18:4318 + gui-https-25-A11y Tester: + loadBalancer: + servers: + - url: http://192.168.2.9:3001 + middlewares: + https-redirect: + redirectScheme: + scheme: https + otlp-strip: + stripPrefix: + prefixes: + - /otlp + otlp-auth: + basicAuth: + usersFile: /etc/traefik/otlp.htpasswd diff --git a/traefik-manager/backups/dynamic.yml.20260713_221907.bak b/traefik-manager/backups/dynamic.yml.20260713_221907.bak new file mode 100644 index 0000000..5b5d1aa --- /dev/null +++ b/traefik-manager/backups/dynamic.yml.20260713_221907.bak @@ -0,0 +1,232 @@ +http: + routers: + gui-https-10-CommaFeed: + rule: ( Host(`commafeed.keithsolomon.net`) ) + service: gui-https-10-CommaFeed + tls: + certResolver: cloudflare + gui-https-11-OpenGist: + rule: ( Host(`gist.keithsolomon.net`) ) + service: gui-https-11-OpenGist + tls: + certResolver: cloudflare + gui-https-12-PromptBase: + rule: ( Host(`prompts.keithsolomon.net`) ) + service: gui-https-12-PromptBase + tls: + certResolver: cloudflare + gui-https-13-Uptime-Kuma: + rule: ( Host(`kuma.keithsolomon.net`) ) + service: gui-https-13-Uptime-Kuma + tls: + certResolver: cloudflare + gui-https-14-Emby: + rule: ( Host(`emby.keithsolomon.net`) ) + service: gui-https-14-Emby + tls: + certResolver: cloudflare + gui-https-15-Plex: + rule: ( Host(`plex.keithsolomon.net`) ) + service: gui-https-15-Plex + tls: + certResolver: cloudflare + gui-https-18-Termix: + rule: ( Host(`term.keithsolomon.net`) ) + service: gui-https-18-Termix + tls: + certResolver: cloudflare + gui-https-19-BillTrak: + rule: ( Host(`bills.keithsolomon.net`) ) + service: gui-https-19-BillTrak + tls: + certResolver: cloudflare + gui-https-2-Calibre: + rule: ( Host(`cwa.keithsolomon.net`) ) + service: gui-https-2-Calibre + tls: + certResolver: cloudflare + gui-https-21-Tautulli: + rule: ( Host(`tautulli.keithsolomon.net`) ) + service: gui-https-21-Tautulli + tls: + certResolver: cloudflare + gui-https-22-Listenarr: + rule: ( Host(`listen.keithsolomon.net`) ) + service: gui-https-22-Listenarr + tls: + certResolver: cloudflare + gui-https-23-Seerr: + rule: ( Host(`seerr.keithsolomon.net`) ) + service: gui-https-23-Seerr + tls: + certResolver: cloudflare + gui-https-24-Ironpad: + rule: ( Host(`pm.keithsolomon.net`) ) + service: gui-https-24-Ironpad + tls: + certResolver: cloudflare + gui-https-25-A11yTester: + rule: ( Host(`pw-a11y.keithsolomon.net`) ) + service: gui-https-25-A11yTester + tls: + certResolver: cloudflare + gui-https-26-Beszel: + rule: ( Host(`beszel.keithsolomon.net`) ) + service: gui-https-26-Beszel + tls: + certResolver: cloudflare + gui-https-27-FoundryVTT: + rule: ( Host(`foundry.keithsolomon.net`) ) + service: gui-https-27-FoundryVTT + tls: + certResolver: cloudflare + gui-https-28-SolidTime: + rule: ( Host(`time.keithsolomon.net`) ) + service: gui-https-28-SolidTime + tls: + certResolver: cloudflare + gui-https-29-Grafana: + rule: ( Host(`grafana.keithsolomon.net`) ) + service: gui-https-29-Grafana + tls: + certResolver: cloudflare + gui-https-3-KaraKeep: + rule: ( Host(`kara.keithsolomon.net`) ) + service: gui-https-3-KaraKeep + tls: + certResolver: cloudflare + gui-https-30-DroppedNeedle: + rule: ( Host(`needle.keithsolomon.net`) ) + service: gui-https-30-DroppedNeedle + tls: + certResolver: cloudflare + gui-https-31-Grafana-OTLP: + rule: (( Host(`grafana.keithsolomon.net`) ) && PathPrefix(`/otlp`)) + service: gui-https-31-Grafana-OTLP + tls: + certResolver: cloudflare + gui-https-4-Duplicati: + rule: ( Host(`backups.keithsolomon.net`) ) + service: gui-https-4-Duplicati + tls: + certResolver: cloudflare + gui-https-7-Paperless: + rule: ( Host(`paperless.keithsolomon.net`) ) + service: gui-https-7-Paperless + tls: + certResolver: cloudflare + gui-https-8-Tautulli: + rule: ( Host(`tautulli.keithsolomon.net`) ) + service: gui-https-8-Tautulli + tls: + certResolver: cloudflare + gui-https-9-YTDL: + rule: ( Host(`ytdl.keithsolomon.net`) ) + service: gui-https-9-YTDL + tls: + certResolver: cloudflare + services: + gui-https-10-CommaFeed: + loadBalancer: + servers: + - url: http://192.168.2.23:8082 + gui-https-11-OpenGist: + loadBalancer: + servers: + - url: http://192.168.2.23:6157 + gui-https-12-PromptBase: + loadBalancer: + servers: + - url: http://192.168.2.23:4321 + gui-https-13-Uptime-Kuma: + loadBalancer: + servers: + - url: http://192.168.2.23:3031 + gui-https-14-Emby: + loadBalancer: + servers: + - url: http://192.168.2.51:8096 + gui-https-15-Plex: + loadBalancer: + servers: + - url: http://192.168.2.51:32400 + gui-https-18-Termix: + loadBalancer: + servers: + - url: http://192.168.2.51:8182 + gui-https-19-BillTrak: + loadBalancer: + servers: + - url: http://192.168.2.23:8989 + gui-https-2-Calibre: + loadBalancer: + servers: + - url: http://192.168.2.51:8083 + gui-https-21-Tautulli: + loadBalancer: + servers: + - url: http://192.168.2.51:8181/home + gui-https-22-Listenarr: + loadBalancer: + servers: + - url: http://192.168.2.9:5000 + gui-https-23-Seerr: + loadBalancer: + servers: + - url: http://192.168.2.51:5055 + gui-https-24-Ironpad: + loadBalancer: + servers: + - url: http://192.168.2.23:2828/ + gui-https-25-A11yTester: + loadBalancer: + servers: + - url: http://192.168.2.9:3001 + gui-https-26-Beszel: + loadBalancer: + servers: + - url: http://192.168.2.9:8090/ + gui-https-27-FoundryVTT: + loadBalancer: + servers: + - url: http://192.168.2.23:30000 + gui-https-28-SolidTime: + loadBalancer: + servers: + - url: http://192.168.2.23:8580 + gui-https-29-Grafana: + loadBalancer: + servers: + - url: http://192.168.2.18:3000 + gui-https-3-KaraKeep: + loadBalancer: + servers: + - url: http://192.168.2.51:3849 + gui-https-30-DroppedNeedle: + loadBalancer: + servers: + - url: http://192.168.2.17:8688 + gui-https-31-Grafana-OTLP: + loadBalancer: + servers: + - url: http://192.168.2.18:4318 + gui-https-4-Duplicati: + loadBalancer: + servers: + - url: http://192.168.2.51:8200 + gui-https-7-Paperless: + loadBalancer: + servers: + - url: http://192.168.2.51:8010 + gui-https-8-Tautulli: + loadBalancer: + servers: + - url: http://192.168.2.51:8181 + gui-https-9-YTDL: + loadBalancer: + servers: + - url: http://192.168.2.51:8998 + middlewares: + https-redirect: + redirectScheme: + scheme: https diff --git a/traefik-manager/backups/dynamic.yml.20260713_222004.bak b/traefik-manager/backups/dynamic.yml.20260713_222004.bak new file mode 100644 index 0000000..c209f2c --- /dev/null +++ b/traefik-manager/backups/dynamic.yml.20260713_222004.bak @@ -0,0 +1,236 @@ +http: + routers: + gui-https-10-CommaFeed: + rule: ( Host(`commafeed.keithsolomon.net`) ) + service: gui-https-10-CommaFeed + tls: + certResolver: cloudflare + gui-https-11-OpenGist: + rule: ( Host(`gist.keithsolomon.net`) ) + service: gui-https-11-OpenGist + tls: + certResolver: cloudflare + gui-https-12-PromptBase: + rule: ( Host(`prompts.keithsolomon.net`) ) + service: gui-https-12-PromptBase + tls: + certResolver: cloudflare + gui-https-13-Uptime-Kuma: + rule: ( Host(`kuma.keithsolomon.net`) ) + service: gui-https-13-Uptime-Kuma + tls: + certResolver: cloudflare + gui-https-14-Emby: + rule: ( Host(`emby.keithsolomon.net`) ) + service: gui-https-14-Emby + tls: + certResolver: cloudflare + gui-https-15-Plex: + rule: ( Host(`plex.keithsolomon.net`) ) + service: gui-https-15-Plex + tls: + certResolver: cloudflare + gui-https-18-Termix: + rule: ( Host(`term.keithsolomon.net`) ) + service: gui-https-18-Termix + tls: + certResolver: cloudflare + gui-https-19-BillTrak: + rule: ( Host(`bills.keithsolomon.net`) ) + service: gui-https-19-BillTrak + tls: + certResolver: cloudflare + gui-https-2-Calibre: + rule: ( Host(`cwa.keithsolomon.net`) ) + service: gui-https-2-Calibre + tls: + certResolver: cloudflare + gui-https-21-Tautulli: + rule: ( Host(`tautulli.keithsolomon.net`) ) + service: gui-https-21-Tautulli + tls: + certResolver: cloudflare + gui-https-22-Listenarr: + rule: ( Host(`listen.keithsolomon.net`) ) + service: gui-https-22-Listenarr + tls: + certResolver: cloudflare + gui-https-23-Seerr: + rule: ( Host(`seerr.keithsolomon.net`) ) + service: gui-https-23-Seerr + tls: + certResolver: cloudflare + gui-https-24-Ironpad: + rule: ( Host(`pm.keithsolomon.net`) ) + service: gui-https-24-Ironpad + tls: + certResolver: cloudflare + gui-https-25-A11yTester: + rule: ( Host(`pw-a11y.keithsolomon.net`) ) + service: gui-https-25-A11yTester + tls: + certResolver: cloudflare + gui-https-26-Beszel: + rule: ( Host(`beszel.keithsolomon.net`) ) + service: gui-https-26-Beszel + tls: + certResolver: cloudflare + gui-https-27-FoundryVTT: + rule: ( Host(`foundry.keithsolomon.net`) ) + service: gui-https-27-FoundryVTT + tls: + certResolver: cloudflare + gui-https-28-SolidTime: + rule: ( Host(`time.keithsolomon.net`) ) + service: gui-https-28-SolidTime + tls: + certResolver: cloudflare + gui-https-29-Grafana: + rule: ( Host(`grafana.keithsolomon.net`) ) + service: gui-https-29-Grafana + tls: + certResolver: cloudflare + gui-https-3-KaraKeep: + rule: ( Host(`kara.keithsolomon.net`) ) + service: gui-https-3-KaraKeep + tls: + certResolver: cloudflare + gui-https-30-DroppedNeedle: + rule: ( Host(`needle.keithsolomon.net`) ) + service: gui-https-30-DroppedNeedle + tls: + certResolver: cloudflare + gui-https-31-Grafana-OTLP: + rule: (( Host(`grafana.keithsolomon.net`) ) && PathPrefix(`/otlp`)) + service: gui-https-31-Grafana-OTLP + tls: + certResolver: cloudflare + gui-https-4-Duplicati: + rule: ( Host(`backups.keithsolomon.net`) ) + service: gui-https-4-Duplicati + tls: + certResolver: cloudflare + gui-https-7-Paperless: + rule: ( Host(`paperless.keithsolomon.net`) ) + service: gui-https-7-Paperless + tls: + certResolver: cloudflare + gui-https-8-Tautulli: + rule: ( Host(`tautulli.keithsolomon.net`) ) + service: gui-https-8-Tautulli + tls: + certResolver: cloudflare + gui-https-9-YTDL: + rule: ( Host(`ytdl.keithsolomon.net`) ) + service: gui-https-9-YTDL + tls: + certResolver: cloudflare + services: + gui-https-10-CommaFeed: + loadBalancer: + servers: + - url: http://192.168.2.23:8082 + gui-https-11-OpenGist: + loadBalancer: + servers: + - url: http://192.168.2.23:6157 + gui-https-12-PromptBase: + loadBalancer: + servers: + - url: http://192.168.2.23:4321 + gui-https-13-Uptime-Kuma: + loadBalancer: + servers: + - url: http://192.168.2.23:3031 + gui-https-14-Emby: + loadBalancer: + servers: + - url: http://192.168.2.51:8096 + gui-https-15-Plex: + loadBalancer: + servers: + - url: http://192.168.2.51:32400 + gui-https-18-Termix: + loadBalancer: + servers: + - url: http://192.168.2.51:8182 + gui-https-19-BillTrak: + loadBalancer: + servers: + - url: http://192.168.2.23:8989 + gui-https-2-Calibre: + loadBalancer: + servers: + - url: http://192.168.2.51:8083 + gui-https-21-Tautulli: + loadBalancer: + servers: + - url: http://192.168.2.51:8181/home + gui-https-22-Listenarr: + loadBalancer: + servers: + - url: http://192.168.2.9:5000 + gui-https-23-Seerr: + loadBalancer: + servers: + - url: http://192.168.2.51:5055 + gui-https-24-Ironpad: + loadBalancer: + servers: + - url: http://192.168.2.23:2828/ + gui-https-25-A11yTester: + loadBalancer: + servers: + - url: http://192.168.2.9:3001 + gui-https-26-Beszel: + loadBalancer: + servers: + - url: http://192.168.2.9:8090/ + gui-https-27-FoundryVTT: + loadBalancer: + servers: + - url: http://192.168.2.23:30000 + gui-https-28-SolidTime: + loadBalancer: + servers: + - url: http://192.168.2.23:8580 + gui-https-29-Grafana: + loadBalancer: + servers: + - url: http://192.168.2.18:3000 + gui-https-3-KaraKeep: + loadBalancer: + servers: + - url: http://192.168.2.51:3849 + gui-https-30-DroppedNeedle: + loadBalancer: + servers: + - url: http://192.168.2.17:8688 + gui-https-31-Grafana-OTLP: + loadBalancer: + servers: + - url: http://192.168.2.18:4318 + gui-https-4-Duplicati: + loadBalancer: + servers: + - url: http://192.168.2.51:8200 + gui-https-7-Paperless: + loadBalancer: + servers: + - url: http://192.168.2.51:8010 + gui-https-8-Tautulli: + loadBalancer: + servers: + - url: http://192.168.2.51:8181 + gui-https-9-YTDL: + loadBalancer: + servers: + - url: http://192.168.2.51:8998 + middlewares: + https-redirect: + redirectScheme: + scheme: https + otlp-strip: + stripPrefix: + prefixes: + - /otlp diff --git a/traefik-manager/backups/dynamic.yml.20260713_222040.bak b/traefik-manager/backups/dynamic.yml.20260713_222040.bak new file mode 100644 index 0000000..da4b8c9 --- /dev/null +++ b/traefik-manager/backups/dynamic.yml.20260713_222040.bak @@ -0,0 +1,239 @@ +http: + routers: + gui-https-10-CommaFeed: + rule: ( Host(`commafeed.keithsolomon.net`) ) + service: gui-https-10-CommaFeed + tls: + certResolver: cloudflare + gui-https-11-OpenGist: + rule: ( Host(`gist.keithsolomon.net`) ) + service: gui-https-11-OpenGist + tls: + certResolver: cloudflare + gui-https-12-PromptBase: + rule: ( Host(`prompts.keithsolomon.net`) ) + service: gui-https-12-PromptBase + tls: + certResolver: cloudflare + gui-https-13-Uptime-Kuma: + rule: ( Host(`kuma.keithsolomon.net`) ) + service: gui-https-13-Uptime-Kuma + tls: + certResolver: cloudflare + gui-https-14-Emby: + rule: ( Host(`emby.keithsolomon.net`) ) + service: gui-https-14-Emby + tls: + certResolver: cloudflare + gui-https-15-Plex: + rule: ( Host(`plex.keithsolomon.net`) ) + service: gui-https-15-Plex + tls: + certResolver: cloudflare + gui-https-18-Termix: + rule: ( Host(`term.keithsolomon.net`) ) + service: gui-https-18-Termix + tls: + certResolver: cloudflare + gui-https-19-BillTrak: + rule: ( Host(`bills.keithsolomon.net`) ) + service: gui-https-19-BillTrak + tls: + certResolver: cloudflare + gui-https-2-Calibre: + rule: ( Host(`cwa.keithsolomon.net`) ) + service: gui-https-2-Calibre + tls: + certResolver: cloudflare + gui-https-21-Tautulli: + rule: ( Host(`tautulli.keithsolomon.net`) ) + service: gui-https-21-Tautulli + tls: + certResolver: cloudflare + gui-https-22-Listenarr: + rule: ( Host(`listen.keithsolomon.net`) ) + service: gui-https-22-Listenarr + tls: + certResolver: cloudflare + gui-https-23-Seerr: + rule: ( Host(`seerr.keithsolomon.net`) ) + service: gui-https-23-Seerr + tls: + certResolver: cloudflare + gui-https-24-Ironpad: + rule: ( Host(`pm.keithsolomon.net`) ) + service: gui-https-24-Ironpad + tls: + certResolver: cloudflare + gui-https-25-A11yTester: + rule: ( Host(`pw-a11y.keithsolomon.net`) ) + service: gui-https-25-A11yTester + tls: + certResolver: cloudflare + gui-https-26-Beszel: + rule: ( Host(`beszel.keithsolomon.net`) ) + service: gui-https-26-Beszel + tls: + certResolver: cloudflare + gui-https-27-FoundryVTT: + rule: ( Host(`foundry.keithsolomon.net`) ) + service: gui-https-27-FoundryVTT + tls: + certResolver: cloudflare + gui-https-28-SolidTime: + rule: ( Host(`time.keithsolomon.net`) ) + service: gui-https-28-SolidTime + tls: + certResolver: cloudflare + gui-https-29-Grafana: + rule: ( Host(`grafana.keithsolomon.net`) ) + service: gui-https-29-Grafana + tls: + certResolver: cloudflare + gui-https-3-KaraKeep: + rule: ( Host(`kara.keithsolomon.net`) ) + service: gui-https-3-KaraKeep + tls: + certResolver: cloudflare + gui-https-30-DroppedNeedle: + rule: ( Host(`needle.keithsolomon.net`) ) + service: gui-https-30-DroppedNeedle + tls: + certResolver: cloudflare + gui-https-31-Grafana-OTLP: + rule: (( Host(`grafana.keithsolomon.net`) ) && PathPrefix(`/otlp`)) + service: gui-https-31-Grafana-OTLP + tls: + certResolver: cloudflare + gui-https-4-Duplicati: + rule: ( Host(`backups.keithsolomon.net`) ) + service: gui-https-4-Duplicati + tls: + certResolver: cloudflare + gui-https-7-Paperless: + rule: ( Host(`paperless.keithsolomon.net`) ) + service: gui-https-7-Paperless + tls: + certResolver: cloudflare + gui-https-8-Tautulli: + rule: ( Host(`tautulli.keithsolomon.net`) ) + service: gui-https-8-Tautulli + tls: + certResolver: cloudflare + gui-https-9-YTDL: + rule: ( Host(`ytdl.keithsolomon.net`) ) + service: gui-https-9-YTDL + tls: + certResolver: cloudflare + services: + gui-https-10-CommaFeed: + loadBalancer: + servers: + - url: http://192.168.2.23:8082 + gui-https-11-OpenGist: + loadBalancer: + servers: + - url: http://192.168.2.23:6157 + gui-https-12-PromptBase: + loadBalancer: + servers: + - url: http://192.168.2.23:4321 + gui-https-13-Uptime-Kuma: + loadBalancer: + servers: + - url: http://192.168.2.23:3031 + gui-https-14-Emby: + loadBalancer: + servers: + - url: http://192.168.2.51:8096 + gui-https-15-Plex: + loadBalancer: + servers: + - url: http://192.168.2.51:32400 + gui-https-18-Termix: + loadBalancer: + servers: + - url: http://192.168.2.51:8182 + gui-https-19-BillTrak: + loadBalancer: + servers: + - url: http://192.168.2.23:8989 + gui-https-2-Calibre: + loadBalancer: + servers: + - url: http://192.168.2.51:8083 + gui-https-21-Tautulli: + loadBalancer: + servers: + - url: http://192.168.2.51:8181/home + gui-https-22-Listenarr: + loadBalancer: + servers: + - url: http://192.168.2.9:5000 + gui-https-23-Seerr: + loadBalancer: + servers: + - url: http://192.168.2.51:5055 + gui-https-24-Ironpad: + loadBalancer: + servers: + - url: http://192.168.2.23:2828/ + gui-https-25-A11yTester: + loadBalancer: + servers: + - url: http://192.168.2.9:3001 + gui-https-26-Beszel: + loadBalancer: + servers: + - url: http://192.168.2.9:8090/ + gui-https-27-FoundryVTT: + loadBalancer: + servers: + - url: http://192.168.2.23:30000 + gui-https-28-SolidTime: + loadBalancer: + servers: + - url: http://192.168.2.23:8580 + gui-https-29-Grafana: + loadBalancer: + servers: + - url: http://192.168.2.18:3000 + gui-https-3-KaraKeep: + loadBalancer: + servers: + - url: http://192.168.2.51:3849 + gui-https-30-DroppedNeedle: + loadBalancer: + servers: + - url: http://192.168.2.17:8688 + gui-https-31-Grafana-OTLP: + loadBalancer: + servers: + - url: http://192.168.2.18:4318 + gui-https-4-Duplicati: + loadBalancer: + servers: + - url: http://192.168.2.51:8200 + gui-https-7-Paperless: + loadBalancer: + servers: + - url: http://192.168.2.51:8010 + gui-https-8-Tautulli: + loadBalancer: + servers: + - url: http://192.168.2.51:8181 + gui-https-9-YTDL: + loadBalancer: + servers: + - url: http://192.168.2.51:8998 + middlewares: + https-redirect: + redirectScheme: + scheme: https + otlp-strip: + stripPrefix: + prefixes: + - /otlp + otlp-auth: + basicAuth: + usersFile: /etc/traefik/otlp.htpasswd diff --git a/traefik-manager/config/.secret_key b/traefik-manager/config/.secret_key new file mode 100644 index 0000000..abc9532 --- /dev/null +++ b/traefik-manager/config/.secret_key @@ -0,0 +1 @@ +836e0f7a9435e922292e019ed3200338777a0c5caf051ecbc362f5cf82941350 \ No newline at end of file diff --git a/traefik-manager/config/dashboard.yml b/traefik-manager/config/dashboard.yml new file mode 100644 index 0000000..35fde33 --- /dev/null +++ b/traefik-manager/config/dashboard.yml @@ -0,0 +1,13 @@ +custom_groups: [] +route_overrides: + gui-https-18-Termix: {group: Network, icon_type: auto} + gui-https-19-BillTrak: {group: Home, icon_type: auto} + gui-https-2-Calibre: {group: Media, icon_type: auto} + gui-https-22-Listenarr: {group: Media, icon_type: auto} + gui-https-23-Seerr: {group: Media, icon_type: auto} + gui-https-24-Ironpad: {group: Dev, icon_type: auto} + gui-https-25-A11y Tester: {group: Dev, icon_type: auto} + gui-https-26-Beszel: {group: Monitoring, icon_type: auto} + gui-https-28-SolidTime: {group: Dev, icon_type: auto} + gui-https-4-Duplicati: {group: Files & Data, icon_type: auto} + gui-https-9-YTDL: {group: Media, icon_type: auto} diff --git a/traefik-manager/config/dynamic.yml b/traefik-manager/config/dynamic.yml new file mode 100644 index 0000000..e69de29 diff --git a/traefik-manager/config/manager.yml b/traefik-manager/config/manager.yml new file mode 100644 index 0000000..aecbaa8 --- /dev/null +++ b/traefik-manager/config/manager.yml @@ -0,0 +1,69 @@ +domains: + - keithsolomon.net +cert_resolver: cloudflare +traefik_api_url: https://tfk.keithsolomon.net +auth_enabled: true +password_hash: $2b$12$Y1TF4N1dl0sWi8NsybNY8.UWjh3JglgJV6mid0tWHW7q5rGWPb2uC +visible_tabs: + dashboard: true + routemap: true + docker: true + kubernetes: false + swarm: false + nomad: false + ecs: false + consulcatalog: false + redis: false + etcd: false + consul: false + zookeeper: false + http_provider: false + file_external: false + certs: true + tls: false + crowdsec: false + plugins: true + logs: true +must_change_password: false +setup_complete: true +otp_secret: '' +otp_enabled: false +disabled_routes: {} +api_keys: [] +api_key_enabled: false +self_route: + domain: '' + service_url: '' + router_name: traefik-manager + entry_point: '' +acme_json_path: '' +access_log_path: '' +static_config_path: '' +oidc_enabled: false +oidc_provider_url: '' +oidc_client_id: '' +oidc_client_secret: '' +oidc_display_name: OIDC +oidc_allowed_emails: '' +oidc_allowed_groups: '' +oidc_allow_any_authenticated: false +oidc_groups_claim: groups +webhook_url: '' +webhook_type: discord +webhook_username: '' +webhook_password: '' +crowdsec_lapi_url: '' +crowdsec_api_key: '' +crowdsec_machine_id: '' +crowdsec_machine_password: '' +traefik_api_user: '' +traefik_api_password: '' +git_backup_enabled: false +git_backup_repo: '' +git_backup_branch: main +git_backup_username: '' +git_backup_token: '' +git_backup_commit_message: 'traefik-manager: {action} at {timestamp}' +git_backup_auto_push: true +agent_api_rate_limit: 30 +backup_keep_count: 0 diff --git a/traefik-manager/config/notifications.yml b/traefik-manager/config/notifications.yml new file mode 100644 index 0000000..e8ff0ad --- /dev/null +++ b/traefik-manager/config/notifications.yml @@ -0,0 +1,9 @@ +- {msg: Login from 172.31.0.9, ts: '2026-04-19 10:07:55', type: info} +- {msg: Login from 206.45.255.176, ts: '2026-05-14 13:09:21', type: info} +- {msg: Middleware otlp-strip created, ts: '2026-07-13 21:05:22', type: success} +- {msg: Middleware otlp-auth created, ts: '2026-07-13 21:08:38', type: success} +- {msg: Route gui-https-31-Grafana-OTLP updated, ts: '2026-07-13 21:09:44', type: + success} +- {msg: Middleware otlp-auth created, ts: '2026-07-13 22:20:04', type: success} +- {msg: Route gui-https-31-Grafana-OTLP updated, ts: '2026-07-13 22:20:40', type: + success} diff --git a/traefik/config/gui.yml b/traefik/config/gui.yml new file mode 100644 index 0000000..42136ac --- /dev/null +++ b/traefik/config/gui.yml @@ -0,0 +1,244 @@ +http: + routers: + gui-https-10-CommaFeed: + rule: ( Host(`commafeed.keithsolomon.net`) ) + service: gui-https-10-CommaFeed + tls: + certResolver: cloudflare + gui-https-11-OpenGist: + rule: ( Host(`gist.keithsolomon.net`) ) + service: gui-https-11-OpenGist + tls: + certResolver: cloudflare + gui-https-12-PromptBase: + rule: ( Host(`prompts.keithsolomon.net`) ) + service: gui-https-12-PromptBase + tls: + certResolver: cloudflare + gui-https-13-Uptime-Kuma: + rule: ( Host(`kuma.keithsolomon.net`) ) + service: gui-https-13-Uptime-Kuma + tls: + certResolver: cloudflare + gui-https-14-Emby: + rule: ( Host(`emby.keithsolomon.net`) ) + service: gui-https-14-Emby + tls: + certResolver: cloudflare + gui-https-15-Plex: + rule: ( Host(`plex.keithsolomon.net`) ) + service: gui-https-15-Plex + tls: + certResolver: cloudflare + gui-https-18-Termix: + rule: ( Host(`term.keithsolomon.net`) ) + service: gui-https-18-Termix + tls: + certResolver: cloudflare + gui-https-19-BillTrak: + rule: ( Host(`bills.keithsolomon.net`) ) + service: gui-https-19-BillTrak + tls: + certResolver: cloudflare + gui-https-2-Calibre: + rule: ( Host(`cwa.keithsolomon.net`) ) + service: gui-https-2-Calibre + tls: + certResolver: cloudflare + gui-https-21-Tautulli: + rule: ( Host(`tautulli.keithsolomon.net`) ) + service: gui-https-21-Tautulli + tls: + certResolver: cloudflare + gui-https-22-Listenarr: + rule: ( Host(`listen.keithsolomon.net`) ) + service: gui-https-22-Listenarr + tls: + certResolver: cloudflare + gui-https-23-Seerr: + rule: ( Host(`seerr.keithsolomon.net`) ) + service: gui-https-23-Seerr + tls: + certResolver: cloudflare + gui-https-24-Ironpad: + rule: ( Host(`pm.keithsolomon.net`) ) + service: gui-https-24-Ironpad + tls: + certResolver: cloudflare + gui-https-25-A11yTester: + rule: ( Host(`pw-a11y.keithsolomon.net`) ) + service: gui-https-25-A11yTester + tls: + certResolver: cloudflare + gui-https-26-Beszel: + rule: ( Host(`beszel.keithsolomon.net`) ) + service: gui-https-26-Beszel + tls: + certResolver: cloudflare + gui-https-27-FoundryVTT: + rule: ( Host(`foundry.keithsolomon.net`) ) + service: gui-https-27-FoundryVTT + tls: + certResolver: cloudflare + gui-https-28-SolidTime: + rule: ( Host(`time.keithsolomon.net`) ) + service: gui-https-28-SolidTime + tls: + certResolver: cloudflare + gui-https-29-Grafana: + rule: ( Host(`grafana.keithsolomon.net`) ) + service: gui-https-29-Grafana + tls: + certResolver: cloudflare + gui-https-3-KaraKeep: + rule: ( Host(`kara.keithsolomon.net`) ) + service: gui-https-3-KaraKeep + tls: + certResolver: cloudflare + gui-https-30-DroppedNeedle: + rule: ( Host(`needle.keithsolomon.net`) ) + service: gui-https-30-DroppedNeedle + tls: + certResolver: cloudflare + gui-https-31-Grafana-OTLP: + rule: (( Host(`grafana.keithsolomon.net`) ) && PathPrefix(`/otlp`)) + entryPoints: + - https + service: gui-https-31-Grafana-OTLP-service + middlewares: + - otlp-strip + - otlp-auth + tls: + certResolver: cloudflare + gui-https-4-Duplicati: + rule: ( Host(`backups.keithsolomon.net`) ) + service: gui-https-4-Duplicati + tls: + certResolver: cloudflare + gui-https-7-Paperless: + rule: ( Host(`paperless.keithsolomon.net`) ) + service: gui-https-7-Paperless + tls: + certResolver: cloudflare + gui-https-8-Tautulli: + rule: ( Host(`tautulli.keithsolomon.net`) ) + service: gui-https-8-Tautulli + tls: + certResolver: cloudflare + gui-https-9-YTDL: + rule: ( Host(`ytdl.keithsolomon.net`) ) + service: gui-https-9-YTDL + tls: + certResolver: cloudflare + services: + gui-https-10-CommaFeed: + loadBalancer: + servers: + - url: http://192.168.2.23:8082 + gui-https-11-OpenGist: + loadBalancer: + servers: + - url: http://192.168.2.23:6157 + gui-https-12-PromptBase: + loadBalancer: + servers: + - url: http://192.168.2.23:4321 + gui-https-13-Uptime-Kuma: + loadBalancer: + servers: + - url: http://192.168.2.23:3031 + gui-https-14-Emby: + loadBalancer: + servers: + - url: http://192.168.2.51:8096 + gui-https-15-Plex: + loadBalancer: + servers: + - url: http://192.168.2.51:32400 + gui-https-18-Termix: + loadBalancer: + servers: + - url: http://192.168.2.51:8182 + gui-https-19-BillTrak: + loadBalancer: + servers: + - url: http://192.168.2.23:8989 + gui-https-2-Calibre: + loadBalancer: + servers: + - url: http://192.168.2.51:8083 + gui-https-21-Tautulli: + loadBalancer: + servers: + - url: http://192.168.2.51:8181/home + gui-https-22-Listenarr: + loadBalancer: + servers: + - url: http://192.168.2.9:5000 + gui-https-23-Seerr: + loadBalancer: + servers: + - url: http://192.168.2.51:5055 + gui-https-24-Ironpad: + loadBalancer: + servers: + - url: http://192.168.2.23:2828/ + gui-https-25-A11yTester: + loadBalancer: + servers: + - url: http://192.168.2.9:3001 + gui-https-26-Beszel: + loadBalancer: + servers: + - url: http://192.168.2.9:8090/ + gui-https-27-FoundryVTT: + loadBalancer: + servers: + - url: http://192.168.2.23:30000 + gui-https-28-SolidTime: + loadBalancer: + servers: + - url: http://192.168.2.23:8580 + gui-https-29-Grafana: + loadBalancer: + servers: + - url: http://192.168.2.18:3000 + gui-https-3-KaraKeep: + loadBalancer: + servers: + - url: http://192.168.2.51:3849 + gui-https-30-DroppedNeedle: + loadBalancer: + servers: + - url: http://192.168.2.17:8688 + gui-https-4-Duplicati: + loadBalancer: + servers: + - url: http://192.168.2.51:8200 + gui-https-7-Paperless: + loadBalancer: + servers: + - url: http://192.168.2.51:8010 + gui-https-8-Tautulli: + loadBalancer: + servers: + - url: http://192.168.2.51:8181 + gui-https-9-YTDL: + loadBalancer: + servers: + - url: http://192.168.2.51:8998 + gui-https-31-Grafana-OTLP-service: + loadBalancer: + servers: + - url: http://192.168.2.18:4318 + middlewares: + https-redirect: + redirectScheme: + scheme: https + otlp-strip: + stripPrefix: + prefixes: + - /otlp + otlp-auth: + basicAuth: + usersFile: /etc/traefik/otlp.htpasswd diff --git a/traefik/config/otlp.htpasswd b/traefik/config/otlp.htpasswd new file mode 100644 index 0000000..27d1b6c --- /dev/null +++ b/traefik/config/otlp.htpasswd @@ -0,0 +1 @@ +keith:$2y$05$DudzvcuCAb7QY3xgFCi7euRALAqTOmt4y/riHuQj49njl.ETqGUZW diff --git a/traefik/traefik.yml b/traefik/traefik.yml new file mode 100644 index 0000000..77cca8e --- /dev/null +++ b/traefik/traefik.yml @@ -0,0 +1,95 @@ +global: + # Send anonymous usage data + sendAnonymousUsage: true + checkNewVersion: true + +api: + dashboard: true + debug: true + disableDashboardAd: true + +log: + filePath: "/logs/logfile.log" + level: INFO + format: common + +accessLog: + filePath: "/logs/access.log" + # bufferingSize: 20 + fields: + defaultMode: keep + names: + StartUTC: drop + +entryPoints: + http: + address: ":80" + http: + redirections: + entryPoint: + to: https + scheme: https + permanent: true + + https: + address: ":443" + http: + tls: + # Generate a wildcard domain certificate + certResolver: cloudflare + + domains: + - main: '*.keithsolomon.net' + + forwardedHeaders: + trustedIPs: + - "173.245.48.0/20" + - "103.21.244.0/22" + - "103.22.200.0/22" + - "103.31.4.0/22" + - "141.101.64.0/18" + - "108.162.192.0/18" + - "190.93.240.0/20" + - "188.114.96.0/20" + - "197.234.240.0/22" + - "198.41.128.0/17" + - "162.158.0.0/15" + - "104.16.0.0/13" + - "104.24.0.0/14" + - "172.64.0.0/13" + - "131.0.72.0/22" + - "2400:cb00::/32" + - "2606:4700::/32" + - "2803:f800::/32" + - "2405:b500::/32" + - "2405:8100::/32" + - "2a06:98c0::/29" + - "2c0f:f248::/32" + +serversTransport: + insecureSkipVerify: true + +providers: + providersThrottleDuration: 2s + + docker: + endpoint: "unix:///var/run/docker.sock" + exposedByDefault: false + watch: true + network: proxy + + file: + directory: "/traefik_config" + watch: true + +certificatesResolvers: + cloudflare: + acme: + email: ksolomon@gmail.com + storage: /traefik_cert/acme.json + + dnsChallenge: + provider: cloudflare + resolvers: + - "1.1.1.1:53" + - "1.0.0.1:53"