traefik compose에 질문이 있습니다.
리버스 프록시 용으로 현재 Traefik에 도전하고 있습니다. 기존에 대부분 도커들을 unraid 커뮤니티 앱에 의존하고 있었는데 traefik은 아무래도 그러면 매우 불편할 것 같아 처음으로 compose에 도전하고 있습니다.
현재 최종 목표는 우선 nextcloud 리버스프록시이지만, 그 전에 클라우드 플레어를 통한 와일드카드 인증서 발급 및, 대쉬보드 실행이 목표입니다.
NavyStack님의 깃허브와 블로그를 토대로 나름대로의 구문들을 만들어 보았지만 compose up까지만 되고, 대쉬보드 실행이 전혀 되지 않아 이렇게 질문을 드리게 되었습니다.
https://github.com/NavyStack/nextcloud-onlyoffice-traefik/blob/b62f7beedc82057afba37d63913cf1d58563d6a2/docker-compose.yml
함께 와일드카드 인증서가 만들어져야 할(?) acme.json 파일도 전혀 반응이 없으며, log 파일도 log가 생기지 않습니다. 아마 제대로 compose가 되지 않은게 아닐까 싶습니다.
제 compose.yml 파일은 다음과 같습니다.
version: "3.9"
services:
traefik:
image: ${TRAEFIK_IMAGE_TAG}
command:
- "--log.level=${TRAEFIK_LOG_LEVEL}"
- "--log.filePath=/mnt/user/appdata/traefik/log/traefik.log"
- "--accesslog=true"
- "--api.dashboard=true"
- "--api.insecure=true"
- "--ping=true"
- "--ping.entrypoint=ping"
- "--entryPoints.ping.address=:8082"
- "--entryPoints.web.address=:80"
- "--entryPoints.websecure.address=:443"
- "--providers.docker=true"
- "--providers.docker.endpoint=unix:///var/run/docker.sock"
- "--providers.docker.exposedByDefault=false"
- "--providers.file.filename=/mnt/user/appdata/traefik/traefik.toml"
- "--certificatesresolvers.cloudflare.acme.dnschallenge=true"
- "--certificatesresolvers.cloudflare.acme.dnschallenge.provider=cloudflare"
- "--certificatesresolvers.cloudflare.acme.dnschallenge.resolvers=1.1.1.1:53,1.0.0.1:53"
- "--certificatesresolvers.cloudflare.acme.caserver=https://acme-v02.api.letsencrypt.org/directory"
- "--certificatesresolvers.cloudflare.acme.email=${CLOUDFLARE_EMAIL}"
- "--certificatesresolvers.cloudflare.acme.KeyType=EC256"
- "--certificatesresolvers.cloudflare.acme.storage=/mnt/user/appdata/traefik/acme/acme.json"
- "--metrics.prometheus=true"
- "--metrics.prometheus.buckets=0.1,0.3,1.2,5.0"
- "--global.checkNewVersion=true"
- "--global.sendAnonymousUsage=false"
- "--experimental.http3=true" # QUIC 활성화
- "--entrypoints.websecure.http3" # QUIC 활성화
- "--entrypoints.websecure.http3.advertisedport=443" # QUIC 활성화
environment:
- CLOUDFLARE_EMAIL=${CLOUDFLARE_EMAIL}
- CLOUDFLARE_API_KEY=${CLOUDFLARE_API_KEY}
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /mnt/user/appdata/traefik/acme:/etc/traefik/acme
- /mnt/user/appdata/traefik/traefik.toml:/etc/traefik/traefik.toml
- /mnt/user/appdata/traefik/rule/dynamic.toml:/etc/traefik/dynamic.toml
- /mnt/user/appdata/traefik/log:/mnt/user/appdata/traefik/log
networks:
- proxynet
ports:
- "80:80"
- "443:443/tcp"
- "443:443/udp" # QUIC 활성화
- "8080:8080/tcp"
healthcheck:
test: ["CMD", "wget", "http://localhost:8082/ping","--spider"]
interval: 10s
timeout: 5s
retries: 3
start_period: 5s
labels:
- "traefik.enable=true"
- "traefik.http.services.dashboard.loadbalancer.server.port=8080"
- "traefik.http.services.dashboard.loadbalancer.passhostheader=true"
- "traefik.http.routers.dashboard.rule=Host(${TRF_DOMAIN})"
- "traefik.http.routers.dashboard.service=api@internal"
- "traefik.http.routers.dashboard.entrypoints=websecure"
- "traefik.http.routers.dashboard.tls=true"
- "traefik.http.routers.dashboard.tls.certresolver=cloudflare"
- "traefik.http.routers.dashboard.tls.domains[0].main=${TRF_DOMAIN}"
- "traefik.http.routers.dashboard.tls.domains[0].sans=*.${TRF_DOMAIN}"
- "traefik.http.routers.dashboard.middlewares=authtraefik"
- "traefik.http.routers.http-catchall.rule=HostRegexp(`{host:.+}`)"
- "traefik.http.routers.http-catchall.entrypoints=web"
- "traefik.http.routers.http-catchall.middlewares=redirect-to-https"
- "traefik.http.middlewares.authtraefik.basicauth.users=${TRAEFIK_BASIC_AUTH}"
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
restart: unless-stopped
logging:
options:
max-size: "20m"
networks:
proxynet:
external: true
함께 .env 파일 내용은 다음과 같습니다.
# Traefik Variables
TRAEFIK_IMAGE_TAG=traefik:latest
TRAEFIK_LOG_LEVEL=WARN
CLOUDFLARE_EMAIL=클라우드플레어 이메일
CLOUDFLARE_API_KEY=클라우드플레어 Global API Key
TRAEFIK_BASIC_AUTH=온라인htpasswd 생성기로 생성한 사용자 이름과 비밀번호(MD5)
TRF_DOMAIN=클라우드플레어에 연결된 개인 도메인
혹시 여기서 추가하거나 수정해야 할 구문이 뭐가 있는지 알려 주신다면 정말 감사하겠습니다.
원래 클라우드플레어에 등록된 example.com이 아니라 traefik.example.com로 대쉬보드를 연결하고 싶었지만..
거기 까지는 잘 모르겠네요.
어서 도커 리버스프록시에도 도전해 보고 싶은데 실력이 너무 부족합니다.
많은 가르침 부탁드리겠습니다 :)
진짜.. 커피 한잔이라도 사드려야 하지 않을까 싶은데...
어느 브랜드 좋아하시나요? ㅎㅎ
커피는 마음만 받겠습니다.
대신 도움이 필요한 다른 분들 보이면 꼭 도와주세요 :)
정말 감사합니다 :)
언제든 편하게 질문주셔요!
cmt alert