Configuration Reference
All configuration lives in metaone-core/src/main/resources/application.yaml. Override values with environment variables or profile-specific YAML files.
Server
| Property | Default | Description |
|---|---|---|
server.servlet.context-path | /api | All API endpoints are prefixed with this path |
JWT Security
| Property | Env Variable | Default | Description |
|---|---|---|---|
metaone.security.jwt.secret | METAONE_JWT_SECRET | (required) | HMAC-SHA secret for signing JWTs. Must be ≥ 32 characters. |
metaone.security.jwt.expiration-ms | METAONE_JWT_EXPIRATION_MS | 86400000 (1 day) | Access token lifetime in milliseconds |
metaone.security.jwt.refresh-expiration-ms | METAONE_JWT_REFRESH_EXPIRATION_MS | 604800000 (7 days) | Refresh token lifetime in milliseconds |
OAuth2
| Property | Env Variable | Description |
|---|---|---|
metaone.security.oauth2.authorized-redirect-uris | AUTHORIZED_REDIRECT_URIS | Comma-separated list of allowed OAuth2 redirect URIs |
spring.security.oauth2.client.registration.google.scope | — | Scopes requested from Google (email, profile) |
Plugin Runtime
| Property | Default | Description |
|---|---|---|
metaone.plugins-path | plugins | Directory where PF4J plugin JARs are loaded from. Relative to the working directory or absolute. |
Workspace DataSource
Each workspace gets its own PostgreSQL database, provisioned dynamically.
| Property | Default | Description |
|---|---|---|
metaone.workspace.datasource.url-template | jdbc:postgresql://localhost:5432/metaone_ws_{workspaceKey} | JDBC URL template. {workspaceKey} is replaced with the workspace key. |
metaone.workspace.datasource.username | (inherits from main datasource) | DB username |
metaone.workspace.datasource.password | (inherits from main datasource) | DB password |
metaone.workspace.datasource.driver-class-name | org.postgresql.Driver | JDBC driver |
metaone.workspace.datasource.admin-url | jdbc:postgresql://localhost:5432/postgres | Admin connection for creating workspace databases |
metaone.workspace.datasource.pool.max-size-per-workspace | 5 | Max connections per workspace pool |
metaone.workspace.datasource.pool.min-idle-per-workspace | 1 | Min idle connections per workspace pool |
metaone.workspace.datasource.pool.max-pools | 50 | Maximum number of active workspace connection pools |
metaone.workspace.datasource.pool.idle-eviction-minutes | 30 | Idle pool eviction timeout |
metaone.workspace.datasource.pool.connection-timeout-ms | 30000 | Connection acquisition timeout |
Caching
| Property | Default | Description |
|---|---|---|
spring.cache.caffeine.spec | maximumSize=1000,expireAfterWrite=5m | Caffeine cache spec for extension access checks |
spring.cache.cache-names | extension-access | Named caches managed by Caffeine |
Profiles
| Profile | Purpose |
|---|---|
| (default) | Production — requires real PostgreSQL and all env vars set |
dev | Local development with relaxed settings |
test | CI/unit tests — uses H2 in PostgreSQL compatibility mode |
Example application-dev.yaml overrides
yaml
spring:
datasource:
url: jdbc:postgresql://localhost:5432/metaone
username: metaone
password: secret
metaone:
security:
jwt:
secret: dev-secret-key-at-least-32-characters-long
plugins-path: plugins/Full Example
yaml
server:
servlet:
context-path: /api
metaone:
plugins-path: /opt/metaone/plugins
security:
oauth2:
authorized-redirect-uris: https://app.example.com/oauth2/callback
jwt:
secret: ${METAONE_JWT_SECRET}
expiration-ms: 86400000
refresh-expiration-ms: 604800000
workspace:
datasource:
url-template: "jdbc:postgresql://db:5432/metaone_ws_{workspaceKey}"
username: ${DB_USERNAME}
password: ${DB_PASSWORD}
admin-url: "jdbc:postgresql://db:5432/postgres"
pool:
max-size-per-workspace: 10
max-pools: 100