Files
cloudy/compose/traefik/traefik.yml
T

166 lines
4.1 KiB
YAML

log:
level: DEBUG
api:
# Dashboard
dashboard: true
# https://docs.traefik.io/master/operations/api/#insecure
# insecure: true
entryPoints:
web:
# http
address: ":80"
http:
# https://docs.traefik.io/routing/entrypoints/#entrypoint
redirections:
entryPoint:
to: web-secure
web-secure:
# https
address: ":443"
# osrm:
# address: ":5000"
certificatesResolvers:
letsencrypt:
# https://docs.traefik.io/master/https/acme/#lets-encrypt
acme:
email: "furyx@hotmail.com"
storage: /etc/traefik/acme/acme.json
# https://docs.traefik.io/master/https/acme/#httpchallenge
httpChallenge:
entryPoint: web
http:
routers:
dashboard:
rule: "Host(`dashboard.furyhawk.lol`) && (PathPrefix(`/api`) || PathPrefix(`/dashboard`))"
entryPoints:
- web-secure
service: api@internal
middlewares:
- auth
tls:
# https://docs.traefik.io/master/routing/routers/#certresolver
certResolver: letsencrypt
domains:
- main: "furyhawk.lol"
sans:
- "*.furyhawk.lol"
web-secure-router:
rule: "Host(`furyhawk.lol`, `www.furyhawk.lol`, `bai.furyhawk.lol`) || PathPrefix(`/bai`)"
entryPoints:
- web-secure
middlewares:
- csrf
- add-bai
service: streamlit_bai_app
tls:
# https://docs.traefik.io/master/routing/routers/#certresolver
certResolver: letsencrypt
domains:
- main: "furyhawk.lol"
sans:
- "*.furyhawk.lol"
fin-router:
rule: "Host(`fin.furyhawk.lol`)"
entryPoints:
- web-secure
middlewares:
- csrf
- add-fin
service: streamlit_fin_app
tls:
# https://docs.traefik.io/master/routing/routers/#certresolver
certResolver: letsencrypt
domains:
- main: "furyhawk.lol"
sans:
- "*.furyhawk.lol"
blog-router:
rule: "Host(`blog.furyhawk.lol`)"
entryPoints:
- web-secure
# redirect to external blog
middlewares:
- redirect-blog
service: blog
tls:
# https://docs.traefik.io/master/routing/routers/#certresolver
certResolver: letsencrypt
osrm-router:
rule: "Host(`osrm.furyhawk.lol`)"
entryPoints:
- "web-secure"
# - "osrm"
middlewares:
- csrf
service: osrm_service
tls:
# https://docs.traefik.io/master/routing/routers/#certresolver
certResolver: letsencrypt
domains:
- main: "furyhawk.lol"
sans:
- "*.furyhawk.lol"
middlewares:
auth:
basicAuth:
users:
- {{env "DASHBOARD_USER"}}:{{env "DASHBOARD_PASSWORD"}}
csrf:
# https://doc.traefik.io/traefik/middlewares/http/headers/#hostsproxyheaders
# https://docs.djangoproject.com/en/dev/ref/csrf/#ajax
headers:
hostsProxyHeaders: ["X-CSRFToken"]
add-bai:
addPrefix:
prefix: "/bai"
add-fin:
addPrefix:
prefix: "/fin"
redirect-blog:
# https://docs.traefik.io/master/middlewares/redirectscheme/
redirectregex:
regex: "^https://blog.furyhawk.lol/(.*)"
replacement: "https://furyhawk.github.io/124c41/${1}"
permanent: true
services:
osrm_service:
loadBalancer:
servers:
- url: http://osrm_backend:{{env "OSRM_PORT"}}
streamlit_bai_app:
loadBalancer:
servers:
- url: http://streamlit_bai_app:8502/bai
streamlit_fin_app:
loadBalancer:
servers:
- url: http://streamlit_fin_app:{{env "STREAMLIT_FIN_SERVER_PORT"}}/{{env "FIN_LOCATION"}}
blog:
loadBalancer:
servers:
- url: https://furyhawk.github.io/124c41/
providers:
# https://docs.traefik.io/master/providers/file/
file:
filename: /etc/traefik/traefik.yml
watch: true
docker:
network: {{env "NETWORK"}}
exposedByDefault: true
endpoint: "unix:///var/run/docker.sock"