• 돌아가기
  • 아래로
  • 위로
  • 목록
  • 댓글

traefik compose에 질문이 있습니다.

SHISHAMO 184

0

25

리버스 프록시 용으로 현재 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로 대쉬보드를 연결하고 싶었지만.. 

거기 까지는 잘 모르겠네요.

 

어서 도커 리버스프록시에도 도전해 보고 싶은데 실력이 너무 부족합니다.

 

많은 가르침 부탁드리겠습니다 :)

 

신고공유스크랩
25
SHISHAMO 글쓴이 2024.02.05. 23:48
NavyStack
NavyStack님. 덕분에 넥클까지 완벽이 리버스프록시 할 수 있었습니다. 정말 감사합니다.
진짜.. 커피 한잔이라도 사드려야 하지 않을까 싶은데...
어느 브랜드 좋아하시나요? ㅎㅎ
profile image
NavyStack 2024.02.05. 23:56
SHISHAMO
어우 잘 마무리 하셔서 다행입니다 :)
커피는 마음만 받겠습니다.

대신 도움이 필요한 다른 분들 보이면 꼭 도와주세요 :)
SHISHAMO 글쓴이 2024.02.05. 23:58
NavyStack
ㅎㅎ. 넵, 제가 도울 수 있는 범위 내에서는 열심히 돕겠습니다.
정말 감사합니다 :)
12

댓글 쓰기 권한이 없습니다. 로그인

취소 댓글 등록

cmt alert

신고

"님의 댓글"

이 댓글을 신고하시겠습니까?

댓글 삭제

"님의 댓글"

삭제하시겠습니까?


목록

공유

facebooktwitterpinterestbandkakao story

본 게시판은 서버구축 게시판과 통합되었습니다.

서버구축 게시판 이동하기