This guide is for deployments where the control plane and workers do not share a single private network (for example, multiple VPCs, multiple cloud providers, or internet-routed links).
- OpenSeer defaults are optimized for private-network self-hosting.
- In private networks, single-port HTTP (
:8080) with cluster-token enrollment and worker API tokens is usually sufficient. - In multi-cloud environments, treat all inter-service links as untrusted unless explicitly protected.
- Place the control plane behind a production reverse proxy or load balancer.
- Terminate TLS at the edge proxy (or use passthrough TLS with a mesh).
- Restrict worker API and enrollment API with network policies, firewall rules, and allowlists.
- Keep PostgreSQL/TimescaleDB private; do not expose it publicly.
- Run at least two control-plane replicas behind the same load balancer.
- Use HTTPS for all worker-to-control-plane traffic.
- Use stable DNS names for control plane endpoints.
- Set strict ingress rules so only worker source ranges can hit worker APIs.
- Set strict egress rules so workers can only reach configured monitor destinations and control plane.
- Add request timeouts and connection limits at the edge proxy.
Use explicit worker settings instead of defaults:
ENROLLMENT_URL=https://control-plane.example.com
CLUSTER_TOKEN=<managed-secret>
REGION=us-east-1
MAX_CONCURRENCY=5
POLL_BASE_INTERVAL=1s
POLL_MAX_INTERVAL=15s
RESULT_SUBMIT_MAX_ATTEMPTS=6
RESULT_SUBMIT_RETRY_INTERVAL=5s
RESULT_SUBMIT_TIMEOUT=10sUse explicit control-plane settings:
PORT=8080
API_ENDPOINT=https://control-plane.example.com
CORS_ORIGIN=https://app.example.com
CLUSTER_TOKEN=<managed-secret>
BETTER_AUTH_SECRET=<managed-secret>
WORKER_HEARTBEAT_MIN_UPDATE_INTERVAL=15s
WORKER_AUTH_CACHE_TTL=30s
WORKER_AUTH_CACHE_MAX_ENTRIES=50000
JOB_CLEANUP_INTERVAL=1m
JOB_RETENTION_PERIOD=168h
JOB_CLEANUP_BATCH_SIZE=1000
DB_MAX_OPEN_CONNS=100
DB_MAX_IDLE_CONNS=25
DB_CONN_MAX_LIFETIME=30m
DB_CONN_MAX_IDLE_TIME=5m- Store
CLUSTER_TOKENandBETTER_AUTH_SECRETin a secret manager. - Rotate cluster tokens periodically with staged rollout.
- Revoke compromised workers via
RevokeEnrollment. - Audit enrollment and worker authentication events in centralized logs.
- Increase
POLL_MAX_INTERVALas worker fleet size grows to reduce idle load. - Keep
POLL_BASE_INTERVALlow enough to maintain acceptable pickup latency. - Monitor lease reaper lag and scheduler lag.
- Alert on spikes in uncommitted results and repeated lease reclaims.
- Budget DB connections per replica:
replicas * DB_MAX_OPEN_CONNSshould stay below PostgreSQL/pooler limits with headroom. - Prefer a PostgreSQL connection pooler for multi-replica fleets and keep app-level pool limits explicit.
- Keep retention cleanup enabled so
app.jobsgrowth does not degrade lease/dispatch query latency over time.
- TLS enabled for all cross-network traffic.
- No public database exposure.
- Secrets sourced from managed secret storage.
- Control-plane replicas behind health-checked load balancer.
- Centralized logs and metrics for worker auth failures, lease renewals, and scheduler throughput.