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 -dEdit .env first: at minimum set POSTGRES_PASSWORD, OPENAI_API_KEY, and a fresh INTERNAL_PROXY_SECRET.
Services
| Service | Port | Description |
|---|---|---|
gateway | 8080 | Rust policy engine + verify pipeline |
dashboard | 3000 | Next.js admin UI |
postgres | 5432 | Primary database — schema bootstrapped via init.sql |
redis | 6379 | Optional 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 # dashboardA 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_SECRETandPOSTGRES_PASSWORDfrom the example values - Mount a persistent volume on
postgres(./data/postgres:/var/lib/postgresql/data) - For Flare anchoring, set
FLARE_PRIVATE_KEYandFLARE_CONTRACT_ADDRESSper 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.