# ============================================================================= # 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) # # =============================================================================