Environment Variables

August 27, 2026 ยท View on GitHub

Complete reference for all environment variables supported by Hemmelig.

Required Variables

VariableDescriptionDefault
DATABASE_URLSQLite connection stringfile:./data/hemmelig.db
BETTER_AUTH_SECRETSecret key for authentication sessions-
BETTER_AUTH_URLPublic URL of your instance (for proper cookie handling)-

Server Configuration

VariableDescriptionDefault
NODE_ENVEnvironment mode (production or development)development
HEMMELIG_PORTPort the server listens on3000
HEMMELIG_REQUEST_TIMEOUTAPI request timeout in seconds (zero or negative disables the app timeout)15
HEMMELIG_BASE_URLPublic URL of your instance (required for OAuth)-
HEMMELIG_TRUSTED_ORIGINAdditional trusted origin for CORS-

General Settings

VariableDescriptionDefault
HEMMELIG_INSTANCE_NAMECustom name for your instance-
HEMMELIG_INSTANCE_DESCRIPTIONCustom description for your instance-
HEMMELIG_ALLOW_REGISTRATIONAllow new user registrations (true/false)true

Security Settings

VariableDescriptionDefault
HEMMELIG_ALLOW_PASSWORD_PROTECTIONAllow password-protected secretstrue
HEMMELIG_ALLOW_IP_RESTRICTIONAllow IP range restrictions on secretstrue
HEMMELIG_ALLOW_FILE_UPLOADSAllow users to attach files to secretstrue
HEMMELIG_DISABLE_EMAIL_PASSWORD_SIGNUPDisable email/password registration (social login only)false
HEMMELIG_MAX_ENCRYPTED_PAYLOAD_SIZEHard ceiling for encrypted payloads in KB (parsed at startup)1024

Analytics

VariableDescriptionDefault
HEMMELIG_ANALYTICS_ENABLEDEnable privacy-focused analyticstrue
HEMMELIG_ANALYTICS_HMAC_SECRETHMAC secret for anonymizing visitor IDsauto-generated

Social Login Providers

See Social Login Documentation for detailed setup instructions.

GitHub

VariableDescription
HEMMELIG_AUTH_GITHUB_IDGitHub OAuth App Client ID
HEMMELIG_AUTH_GITHUB_SECRETGitHub OAuth App Client Secret

Google

VariableDescription
HEMMELIG_AUTH_GOOGLE_IDGoogle OAuth Client ID
HEMMELIG_AUTH_GOOGLE_SECRETGoogle OAuth Client Secret

Microsoft (Azure AD)

VariableDescription
HEMMELIG_AUTH_MICROSOFT_IDMicrosoft Application (client) ID
HEMMELIG_AUTH_MICROSOFT_SECRETMicrosoft Client Secret
HEMMELIG_AUTH_MICROSOFT_TENANT_IDAzure AD Tenant ID (optional, defaults to "common")

Discord

VariableDescription
HEMMELIG_AUTH_DISCORD_IDDiscord Application Client ID
HEMMELIG_AUTH_DISCORD_SECRETDiscord Application Client Secret

GitLab

VariableDescription
HEMMELIG_AUTH_GITLAB_IDGitLab Application ID
HEMMELIG_AUTH_GITLAB_SECRETGitLab Application Secret

Apple

VariableDescription
HEMMELIG_AUTH_APPLE_IDApple Services ID
HEMMELIG_AUTH_APPLE_SECRETApple Client Secret

Twitter/X

VariableDescription
HEMMELIG_AUTH_TWITTER_IDTwitter OAuth 2.0 Client ID
HEMMELIG_AUTH_TWITTER_SECRETTwitter OAuth 2.0 Client Secret

Generic OAuth

Hemmelig supports any OAuth 2.0 / OpenID Connect provider through generic OAuth configuration.

VariableDescription
HEMMELIG_AUTH_GENERIC_OAUTHJSON array of generic OAuth provider configurations. See Social Login docs for details.

Example:

HEMMELIG_AUTH_GENERIC_OAUTH='[{"providerId":"authentik","discoveryUrl":"https://auth.example.com/.well-known/openid-configuration","clientId":"client-id","clientSecret":"secret","scopes":["openid","profile","email"]}]'

Supported generic providers include: Authentik, Authelia, Keycloak, Zitadel, Ory Hydra, and any OAuth 2.0 / OIDC-compatible identity provider.

Example Configuration

Minimal Setup

# Required
DATABASE_URL=file:./data/hemmelig.db
BETTER_AUTH_SECRET=your-secret-key-min-32-chars-long
BETTER_AUTH_URL=https://secrets.example.com

Production Setup

# Required
DATABASE_URL=file:./data/hemmelig.db
BETTER_AUTH_SECRET=your-very-secure-secret-key-here
BETTER_AUTH_URL=https://secrets.example.com

# Server
NODE_ENV=production
HEMMELIG_PORT=3000
HEMMELIG_REQUEST_TIMEOUT=60
HEMMELIG_TRUSTED_ORIGIN=https://secrets.example.com

# Instance
HEMMELIG_INSTANCE_NAME=Company Secrets
HEMMELIG_INSTANCE_DESCRIPTION=Secure secret sharing for our team

# Security
HEMMELIG_ENABLE_RATE_LIMITING=true

# Analytics
HEMMELIG_ANALYTICS_ENABLED=true
HEMMELIG_ANALYTICS_HMAC_SECRET=your-analytics-hmac-secret

# Social Login (optional)
HEMMELIG_AUTH_GITHUB_ID=your-github-client-id
HEMMELIG_AUTH_GITHUB_SECRET=your-github-client-secret

Docker Compose Example

version: '3.8'

services:
    hemmelig:
        image: hemmelig/hemmelig:latest
        ports:
            - '3000:3000'
        environment:
            - DATABASE_URL=file:/data/hemmelig.db
            - BETTER_AUTH_SECRET=change-this-to-a-secure-secret
            - BETTER_AUTH_URL=https://secrets.example.com
            - NODE_ENV=production
            - HEMMELIG_PORT=3000
            - HEMMELIG_ANALYTICS_ENABLED=true
        volumes:
            - hemmelig_data:/data

volumes:
    hemmelig_data:

Notes

  • Boolean values accept true or false (case-insensitive)
  • All HEMMELIG_AUTH_* variables require both _ID and _SECRET to enable a provider
  • BETTER_AUTH_URL is required when using social login providers
  • Generate secure secrets using: openssl rand -base64 32