Tenía una pila acoplable funcional con mi servidor multimedia doméstico usando un único archivo de redacción acoplable:
version: "3"
secrets:
authelia_jwt_secret:
file: $SECRETS_PATH/authelia/jwt_secret
authelia_session_secret:
file: $SECRETS_PATH/authelia/session_secret
services:
calibre-web:
image: linuxserver/calibre-web:nightly
container_name: calibre-web
environment:
- PUID=$PUID
- PGID=$PGID
labels:
- traefik.enable=true
- traefik.http.routers.calibre-https.rule=Host(`books.pointerstop.ca`)
- traefik.http.routers.calibre-https.middlewares=authelia@file
- traefik.http.routers.calibre-https.tls=true
- traefik.http.routers.calibre-https.tls.certresolver=letsencrypt
volumes:
- /srv/calibre/config/calibre-web:/config
- /srv/calibre/CalibreLibrary:/Calibre_Library up
restart: unless-stopped
depends_on:
- calibre
expose:
- 8083
traefik:
image: traefik:latest
container_name: traefik
restart: unless-stopped
command:
- --api.insecure=true
- --providers.docker
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --certificatesresolvers.letsencrypt.acme.email=${LE_EMAIL}
- --certificatesresolvers.letsencrypt.acme.storage=/config/acme.json
- --certificatesresolvers.letsencrypt.acme.tlschallenge=true
# - --certificatesresolvers.letsencrypt.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory
- --log.filePath=/var/log/traefik.log
- --log.level=DEBUG
- --providers.file.directory=/dynamic_config/
- --providers.file.watch=true
ports:
- 8080:8080
- 80:80
- 443:443
labels:
- traefik.enable=true
- traefik.http.routers.traefik.rule=Host(`traefik.local`)
## Services - API
- traefik.http.routers.traefik.service=api@internal
## Global redirect of EXTERNAL domains to HTTPS
- traefik.http.routers.redirs.rule=hostregexp(`{host:.*pointerstop.ca}`)
- traefik.http.routers.redirs.entrypoints=web
- traefik.http.routers.redirs.middlewares=redirect-to-https@file
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/log/media-server:/var/log
- ${CONFIG_PATH}/traefik:/config
- ./dynamic_config:/dynamic_config
# Authelia (Lite) - Self-Hosted Single Sign-On and Two-Factor Authentication
authelia:
container_name: authelia
image: authelia/authelia:latest
# image: authelia/authelia:4.21.0
restart: always
expose:
- 9091
volumes:
- $CONFIG_PATH/authelia:/config
environment:
- TZ=${TIME_ZONE}
- AUTHELIA_JWT_SECRET_FILE=/run/secrets/authelia_jwt_secret
- AUTHELIA_SESSION_SECRET_FILE=/run/secrets/authelia_session_secret
secrets:
- authelia_jwt_secret
- authelia_session_secret
labels:
- traefik.enable=true
## HTTP Routers
- traefik.http.routers.authelia-rtr.entrypoints=websecure
- traefik.http.routers.authelia-rtr.rule=Host(`auth.pointerstop.ca`)
- traefik.http.routers.authelia-rtr.tls=true
- traefik.http.routers.authelia-rtr.tls.certresolver=letsencrypt
## Middlewares
- traefik.http.routers.authelia-rtr.middlewares=chain-authelia@file
## HTTP Services
- traefik.http.services.authelia-media-server.loadbalancer.server.port=9091
Ahora, quería dividir el proxy en una pila separada, para poder agregar mis dominios comerciales en una tercera pila y tener todo protegido por Authelia.
Entonces, creé una red acoplable proxy
y todo está usando esa red, con total éxito, excepto después de autenticarme con Authelia.https://books.pointerstop.ca/(Calibre-web) quiere autenticarse nuevamente.
Soy consciente de que necesito configurar entrypoints.websecure.forwardedHeaders.trustedIPs
Traefik, sin el cual Traefik elimina todos los encabezados importantes, pero no puedo entender cuáles deberían ser. Con todo en la misma pila acoplable, no necesitaba ninguna IP confiable. Ahora que están en pilas diferentes,pero en la misma red, No entiendo qué ha cambiado. Intenté configurar una configuración trustedIPs=172.0.0.0/8
que cubra todas las redes acoplables. *.pointerstop.ca
son CNAME para pointerstop.ddns.net
y la única IP reportada enhttps://books.pointerstop.ca/logines mi IP externa, pero parece incorrecto exigirla (y está asignada dinámicamente, por lo que es difícil de usar) cuando no era necesaria en la configuración de pila única.