Skip to main content

Environment Variables

webhull expands ${VAR:default} placeholders throughout the YAML config at load time. This page lists every variable referenced in the example configs and what it maps to.

Syntax

SyntaxBehaviour
${VAR}Value of VAR; empty string if unset
${VAR:default}Value of VAR; falls back to default if unset or empty
$VARValue of VAR; empty string if unset (no default possible)

Expansion happens before YAML parsing — the binary never sees raw variable names in production.

Variables reference

VariableUsed inDefaultDescription
PORTserver.port8080HTTP listen port.
HOSTserver.host0.0.0.0HTTP listen address.
ENVIRONMENTserver.environmentdevelopmentRuntime mode. Set to production in deployed environments.
BASE_URLsite.baseURLAbsolute base URL, e.g. https://example.com. No trailing slash.
SMTP_HOSTmail.hostSMTP server hostname.
SMTP_PORTmail.port587SMTP port.
SMTP_USERNAMEmail.usernameSMTP auth username.
SMTP_PASSWORDmail.passwordSMTP auth password.
SMTP_FROMmail.fromSender email address.
GATE_SECRETgate.cookieSecretHMAC-SHA256 signing key for the site gate. Min 32 chars. Never hardcode.
ARCON_GATE_SECRETarconGate.cookieSecretHMAC-SHA256 signing key for the arcon gate. Min 32 chars. Never hardcode.
PLAUSIBLE_BASE_URLanalytics.plausible.baseURLPlausible server URL (self-hosted or https://plausible.io).
PLAUSIBLE_DOMAINanalytics.plausible.domainPlausible site domain for data-domain attribute.
COLLECTOR_ENDPOINTanalytics.collector.endpointCustom analytics collector HTTP endpoint.

Generating secrets

# Generate a gate secret (32 bytes, base64-encoded)
openssl rand -base64 32

Kubernetes Secret example

kubectl create secret generic webhull-secrets \
--from-literal=gate-secret="$(openssl rand -base64 32)" \
--from-literal=smtp-password="changeme" \
--namespace my-namespace
# Helm values — inject into the container
frontend:
env:
- name: GATE_SECRET
valueFrom:
secretKeyRef:
name: webhull-secrets
key: gate-secret
- name: SMTP_PASSWORD
valueFrom:
secretKeyRef:
name: webhull-secrets
key: smtp-password
- name: ENVIRONMENT
value: "production"
- name: BASE_URL
value: "https://example.com"