Skip to content

Configuration

Releasy is configured via environment variables. This document lists all available settings.

Server

VariableRequiredDefaultDescription
RELEASY_BIND_ADDRno0.0.0.0:8080Address and port to bind the server
RELEASY_LOG_LEVELnoinfoLog level: trace, debug, info, warn, error

Database

VariableRequiredDefaultDescription
RELEASY_DATABASE_URLyes-Database connection string
RELEASY_DATABASE_MAX_CONNECTIONSno5Maximum database pool connections

Supported databases:

  • PostgreSQL: postgres://user:pass@host:5432/dbname (also postgresql://)
  • SQLite (file): sqlite://relative/path.db or sqlite:///absolute/path.db
  • SQLite (memory): sqlite::memory: (dev/tests only)

Recommendation:

  • Use PostgreSQL for production and multi-instance deployments.
  • Use SQLite for local development or single-instance evaluation.

Authentication

Admin Bootstrap Key

VariableRequiredDefaultDescription
RELEASY_ADMIN_API_KEYno-Admin bootstrap key for initial setup

Generate a secure key:

bash
openssl rand -hex 32

API Key Security

VariableRequiredDefaultDescription
RELEASY_API_KEY_PEPPERno-Additional secret for API key hashing

The pepper adds an extra layer of security to API key hashes. If set, it should be kept constant; changing it will invalidate all existing keys. API keys are hashed with Argon2id using a per-key salt.

Operator JWT (JWKS)

VariableRequiredDefaultDescription
RELEASY_OPERATOR_JWKS_URLno-JWKS endpoint URL for JWT validation
RELEASY_OPERATOR_ISSUERno-Expected JWT issuer (iss claim)
RELEASY_OPERATOR_AUDIENCEno-Expected JWT audience (aud claim)
RELEASY_OPERATOR_RESOURCEno-Resource name for resource_access roles
RELEASY_OPERATOR_JWKS_TTL_SECONDSno300JWKS cache TTL in seconds
RELEASY_OPERATOR_JWT_LEEWAY_SECONDSno0Clock skew tolerance for JWT validation

JWKS fetch behavior:

  • Request timeout: 8 seconds
  • Retry: 1 retry with 200ms backoff on connection errors or 5xx responses
  • Cache: JWKS is cached for RELEASY_OPERATOR_JWKS_TTL_SECONDS (default 300s)

Example for Keycloak:

bash
export RELEASY_OPERATOR_JWKS_URL="https://keycloak.example.com/realms/myrealm/protocol/openid-connect/certs"
export RELEASY_OPERATOR_ISSUER="https://keycloak.example.com/realms/myrealm"
export RELEASY_OPERATOR_AUDIENCE="releasy"
export RELEASY_OPERATOR_RESOURCE="releasy"

Downloads

VariableRequiredDefaultDescription
RELEASY_DOWNLOAD_TOKEN_TTL_SECONDSno600Maximum lifetime for download tokens (seconds)

Artifact Storage (S3)

All artifact variables must be set together, or none at all.

VariableRequiredDefaultDescription
RELEASY_ARTIFACT_BUCKETyes*-S3 bucket name
RELEASY_ARTIFACT_REGIONyes*-S3 region (e.g., us-east-1)
RELEASY_ARTIFACT_ENDPOINTno-Custom S3 endpoint (for MinIO, etc.)
RELEASY_ARTIFACT_ACCESS_KEYyes*-S3 access key
RELEASY_ARTIFACT_SECRET_KEYyes*-S3 secret key
RELEASY_ARTIFACT_PATH_STYLEnofalseUse path-style URLs (required for MinIO)
RELEASY_ARTIFACT_PRESIGN_EXPIRES_SECONDSno900Presigned URL expiration (15 min default)

*Required if artifact storage is enabled.

Example for MinIO:

bash
export RELEASY_ARTIFACT_BUCKET="releasy-artifacts"
export RELEASY_ARTIFACT_REGION="us-east-1"
export RELEASY_ARTIFACT_ENDPOINT="http://localhost:9000"
export RELEASY_ARTIFACT_ACCESS_KEY="minioadmin"
export RELEASY_ARTIFACT_SECRET_KEY="minioadmin"
export RELEASY_ARTIFACT_PATH_STYLE="true"

Example for AWS S3:

bash
export RELEASY_ARTIFACT_BUCKET="my-releasy-bucket"
export RELEASY_ARTIFACT_REGION="eu-central-1"
export RELEASY_ARTIFACT_ACCESS_KEY="AKIAIOSFODNN7EXAMPLE"
export RELEASY_ARTIFACT_SECRET_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"

Complete Example

bash
# Server
export RELEASY_BIND_ADDR="0.0.0.0:8080"
export RELEASY_LOG_LEVEL="info"

# Database
export RELEASY_DATABASE_URL="postgres://releasy:secret@localhost:5432/releasy"
export RELEASY_DATABASE_MAX_CONNECTIONS="10"

# Auth
export RELEASY_ADMIN_API_KEY="$(openssl rand -hex 32)"
export RELEASY_API_KEY_PEPPER="$(openssl rand -hex 32)"

# Operator JWT (optional)
export RELEASY_OPERATOR_JWKS_URL="https://id.example.com/.well-known/jwks.json"
export RELEASY_OPERATOR_ISSUER="https://id.example.com/"
export RELEASY_OPERATOR_AUDIENCE="releasy"

# Artifact storage (optional)
export RELEASY_ARTIFACT_BUCKET="releasy-artifacts"
export RELEASY_ARTIFACT_REGION="us-east-1"
export RELEASY_ARTIFACT_ACCESS_KEY="access"
export RELEASY_ARTIFACT_SECRET_KEY="secret"