# Turnstone — CF receiving instances for external node submissions. # # These are SEPARATE instances from the main Turnstone deployment. Each node # that has TURNSTONE_SUBMIT_ENDPOINT configured pushes pattern-matched entries # here. Each instance has its own isolated database. Avocet reads these # databases for training data. # # Ports: # 8536 → submissions-contrib1 (harvest.circuitforge.tech/contrib1/*) # 8537 → submissions-contrib2 (harvest.circuitforge.tech/contrib2/*) # # Deploy on Heimdall: # docker compose -f docker-compose.submissions.yml up -d # # Database locations: # /devl/docker/turnstone-submissions/contrib1/turnstone.db # /devl/docker/turnstone-submissions/contrib2/turnstone.db # # These instances have TURNSTONE_INGEST_INTERVAL=0 — they only receive POSTs, # they do not run their own scheduled ingest. services: submissions-contrib1: image: turnstone:latest container_name: turnstone-submissions-contrib1 restart: unless-stopped ports: - "8536:8534" volumes: - /devl/docker/turnstone-submissions/contrib1:/data:z - /devl/docker/turnstone-submissions/contrib1/patterns:/patterns:ro environment: TURNSTONE_DB: /data/turnstone.db TURNSTONE_PATTERNS: /patterns TURNSTONE_SOURCE_HOST: submissions-contrib1 TURNSTONE_INGEST_INTERVAL: "0" PYTHONUNBUFFERED: "1" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8534/turnstone/health"] interval: 30s timeout: 10s start_period: 20s retries: 3 networks: - caddy-internal submissions-contrib2: image: turnstone:latest container_name: turnstone-submissions-contrib2 restart: unless-stopped ports: - "8537:8534" volumes: - /devl/docker/turnstone-submissions/contrib2:/data:z - /devl/docker/turnstone-submissions/contrib2/patterns:/patterns:ro environment: TURNSTONE_DB: /data/turnstone.db TURNSTONE_PATTERNS: /patterns TURNSTONE_SOURCE_HOST: submissions-contrib2 TURNSTONE_INGEST_INTERVAL: "0" PYTHONUNBUFFERED: "1" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8534/turnstone/health"] interval: 30s timeout: 10s start_period: 20s retries: 3 networks: - caddy-internal networks: caddy-internal: name: caddy-proxy_caddy-internal external: true