PalveronPalveronDocs

Docker Compose

Deploy the Palveron stack on a single server with Docker Compose.

The fastest path to a self-hosted Palveron — one server, one docker compose up, four services.

Quickstart

git clone https://github.com/palveron/palveron-deploy.git
cd palveron-deploy
cp env.example .env
docker compose up -d

Edit .env first: at minimum set POSTGRES_PASSWORD, OPENAI_API_KEY, and a fresh INTERNAL_PROXY_SECRET.

Services

ServicePortDescription
gateway8080Rust policy engine + verify pipeline
dashboard3000Next.js admin UI
postgres5432Primary database — schema bootstrapped via init.sql
redis6379Optional cache for rate limiting and session storage

The database initializes on first boot — init.sql runs against an empty PostgreSQL instance and creates every table the gateway and dashboard expect.

Health checks

The compose file ships with health checks on every container. Verify the stack is up:

curl http://localhost:8080/health      # gateway
curl http://localhost:3000/api/health  # dashboard

A healthy gateway returns:

{
  "status": "healthy",
  "version": "0.6.0",
  "uptime_seconds": 1284,
  "dependencies": { "postgres": "ok", "redis": "ok", "nge": "loaded" }
}

Production checklist

  • Front the stack with a TLS-terminating reverse proxy (Nginx, Caddy, or a cloud load balancer)
  • Rotate INTERNAL_PROXY_SECRET and POSTGRES_PASSWORD from the example values
  • Mount a persistent volume on postgres (./data/postgres:/var/lib/postgresql/data)
  • For Flare anchoring, set FLARE_PRIVATE_KEY and FLARE_CONTRACT_ADDRESS per the blockchain guide

The bundled PostgreSQL is fine for evaluation and single-node production. For multi-instance gateways or strict RPO/RTO targets, move to managed PostgreSQL (Supabase, RDS, Cloud SQL) and point DATABASE_URL at it.

For multi-instance and Kubernetes deployments, see the Helm guide.

On this page