단일 Docker Compose 파일을 사용하여 홈 미디어 서버에서 작동하는 Docker 스택이 있었습니다.
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
이제 프록시를 별도의 스택으로 분할하여 비즈니스 도메인을 세 번째 스택에 추가하고 모든 것을 Authelia로 보호하고 싶었습니다.
그래서 저는 도커 네트워크를 만들었고 proxy
모든 것이 해당 네트워크를 사용하고 있습니다. Authelia로 인증한 후를 제외하고는 완전히 성공했습니다.https://books.pointerstop.ca/(Calibre-web)에서 다시 인증하려고 합니다.
Traefik에서 모든 중요한 헤더를 제거하지 않고 Traefik에서 설정해야 한다는 것을 알고 있지만 entrypoints.websecure.forwardedHeaders.trustedIPs
헤더가 무엇인지 알 수 없습니다. 모든 것이 동일한 도커 스택에 있으므로 신뢰할 수 있는 IP가 전혀 필요하지 않았습니다. 이제 서로 다른 스택에 있으므로하지만 같은 네트워크에 있으면, 무엇이 변경되었는지 이해할 수 없습니다. trustedIPs=172.0.0.0/8
모든 도커 네트워크를 포괄하는 설정을 시도했습니다 . *.pointerstop.ca
에 대한 CNAME pointerstop.ddns.net
이며 에 보고된 유일한 IP 입니다.https://books.pointerstop.ca/login내 외부 IP이지만 단일 스택 설정에서 필요하지 않은데 이를 요구하는 것은 잘못된 것 같습니다(그리고 동적으로 할당되므로 사용하기가 너무 불편합니다).