Docker Deployment

Deploy the full Tetrapus stack with a single command. All images are pulled from registry.tetrapus.com — no GitHub required.

Services

Service Image Ports Purpose
tetrapus-serverregistry.tetrapus.com/tetrapus-server4433/udp, 9800, 9801Headless ingest & API server
nerve-bridgeregistry.tetrapus.com/nerve-bridgeWAL → ClickHouse batch writer
scene-serverregistry.tetrapus.com/scene-server3000Octree tile rendering
tile-deriverregistry.tetrapus.com/tile-deriver3010Derived tile server
clickhouseclickhouse/clickhouse-server:24.38123, 9000Column store for telemetry
prometheusprom/prometheus:latest9090Metrics scraping
grafanagrafana/grafana:latest3030Dashboards & alerting UI
watchtowercontainrrr/watchtower:latestAuto-update on new images

Start the Stack

Bash
# Download the production compose file
curl -O https://tetrapus.com/deploy/docker-compose.yml
curl -O https://tetrapus.com/deploy/.env.template

# Configure
cp .env.template .env
# Edit .env — set CLICKHOUSE_PASSWORD and other values

# Launch
docker compose up -d

Environment Variables

Variable Default Description
REGISTRYregistry.tetrapus.comContainer image registry
TAGstableImage tag (stable, latest, or version)
CLICKHOUSE_PASSWORDClickHouse password (required)
BIND_ADDR0.0.0.0:4433QUIC ingest listen address
WS_ADDR0.0.0.0:9800WebSocket API address
HEALTH_ADDR0.0.0.0:9801REST API address
BATCH_SIZE10000ClickHouse insert batch size
FLUSH_INTERVAL_MS1000ClickHouse flush interval
RUST_LOGinfoLog level (trace, debug, info, warn, error)

Verify

Bash
# Health check
curl http://localhost:9801/api/v1/health

# Grafana dashboard
open http://localhost:3030  # admin / admin

# Watch logs
docker compose logs -f tetrapus-server

Auto-Updates

Watchtower monitors registry.tetrapus.com for new image tags and automatically rolls out updates with zero downtime. The default poll interval is 5 minutes.

Questions?

Reach out for help with integration, deployment, or custom domain codecs.