adds traefik
This commit is contained in:
84
traefik/acme.json
Normal file
84
traefik/acme.json
Normal file
File diff suppressed because one or more lines are too long
30
traefik/docker-compose.yaml
Normal file
30
traefik/docker-compose.yaml
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
services:
|
||||||
|
traefik:
|
||||||
|
image: traefik:latest
|
||||||
|
container_name: traefik
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- "443:443"
|
||||||
|
- "8082:8082"
|
||||||
|
- "2222:2222"
|
||||||
|
networks:
|
||||||
|
- traefik
|
||||||
|
environment:
|
||||||
|
- VARIOMEDIA_API_TOKEN=${VARIOMEDIA_API_TOKEN} # Variomedia API key
|
||||||
|
- TRAEFIK_METRICS_PROMETHEUS=true
|
||||||
|
- TRAEFIK_METRICS_PROMETHEUS_ENTRYPOINT=metrics
|
||||||
|
- TRAEFIK_METRICS_PROMETHEUS_ADDENTRYPOINTSLABELS=true
|
||||||
|
- TRAEFIK_METRICS_PROMETHEUS_ADDSERVICESLABELS=true
|
||||||
|
- TRAEFIK_METRICS_PROMETHEUS_MANUALROUTING=true
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
|
- ./traefik.yml:/etc/traefik/traefik.yml:ro
|
||||||
|
- ./acme.json:/letsencrypt/acme.json
|
||||||
|
- ./log:/var/log/traefik
|
||||||
|
dns:
|
||||||
|
- "10.20.1.1"
|
||||||
|
- "10.20.0.1"
|
||||||
|
- "1.1.1.1" # Cloudflare DNS
|
||||||
|
networks:
|
||||||
|
traefik:
|
||||||
|
external: true
|
||||||
140
traefik/traefik.toml
Normal file
140
traefik/traefik.toml
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
[global]
|
||||||
|
checkNewVersion = true
|
||||||
|
sendAnonymousUsage = false
|
||||||
|
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.web]
|
||||||
|
address = ":80"
|
||||||
|
[entryPoints.websecure]
|
||||||
|
address = ":443"
|
||||||
|
[entryPoints.metrics]
|
||||||
|
address = ":8082" # Dedicated port for Prometheus metrics
|
||||||
|
[entryPoints.ssh]
|
||||||
|
address = ":2222"
|
||||||
|
[entryPoints.ssh.transport]
|
||||||
|
[entryPoints.ssh.transport.lifeCycle]
|
||||||
|
graceTimeOut = "30s"
|
||||||
|
[entryPoints.ssh.transport.respondingTimeouts]
|
||||||
|
idleTimeout = "3m"
|
||||||
|
readTimeout = "1m"
|
||||||
|
|
||||||
|
|
||||||
|
[api]
|
||||||
|
dashboard = true
|
||||||
|
|
||||||
|
[metrics.prometheus]
|
||||||
|
entryPoint = "metrics"
|
||||||
|
addEntryPointsLabels = true
|
||||||
|
addServicesLabels = true
|
||||||
|
manualRouting = true
|
||||||
|
|
||||||
|
[log]
|
||||||
|
level = "INFO"
|
||||||
|
filePath = "/var/log/traefik/traefik.log"
|
||||||
|
|
||||||
|
[accessLog]
|
||||||
|
filePath = "/var/log/traefik/access.log"
|
||||||
|
|
||||||
|
[providers.docker]
|
||||||
|
endpoint = "unix:///var/run/docker.sock"
|
||||||
|
exposedByDefault = false
|
||||||
|
|
||||||
|
[certificatesResolvers.variomedia.acme]
|
||||||
|
email = "tim@unkrig.dev"
|
||||||
|
storage = "/letsencrypt/acme.json"
|
||||||
|
caServer = "https://acme-v02.api.letsencrypt.org/directory"
|
||||||
|
[certificatesResolvers.variomedia.acme.dnsChallenge]
|
||||||
|
provider = "variomedia"
|
||||||
|
delayBeforeCheck = 0
|
||||||
|
|
||||||
|
[providers]
|
||||||
|
[providers.file]
|
||||||
|
filename = "/etc/traefik/traefik.toml"
|
||||||
|
watch = true
|
||||||
|
|
||||||
|
[http.routers]
|
||||||
|
[http.routers.traefik]
|
||||||
|
rule = "Host(`traefik.unkrig.dev`)"
|
||||||
|
entryPoints = ["websecure"]
|
||||||
|
service = "api@internal"
|
||||||
|
tls.certresolver = "variomedia"
|
||||||
|
|
||||||
|
[http.routers.cloud_unkrig_dev]
|
||||||
|
rule = "Host(`cloud.unkrig.dev`)"
|
||||||
|
entryPoints = ["websecure"]
|
||||||
|
service = "cloud_unkrig_dev"
|
||||||
|
tls.certresolver = "variomedia"
|
||||||
|
middlewares = ["nextcloud-headers"]
|
||||||
|
|
||||||
|
[http.routers.git_unkrig_dev]
|
||||||
|
rule = "Host(`git.unkrig.dev`)"
|
||||||
|
entryPoints = ["websecure"]
|
||||||
|
service = "git_unkrig_dev"
|
||||||
|
tls.certresolver = "variomedia"
|
||||||
|
|
||||||
|
[http.routers.ha_unkrig_dev]
|
||||||
|
rule = "Host(`homeassistant.unkrig.dev`)"
|
||||||
|
entryPoints = ["websecure"]
|
||||||
|
service = "ha_unkrig_dev"
|
||||||
|
tls.certresolver = "variomedia"
|
||||||
|
|
||||||
|
[http.routers.auth_unkrig_dev]
|
||||||
|
rule = "Host(`auth.unkrig.dev`)"
|
||||||
|
entryPoints = ["websecure"]
|
||||||
|
service = "auth_unkrig_dev"
|
||||||
|
tls.certresolver = "variomedia"
|
||||||
|
middlewares = ["auth-headers"]
|
||||||
|
|
||||||
|
[http.routers.photos_unkrig_dev]
|
||||||
|
rule = "Host(`photos.unkrig.dev`)"
|
||||||
|
entryPoints = ["websecure"]
|
||||||
|
service = "photos_unkrig_dev"
|
||||||
|
tls.certresolver = "variomedia"
|
||||||
|
|
||||||
|
[http.services]
|
||||||
|
[http.services.cloud_unkrig_dev.loadBalancer]
|
||||||
|
[[http.services.cloud_unkrig_dev.loadBalancer.servers]]
|
||||||
|
url = "http://10.20.1.8:11000"
|
||||||
|
|
||||||
|
[http.services.git_unkrig_dev.loadBalancer]
|
||||||
|
[[http.services.git_unkrig_dev.loadBalancer.servers]]
|
||||||
|
url = "http://10.20.1.6:2345"
|
||||||
|
|
||||||
|
[http.services.ha_unkrig_dev.loadBalancer]
|
||||||
|
[[http.services.ha_unkrig_dev.loadBalancer.servers]]
|
||||||
|
url = "http://10.20.1.20:8123"
|
||||||
|
|
||||||
|
[http.services.auth_unkrig_dev.loadBalancer]
|
||||||
|
[[http.services.rss_unkrig_dev.loadBalancer.servers]]
|
||||||
|
url = "http://10.20.1.1:9000"
|
||||||
|
|
||||||
|
[http.services.rss_unkrig_dev.loadBalancer]
|
||||||
|
[[http.services.rss_unkrig_dev.loadBalancer.servers]]
|
||||||
|
url = "http://10.20.1.5:2283"
|
||||||
|
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.nextcloud-headers.headers]
|
||||||
|
# stsSeconds = 15552000
|
||||||
|
# stsIncludeSubdomains = true
|
||||||
|
# stsPreload = true
|
||||||
|
# customFrameOptionsValue = "SAMEORIGIN"
|
||||||
|
# contentTypeNosniff = true
|
||||||
|
# browserXssFilter = true
|
||||||
|
# referrerPolicy = "no-referrer"
|
||||||
|
hostsProxyHeaders = [ "X-Forwarded-Host" ]
|
||||||
|
referrerPolicy = "same-origin"
|
||||||
|
|
||||||
|
[http.middlewares.auth-headers.headers]
|
||||||
|
hostsProxyHeaders = [ "X-Forwarded-Host" ]
|
||||||
|
referrerPolicy = "same-origin"
|
||||||
|
|
||||||
|
[tcp.routers]
|
||||||
|
[tcp.routers.git_ssh]
|
||||||
|
entryPoints = ["ssh"]
|
||||||
|
service = "git_ssh_service"
|
||||||
|
rule = "HostSNI(`*`)"
|
||||||
|
|
||||||
|
[tcp.services]
|
||||||
|
[tcp.services.git_ssh_service.loadBalancer]
|
||||||
|
[[tcp.services.git_ssh_service.loadBalancer.servers]]
|
||||||
|
address = "10.20.1.6:2346"
|
||||||
167
traefik/traefik.yml
Normal file
167
traefik/traefik.yml
Normal file
@@ -0,0 +1,167 @@
|
|||||||
|
global:
|
||||||
|
checkNewVersion: true
|
||||||
|
sendAnonymousUsage: false
|
||||||
|
entryPoints:
|
||||||
|
web:
|
||||||
|
address: :80
|
||||||
|
websecure:
|
||||||
|
address: :443
|
||||||
|
transport:
|
||||||
|
respondingTimeouts:
|
||||||
|
readTimeout: 600s
|
||||||
|
idleTimeout: 600s
|
||||||
|
writeTimeout: 600s
|
||||||
|
metrics:
|
||||||
|
address: :8082
|
||||||
|
ssh:
|
||||||
|
address: :2222
|
||||||
|
transport:
|
||||||
|
lifeCycle:
|
||||||
|
graceTimeOut: 30s
|
||||||
|
respondingTimeouts:
|
||||||
|
idleTimeout: 3m
|
||||||
|
readTimeout: 1m
|
||||||
|
api:
|
||||||
|
dashboard: true
|
||||||
|
metrics:
|
||||||
|
prometheus:
|
||||||
|
entryPoint: metrics
|
||||||
|
addEntryPointsLabels: true
|
||||||
|
addServicesLabels: true
|
||||||
|
manualRouting: true
|
||||||
|
log:
|
||||||
|
level: INFO
|
||||||
|
filePath: /var/log/traefik/traefik.log
|
||||||
|
accessLog:
|
||||||
|
filePath: /var/log/traefik/access.log
|
||||||
|
providers:
|
||||||
|
docker:
|
||||||
|
endpoint: unix:///var/run/docker.sock
|
||||||
|
exposedByDefault: false
|
||||||
|
file:
|
||||||
|
filename: /etc/traefik/traefik.yml
|
||||||
|
watch: true
|
||||||
|
certificatesResolvers:
|
||||||
|
variomedia:
|
||||||
|
acme:
|
||||||
|
email: tim@unkrig.dev
|
||||||
|
storage: /letsencrypt/acme.json
|
||||||
|
caServer: https://acme-v02.api.letsencrypt.org/directory
|
||||||
|
dnsChallenge:
|
||||||
|
provider: variomedia
|
||||||
|
delayBeforeCheck: 0
|
||||||
|
|
||||||
|
http:
|
||||||
|
routers:
|
||||||
|
traefik:
|
||||||
|
rule: Host(`traefik.unkrig.dev`)
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
service: api@internal
|
||||||
|
tls:
|
||||||
|
certresolver: variomedia
|
||||||
|
cloud_unkrig_dev:
|
||||||
|
rule: Host(`cloud.unkrig.dev`)
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
service: cloud_unkrig_dev
|
||||||
|
tls:
|
||||||
|
certresolver: variomedia
|
||||||
|
middlewares:
|
||||||
|
- nextcloud-headers
|
||||||
|
ha_unkrig_dev:
|
||||||
|
rule: Host(`homeassistant.unkrig.dev`)
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
service: ha_unkrig_dev
|
||||||
|
tls:
|
||||||
|
certresolver: variomedia
|
||||||
|
rss_unkrig_dev:
|
||||||
|
rule: Host(`rss.unkrig.dev`)
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
service: rss_unkrig_dev
|
||||||
|
tls:
|
||||||
|
certresolver: variomedia
|
||||||
|
auth_unkrig_dev:
|
||||||
|
rule: Host(`auth.unkrig.dev`)
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
service: auth_unkrig_dev
|
||||||
|
tls:
|
||||||
|
certresolver: variomedia
|
||||||
|
middlewares:
|
||||||
|
- auth-headers
|
||||||
|
photos_unkrig_dev:
|
||||||
|
rule: Host(`photos.unkrig.dev`)
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
service: photos_unkrig_dev
|
||||||
|
tls:
|
||||||
|
certresolver: variomedia
|
||||||
|
middlewares:
|
||||||
|
- immich-headers
|
||||||
|
|
||||||
|
services:
|
||||||
|
cloud_unkrig_dev:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: http://10.20.1.8:11000
|
||||||
|
ha_unkrig_dev:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: http://10.20.1.20:8123
|
||||||
|
rss_unkrig_dev:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: http://10.20.1.1:80
|
||||||
|
auth_unkrig_dev:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: http://10.20.1.2:9000
|
||||||
|
photos_unkrig_dev:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: http://10.20.1.2:2283
|
||||||
|
middlewares:
|
||||||
|
nextcloud-headers:
|
||||||
|
headers:
|
||||||
|
hostsProxyHeaders:
|
||||||
|
- X-Forwarded-Host
|
||||||
|
referrerPolicy: same-origin
|
||||||
|
auth-headers:
|
||||||
|
headers:
|
||||||
|
hostsProxyHeaders:
|
||||||
|
- X-Forwarded-Host
|
||||||
|
referrerPolicy: same-origin
|
||||||
|
immich-headers:
|
||||||
|
headers:
|
||||||
|
# hostsProxyHeaders:
|
||||||
|
# - X-Forwarded-Host
|
||||||
|
# referrerPolicy: same-origin
|
||||||
|
hostsProxyHeaders:
|
||||||
|
- "X-Forwarded-Host"
|
||||||
|
customRequestHeaders:
|
||||||
|
X-Forwarded-Proto: "https"
|
||||||
|
referrerPolicy: "same-origin"
|
||||||
|
stsSeconds: 63072000
|
||||||
|
stsIncludeSubdomains: true
|
||||||
|
stsPreload: true
|
||||||
|
forceSTSHeader: true
|
||||||
|
|
||||||
|
tcp:
|
||||||
|
serversTransports:
|
||||||
|
git_ssh_transport:
|
||||||
|
terminationDelay: 300
|
||||||
|
routers:
|
||||||
|
git_ssh:
|
||||||
|
entryPoints:
|
||||||
|
- ssh
|
||||||
|
service: git_ssh_service
|
||||||
|
rule: HostSNI(`*`)
|
||||||
|
services:
|
||||||
|
git_ssh_service:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- address: 10.20.1.1:2346
|
||||||
|
serversTransport: git_ssh_transport
|
||||||
178
traefik/traefik.yml.bak
Normal file
178
traefik/traefik.yml.bak
Normal file
@@ -0,0 +1,178 @@
|
|||||||
|
global:
|
||||||
|
checkNewVersion: true
|
||||||
|
sendAnonymousUsage: false
|
||||||
|
entryPoints:
|
||||||
|
web:
|
||||||
|
address: :80
|
||||||
|
websecure:
|
||||||
|
address: :443
|
||||||
|
transport:
|
||||||
|
respondingTimeouts:
|
||||||
|
readTimeout: 600s
|
||||||
|
idleTimeout: 600s
|
||||||
|
writeTimeout: 600s
|
||||||
|
metrics:
|
||||||
|
address: :8082
|
||||||
|
ssh:
|
||||||
|
address: :2222
|
||||||
|
transport:
|
||||||
|
lifeCycle:
|
||||||
|
graceTimeOut: 30s
|
||||||
|
respondingTimeouts:
|
||||||
|
idleTimeout: 3m
|
||||||
|
readTimeout: 1m
|
||||||
|
api:
|
||||||
|
dashboard: true
|
||||||
|
metrics:
|
||||||
|
prometheus:
|
||||||
|
entryPoint: metrics
|
||||||
|
addEntryPointsLabels: true
|
||||||
|
addServicesLabels: true
|
||||||
|
manualRouting: true
|
||||||
|
log:
|
||||||
|
level: INFO
|
||||||
|
filePath: /var/log/traefik/traefik.log
|
||||||
|
accessLog:
|
||||||
|
filePath: /var/log/traefik/access.log
|
||||||
|
providers:
|
||||||
|
docker:
|
||||||
|
endpoint: unix:///var/run/docker.sock
|
||||||
|
exposedByDefault: false
|
||||||
|
file:
|
||||||
|
filename: /etc/traefik/traefik.yml
|
||||||
|
watch: true
|
||||||
|
certificatesResolvers:
|
||||||
|
variomedia:
|
||||||
|
acme:
|
||||||
|
email: tim@unkrig.dev
|
||||||
|
storage: /letsencrypt/acme.json
|
||||||
|
caServer: https://acme-v02.api.letsencrypt.org/directory
|
||||||
|
dnsChallenge:
|
||||||
|
provider: variomedia
|
||||||
|
delayBeforeCheck: 0
|
||||||
|
|
||||||
|
http:
|
||||||
|
routers:
|
||||||
|
traefik:
|
||||||
|
rule: Host(`traefik.unkrig.dev`)
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
service: api@internal
|
||||||
|
tls:
|
||||||
|
certresolver: variomedia
|
||||||
|
cloud_unkrig_dev:
|
||||||
|
rule: Host(`cloud.unkrig.dev`)
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
service: cloud_unkrig_dev
|
||||||
|
tls:
|
||||||
|
certresolver: variomedia
|
||||||
|
middlewares:
|
||||||
|
- nextcloud-headers
|
||||||
|
git_unkrig_dev:
|
||||||
|
rule: Host(`git.unkrig.dev`)
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
service: git_unkrig_dev
|
||||||
|
tls:
|
||||||
|
certresolver: variomedia
|
||||||
|
ha_unkrig_dev:
|
||||||
|
rule: Host(`homeassistant.unkrig.dev`)
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
service: ha_unkrig_dev
|
||||||
|
tls:
|
||||||
|
certresolver: variomedia
|
||||||
|
rss_unkrig_dev:
|
||||||
|
rule: Host(`rss.unkrig.dev`)
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
service: rss_unkrig_dev
|
||||||
|
tls:
|
||||||
|
certresolver: variomedia
|
||||||
|
auth_unkrig_dev:
|
||||||
|
rule: Host(`auth.unkrig.dev`)
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
service: auth_unkrig_dev
|
||||||
|
tls:
|
||||||
|
certresolver: variomedia
|
||||||
|
middlewares:
|
||||||
|
- auth-headers
|
||||||
|
photos_unkrig_dev:
|
||||||
|
rule: Host(`photos.unkrig.dev`)
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
service: photos_unkrig_dev
|
||||||
|
tls:
|
||||||
|
certresolver: variomedia
|
||||||
|
middlewares:
|
||||||
|
- immich-headers
|
||||||
|
|
||||||
|
services:
|
||||||
|
cloud_unkrig_dev:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: http://10.20.1.8:11000
|
||||||
|
git_unkrig_dev:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: http://10.20.1.6:2345
|
||||||
|
ha_unkrig_dev:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: http://10.20.1.20:8123
|
||||||
|
rss_unkrig_dev:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: http://10.20.1.1:80
|
||||||
|
auth_unkrig_dev:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: http://10.20.1.1:9000
|
||||||
|
photos_unkrig_dev:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: http://10.20.1.5:2283
|
||||||
|
middlewares:
|
||||||
|
nextcloud-headers:
|
||||||
|
headers:
|
||||||
|
hostsProxyHeaders:
|
||||||
|
- X-Forwarded-Host
|
||||||
|
referrerPolicy: same-origin
|
||||||
|
auth-headers:
|
||||||
|
headers:
|
||||||
|
hostsProxyHeaders:
|
||||||
|
- X-Forwarded-Host
|
||||||
|
referrerPolicy: same-origin
|
||||||
|
immich-headers:
|
||||||
|
headers:
|
||||||
|
# hostsProxyHeaders:
|
||||||
|
# - X-Forwarded-Host
|
||||||
|
# referrerPolicy: same-origin
|
||||||
|
hostsProxyHeaders:
|
||||||
|
- "X-Forwarded-Host"
|
||||||
|
customRequestHeaders:
|
||||||
|
X-Forwarded-Proto: "https"
|
||||||
|
referrerPolicy: "same-origin"
|
||||||
|
stsSeconds: 63072000
|
||||||
|
stsIncludeSubdomains: true
|
||||||
|
stsPreload: true
|
||||||
|
forceSTSHeader: true
|
||||||
|
|
||||||
|
tcp:
|
||||||
|
serversTransports:
|
||||||
|
git_ssh_transport:
|
||||||
|
terminationDelay: 300
|
||||||
|
routers:
|
||||||
|
git_ssh:
|
||||||
|
entryPoints:
|
||||||
|
- ssh
|
||||||
|
service: git_ssh_service
|
||||||
|
rule: HostSNI(`*`)
|
||||||
|
services:
|
||||||
|
git_ssh_service:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- address: 10.20.1.6:2346
|
||||||
|
serversTransport: git_ssh_transport
|
||||||
Reference in New Issue
Block a user