Skip to content

Settings

The Settings page (/settings) provides a centralized interface for managing global configuration values. Only users with the ADMIN role can access this page.

How Settings Work

Settings are stored in the database as key-value pairs using the ApplicationConfig entity. Each setting includes:

FieldDescription
keyUnique identifier for the setting
valueThe configuration value (max 4096 characters)
groupLogical grouping for the UI (e.g., general, docker, security)
descriptionHuman-readable explanation shown in the settings form
isSecretWhen true, the value is masked in the UI and API responses

TIP

Secret settings (like registry passwords or API tokens) are masked with asterisks in the UI. The actual value is only sent to the backend on save — it is never returned in GET responses.

Configuration Groups

General

SettingDescription
Frontend URLPublic URL of the frontend (used for CORS and redirects)
Backend URLPublic URL of the backend API
CORS Allowed OriginsComma-separated list of allowed origins

Docker Registry

SettingDescription
Registry URLDocker registry endpoint (e.g., registry.example.com)
Registry UsernameAuthentication username
Registry PasswordAuthentication password (secret)

Notifications

SettingDescription
Notification retentionHow long to keep notification history
Email / Slack / Webhook integrationsOutbound notification channels

Security

SettingDescription
Session timeoutMaximum idle time before requiring re-authentication
Password policyMinimum length, complexity requirements

API

Settings are managed through the ConfigurationController.

List All Settings

http
GET /api/config

Returns all settings grouped by category. Secret values are redacted.

Update a Setting

http
PUT /api/config/{key}
Content-Type: application/json

{
  "value": "https://app.example.com"
}

Bulk Update

http
PUT /api/config
Content-Type: application/json

[
  { "key": "frontend.url", "value": "https://app.example.com" },
  { "key": "cors.origins", "value": "https://app.example.com,https://admin.example.com" }
]

WARNING

Changing CORS or URL settings may require a backend restart to take effect if the values were also set via environment variables. Database-stored settings take precedence at runtime.

Released under the MIT License.