Skip to content

Configuration Reference

Ephor follows the 12-factor app methodology. All runtime configuration is provided through environment variables.

Database

VariableDefaultDescription
SPRING_DATASOURCE_URLjdbc:postgresql://localhost:5432/ephorJDBC connection URL
SPRING_DATASOURCE_USERNAMEephorDatabase username
SPRING_DATASOURCE_PASSWORDephorDatabase password

Ephor requires PostgreSQL. Other databases are not supported.

Authentication

VariableDefaultDescription
AUTH_ENABLEDtrueEnable authentication enforcement
AUTH_DEV_ENABLEDfalseBypass authentication with a development user. Never enable in production.
AUTH_PROVIDERoauth2-proxyAuthentication provider
AUTH_LOGIN_URL/oauth2/startRedirect URL for unauthenticated users
AUTH_LOGOUT_URL/oauth2/sign_outRedirect URL after logout

Development User

Only effective when AUTH_DEV_ENABLED=true.

VariableDefaultDescription
AUTH_DEV_USERNAMEdev-userUsername for the development user
AUTH_DEV_EMAILdev@localhostEmail for the development user
AUTH_DEV_GROUPSephor-admins,developers,security-teamComma-separated groups
AUTH_DEV_DISPLAY_NAMEDevelopment UserDisplay name

User Directory

VariableDefaultDescription
EPHOR_USER_DIRECTORY_PROVIDERinternalProvider for user/group sync. Options: internal, keycloak, github, none

Keycloak Provider

Used when EPHOR_USER_DIRECTORY_PROVIDER=keycloak.

VariableDescription
KEYCLOAK_SERVER_URLBase URL of the Keycloak server
KEYCLOAK_REALMKeycloak realm name
KEYCLOAK_CLIENT_IDClient ID for API access
KEYCLOAK_CLIENT_SECRETClient secret for API access
KEYCLOAK_SYNC_INTERVALSync interval in milliseconds (default: 900000 / 15 minutes)

The Keycloak service account needs the following realm roles: view-users, manage-users, query-users, query-groups, query-realms.

GitHub Provider

Used when EPHOR_USER_DIRECTORY_PROVIDER=github.

VariableDescription
GITHUB_ORGGitHub organization name
GITHUB_TOKENPersonal access token with read:org scope
GITHUB_SYNC_INTERVALSync interval in milliseconds (default: 1800000 / 30 minutes)

Team-to-group mappings are configured via Spring Boot relaxed binding. By default, GitHub team slugs are used directly as group names.

Logging

VariableDefaultDescription
LOGGING_STRUCTURED_FORMAT_CONSOLE(none)Set to ecs or logstash for structured JSON logging. Leave unset for human-readable output.

Server

VariableDefaultDescription
PORT8080Port the API listens on

Licensed under AGPL v3