version: '3.8' services: docker-socket-proxy: image: tecnativa/docker-socket-proxy:v0.4.1 container_name: docker-socket-proxy restart: unless-stopped logging: driver: "none" # Minimize the logs, remove for verbose environment: - DOCKER_HOST=unix:///var/run/docker.sock - CONTAINERS=1 - EVENTS=1 - NETWORKS=1 - IMAGES=1 - POST=1 - PING=1 - INFO=1 - EXEC=1 volumes: - /var/run/docker.sock:/var/run/docker.sock networks: - dockflare-internal dockflare-init: image: alpine:3.20 command: ["sh", "-c", "chown -R ${DOCKFLARE_UID:-65532}:${DOCKFLARE_GID:-65532} /app/data"] volumes: - dockflare_data:/app/data networks: - dockflare-internal restart: "no" dockflare: build: ./dockflare #image: alplat/dockflare:stable container_name: dockflare restart: unless-stopped ports: - "5001:5000" labels: # -- Cloudflare Tunnel Configuration (via DockFlare) OPTIONAL -- # Main DockFlare with access policy - dockflare.enable=true - dockflare.hostname=unstable.dockflare.app - dockflare.service=http://dockflare:5000 #- dockflare.access.group=YOUR-ACCESS-GROUP-ID # your custom access policy # -- OAuth Callback Path (Bypass Access Policy) OPTIONAL -- # Required if using OAuth authentication with access policies on main interface #- dockflare.0.hostname=dockflare.example.tld #- dockflare.0.path=/auth/google/callback #- dockflare.0.service=http://dockflare:5000 #- dockflare.0.access.group=public-default-bypass # Add additional callback paths for other OAuth providers as needed # - dockflare.1.hostname=dockflare.example.com # - dockflare.1.path=/auth/github/callback # - dockflare.1.service=http://dockflare:5000 # - dockflare.1.access.group=public-default-bypass volumes: - dockflare_data:/app/data environment: - REDIS_URL=redis://redis:6379/0 - REDIS_DB_INDEX=0 # Optional: specify Redis database index (0-15) for isolation from other containers - DOCKER_HOST=tcp://docker-socket-proxy:2375 #- LOG_LEVEL=DEBUG # Uncomment for more verbose logging/debugging depends_on: docker-socket-proxy: condition: service_started dockflare-init: condition: service_completed_successfully redis: condition: service_started networks: - cloudflare-net - dockflare-internal redis: image: redis:7-alpine container_name: dockflare-redis restart: unless-stopped command: ["redis-server", "--save", "", "--appendonly", "no"] logging: driver: "none" # less logs, remove for verbose / more logs volumes: - dockflare_redis:/data networks: - dockflare-internal dockflare-mail-manager: build: ./mail-manager #image: alplat/dockflare-mail-manager:stable container_name: dockflare-mail-manager restart: unless-stopped profiles: ["email"] environment: - DOCKFLARE_MASTER_URL=http://dockflare:5000 - MAIL_DATA_PATH=/data volumes: - mail_data:/data depends_on: dockflare: condition: service_started networks: - cloudflare-net - dockflare-internal dockflare-webmail: build: ./webmail #image: alplat/dockflare-webmail:stable container_name: dockflare-webmail restart: unless-stopped profiles: ["email"] environment: - DOCKFLARE_MASTER_URL=https://unstable.dockflare.app labels: - dockflare.enable=true - dockflare.hostname=mail.dockflare.app # replace with your domain - dockflare.service=http://dockflare-webmail:80 depends_on: dockflare-mail-manager: condition: service_started networks: - cloudflare-net - dockflare-internal volumes: dockflare_data: dockflare_redis: mail_data: networks: cloudflare-net: name: cloudflare-net external: true dockflare-internal: name: dockflare-internal