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 :
- Volumes persistants pour les données
- Limites de ressources (CPU, mémoire)
- Health checks sur tous les services
- Configuration logging centralisée
- Isolation réseau entre services
- Restart policy :
unless-stopped
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-alpine → nginx: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 :
- SPA fallback : Toutes les routes non-API renvoient
index.html
- Gzip : Compression activée
- Cache : Headers pour assets statiques (JS, CSS, images)
- Sécurité : X-Frame-Options, X-Content-Type-Options
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