Skip to content

alpine.conf key reference (server runtime)

How to read these tables:

  • Key: HOCON path used in application.conf and override.conf
  • Default value: shipped default
  • Description: runtime meaning and impact

Process-wide secrets

These keys live at the top of the alpine { ... } block and apply to the whole {{ product_name }} process. They back AES-256 at-rest encryption and key derivation for secrets the server seals before persisting.

Key Default value Description
alpine.secret "abcdefghijklmnopqrstuwyz0123456789abcdefghijklmnopqrstuwyz0123456789" Process-wide AES-256 secret used to encrypt secrets at rest.
alpine.salt "abcdefghijklmnopqrstuwyzabcdefghijklmnopqrstuwyz" Salt used together with alpine.secret for key derivation.

Override the shipped secret and salt in production

The values shipped in alpine.conf are development placeholders only. They are public and identical across every install. Override both alpine.secret and alpine.salt for every non-development deployment via override.conf or CONFIG_FORCE_alpine_secret / CONFIG_FORCE_alpine_salt. See Environment overrides with CONFIG_FORCE and the Override workflow.

Endpoint and service mapping

Each entry under alpine.endpoints[] is one gRPC listener. The runtime reads the bind host and port directly from the endpoint entry (bindHost / port); the named settings block carries TLS, keepalive, flow-control, and message-size limits for that listener.

Key Default value Description
alpine.fail.on.missing.services false If true, startup fails when a configured service provider is missing.
alpine.endpoints[].name "public" Logical endpoint name.
alpine.endpoints[].bindHost "any" External bind host for the endpoint listener.
alpine.endpoints[].port 5051 External bind port for the endpoint listener.
alpine.endpoints[].settings "alpine" Name of server settings block under alpine.settings.
alpine.endpoints[].services ["alpine-admin", "alpine-ca", "alpine-keyserver"] Service IDs exposed on the endpoint.

Server settings (alpine.settings.alpine.*)

The settings block carries TLS, keepalive, flow-control, and message-size limits for the listener that references it. The bind host and port are not read here; they come from the matching alpine.endpoints[] entry.

Key Default value Description
alpine.settings.alpine.ssl.enable false Enables TLS for gRPC server settings block.
alpine.settings.alpine.ssl.type "PKCS12" Server keystore type.
alpine.settings.alpine.ssl.store "" Server keystore file path.
alpine.settings.alpine.ssl.password "" Server keystore password.
alpine.settings.alpine.ssl.protocol "TLSv1.3" TLS protocol version.
alpine.settings.alpine.ssl.client.enable false Enables mTLS client authentication.
alpine.settings.alpine.ssl.client.type "PKCS12" Client truststore/keystore type.
alpine.settings.alpine.ssl.client.store "" Client truststore/keystore file path.
alpine.settings.alpine.ssl.client.password "" Client truststore/keystore password.
alpine.settings.alpine.handshake.timeout 30000000000 gRPC/TCP handshake timeout in nanoseconds (30s).
alpine.settings.alpine.keep.alive.time 7200000000000 Keepalive ping interval in nanoseconds (2h).
alpine.settings.alpine.keep.alive.timeout 20000000000 Keepalive response timeout in nanoseconds.
alpine.settings.alpine.keep.alive.permit 300000000000 Minimum allowed interval for keepalive pings in nanoseconds.
alpine.settings.alpine.keep.alive.permitWithoutCalls true Allows keepalive pings when no RPC is active.
alpine.settings.alpine.flow.control.windows 1048576 Flow-control window size in bytes.
alpine.settings.alpine.max.concurrent.calls.per.connection 2147483647 Maximum concurrent calls per connection.
alpine.settings.alpine.max.connection.age 9223372036854775807 Maximum connection age in nanoseconds.
alpine.settings.alpine.max.connection.grace 9223372036854775807 Grace period before forced connection close in nanoseconds.
alpine.settings.alpine.max.connection.idle 9223372036854775807 Maximum idle connection duration in nanoseconds.
alpine.settings.alpine.max.inbound.message.size 4194304 Maximum inbound message size in bytes.
alpine.settings.alpine.max.inbound.metadata.size 8192 Maximum inbound metadata size in bytes.

Service-specific settings (alpine.services.*)

Key Default value Description
alpine.services.alpine-admin.initialization.enabled true Enables the one-time admin initialization gate on this endpoint.
alpine.services.alpine-admin.initialization.secret "dev-init-shared-secret-0123456789-abcdef" HS256 shared secret of at least 32 bytes that gates the admin CLI init command.
alpine.services.alpine-keyserver.hsm.threadsPerKey 3 Number of worker threads allocated per HSM key context.
alpine.services.alpine-keyserver.hsm.queueCapacityPerKey 0 Queue capacity per key; 0 means unbounded queue.
alpine.services.alpine-keyserver.hsm.daemonThreads false Whether HSM workers are daemon threads.
alpine.services.alpine-keyserver.hsm.prestartCoreThreads true Prestarts core worker threads.
alpine.services.alpine-keyserver.hsm.threadNamePrefix "runner-" Prefix for HSM worker thread names.
alpine.services.alpine-ca {} Placeholder block for CA-specific service options.

Override the admin init secret in production

alpine.services.alpine-admin.initialization.secret ships with a development-only placeholder. The admin CLI init command signs its one-time bootstrap request with this HS256 secret, so it must be replaced with a private, random value of at least 32 bytes for any real deployment — via override.conf or CONFIG_FORCE_alpine_services_alpine__admin_initialization_secret.