Skip to content

Security Configuration

Authentication and CAPTCHA settings.

JWT Authentication

VariableDefaultSensitiveDescription
JWT_SECRET_KEY(auto-generated)YesJWT signing key. Auto-generated if not set. Set a stable value in production.
JWT_ALGORITHMHS256NoJWT signing algorithm.
ACCESS_TOKEN_EXPIRE_HOURS24NoAccess token expiration in hours.
REFRESH_TOKEN_EXPIRE_DAYS7NoRefresh token expiration in days.

WARNING

If JWT_SECRET_KEY is not set, a random key is generated at startup. This means all active sessions will be invalidated on every restart. Always set a stable key in production.

Cloudflare Turnstile (CAPTCHA)

VariableDefaultSensitiveDescription
TURNSTILE_ENABLEDfalseNoEnable Cloudflare Turnstile CAPTCHA.
TURNSTILE_SITE_KEY(empty)NoTurnstile site key (used in frontend).
TURNSTILE_SECRET_KEY(empty)YesTurnstile secret key (used in backend).
TURNSTILE_REQUIRE_ON_LOGINfalseNoRequire CAPTCHA on login.
TURNSTILE_REQUIRE_ON_REGISTERtrueNoRequire CAPTCHA on registration.
TURNSTILE_REQUIRE_ON_PASSWORD_CHANGEtrueNoRequire CAPTCHA on password change.

User Management

VariableDefaultDescription
DEFAULT_USER_ROLEuserDefault role for new users.
ENABLE_REGISTRATIONtrueEnable user registration.
ADMIN_CONTACT_EMAIL(empty)Admin contact email displayed in the UI.
ADMIN_CONTACT_URL(empty)Admin contact URL displayed in the UI.

Example

bash
# JWT
JWT_SECRET_KEY=your-stable-secret-key-at-least-32-chars
JWT_ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_HOURS=24
REFRESH_TOKEN_EXPIRE_DAYS=7

# Turnstile CAPTCHA
TURNSTILE_ENABLED=true
TURNSTILE_SITE_KEY=0x4AAAAAAA
TURNSTILE_SECRET_KEY=0x4AAAAAAA
TURNSTILE_REQUIRE_ON_REGISTER=true

# User Management
ENABLE_REGISTRATION=true
DEFAULT_USER_ROLE=user