Skip to main content

Server Options

Complete reference for yopass-server. All flags can also be set via environment variable.

Configuration methods

Flags take precedence. Environment variables are the flag name uppercased with dashes replaced by underscores (e.g. --max-lengthMAX_LENGTH).


Core

FlagEnv varDefaultDescription
--addressADDRESS0.0.0.0Listen address
--portPORT1337Listen port
--log-levelLOG_LEVELinfoLog level: debug, info, warn, error
--metrics-portMETRICS_PORT-1Port for the Prometheus metrics server. Disabled when -1
--health-checkHEALTH_CHECKfalseCheck database connectivity and exit
--asset-pathASSET_PATHpublicPath to the built frontend assets directory

Database

FlagEnv varDefaultDescription
--databaseDATABASEmemcachedStorage backend: memcached or redis
--memcachedMEMCACHEDlocalhost:11211Memcached address (host:port)
--redisREDISredis://localhost:6379/0Redis connection URL

Secrets

FlagEnv varDefaultDescription
--max-lengthMAX_LENGTH10000Maximum encrypted secret size in bytes
--default-expiryDEFAULT_EXPIRY1hDefault expiration pre-selected in the UI: 1h, 1d, or 1w
--force-expirationFORCE_EXPIRATIONForce all secrets and file uploads to a fixed expiration: 1h, 1d, or 1w. The server rejects any create request with a different value (400 Expiration does not match server policy). The UI replaces the expiration selector with the fixed duration
--force-onetime-secretsFORCE_ONETIME_SECRETSfalseReject secrets that are not set to one-time viewing
--prefetch-secretPREFETCH_SECRETtrueShow a warning that the secret may be one-time use before revealing it
--argon2ARGON2falseUse Argon2id for password key derivation instead of iterated SHA-256. See Argon2 key derivation

Argon2 key derivation

The --argon2 flag switches the S2K (string-to-key) function used when encrypting secrets from the default iterated SHA-256 to Argon2id, a memory-hard function that better resists GPU-accelerated brute-force attacks. This mostly matters for user-chosen passwords; auto-generated keys are random and already infeasible to brute-force.

When enabled, the server:

  • Exposes ARGON2: true in the /config endpoint, so the web frontend and the CLI encrypt with Argon2
  • Adds 'wasm-unsafe-eval' to the Content-Security-Policy script-src directive, required by the WASM-based Argon2 implementation in OpenPGP.js
yopass-server --argon2

# or via environment variable
ARGON2=true yopass-server

Decryption is unaffected by the flag in either direction: the key derivation type is stored inside each PGP message, so secrets created before enabling (or after disabling) the flag keep working.

CSP and reverse proxies

The feature is opt-in because it loosens the Content-Security-Policy, and because reverse proxies that override the Content-Security-Policy header will silently break decryption in the browser. If your proxy (Nginx, Caddy, Apache, …) sets its own CSP, add 'wasm-unsafe-eval' to script-src:

Content-Security-Policy: ... script-src 'self' 'wasm-unsafe-eval'; ...

'wasm-unsafe-eval' is a CSP Level 3 source keyword that only permits WebAssembly compilation — it does not enable eval() or Function(). Proxies that pass backend headers through unchanged need no configuration.


File Storage

