name: pangolin services: pangolin: image: fosrl/pangolin:1.12.2 container_name: pangolin restart: unless-stopped labels: - diun.enable=true volumes: - ./config:/app/config healthcheck: test: - CMD - curl - -f - http://localhost:3001/api/v1/ interval: 10s timeout: 10s retries: 15 gerbil: image: fosrl/gerbil:latest container_name: gerbil restart: unless-stopped labels: - diun.enable=true depends_on: pangolin: condition: service_healthy command: - --reachableAt=http://gerbil:3003 - --generateAndSaveKeyTo=/var/config/key - --remoteConfig=http://pangolin:3001/api/v1/gerbil/get-config - --reportBandwidthTo=http://pangolin:3001/api/v1/gerbil/receive-bandwidth volumes: - ./config/:/var/config cap_add: - NET_ADMIN - SYS_MODULE ports: - 51820:51820/udp - 21820:21820/udp # port for ACCEPT_CLIENTS env variable - 443:443 # Port for traefik because of the network_mode - 80:80 # Port for traefik because of the network_mode # - 2229:2229 # port for gitea, served from a; git.ptrwd.com - 5432:5432 # port for postgres, served from io traefik: image: traefik:v3 container_name: traefik restart: unless-stopped labels: - diun.enable=true network_mode: service:gerbil # Ports appear on the gerbil service depends_on: pangolin: condition: service_healthy command: - --configFile=/etc/traefik/traefik_config.yml volumes: - ./config/traefik:/etc/traefik:ro # Volume to store the Traefik configuration - ./config/letsencrypt:/letsencrypt # Volume to store the Let's Encrypt certificates - ./config/traefik/logs:/var/log/traefik # Volume to store Traefik logs traefik-agent: image: hhftechnology/traefik-log-dashboard-agent:dev-dashboard container_name: traefik-log-dashboard-agent restart: unless-stopped labels: - diun.enable=true ports: - 5000:5000 volumes: - ./config/traefik/logs:/logs:ro - ./config/traefik-dashboard/geoip:/geoip:ro - ./config/traefik-dashboard/positions:/data environment: - TRAEFIK_LOG_DASHBOARD_ACCESS_PATH=/logs/access.log - TRAEFIK_LOG_DASHBOARD_ERROR_PATH=/logs/access.log - TRAEFIK_LOG_DASHBOARD_AUTH_TOKEN=${TRAEFIK_DASHBOARD_AUTH_TOKEN} - TRAEFIK_LOG_DASHBOARD_SYSTEM_MONITORING=true - TRAEFIK_LOG_DASHBOARD_GEOIP_ENABLED=true - TRAEFIK_LOG_DASHBOARD_GEOIP_CITY_DB=/geoip/GeoLite2-City.mmdb - TRAEFIK_LOG_DASHBOARD_GEOIP_COUNTRY_DB=/geoip/GeoLite2-Country.mmdb - TRAEFIK_LOG_DASHBOARD_LOG_FORMAT=json - PORT=5000 healthcheck: test: [ "CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:5000/api/logs/status" ] interval: 30s timeout: 10s retries: 3 start_period: 10s traefik-dashboard: image: hhftechnology/traefik-log-dashboard:dev-dashboard container_name: traefik-log-dashboard restart: unless-stopped labels: - diun.enable=true ports: - 3005:3000 volumes: - ./config/traefik-dashboard/dashboard:/app/data environment: - AGENT_API_URL=http://traefik-agent:5000 - AGENT_API_TOKEN=${TRAEFIK_DASHBOARD_AUTH_TOKEN} - AGENT_NAME=Pangolin Traefik Agent - NODE_ENV=production - PORT=3000 depends_on: traefik-agent: condition: service_healthy networks: default: driver: bridge name: pangolin