Controls the content of the Access-Control-Max-Age response header. Has no effect when alpine.cors.enabled is false.
Required
false
Type
integer
Default
3600
ENV
ALPINE_CORS_MAX_AGE
Database
alpine.database.password
Specifies the password to use when authenticating to the database.
Required
false
Type
string
Default
dtrack
ENV
ALPINE_DATABASE_PASSWORD
alpine.database.pool.enabled
Specifies if the database connection pool is enabled.
Required
false
Type
boolean
Default
true
ENV
ALPINE_DATABASE_POOL_ENABLED
alpine.database.pool.idle.timeout
This property controls the maximum amount of time that a connection is allowed to sit idle in the pool. The property can be set globally for both transactional and non-transactional connection pools, or for each pool type separately. When both global and pool-specific properties are set, the pool-specific properties take precedence.
Required
false
Type
integer
Default
300000
ENV
ALPINE_DATABASE_POOL_IDLE_TIMEOUT
alpine.database.pool.max.lifetime
This property controls the maximum lifetime of a connection in the pool. An in-use connection will never be retired, only when it is closed will it then be removed. The property can be set globally for both transactional and non-transactional connection pools, or for each pool type separately. When both global and pool-specific properties are set, the pool-specific properties take precedence.
Required
false
Type
integer
Default
600000
ENV
ALPINE_DATABASE_POOL_MAX_LIFETIME
alpine.database.pool.max.size
This property controls the maximum size that the pool is allowed to reach, including both idle and in-use connections. The property can be set globally for both transactional and non-transactional connection pools, or for each pool type separately. When both global and pool-specific properties are set, the pool-specific properties take precedence.
Required
false
Type
integer
Default
20
ENV
ALPINE_DATABASE_POOL_MAX_SIZE
alpine.database.pool.min.idle
This property controls the minimum number of idle connections in the pool. This value should be equal to or less than alpine.database.pool.max.size. Warning: If the value is less than alpine.database.pool.max.size, alpine.database.pool.idle.timeout will have no effect. The property can be set globally for both transactional and non-transactional connection pools, or for each pool type separately. When both global and pool-specific properties are set, the pool-specific properties take precedence.
Required
false
Type
integer
Default
10
ENV
ALPINE_DATABASE_POOL_MIN_IDLE
alpine.database.pool.nontx.idle.timeout
Required
false
Type
integer
Default
${alpine.database.pool.idle.timeout}
ENV
ALPINE_DATABASE_POOL_NONTX_IDLE_TIMEOUT
alpine.database.pool.nontx.max.lifetime
Required
false
Type
integer
Default
${alpine.database.pool.max.lifetime}
ENV
ALPINE_DATABASE_POOL_NONTX_MAX_LIFETIME
alpine.database.pool.nontx.max.size
Required
false
Type
integer
Default
${alpine.database.pool.max.size}
ENV
ALPINE_DATABASE_POOL_NONTX_MAX_SIZE
alpine.database.pool.nontx.min.idle
Required
false
Type
integer
Default
${alpine.database.pool.min.idle}
ENV
ALPINE_DATABASE_POOL_NONTX_MIN_IDLE
alpine.database.pool.tx.idle.timeout
Required
false
Type
integer
Default
${alpine.database.pool.idle.timeout}
ENV
ALPINE_DATABASE_POOL_TX_IDLE_TIMEOUT
alpine.database.pool.tx.max.lifetime
Required
false
Type
integer
Default
${alpine.database.pool.max.lifetime}
ENV
ALPINE_DATABASE_POOL_TX_MAX_LIFETIME
alpine.database.pool.tx.max.size
Required
false
Type
integer
Default
${alpine.database.pool.max.size}
ENV
ALPINE_DATABASE_POOL_TX_MAX_SIZE
alpine.database.pool.tx.min.idle
Required
false
Type
integer
Default
${alpine.database.pool.min.idle}
ENV
ALPINE_DATABASE_POOL_TX_MIN_IDLE
alpine.database.url
Specifies the JDBC URL to use when connecting to the database.
Required
true
Type
string
Default
null
Example
jdbc:postgresql://localhost:5432/dtrack
ENV
ALPINE_DATABASE_URL
alpine.database.username
Specifies the username to use when authenticating to the database.
Required
false
Type
string
Default
dtrack
ENV
ALPINE_DATABASE_USERNAME
database.migration.password
Defines the database password for executing migrations. If not set, the value of alpine.database.password will be used.
Required
false
Type
string
Default
${alpine.database.password}
ENV
DATABASE_MIGRATION_PASSWORD
database.migration.url
Defines the database JDBC URL to use when executing migrations. If not set, the value of alpine.database.url will be used. Should generally not be set, unless TLS authentication is used, and custom connection variables are required.
Required
false
Type
string
Default
${alpine.database.url}
ENV
DATABASE_MIGRATION_URL
database.migration.username
Defines the database user for executing migrations. If not set, the value of alpine.database.username will be used.
Required
false
Type
string
Default
${alpine.database.username}
ENV
DATABASE_MIGRATION_USERNAME
database.run.migrations
Defines whether database migrations should be executed on startup.
Required
false
Type
boolean
Default
true
ENV
DATABASE_RUN_MIGRATIONS
Development
dev.services.enabled
Whether dev services shall be enabled.
When enabled, Dependency-Track will automatically launch containers for:
Frontend
Kafka
PostgreSQL
at startup, and configures itself to use them. They are disposed when Dependency-Track stops. The containers are exposed on randomized ports, which will be logged during startup.
Trying to enable dev services in a production build will prevent the application from starting.
Note that the containers launched by the API server can not currently be discovered and re-used by other Hyades services. This is a future enhancement tracked in https://github.com/DependencyTrack/hyades/issues/1188.
Required
false
Type
boolean
Default
false
ENV
DEV_SERVICES_ENABLED
dev.services.image.frontend
The image to use for the frontend dev services container.
Required
false
Type
string
Default
ghcr.io/dependencytrack/hyades-frontend:snapshot
ENV
DEV_SERVICES_IMAGE_FRONTEND
dev.services.image.kafka
The image to use for the Kafka dev services container.
Required
false
Type
string
Default
docker.redpanda.com/vectorized/redpanda:v24.1.7
ENV
DEV_SERVICES_IMAGE_KAFKA
dev.services.image.postgres
The image to use for the PostgreSQL dev services container.
Required
false
Type
string
Default
postgres:16
ENV
DEV_SERVICES_IMAGE_POSTGRES
General
alpine.api.key.prefix
Defines the prefix to be used for API keys. A maximum prefix length of 251 characters is supported. The prefix may also be left empty.
Required
false
Type
string
Default
odt_
ENV
ALPINE_API_KEY_PREFIX
alpine.bcrypt.rounds
Specifies the number of bcrypt rounds to use when hashing a user's password. The higher the number the more secure the password, at the expense of hardware resources and additional time to generate the hash.
Required
true
Type
integer
Default
14
ENV
ALPINE_BCRYPT_ROUNDS
alpine.data.directory
Defines the path to the data directory. This directory will hold logs, keys, and any database or index files along with application-specific files or directories.
Required
true
Type
string
Default
~/.dependency-track
ENV
ALPINE_DATA_DIRECTORY
alpine.private.key.path
Defines the paths to the public-private key pair to be used for signing and verifying digital signatures. The keys will be generated upon first startup if they do not exist.
Required
false
Type
string
Default
${alpine.data.directory}/keys/private.key
Example
/var/run/secrets/private.key
ENV
ALPINE_PRIVATE_KEY_PATH
alpine.public.key.path
Defines the paths to the public-private key pair to be used for signing and verifying digital signatures. The keys will be generated upon first startup if they do not exist.
Required
false
Type
string
Default
${alpine.data.directory}/keys/public.key
Example
/var/run/secrets/public.key
ENV
ALPINE_PUBLIC_KEY_PATH
alpine.secret.key.path
Defines the path to the secret key to be used for data encryption and decryption. The key will be generated upon first startup if it does not exist.
Required
false
Type
string
Default
${alpine.data.directory}/keys/secret.key
ENV
ALPINE_SECRET_KEY_PATH
bom.upload.processing.trx.flush.threshold
Defines the number of write operations to perform during BOM processing before changes are flushed to the database. Smaller values may lower memory usage of the API server, whereas higher values will improve performance as fewer network round-trips to the database are necessary.
Required
false
Type
integer
Default
10000
ENV
BOM_UPLOAD_PROCESSING_TRX_FLUSH_THRESHOLD
integrity.check.enabled
Required
false
Type
boolean
Default
false
ENV
INTEGRITY_CHECK_ENABLED
integrity.initializer.enabled
Specifies whether the Integrity Initializer shall be enabled.
Required
false
Type
boolean
Default
false
ENV
INTEGRITY_INITIALIZER_ENABLED
tmp.delay.bom.processed.notification
Delays the BOM_PROCESSED notification until the vulnerability analysis associated with a given BOM upload is completed. The intention being that it is then "safe" to query the API for any identified vulnerabilities. This is specifically for cases where polling the /api/v1/bom/token/ endpoint is not feasible. THIS IS A TEMPORARY FUNCTIONALITY AND MAY BE REMOVED IN FUTURE RELEASES WITHOUT FURTHER NOTICE.
Required
false
Type
boolean
Default
false
ENV
TMP_DELAY_BOM_PROCESSED_NOTIFICATION
vulnerability.policy.analysis.enabled
Defines whether vulnerability policy analysis is enabled.
Required
false
Type
boolean
Default
false
ENV
VULNERABILITY_POLICY_ANALYSIS_ENABLED
vulnerability.policy.bundle.auth.password
For nginx server, if username and bearer token both are provided, basic auth will be used, else the auth header will be added based on the not null values Defines the password to be used for basic authentication against the service hosting the policy bundle.
Required
false
Type
string
Default
null
ENV
VULNERABILITY_POLICY_BUNDLE_AUTH_PASSWORD
vulnerability.policy.bundle.auth.username
Defines the username to be used for basic authentication against the service hosting the policy bundle.
Required
false
Type
string
Default
null
ENV
VULNERABILITY_POLICY_BUNDLE_AUTH_USERNAME
vulnerability.policy.bundle.bearer.token
Defines the token to be used as bearerAuth against the service hosting the policy bundle.
Required
false
Type
string
Default
null
ENV
VULNERABILITY_POLICY_BUNDLE_BEARER_TOKEN
vulnerability.policy.bundle.source.type
Defines the type of source from which policy bundles are being fetched from. Required when vulnerability.policy.bundle.url is set.
Required
false
Type
enum
Valid Values
[nginx, s3]
Default
NGINX
ENV
VULNERABILITY_POLICY_BUNDLE_SOURCE_TYPE
vulnerability.policy.bundle.url
Defines where to fetch the policy bundle from.For S3, just the base url needs to be provided with port For nginx, the whole url with bundle name needs to be given
Required
false
Type
string
Default
null
Example
http://example.com:80/bundles/bundle.zip
ENV
VULNERABILITY_POLICY_BUNDLE_URL
vulnerability.policy.s3.access.key
S3 related details. Access key, secret key, bucket name and bundle names are mandatory if S3 is chosen. Region is optional
Required
false
Type
string
Default
null
ENV
VULNERABILITY_POLICY_S3_ACCESS_KEY
vulnerability.policy.s3.bucket.name
Required
false
Type
string
Default
null
ENV
VULNERABILITY_POLICY_S3_BUCKET_NAME
vulnerability.policy.s3.bundle.name
Required
false
Type
string
Default
null
ENV
VULNERABILITY_POLICY_S3_BUNDLE_NAME
vulnerability.policy.s3.region
Required
false
Type
string
Default
null
ENV
VULNERABILITY_POLICY_S3_REGION
vulnerability.policy.s3.secret.key
Required
false
Type
string
Default
null
ENV
VULNERABILITY_POLICY_S3_SECRET_KEY
workflow.retention.duration
Defines the duration for how long workflow data is being retained, after all steps transitioned into a non-terminal state (CANCELLED, COMPLETED, FAILED, NOT_APPLICABLE). The duration must be specified in ISO8601 notation (https://en.wikipedia.org/wiki/ISO_8601#Durations).
Required
false
Type
duration
Default
P3D
ENV
WORKFLOW_RETENTION_DURATION
workflow.step.timeout.duration
Defines the duration for how long a workflow step is allowed to remain in PENDING state after being started. If this duration is exceeded, workflow steps will transition into the TIMED_OUT state. If they remain in TIMED_OUT for the same duration, they will transition to the FAILED state. The duration must be specified in ISO8601 notation (https://en.wikipedia.org/wiki/ISO_8601#Durations).
Specifies the LDAP attribute used to store a users email address
Required
false
Type
string
Default
mail
ENV
ALPINE_LDAP_ATTRIBUTE_MAIL
alpine.ldap.attribute.name
Specifies the Attribute that identifies a users ID.
Example (Microsoft Active Directory):
userPrincipalName
Example (ApacheDS, Fedora 389 Directory, NetIQ/Novell eDirectory, etc):
uid
Required
false
Type
string
Default
userPrincipalName
ENV
ALPINE_LDAP_ATTRIBUTE_NAME
alpine.ldap.auth.username.format
Specifies if the username entered during login needs to be formatted prior to asserting credentials against the directory. For Active Directory, the userPrincipal attribute typically ends with the domain, whereas the samAccountName attribute and other directory server implementations do not. The %s variable will be substituted with the username asserted during login.
Example (Microsoft Active Directory):
%s@example.com
Example (ApacheDS, Fedora 389 Directory, NetIQ/Novell eDirectory, etc):
%s
Required
false
Type
string
Default
null
Example
%s@example.com
ENV
ALPINE_LDAP_AUTH_USERNAME_FORMAT
alpine.ldap.basedn
Specifies the base DN that all queries should search from
Required
false
Type
string
Default
null
Example
dc=example,dc=com
ENV
ALPINE_LDAP_BASEDN
alpine.ldap.bind.password
If anonymous access is not permitted, specify a password for the username used to bind.
Required
false
Type
string
Default
null
ENV
ALPINE_LDAP_BIND_PASSWORD
alpine.ldap.bind.username
If anonymous access is not permitted, specify a username with limited access to the directory, just enough to perform searches. This should be the fully qualified DN of the user.
Required
false
Type
string
Default
null
ENV
ALPINE_LDAP_BIND_USERNAME
alpine.ldap.enabled
Defines if LDAP will be used for user authentication. If enabled, alpine.ldap.* properties should be set accordingly.
Required
false
Type
boolean
Default
false
ENV
ALPINE_LDAP_ENABLED
alpine.ldap.groups.filter
Specifies the LDAP search filter used to retrieve all groups from the directory.
Example (Microsoft Active Directory):
(&(objectClass=group)(objectCategory=Group))
Example (ApacheDS, Fedora 389 Directory, NetIQ/Novell eDirectory, etc):
(&(objectClass=groupOfUniqueNames))
Required
false
Type
string
Default
(&(objectClass=group)(objectCategory=Group))
ENV
ALPINE_LDAP_GROUPS_FILTER
alpine.ldap.groups.search.filter
Specifies the LDAP search filter used to search for groups by their name. The {SEARCH_TERM} variable will be substituted at runtime.
Specifies the LDAP security authentication level to use. Its value is one of the following strings: "none", "simple", "strong". If this property is empty or unspecified, the behaviour is determined by the service provider.
This option will ensure that team memberships for LDAP users are dynamic and synchronized with membership of LDAP groups. When a team is mapped to an LDAP group, all local LDAP users will automatically be assigned to the team if they are a member of the group the team is mapped to. If the user is later removed from the LDAP group, they will also be removed from the team. This option provides the ability to dynamically control user permissions via an external directory.
Required
false
Type
boolean
Default
false
ENV
ALPINE_LDAP_TEAM_SYNCHRONIZATION
alpine.ldap.user.groups.filter
Specifies the LDAP search filter to use to query a user and retrieve a list of groups the user is a member of. The {USER_DN} variable will be substituted with the actual value of the users DN at runtime.
Specifies if mapped LDAP accounts are automatically created upon successful authentication. When a user logs in with valid credentials but an account has not been previously provisioned, an authentication failure will be returned. This allows admins to control specifically which ldap users can access the system and which users cannot. When this value is set to true, a local ldap user will be created and mapped to the ldap account automatically. This automatic provisioning only affects authentication, not authorization.
Required
false
Type
boolean
Default
false
ENV
ALPINE_LDAP_USER_PROVISIONING
alpine.ldap.users.search.filter
Specifies the LDAP search filter used to search for users by their name. The {SEARCH_TERM} variable will be substituted at runtime.
Defines whether Prometheus metrics will be exposed. If enabled, metrics will be available via the /metrics endpoint.
Required
false
Type
boolean
Default
false
ENV
ALPINE_METRICS_ENABLED
OpenID Connect
alpine.oidc.client.id
Defines the client ID to be used for OpenID Connect. The client ID should be the same as the one configured for the frontend, and will only be used to validate ID tokens.
Required
false
Type
string
Default
null
ENV
ALPINE_OIDC_CLIENT_ID
alpine.oidc.enabled
Defines if OpenID Connect will be used for user authentication. If enabled, alpine.oidc.* properties should be set accordingly.
Required
false
Type
boolean
Default
false
ENV
ALPINE_OIDC_ENABLED
alpine.oidc.issuer
Defines the issuer URL to be used for OpenID Connect. This issuer MUST support provider configuration via the /.well-known/openid-configuration endpoint. See also:
This option will ensure that team memberships for OpenID Connect users are dynamic and synchronized with membership of OpenID Connect groups or assigned roles. When a team is mapped to an OpenID Connect group, all local OpenID Connect users will automatically be assigned to the team if they are a member of the group the team is mapped to. If the user is later removed from the OpenID Connect group, they will also be removed from the team. This option provides the ability to dynamically control user permissions via the identity provider. Note that team synchronization is only performed during user provisioning and after successful authentication.
Required
false
Type
boolean
Default
false
ENV
ALPINE_OIDC_TEAM_SYNCHRONIZATION
alpine.oidc.teams.claim
Defines the name of the claim that contains group memberships or role assignments in the provider's userinfo endpoint. The claim must be an array of strings. Most public identity providers do not support group or role management. When using a customizable / on-demand hosted identity provider, name, content, and inclusion in the userinfo endpoint will most likely need to be configured.
Required
false
Type
string
Default
groups
ENV
ALPINE_OIDC_TEAMS_CLAIM
alpine.oidc.user.provisioning
Specifies if mapped OpenID Connect accounts are automatically created upon successful authentication. When a user logs in with a valid access token but an account has not been previously provisioned, an authentication failure will be returned. This allows admins to control specifically which OpenID Connect users can access the system and which users cannot. When this value is set to true, a local OpenID Connect user will be created and mapped to the OpenID Connect account automatically. This automatic provisioning only affects authentication, not authorization.
Required
false
Type
boolean
Default
false
ENV
ALPINE_OIDC_USER_PROVISIONING
alpine.oidc.username.claim
Defines the name of the claim that contains the username in the provider's userinfo endpoint. Common claims are name, username, preferred_username or nickname. See also:
Defines a multiplier that is used to calculate the number of threads used by the event subsystem. This property is only used when alpine.worker.threads is set to 0. A machine with 4 cores and a multiplier of 4, will use (at most) 16 worker threads.
Required
true
Type
integer
Default
4
ENV
ALPINE_WORKER_THREAD_MULTIPLIER
alpine.worker.threads
Defines the number of worker threads that the event subsystem will consume. Events occur asynchronously and are processed by the Event subsystem. This value should be large enough to handle most production situations without introducing much delay, yet small enough not to pose additional load on an already resource-constrained server. A value of 0 will instruct Alpine to allocate 1 thread per CPU core. This can further be tweaked using the alpine.worker.thread.multiplier property.
Specifies minimum amount of time for which the lock should be kept. Its main purpose is to prevent execution from multiple nodes in case of really short tasks and clock difference between the nodes.
Required
true
Type
integer
Default
90000
ENV
TASK_METRICS_PORTFOLIO_LOCKATLEASTFORINMILLIS
task.metrics.portfolio.lockAtMostForInMillis
Specifies how long the lock should be kept in case the executing node dies. This is just a fallback, under normal circumstances the lock is released as soon the tasks finishes. Set lockAtMostFor to a value which is much longer than normal execution time. Default value is 15min Lock will be extended dynamically till task execution is finished