services: grub-crawl: build: . container_name: grub-crawl ports: - "6792:6792" env_file: - .env environment: - HOST=0.0.0.0 - PORT=6792 - DEBUG=true - STORAGE_PATH=/app/storage - RUNNING_IN_CLOUD=false - DISABLE_AUTH=true - MAX_CONCURRENT_CRAWLS=3 - CRAWL_TIMEOUT=60 - BROWSER_TIMEOUT=60000 - ENABLE_JAVASCRIPT=true - ENABLE_SCREENSHOTS=true - AGENT_GHOST_ENABLED=true - AGENT_GHOST_AUTO_TRIGGER=true - AGENT_GHOST_VISION_PROVIDER=anthropic - BROWSER_ENGINE=camoufox - STEALTH_ENABLED=true - BLOCK_TRACKING_DOMAINS=true # Residential proxy — required for Cloudflare-protected sites - PROXY_SERVER=${PROXY_SERVER} - PROXY_USERNAME=${PROXY_USERNAME} - PROXY_PASSWORD=${PROXY_PASSWORD} - PROXY_BYPASS=localhost,127.0.0.1 # Mesh (uncomment to enable — see docker-compose.mesh.yml for 2-node setup) # - MESH_ENABLED=true # - MESH_NODE_NAME=local # - MESH_ADVERTISE_URL=http://grub-crawl:6792 # - MESH_SECRET=changeme # - MESH_PEERS= volumes: - gnosis_shared_storage:/app/storage - ./app:/app/app # Mount for development hot reload - ./site:/app/site # Embedded landing page networks: - gnosis-network restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:6792/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s volumes: gnosis_shared_storage: name: gnosis_shared_storage driver: local networks: gnosis-network: name: gnosis_network driver: bridge codex-network: external: true