Configuration & Environnement Veza

Variables d'environnement, Docker Compose, et paramètres de déploiement. Source : .env.example, docker-compose*.yml, Makefile

Variables d'environnement

Toutes les variables sont définies dans .env.example à la racine du monorepo.

Core

Variable Exemple Description
APP_DOMAIN veza.fr Domaine principal
FRONTEND_URL http://veza.fr:5173 URL frontend
PORT_BACKEND 18080 Port API backend
PORT_STREAM 18082 Port stream server
APP_ENV development Environnement (development/staging/production)

Base de données (PostgreSQL)

Variable Exemple Description
DB_USER veza Utilisateur PostgreSQL
DB_PASSWORD password Mot de passe
DB_NAME veza Nom de la base
DATABASE_URL postgres://veza:password@localhost:15432/veza?sslmode=disable URL complète

Redis

Variable Exemple Description
REDIS_URL redis://:password@localhost:16379 URL Redis
REDIS_PASSWORD devpassword Mot de passe Redis

RabbitMQ

Variable Exemple Description
RABBITMQ_URL amqp://veza:password@localhost:15672/ URL AMQP
RABBITMQ_DEFAULT_USER veza Utilisateur
RABBITMQ_DEFAULT_PASS devpassword Mot de passe

JWT & Sécurité

Variable Exemple Description
JWT_SECRET min-32-characters... Secret JWT (fallback HS256)
JWT_PRIVATE_KEY_PATH /path/to/jwt-private.pem Clé privée RS256
JWT_PUBLIC_KEY_PATH /path/to/jwt-public.pem Clé publique RS256
JWT_ISSUER veza-api Émetteur JWT
JWT_AUDIENCE veza-platform Audience JWT
OAUTH_ENCRYPTION_KEY <32-byte-hex> Chiffrement OAuth
OAUTH_ALLOWED_REDIRECT_DOMAINS https://veza.fr:5173 Domaines OAuth autorisés
CHAT_JWT_SECRET <différent de JWT_SECRET> Secret JWT chat

Stockage S3 (MinIO)

Variable Exemple Description
S3_ENABLED true Activer S3
S3_BUCKET veza-uploads Nom du bucket
S3_REGION us-east-1 Région
S3_ENDPOINT http://localhost:19000 Endpoint MinIO
S3_ACCESS_KEY ... Clé d'accès
S3_SECRET_KEY ... Clé secrète

Streaming & Live

Variable Exemple Description
STREAM_HLS_BASE_URL http://localhost:18083/live URL base HLS
NGINX_RTMP_HOST localhost Hôte RTMP
RTMP_CALLBACK_SECRET <shared-secret> Secret callbacks RTMP

Elasticsearch

Variable Exemple Description
ELASTICSEARCH_URL http://localhost:19200 URL Elasticsearch
ELASTICSEARCH_AUTO_INDEX true Auto-indexation au démarrage

Antivirus

Variable Exemple Description
ENABLE_CLAMAV true Activer le scan antivirus
CLAMAV_REQUIRED true Échouer si ClamAV indisponible

Paiements

Variable Exemple Description
STRIPE_CONNECT_ENABLED true Activer Stripe Connect
HYPERSWITCH_WEBHOOK_SECRET <secret> Secret webhook paiement

Logs & Monitoring

Variable Exemple Description
LOG_LEVEL INFO Niveau de log (DEBUG active les stack traces)
LOG_DIR /var/log/veza Répertoire des logs
LOG_FORMAT json Format (json en prod, text en dev)
SENTRY_DSN https://...@ingest.sentry.io/0 DSN Sentry
SENTRY_ENVIRONMENT development Environnement Sentry
SENTRY_SAMPLE_RATE_ERRORS 1.0 Taux échantillonnage erreurs
SENTRY_SAMPLE_RATE_TRANSACTIONS 0.1 Taux échantillonnage transactions
PROMETHEUS_URL http://prometheus:9090 URL Prometheus

Frontend

Variable Exemple Description
VITE_API_URL /api/v1 URL API (relative ou absolue)
VITE_USE_MSW 1 Activer mocks MSW
VITE_STORYBOOK 1 Mode Storybook
VITE_SENTRY_DSN https://... DSN Sentry frontend

Docker Compose

Développement (docker-compose.yml)

Services d'infrastructure pour le développement local :

Service Image Port exposé Port interne
postgres PostgreSQL 16 15432 5432
redis Redis 7 16379 6379
rabbitmq RabbitMQ 3 15672 (AMQP), 25672 (management) 5672, 15672
clamav ClamAV 1.4 13310 3310
minio MinIO 19000 9000
elasticsearch Elasticsearch 19200 9200
# Lancer l'infrastructure {#lancer-linfrastructure}
docker-compose up -d

# Ou via Makefile {#ou-via-makefile}
make infra

Production (docker-compose.prod.yml)

Mêmes services avec :


Dockerfiles des services applicatifs

Backend API (Go)

Fichier Base Taille Usage
veza-backend-api/Dockerfile golang:1.21-alpine ~300 Mo Développement
veza-backend-api/Dockerfile.production scratch ~15 Mo Production (binaire statique)

Stream Server (Rust)

Fichier Base Taille Usage
veza-stream-server/Dockerfile rust:latest ~1 Go Développement
veza-stream-server/Dockerfile.production debian:bookworm-slim ~100 Mo Production

Frontend (React)

Fichier Base Taille Usage
apps/web/Dockerfile node:20-alpinenginx:alpine ~50 Mo Développement
apps/web/Dockerfile.production nginx:latest ~30 Mo Production

Commandes Makefile

# Développement {#developpement}
make dev                    # Stack complète (backend Docker, web local)
make dev-full               # Tous les services locaux + hot reload
make dev-web                # Frontend seul
make dev-backend-api        # Backend seul
make dev-stream-server      # Stream server seul

# Infrastructure {#infrastructure}
make infra                  # docker-compose up -d

# Build {#build}
make build                  # Build tous les conteneurs

# Base de données {#base-de-donnees}
make migrate-up             # Appliquer les migrations
make migrate-down           # Rollback dernière migration

# Tests {#tests}
make test                   # Tous les tests
make test-backend           # Tests backend Go
make test-frontend          # Tests frontend Vitest
make test-e2e               # Tests end-to-end

Nginx (reverse proxy frontend)

Fichier : apps/web/nginx.conf

Configuration du reverse proxy en production :

Client → Nginx (port 80/443)
           ├── /          → fichiers statiques (SPA)
           ├── /api/*     → Backend Go (port 8080)
           ├── /ws/*      → Chat WebSocket (port 8081)
           └── /stream/*  → Stream Server Rust (port 8082)

Fonctionnalités :


Différences dev / staging / production

Aspect Développement Staging Production
APP_ENV development staging production
CORS Wildcard * Domaines staging Domaines stricts
CSRF Optionnel (si Redis) Obligatoire Obligatoire
Swagger/docs Activé Activé Désactivé
pprof debug Activé Désactivé Désactivé
Logs Texte, DEBUG JSON, INFO JSON, WARN+
Stack traces Dans les réponses Pas dans les réponses Pas dans les réponses
Sentry Optionnel Activé Activé
ClamAV Optionnel Recommandé Obligatoire
Redis Optionnel Obligatoire Obligatoire
Rate limiting Souple Modéré Strict (DDoS)

Documents liés