Configuration
Guide complet des variables d'environnement de l'API MyTelevision.
Fichier .env
Le fichier .env contient toutes les configurations de l'application. L'application valide les variables au démarrage avec Joi. Si une variable obligatoire manque, l'application ne démarrera pas.
cp .env.example .env
Variables obligatoires
| Variable | Description | Exemple |
|---|---|---|
DATABASE_URL | URL de connexion PostgreSQL | postgresql://user:pass@localhost:5432/mytv |
JWT_SECRET | Secret JWT (min 32 caractères) | votre-secret-jwt-securise-32-chars |
JWT_REFRESH_SECRET | Secret pour les refresh tokens | votre-refresh-secret-32-chars |
STREAMING_SIGNING_SECRET | Secret de signature streaming (min 32 caractères) | votre-streaming-secret-32-chars |
Variables par catégorie
Application
NODE_ENV=development
PORT=3052
API_PREFIX=api
API_VERSION=v2
Ports par environnement
- Production :
PORT=3050 - Staging :
PORT=3051 - Développement :
PORT=3052
Base de données (PostgreSQL)
DATABASE_URL=postgresql://mytv:mytv_password@localhost:5432/mytv_dev?schema=public
DATABASE_POOL_MIN=2
DATABASE_POOL_MAX=10
Redis
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=mytv_redis_password
REDIS_DB=0
JWT et authentification
JWT_SECRET=votre-secret-jwt-minimum-32-caracteres-securise
JWT_EXPIRATION=15m
JWT_REFRESH_SECRET=votre-refresh-secret-minimum-32-caracteres
JWT_REFRESH_EXPIRATION=7d
Streaming
STREAMING_SIGNING_SECRET=votre-secret-streaming-32-caracteres
STREAMING_TOKEN_EXPIRES_IN=24h
STREAMING_TOKEN_MAX_USES=5
Stockage (Cloudflare R2)
R2_ACCOUNT_ID=your-account-id
R2_ACCESS_KEY_ID=your-access-key
R2_SECRET_ACCESS_KEY=your-secret-key
R2_BUCKET_NAME=mytv-media
R2_PUBLIC_URL=https://media.mytelevision.app
Firebase (authentification sociale)
FIREBASE_PROJECT_ID=your-project-id
FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"
FIREBASE_CLIENT_EMAIL=firebase-adminsdk@your-project.iam.gserviceaccount.com
TMDb API
TMDB_API_KEY=your-tmdb-api-key
TMDB_BASE_URL=https://api.themoviedb.org/3
TMDB_IMAGE_BASE_URL=https://image.tmdb.org/t/p
CORS
CORS_ORIGINS=https://app.mytelevision.app,https://admin.mytelevision.app
TRUST_PROXY=true
Configuration par environnement
| Variable | Développement | Staging | Production |
|---|---|---|---|
NODE_ENV | development | staging | production |
PORT | 3052 | 3051 | 3050 |
LOG_LEVEL | debug | info | warn |
RATE_LIMIT | Elevé (permissif) | Moyen | Strict |
TRUST_PROXY | false | true | true |
Variables requises par profil Docker
| Variable | dev | staging | prod |
|---|---|---|---|
JWT_SECRET | défaut | requis | requis |
JWT_REFRESH_SECRET | défaut | requis | requis |
STREAMING_SIGNING_SECRET | défaut | requis | requis |
CORS_ORIGINS | défaut | requis | requis |
TRUST_PROXY | false | true | true |
URLs des environnements
| Environnement | URL API | Swagger |
|---|---|---|
| Production | https://api.mytelevision.app | https://api.mytelevision.app/api/docs |
| Staging | https://staging-api.mytelevision.app | https://staging-api.mytelevision.app/api/docs |
| Développement | https://dev-api.mytelevision.app | https://dev-api.mytelevision.app/api/docs |
Exemple de fichier .env complet
# ============================================
# Application
# ============================================
NODE_ENV=development
PORT=3052
API_PREFIX=api
API_VERSION=v2
# ============================================
# Base de données (PostgreSQL)
# ============================================
DATABASE_URL=postgresql://mytv:mytv_password@localhost:5432/mytv_dev?schema=public
DATABASE_POOL_MIN=2
DATABASE_POOL_MAX=10
# ============================================
# Redis
# ============================================
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=mytv_redis_password
REDIS_DB=0
# ============================================
# JWT & Authentification
# ============================================
JWT_SECRET=votre-secret-jwt-minimum-32-caracteres-securise
JWT_EXPIRATION=15m
JWT_REFRESH_SECRET=votre-refresh-secret-minimum-32-caracteres
JWT_REFRESH_EXPIRATION=7d
# ============================================
# Streaming
# ============================================
STREAMING_SIGNING_SECRET=votre-secret-streaming-32-caracteres
STREAMING_TOKEN_EXPIRES_IN=24h
STREAMING_TOKEN_MAX_USES=5
# ============================================
# Stockage (Cloudflare R2)
# ============================================
# R2_ACCOUNT_ID=your-account-id
# R2_ACCESS_KEY_ID=your-access-key
# R2_SECRET_ACCESS_KEY=your-secret-key
# R2_BUCKET_NAME=mytv-media
# R2_PUBLIC_URL=https://media.mytelevision.app
# ============================================
# Firebase (authentification sociale)
# ============================================
# FIREBASE_PROJECT_ID=your-project-id
# FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"
# FIREBASE_CLIENT_EMAIL=firebase-adminsdk@your-project.iam.gserviceaccount.com
# ============================================
# TMDb API (auto-fill films/séries)
# ============================================
# TMDB_API_KEY=your-tmdb-api-key
# TMDB_BASE_URL=https://api.themoviedb.org/3
# TMDB_IMAGE_BASE_URL=https://image.tmdb.org/t/p
# ============================================
# CORS
# ============================================
# CORS_ORIGINS=https://app.mytelevision.app,https://admin.mytelevision.app
# TRUST_PROXY=false
Validation au démarrage
L'application utilise Joi pour valider toutes les variables d'environnement au démarrage. Si une variable obligatoire est manquante ou incorrecte, le serveur affiche un message d'erreur explicite et refuse de démarrer.
Génération de secrets sécurisés
Pour générer des secrets JWT et streaming de 32 caractères minimum :
# Via Node.js
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
# Via OpenSSL
openssl rand -hex 32
Prochaines étapes
- Quickstart -- Démarrage rapide en 10 minutes
- Installation complète -- Guide d'installation détaillé par OS