Configuration

Environment Variables

Copy .env.example to .env and configure:

PostgreSQL

VariableDescriptionDefault
RYUKI_DATABASE_URLPostgreSQL connection stringpostgres://ryuki:ryuki_dev@localhost:5432/ryuki_platform

Entra ID

VariableDescriptionDefault
RYUKI_ENTRA_TENANT_IDAzure AD tenant ID(required for Entra auth)
RYUKI_ENTRA_CLIENT_IDApp registration client ID(required for Entra auth)
RYUKI_ENTRA_AUTHORITYOIDC authority URLhttps://login.microsoftonline.com

Platform

VariableDescriptionDefault
RYUKI_PLATFORM_NAMEDisplay name for the platformRyuki Infrastructure Platform
RYUKI_PLATFORM_URLBase URL where the API is servedhttp://localhost:18080
RYUKI_AUTH_MODEmock-dry-run, static-dry-run, entra-id, or localmock-dry-run

Infrastructure Providers (informational)

VariableProvider typeDefault
RYUKI_DATABASE_PROVIDERCNPG operatorcloudnativepg
RYUKI_SECRET_PROVIDERSecrets managementhashicorp-vault
RYUKI_KUBERNETES_RUNTIMEKubernetes runtimevsphere-vks
RYUKI_MONITORING_PROVIDERMonitoring systemzabbix
RYUKI_BACKUP_PROVIDERBackup systemveeam

Entra ID App Registration

See docs/entra-app-registration.md for the full app roles manifest and setup instructions.

Summary

  1. Register a new app in Entra admin center
  2. Define app roles in the manifest (PlatformAdmin, DatacenterApprover, etc.)
  3. Expose the API with a scope for the portal
  4. Assign users/groups to roles in the Enterprise application blade
  5. Set RYUKI_ENTRA_TENANT_ID, RYUKI_ENTRA_CLIENT_ID, and RYUKI_AUTH_MODE=entra-id

Required Entra Configuration

PostgreSQL

The platform expects a PostgreSQL database. The included docker-compose.yml provisions:

For production, use a managed PostgreSQL service and set RYUKI_DATABASE_URL accordingly.

Admin Portal

Logo and Branding

The platform name is configured via RYUKI_PLATFORM_NAME. Logo and branding assets are uploaded through the admin portal UI after deployment — no branding files are stored in the repository.

Access Control

Access is controlled by Entra ID app roles. The PlatformAdmin role grants full administrative access to the portal.