Files
my-vault/01_Projects/Infrastructure/VPS/us4.wsvc.info.md
T

1.8 KiB

services:
  traefik:
    image: traefik:v3.4
    container_name: traefik
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    networks:
      - proxy
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./certs:/certs
      - ./dynamic:/dynamic

    command:
      # Entrypoints
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--entrypoints.websecure.http.tls=true"

      # Providers
      - "--providers.file.filename=/dynamic/tls.yaml"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--providers.docker.network=proxy"

      # API & Dashboard
      - "--api.dashboard=true"
      - "--api.insecure=false"

      # Logs
      - "--log.level=INFO"
      - "--accesslog=true"
      - "--metrics.prometheus=true"

      # Let's Encrypt (ACME)
      - "--certificatesresolvers.letsencrypt.acme.email=zhiqiang@windy.me"
      - "--certificatesresolvers.letsencrypt.acme.storage=/certs/acme.json"
      - "--certificatesresolvers.letsencrypt.acme.httpchallenge=true"
      - "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
    labels:
      - traefik.enable=true
      - traefik.http.routers.dashboard.rule=Host(`us4.wsvc.info`)
      - traefik.http.routers.dashboard.entrypoints=websecure,web
      - traefik.http.routers.dashboard.service=api@internal
      - traefik.http.routers.dashboard.tls.certresolver=letsencrypt
      - "traefik.http.middlewares.dashboard-auth.basicauth.users=admin:$$apr1$$aBNLDToX$$nIKWMN41tGMBhtdSaA/Ih/"
      - traefik.http.routers.dashboard.middlewares=dashboard-auth@docker,redirect-to-https@file

networks:
  proxy:
    name: proxy
    external: true

S3cureP@ssw0rd!