version: '3.8' services: frps: image: snowdreamtech/frps:0.52.3 container_name: frps restart: unless-stopped ports: - "7000:7000" - "7500:7500" volumes: - ./frps/frps.toml:/etc/frp/frps.toml:ro - ./frps/logs:/var/log/frp command: -c /etc/frp/frps.toml environment: - TZ=${TZ:-Asia/Taipei} logging: driver: "json-file" options: max-size: "10m" max-file: "3" caddy: image: caddy:2-alpine container_name: caddy restart: unless-stopped ports: - "${CADDY_HTTP_PORT:-80}:80" - "${CADDY_HTTPS_PORT:-443}:443" - "${CADDY_HTTPS_PORT:-443}:443/udp" - "${CADDY_ADMIN_PORT:-2019}:2019" volumes: - ./caddy/Caddyfile:/etc/caddy/Caddyfile:ro - ./caddy/data:/data - ./caddy/config:/config environment: - DOMAIN=${DOMAIN} - EMAIL=${EMAIL} - TZ=${TZ:-Asia/Taipei} depends_on: - frps logging: driver: "json-file" options: max-size: "10m" max-file: "3" frp-manager: build: ./scripts container_name: frp-manager restart: unless-stopped ports: - "${FRP_MANAGER_PORT:-5000}:5000" volumes: - ./scripts:/app working_dir: /app command: python api.py environment: - CADDY_ADMIN=http://caddy:${CADDY_ADMIN_PORT:-2019} - FRP_TOKEN=${FRP_API_TOKEN} - DOMAIN=${DOMAIN} - TZ=${TZ:-Asia/Taipei} depends_on: - caddy logging: driver: "json-file" options: max-size: "5m" max-file: "3"