env.sample 142 lignes · 4875 octets
# =============================================================================
# Rustwarden — Variables d'environnement
# =============================================================================

# Base de données
DATABASE_URL=postgres://rustwarden_user:password@localhost:5432/rustwarden

# Serveur
SERVER_HOST=0.0.0.0
SERVER_PORT=3000

# Logging
RUST_LOG=debug

# JWT
JWT_SECRET=your-super-secret-jwt-key-change-this-in-production-minimum-32-characters
JWT_EXPIRATION_MINUTES=15
JWT_ISSUER=rustwarden

# Comportement du middleware d'auth sur préfixe protégé sans credentials valides
# (RFC 0042). `redirect` : 303 vers LOGIN_PATH (UI). `json401` : 401 JSON (API).
# Précédence : setter `.auth_failure_mode(..)` du builder > cette variable >
# bascule `.headless()` (json401) > redirect.
# AUTH_FAILURE_MODE=redirect
# Chemin de la page de login pour la redirection (défaut /login).
# LOGIN_PATH=/login

# Refresh tokens
REFRESH_TOKEN_EXPIRATION_DAYS=7
# Durée du refresh token avec "Se souvenir de moi" (doit être >= REFRESH_TOKEN_EXPIRATION_DAYS, max 90)
# REMEMBER_ME_EXPIRATION_DAYS=30

# Sessions
SESSION_SECRET=your-super-secret-session-key-change-this-in-production-minimum-64-characters
SESSION_TIMEOUT_MINUTES=30
SESSION_BACKEND=memory

# Redis (si SESSION_BACKEND=redis)
REDIS_URL=redis://localhost:6379

# Rate Limiting
RATE_LIMIT_LOGIN_PER_MINUTE=5
RATE_LIMIT_REFRESH_PER_MINUTE=10
RATE_LIMIT_GENERAL_PER_MINUTE=100

# Cookies
COOKIE_SECURE=false
COOKIE_SAME_SITE=Lax

# Admin initial
ADMIN_USERNAME=admin
ADMIN_EMAIL=admin@localhost
ADMIN_PASSWORD=ChangeMe123!

# Email SMTP
SMTP_HOST=localhost
SMTP_PORT=143  # 587 pour TLS, 
SMTP_USER=noreply@rustwarden.local
SMTP_PASSWORD=
SMTP_FROM=noreply@rustwarden.local
SMTP_FROM_NAME=My App
SMTP_USE_TLS=false  # true pour TLS, false pour SSL 
SMTP_USE_STARTTLS=true
SMTP_ACCEPT_INVALID_CERTS=false
# SMTP_CA_CERT_PATH=

# Email base URL (used in email links)
EMAIL_BASE_URL=http://localhost:3000

# Email queue
EMAIL_QUEUE_BATCH_SIZE=10
EMAIL_QUEUE_RETRY_ATTEMPTS=5
EMAIL_QUEUE_RETRY_DELAY_SECONDS=300

# Email features control
EMAIL_VALIDATION_REQUIRED=true
ALLOW_REGISTRATION=false

# Application
APP_NAME=My App
# APP_THEME=light
# APP_DEBUG=true in development (disables forced COOKIE_SECURE, enables relaxed cookie names)
APP_DEBUG=false
DEFAULT_LOCALE=fr

# IMAP (bounce processing — optional, leave IMAP_HOST empty to disable)
# IMAP_HOST=
# IMAP_PORT=993
# IMAP_USER=
# IMAP_PASSWORD=
# IMAP_USE_TLS=true
# IMAP_USE_STARTTLS=false
# IMAP_ACCEPT_INVALID_CERTS=false
# IMAP_MAILBOX=INBOX
# IMAP_POLL_INTERVAL_SECONDS=300

# =============================================================================
# CORS — origines front autorisées (séparées par des virgules)
# =============================================================================
# Vide = aucun CorsLayer monté. Exemple :
# CORS_ALLOWED_ORIGINS=https://app.example.org,https://admin.example.org
# CORS_ALLOWED_ORIGINS=

# =============================================================================
# Fédération ActivityPub  (feature Cargo : `experimental-fediverse`)
# =============================================================================
# Active uniquement si l'app est compilée avec `--features experimental-fediverse`
# et appelle `RustwardenBuilder::with_fediverse(...)` au démarrage.
# Cf. crates/rustwarden-core/src/config/fediverse.rs et
# docs/rfcs/0001-fediverse-config-and-builder.md
#
# Domaine fédéré (OBLIGATOIRE si la feature est active).
# - Forme bare ("example.org") → toujours promu en HTTPS.
# - Forme URL ("https://example.org" ou "http://localhost:3000") acceptée :
#   le schéma http n'est autorisé qu'avec FEDIVERSE_DEBUG_LOCAL_FEDERATION=true.
# - Les placeholders connus (example.com, your.tld, change-me.tld, …) sont
#   refusés au démarrage.
# FEDIVERSE_DOMAIN=fediverse.example.org

# Authorized Fetch (mode "secure" Mastodon) : impose une signature HTTP sur
# tous les GET d'acteurs/objets entrants. Recommandé en production.
# Défaut : false.
# FEDIVERSE_AUTHORIZED_FETCH=false

# File de livraison sortante ActivityPub.
# Nombre de workers concurrents (défaut 4).
# FEDIVERSE_OUTBOUND_WORKERS=4
# Tentatives max avant qu'un job soit marqué `dead` (défaut 8).
# FEDIVERSE_OUTBOUND_MAX_ATTEMPTS=8
# Timeout HTTP par requête sortante, en secondes (défaut 30).
# FEDIVERSE_OUTBOUND_REQUEST_TIMEOUT_SECS=30

# TTL du cache des documents acteurs distants, en secondes (défaut 86400 = 24h).
# FEDIVERSE_FETCH_ACTOR_CACHE_TTL_SECS=86400

# TTL des challenges d'authentification fédérée AP-native (RFC 0006),
# en secondes (défaut 300 = 5 min).
# FEDIVERSE_AUTH_CHALLENGE_TTL_SECS=300

# Mode debug local : autorise les base URLs HTTP (tests 2-instances en local).
# DOIT rester `false` en production. Défaut : false.
# FEDIVERSE_DEBUG_LOCAL_FEDERATION=false