FlagEnv varDefaultDescription
--max-file-sizeMAX_FILE_SIZE512KBMaximum file upload size (e.g. 10KB, 512KB, 1MB). Capped at 1 MB without a license key
--disable-uploadDISABLE_UPLOADfalseDisable the /create/file upload endpoint entirely
--file-storeFILE_STORE(database)File storage backend: disk, s3, or empty to use the database
--file-store-pathFILE_STORE_PATH/tmp/yopass-filesBase directory for the disk file store
--file-store-s3-bucketFILE_STORE_S3_BUCKETS3 bucket name (required for S3 storage)
--file-store-s3-prefixFILE_STORE_S3_PREFIXyopass/Key prefix for objects stored in S3
--file-store-s3-endpointFILE_STORE_S3_ENDPOINTS3-compatible endpoint URL (e.g. MinIO at http://minio:9000)
--file-store-s3-regionFILE_STORE_S3_REGIONus-east-1S3 region
--cleanup-intervalCLEANUP_INTERVAL60How often (seconds) the built-in file cleanup runs
--disable-file-cleanupDISABLE_FILE_CLEANUPfalseDisable the built-in cleanup goroutine (use when relying on S3 lifecycle rules instead)

See File Storage for backend setup and S3 lifecycle rule examples.


TLS

FlagEnv varDefaultDescription
--tls-certTLS_CERTPath to the TLS certificate file
--tls-keyTLS_KEYPath to the TLS private key file

See TLS / HTTPS for built-in TLS setup and reverse proxy examples.


Security & Networking

FlagEnv varDefaultDescription
--cors-allow-originCORS_ALLOW_ORIGIN*Value for the Access-Control-Allow-Origin response header
--trusted-proxiesTRUSTED_PROXIESComma-separated IP addresses or CIDR ranges whose X-Forwarded-For headers are trusted (e.g. 192.168.1.0/24,10.0.0.0/8)

Frontend / UI

FlagEnv varDefaultDescription
--read-onlyREAD_ONLYfalseDisable secret creation endpoints. Retrieval and deletion remain active
--disable-featuresDISABLE_FEATURESfalseHide the features section on the homepage
--no-language-switcherNO_LANGUAGE_SWITCHERfalseHide the language switcher in the navigation bar
--privacy-notice-urlPRIVACY_NOTICE_URLURL linked from the privacy notice in the footer
--imprint-urlIMPRINT_URLURL linked from the imprint / legal notice in the footer
--public-urlPUBLIC_URLBase URL of the public read-only instance. Secret links generated by the creation instance will use this URL

See Read-Only Mode for split-instance deployments.


License

FlagEnv varDefaultDescription
--license-keyLICENSE_KEYLicense key that unlocks OIDC authentication, theming, audit logging, and file sizes above 1 MB

Expiry behavior

The expiry timestamp is checked continuously at runtime, not just at startup, so a long-running server degrades to the non-business feature set the moment its license expires — no restart needed. The server logs a daily warning during the last 30 days and an error at expiry; the yopass_license_days_until_expiry metric counts down live (negative once expired).

When the license expires — whether at runtime or on a restart with an expired key:

  • Disabled: creating new secret requests, read receipts on new secrets, custom theming/branding/logo, file uploads above the 1 MB cap, audit logging, webhooks, and new OIDC logins.
  • Kept working, by design: existing OIDC sessions and requireAuth enforcement stay fully active so secrets created with authentication required remain protected and accessible to already-authenticated users — an expiring license never weakens access control or strands data. Already-issued secret requests can still be viewed, fulfilled, and retrieved until their TTL (at most one week) drains them.
  • Startup without any license key: the server refuses to start with --oidc-issuer, --audit-log, or --webhook-url configured. This catches misconfiguration — providing these flags without ever having a license is an error, not a degradation.

Authentication (requires license key)

FlagEnv varDefaultDescription
--oidc-issuerOIDC_ISSUEROIDC provider URL (e.g. https://accounts.google.com)
--oidc-client-idOIDC_CLIENT_IDOAuth 2.0 client ID
--oidc-client-secretOIDC_CLIENT_SECRETOAuth 2.0 client secret
--oidc-redirect-urlOIDC_REDIRECT_URLCallback URL registered with your OIDC provider (e.g. https://yopass.example.com/auth/callback)
--require-authREQUIRE_AUTHfalseRequire users to be authenticated before they can create secrets
--api-tokenAPI_TOKENStatic bearer token(s) letting machine clients create secrets when --require-auth is set, formatted as name:secret (comma-separated for multiple)
--oidc-allowed-domainsOIDC_ALLOWED_DOMAINSComma-separated email domains allowed to log in (e.g. corp.example.com,example.com)
--oidc-session-keyOIDC_SESSION_KEY64-byte hex-encoded session key for sharing sessions across multiple instances. Generate with openssl rand -hex 64
--frontend-urlFRONTEND_URLFrontend base URL for post-login redirect in split-origin (OIDC + separate frontend) deployments

See OpenID Connect for provider-specific setup and multi-instance configuration.


Branding (requires license key)

FlagEnv varDefaultDescription
--app-nameAPP_NAMECustom application name shown in the UI (default: Yopass)
--logo-urlLOGO_URLURL to a custom logo image (e.g. /mylogo.svg for a file in the public/ directory, or an external CDN URL)
--theme-lightTHEME_LIGHTemeraldDaisyUI theme name for light mode
--theme-darkTHEME_DARKdimDaisyUI theme name for dark mode
--theme-custom-lightTHEME_CUSTOM_LIGHTJSON object of CSS variables for a fully custom light theme (keys must start with --color-)
--theme-custom-darkTHEME_CUSTOM_DARKJSON object of CSS variables for a fully custom dark theme (keys must start with --color-)

See Theming & Branding for available theme names and CSS variable examples.


Audit Logging (requires license key)

FlagEnv varDefaultDescription
--audit-logAUDIT_LOGfalseEnable structured NDJSON audit logging
--audit-log-fileAUDIT_LOG_FILE(stdout)File path for audit log output

See Audit Logging for log format, event types, and log rotation.


Secret Requests (requires license key)

Secret requests are enabled automatically with a valid license key.

FlagEnv varDefaultDescription
--disable-secret-requestsDISABLE_SECRET_REQUESTSfalseDisable the secret request feature

See Secret Requests for the full flow, security model, and REST API.


Webhooks & Read Receipts (requires license key)

Read receipts are enabled automatically with a valid license key; webhooks require a URL.

FlagEnv varDefaultDescription
--webhook-urlWEBHOOK_URLEndpoint receiving secret and request lifecycle events (created, viewed, fulfilled, expired)
--webhook-secretWEBHOOK_SECRETHMAC-SHA256 signing key for webhook payloads
--disable-read-receiptsDISABLE_READ_RECEIPTSfalseDisable the read receipt feature

See Webhooks for payload format and signature verification, and Read Receipts for the per-secret "was it opened?" flow.