vitrinkaDocsBack to the vitrína

Configuration

Everything is environment variables. These are the ones that decide where data lives, how large a set may be, and which integrations are active.

Core

VariableDefaultNotes
VITRINKA_ADDR:8080Listen address.
VITRINKA_MASTER_KEYRequired. 64 hex chars; unlocks app-layer secret encryption.
BASE_URLhttp://127.0.0.1:8080Used to build the share URLs the API returns.
DATA_DIR./dataSQLite file vitrinka.db; filesystem blobs under DATA_DIR/blobs.
MAX_SET_MB200Request body limit and unpacked-size limit per set.
VITRINKA_SESSION_TTL12hAbsolute session lifetime, enforced server-side.
VITRINKA_SESSION_IDLE30mIdle timeout.
AIR_GAPunset1 disables every outbound call — breach checks and update pings.
LICENSE_FILE/run/license/license.jsonWhere the server looks for the vendor-signed licence.

Blob storage

VariableDefaultNotes
BLOB_BACKENDfsfs or s3.
S3_ENDPOINT S3_REGION S3_BUCKETRequired if BLOB_BACKEND=s3. The bucket is created if missing and validated at startup.
S3_ACCESS_KEY_ID S3_SECRET_ACCESS_KEYCredentials for that bucket.
BLOB_CACHE_MAX_GB20S3 only: a read-through cache under DATA_DIR/blobcache, pre-warmed at boot, oldest-first eviction. 0 disables it.

Integrations

Each of these is inactive until its variables are set, and unset means the routes are not mounted at all rather than mounted and failing.

VariableNotes
PLANE_API_URL PLANE_API_TOKEN PLANE_WORKSPACEAll three set ⇒ Plane integration active: one upserted comment per set on the referenced issue.
EVE_URL EVE_SECRETThe AI channel for board mentions and review passes, over HMAC-signed pushes.
STRIPE_API_KEY STRIPE_WEBHOOK_SECRETBoth set ⇒ billing active. Unset ⇒ every org stays on its stored plan and all billing routes are unmounted.
VITRINKA_LISTENER_TTLDefault 90. Seconds a listener lease survives between heartbeats before its in-flight work reverts.

Mail

One mailer per install, configured either as SMTP or through a provider key, and administered from the CLI.

vitrinka admin smtp --help