Overview
The Parmana Docker stack uses two types of variables:- Compose variables — consumed by
docker-compose.ymlitself to configure service behavior - Server variables — passed to the
servercontainer and read by the governance server
docker-compose.yml variables
These variables are read by Docker Compose directly and are not passed to the containers as environment variables (unless also listed in theenvironment section of a service).
| Variable | Required | Description |
|---|---|---|
POSTGRES_PASSWORD | Yes | Password for the Parmana Postgres user. Used in both the postgres service (POSTGRES_PASSWORD) and the AUDIT_DATABASE_URL in the server service. |
PARMANA_API_KEY | Recommended | API key for the governance server. Passed to the server service as PARMANA_API_KEY. |
REDIS_PASSWORD | No | Redis password. Used in production compose files to set --requirepass on Redis and in REDIS_URL. |
RELEASE_TAG | No | Image tag for the server image in production deploys: ghcr.io/pavancharak/parmanasystems/server:${RELEASE_TAG}. |
Postgres container variables
Set on thepostgres service in docker-compose.yml:
| Variable | Default in compose | Description |
|---|---|---|
POSTGRES_DB | Parmana_audit | Database name. Must match the database in AUDIT_DATABASE_URL. |
POSTGRES_USER | Parmana | Database user. Must match the user in AUDIT_DATABASE_URL. |
POSTGRES_PASSWORD | ${POSTGRES_PASSWORD} | Database password. From .env. Must match the password in AUDIT_DATABASE_URL. |
POSTGRES_PASSWORD_FILE | — | Alternative to POSTGRES_PASSWORD. Path to a Docker secret file. Use in production with Docker secrets. |
Redis container variables
Set on theredis service via the command override:
| Setting | Default | Description |
|---|---|---|
--appendonly yes | Required | Enable AOF persistence. Always set in production. |
--requirepass <password> | Unset (no auth) | Redis password. Set in production and update REDIS_URL accordingly: redis://:password@redis:6379 |
Server container variables
All variables passed to theserver container. See Environment Variables for the complete server variable reference.
| Variable | Source | Description |
|---|---|---|
PORT | Hardcoded in compose | 3000 |
HOST | Hardcoded in compose | 0.0.0.0 (local) or 127.0.0.1 (production) |
CORS_ORIGIN | Hardcoded in compose | Dashboard URL |
REDIS_URL | Hardcoded in compose | redis://redis:6379 (using compose service name) |
AUDIT_DATABASE_URL | Compose variable expansion | postgresql://Parmana:${POSTGRES_PASSWORD}@postgres:5432/Parmana_audit |
PARMANA_API_KEY | From .env | Bearer token |
PARMANA_SIGNING_PROVIDER | From .env | env or disk |
PARMANA_SIGNING_PRIVATE_KEY | From .env or secret | PEM private key |
PARMANA_SIGNING_PUBLIC_KEY | From .env or secret | PEM public key |
PARMANA_POLICIES_ROOT | Hardcoded | /app/policies |
PARMANA_TRUST_ROOT | Hardcoded | /app/trust/trust-root.json |
PARMANA_TRUST_PUBLIC_KEY | Hardcoded | /app/trust/root.pub |
PARMANA_RELEASE_MANIFEST | Hardcoded | /app/artifacts/release-manifest.json |
PARMANA_RELEASE_SIGNATURE | Hardcoded | /app/artifacts/release-manifest.sig |
Dashboard container variables
The dashboard container (ghcr.io/pavancharak/parmanasystems/dashboard) does not read environment variables at runtime. It is a static React application. The server URL it calls is configured at build time.
The server must be accessible at the URL the dashboard was built to use (typically http://localhost:3000 for local and https://governance.yourdomain.com for production).
Port mapping reference
| Service | Container port | Host port (local) | Notes |
|---|---|---|---|
server | 3000 | 3000 | In production, bind to 127.0.0.1:3000:3000 (Nginx proxies) |
dashboard | 80 | 8081 | Static files only |
postgres | 5432 | 5433 | Do not expose in production |
redis | 6379 | 6380 | Do not expose in production |