services: traefik: image: traefik:latest container_name: traefik cpus: 1.0 mem_limit: "1024m" mem_reservation: "128m" restart: always ports: - "80:80" # HTTP - "443:443" # HTTPS - "888:8080" # Traefik Dashboard (optional, password-protect in production!) command: - "--api.dashboard=true" - "--api.insecure=true" # Remove or secure in prod - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" - "--providers.docker.network=web,request" - "--providers.file.directory=/etc/traefik/dynamic" - "--providers.file.watch=true" - "--certificatesresolvers.myresolver.acme.tlschallenge=true" - "--certificatesresolvers.myresolver.acme.email=admin@mapletree.email" - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json" volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" - "./letsencrypt:/letsencrypt" - "./dynamic:/etc/traefik/dynamic" networks: - web - request - music - media - jellyfin - syncthing - guac_external - komodo_external - ansible_external - dns_external - homepage_external networks: web: external: true request: external: true music: external: true media: external: true activepieces_proxy: external: true jellyfin: external: true syncthing: external: true guac_external: external: true komodo_external: external: true ansible_external: external: true dns_external: external: true homepage_external: external: true