version: "3.8" services: traefik: image: "traefik:v2.9" container_name: "traefik" networks: - proxy command: - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--api.insecure=true" - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" - "--certificatesresolvers.le.acme.httpchallenge=true" - "--certificatesresolvers.le.acme.httpchallenge.entrypoint=web" - "--certificatesresolvers.le.acme.email=axpwpi@gmail.com" - "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json" - "--entrypoints.web.http.redirections.entrypoint.to=websecure" - "--entrypoints.web.http.redirections.entrypoint.scheme=https" ports: - "80:80" - "443:443" volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" - "/traefik:/letsencrypt" labels: - traefik.enable=true - traefik.http.routers.traefik.rule=Host(`traefik.axpdsp.org`) - traefik.http.routers.traefik.tls.certresolver=le - traefik.http.services.traefik.loadbalancer.server.port=8080 restart: always certdumper: image: humenius/traefik-certs-dumper:latest container_name: certdumper restart: unless-stopped volumes: - /traefik:/traefik:ro - /certs:/output:rw - /var/run/docker.sock:/var/run/docker.sock:ro environment: - CERTIFICATE_FILE_NAME=fullchain - PRIVATE_KEY_FILE_NAME=privkey - OVERRIDE_UID=1000 - OVERRIDE_GID=1000 portainer: image: portainer/portainer-ee container_name: portainer restart: unless-stopped networks: - proxy volumes: - portainer:/data - /var/run/docker.sock:/var/run/docker.sock labels: - traefik.enable=true - traefik.http.routers.portainer.rule=Host(`portainer.axpdsp.org`) - traefik.http.routers.portainer.tls.certresolver=le - traefik.http.services.portainer.loadbalancer.server.port=9000 homepage: image: ghcr.io/benphelps/homepage:latest container_name: homepage restart: unless-stopped networks: - proxy volumes: - homepage:/app/config - /var/run/docker.sock:/var/run/docker.sock:ro labels: - traefik.enable=true - traefik.http.routers.homepage.rule=Host(`dashboard.axpdsp.org`) - traefik.http.routers.homepage.tls.certresolver=le - traefik.http.routers.homepage.entrypoints=websecure uptime-kuma: image: louislam/uptime-kuma:1 container_name: uptime-kuma networks: - proxy volumes: - uptime-kuma:/app/data - /var/run/docker.sock:/var/run/docker.sock restart: always labels: - traefik.enable=true - traefik.http.routers.uptime.rule=Host(`uptime.axpdsp.org`) - traefik.http.routers.uptime.tls.certresolver=le - traefik.http.routers.uptime.entrypoints=websecure - traefik.http.services.uptime.loadbalancer.server.port=3001 watchtower: image: containrrr/watchtower container_name: watchtower restart: unless-stopped environment: - WATCHTOWER_POLL_INTERVAL=3600 labels: - com.centurylinklabs.watchtower.monitor-only=true volumes: - /var/run/docker.sock:/var/run/docker.sock mail: image: juanluisbaptiste/postfix container_name: mail restart: unless-stopped networks: - mail environment: - SMTP_SERVER=smtppro.zoho.com - SMTP_USERNAME=axp@reilysiegel.com - SMTP_PASSWORD_FILE=/secret - SERVER_HOSTNAME=axpdsp.org - OVERWRITE_FROM=axp@reilysiegel.com volumes: - /secrets/smtp:/secret networks: proxy: external: true name: proxy mail: external: true name: mail volumes: homepage: portainer: uptime-kuma: