103 lines
3.4 KiB
Text
103 lines
3.4 KiB
Text
# =============================================================================
|
|
# VEZA BACKEND API - PRODUCTION CONFIGURATION
|
|
# =============================================================================
|
|
# ⚠️ IMPORTANT: Ce fichier est un TEMPLATE
|
|
# Les valeurs ${VAR} doivent être injectées par l'orchestrateur (K8s, Docker, etc.)
|
|
# Ne JAMAIS committer de secrets en clair dans ce fichier
|
|
# =============================================================================
|
|
|
|
# --- ENVIRONNEMENT ---
|
|
APP_ENV=production
|
|
APP_PORT=8080
|
|
LOG_LEVEL=info
|
|
|
|
# --- BASE DE DONNÉES ---
|
|
# Injecté par orchestrateur (ex: K8s Secret, Docker Compose environment)
|
|
DATABASE_URL=${DATABASE_URL}
|
|
DATABASE_MAX_OPEN_CONNS=25
|
|
DATABASE_MAX_IDLE_CONNS=5
|
|
DATABASE_CONN_MAX_LIFETIME=5m
|
|
|
|
# --- JWT & SÉCURITÉ ---
|
|
# ⚠️ CRITIQUE: Injecté par AWS Secrets Manager / HashiCorp Vault
|
|
# Ne JAMAIS utiliser la valeur de dev en production
|
|
JWT_SECRET=${JWT_SECRET}
|
|
JWT_ISSUER=veza-api
|
|
JWT_AUDIENCE=veza-app
|
|
JWT_ACCESS_TOKEN_DURATION=15m
|
|
JWT_REFRESH_TOKEN_DURATION=30d
|
|
|
|
# --- COOKIES (PRODUCTION) ---
|
|
# CRITIQUE: Secure cookies obligatoires en production
|
|
COOKIE_SECURE=true
|
|
COOKIE_SAME_SITE=strict
|
|
COOKIE_DOMAIN=.veza.com
|
|
|
|
# --- CORS ---
|
|
# ⚠️ IMPORTANT: Définir les origines exactes (pas de wildcard)
|
|
# User config: veza.com, veza.talas.fr, veza.fr, veza.talas.com (all on 127.0.0.1)
|
|
# Dev local avec domaines personnalisés (port 5173 pour Vite)
|
|
CORS_ALLOWED_ORIGINS=http://veza.com:5173,http://veza.talas.fr:5173,http://veza.fr:5173,http://veza.talas.com:5173
|
|
# Production (HTTPS): https://app.veza.com,https://www.veza.com
|
|
|
|
# --- REDIS ---
|
|
# Requis pour CSRF tokens, rate limiting, et cache
|
|
REDIS_ADDR=${REDIS_ADDR:-veza.fr:6379}
|
|
REDIS_PASSWORD=${REDIS_PASSWORD}
|
|
REDIS_DB=0
|
|
|
|
# --- RABBITMQ (Optionnel) ---
|
|
# Désactiver si non utilisé en production
|
|
RABBITMQ_ENABLE=${RABBITMQ_ENABLE:-false}
|
|
RABBITMQ_URL=${RABBITMQ_URL}
|
|
|
|
# --- SENTRY (Monitoring) ---
|
|
# Fortement recommandé pour production
|
|
SENTRY_DSN=${SENTRY_DSN}
|
|
SENTRY_ENVIRONMENT=production
|
|
SENTRY_SAMPLE_RATE_ERRORS=1.0
|
|
SENTRY_SAMPLE_RATE_TRANSACTIONS=0.1
|
|
|
|
# --- RATE LIMITING ---
|
|
# Activer en production pour protection DoS
|
|
RATE_LIMIT_ENABLED=true
|
|
RATE_LIMIT_REQUESTS_PER_SECOND=100
|
|
|
|
# --- UPLOADS ---
|
|
# Chemin absolu pour stockage persistant
|
|
UPLOAD_DIR=${UPLOAD_DIR:-/var/lib/veza/uploads}
|
|
ENABLE_CLAMAV=${ENABLE_CLAMAV:-true}
|
|
CLAMAV_REQUIRED=${CLAMAV_REQUIRED:-true}
|
|
|
|
# --- SERVICES EXTERNES ---
|
|
# URLs des autres services du stack
|
|
STREAM_SERVER_URL=${STREAM_SERVER_URL:-http://veza.fr:8082}
|
|
CHAT_SERVER_URL=${CHAT_SERVER_URL:-http://veza.fr:8081}
|
|
|
|
# --- EMAIL (Optionnel) ---
|
|
# Requis si email verification / password reset activés
|
|
SMTP_HOST=${SMTP_HOST}
|
|
SMTP_PORT=${SMTP_PORT:-587}
|
|
SMTP_USERNAME=${SMTP_USERNAME}
|
|
SMTP_PASSWORD=${SMTP_PASSWORD}
|
|
SMTP_FROM=${SMTP_FROM:-noreply@veza.com}
|
|
|
|
# =============================================================================
|
|
# VARIABLES OBLIGATOIRES vs OPTIONNELLES
|
|
# =============================================================================
|
|
#
|
|
# OBLIGATOIRES (l'app ne démarre pas sans):
|
|
# - DATABASE_URL
|
|
# - JWT_SECRET
|
|
# - REDIS_ADDR (si CSRF/rate limiting activés)
|
|
#
|
|
# FORTEMENT RECOMMANDÉES:
|
|
# - SENTRY_DSN (monitoring erreurs)
|
|
# - CORS_ALLOWED_ORIGINS (sinon mode strict = reject all)
|
|
#
|
|
# OPTIONNELLES:
|
|
# - RABBITMQ_* (si événements asynchrones non utilisés)
|
|
# - SMTP_* (si pas d'emails)
|
|
# - CLAMAV_* (si pas de scan antivirus uploads)
|
|
#
|
|
# =============================================================================
|