Installation

How to install obleth with Docker Compose (development) or Helm (production Kubernetes).

obleth ships as a Docker image and a Helm chart. The Docker Compose stack is the fastest way to get a complete working environment; the Helm chart is for production Kubernetes.

Prerequisites

MethodRequirements
Docker ComposeDocker Desktop 4+ (or Docker Engine 24+ with Compose v2)
Helmkubectl configured, Helm 3.10+, a running Kubernetes cluster
From sourceRust 1.80+, a running Postgres + Redis + ClickHouse

Docker Compose

The Compose stack in deploy/docker/ starts the full obleth environment:

git clone https://github.com/thediymaker/obleth-gateway.git
cd obleth-gateway
docker compose -f deploy/docker/docker-compose.yml \
  --profile mock --profile edge \
  up --build -d

The mock profile starts the GPU-free mock vLLM backend. The edge profile starts HAProxy. For a minimal core-only start (no mock upstream, no HAProxy), omit both profiles.

Service ports

ServiceHost portURL
HAProxy (client entry)80http://localhost
obleth data plane (direct)8088http://localhost:8088
Management API9090http://localhost:9090
Prometheus metrics9091http://localhost:9091/metrics
Control plane dashboard3002http://localhost:3002
Mock vLLM backend8081(internal only)

Verify the stack is healthy:

curl -s http://localhost/health       # ok
curl -s http://localhost:9090/api/v1/health  # ok

Configuration

Copy .env.example to .env in deploy/docker/ and edit:

# Change the admin token before exposing the Management API
OBLETH_ADMIN_TOKEN=change-me-in-production

# Point at a real upstream instead of the mock
OBLETH_UPSTREAM_BASE_URL=http://my-aibrix-or-vllm:8080/v1

# OTLP tracing (optional)
OBLETH_OTEL_ENDPOINT=http://jaeger:4318

For the full list of variables see Environment Variables.

Observability profile

For Prometheus, Grafana, and Jaeger (OTLP):

docker compose -f deploy/docker/docker-compose.yml \
  --profile mock --profile edge --profile observability \
  up --build -d

Additional services:

ServiceHost port
Prometheus9095
Grafana (admin/admin)3001
Jaeger UI16686

Kubernetes / Helm

helm install obleth deploy/k8s/obleth

This starts a self-contained demo: obleth (3 replicas), mock backend, control-plane dashboard, Postgres, Redis, ClickHouse, and an HPA.

Minimal production install

For production, disable the bundled dependencies and point at your managed services:

# values-prod.yaml
postgres:
  enabled: false
  external:
    url: postgres://user:pass@my-pg-cluster:5432/obleth

redis:
  enabled: false
  external:
    url: redis://my-redis:6379

clickhouse:
  enabled: false
  external:
    url: http://my-clickhouse:8123

mockBackend:
  enabled: false

obleth:
  upstreamBaseUrl: https://my-aibrix-gateway/v1
  adminToken: change-me        # use a Secret instead
  replicas: 3
  globalMaxInFlight: 256

ingress:
  enabled: true
  className: nginx
  host: obleth.example.com
  servicePort: 8080
  tls:
    - secretName: obleth-tls
      hosts: [obleth.example.com]
helm install obleth deploy/k8s/obleth -f values-prod.yaml

For a full reference of chart values, see Helm Values.

Admin token as a Secret

Don't put the admin token in values.yaml in plaintext for production. Override it via a Kubernetes Secret:

kubectl create secret generic obleth-admin \
  --from-literal=adminToken=my-secret-token

Then reference it in your Helm values using an existingSecret pattern or patch the Deployment's environment after install.


Building from source

git clone https://github.com/thediymaker/obleth-gateway.git
cd obleth-gateway/obleth
cargo build --release

The binary is at target/release/obleth-proxy. Configure via environment variables:

export OBLETH_DATABASE_URL=postgres://obleth:obleth@localhost:5432/obleth
export OBLETH_REDIS_URL=redis://localhost:6379
export OBLETH_CLICKHOUSE_URL=http://localhost:8123
export OBLETH_UPSTREAM_BASE_URL=http://localhost:8081
export OBLETH_ADMIN_TOKEN=dev-admin-token

./target/release/obleth-proxy

The binary applies the embedded schema on first boot — no manual migration step needed.


Next steps