Parties II & III : Configuration & Deploiement
Guide complet pour developpeurs - Configuration locale, production et deploiement de l'API MyTelevision v2.0
Table des matieres
Partie II : Configuration du projet en local
- Installation & Clonage
- Containers & Services
- Variables d'environnement (mode DEV)
- Donnees & Base de donnees
- Architecture du projet
Partie III : Configuration globale
- Differences DEV / PROD
- Variables d'environnement PROD
- Deploiement & CI/CD
- Securite & Observabilite
- Rollback & Incident Management
PARTIE II : Configuration du projet en local
1. Installation & Clonage
Pre-requis systeme
| Outil | Version minimale | Commande de verification | Notes |
|---|---|---|---|
| Node.js | >= 18.0.0 (recommande: 20.x LTS) | node --version | Requis pour executer l'application NestJS |
| npm | >= 9.x | npm --version | Gestionnaire de paquets Node.js |
| Docker | >= 24.x | docker --version | Necessaire pour PostgreSQL et Redis |
| Docker Compose | >= 2.x | docker-compose --version | Orchestration des services |
| Git | >= 2.x | git --version | Controle de version |
Clonage et installation
# Cloner le repository
git clone https://github.com/XKS-MYTV4JS/mytelevision-restfullapijsv4.git
cd mytelevision-restfullapijsv4
# Installer les dependances
npm install
# Copier la configuration
cp .env.example .env
2. Containers & Services
Demarrage des services Docker
# Demarrer PostgreSQL et Redis
npm run docker:up
# Verifier les conteneurs
docker ps
# Voir les logs
npm run docker:logs
Services disponibles
| Service | Port | Description |
|---|---|---|
| PostgreSQL | 5432 | Base de donnees principale |
| Redis | 6379 | Cache et sessions |
| API | 3000 | Application NestJS |
Docker Compose - Profils
# Developpement
docker compose --profile dev up -d
# Staging
docker compose --profile staging up -d
# Production
docker compose --profile prod up -d
# Local (backward compatible)
docker compose --profile local up -d
3. Variables d'environnement (mode DEV)
Variables essentielles pour le developpement
# Application
NODE_ENV=development
PORT=3000
API_PREFIX=api/v2
# Database
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/mytelevision_dev
# Redis
REDIS_HOST=localhost
REDIS_PORT=6379
# JWT
JWT_SECRET=your-dev-jwt-secret-min-32-characters-long
JWT_REFRESH_SECRET=your-dev-refresh-secret-min-32-chars
JWT_EXPIRATION=3600
JWT_REFRESH_EXPIRATION=604800
# CORS
CORS_ORIGINS=http://localhost:3000,http://localhost:4200
# TMDb (optionnel en dev)
TMDB_API_KEY=your-tmdb-api-key
4. Donnees & Base de donnees
Prisma - Commandes essentielles
# Generer le client Prisma apres modification du schema
npm run prisma:generate
# Creer et appliquer les migrations (developpement)
npm run prisma:migrate:dev
# Appliquer les migrations existantes (production)
npm run prisma:migrate:deploy
# Ouvrir Prisma Studio (GUI)
npm run prisma:studio
# Peupler la base de donnees
npm run prisma:seed
Utilisateurs par defaut (seed)
| Role | Mot de passe | |
|---|---|---|
| SUPER_ADMIN | [email protected] | SuperAdmin@123! |
| ADMIN | [email protected] | Admin@123! |
| MODERATOR | [email protected] | Moderator@123! |
| USER | [email protected] | User@123! |
Demarrage complet
# 1. Demarrer les services
npm run docker:up
# 2. Appliquer les migrations
npm run prisma:migrate:dev
# 3. Generer le client
npm run prisma:generate
# 4. Peupler la base
npm run prisma:seed
# 5. Demarrer l'application
npm run start:dev
5. Architecture du projet
Structure des repertoires
src/
+-- application/ # Couche Application
| +-- dtos/ # Data Transfer Objects
| | +-- auth/ # DTOs Auth
| | +-- movies/ # DTOs Movies
| | +-- series/ # DTOs Series
| | +-- ...
| +-- services/ # Business Logic Services
| +-- auth/
| +-- movies/
| +-- tmdb/
| +-- ...
|
+-- infrastructure/ # Couche Infrastructure
| +-- auth/ # Guards et Strategies
| +-- cache/ # Redis Service
| +-- config/ # Modules de configuration
| +-- database/prisma/ # Prisma Service
| +-- storage/ # Cloudflare R2
| +-- i18n/ # Internationalisation
|
+-- presentation/ # Couche Presentation
| +-- controllers/
| | +-- api/v2/ # Controllers API publique
| | +-- admin/ # Controllers Admin
| +-- modules/ # NestJS Feature Modules
|
+-- shared/ # Utilities partagees
| +-- constants/
| +-- decorators/
| +-- filters/
| +-- interceptors/
| +-- types/
|
+-- app.module.ts # Module racine
+-- main.ts # Point d'entree
PARTIE III : Configuration globale
6. Differences DEV / PROD
| Aspect | Developpement | Production |
|---|---|---|
NODE_ENV | development | production |
| Base de donnees | PostgreSQL local (Docker) | PostgreSQL RDS/Cloud |
| Redis | Redis local (Docker) | ElastiCache/Redis Cloud |
| JWT Secrets | Valeurs par defaut | Secrets forts (32+ chars) |
| CORS | localhost:* | Domaines specifiques |
| Rate Limiting | Relache | Strict (3 tiers) |
| Logging | Console | Structured (JSON) + agregation |
| TLS/SSL | Non | Oui (obligatoire) |
| Compression | Non | gzip active |
| Trust Proxy | false | true |
7. Variables d'environnement PROD
Variables requises par profil
| Variable | dev | staging | prod |
|---|---|---|---|
JWT_SECRET | default | required | required |
JWT_REFRESH_SECRET | default | required | required |
STREAMING_SIGNING_SECRET | default | required | required |
CORS_ORIGINS | default | required | required |
TRUST_PROXY | false | true | true |
Variables Firebase (Social Login)
FIREBASE_PROJECT_ID=your-project-id
FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"
FIREBASE_CLIENT_EMAIL=[email protected]
Variables Cloudflare R2 (Storage)
R2_ACCOUNT_ID=your-cloudflare-account-id
R2_ACCESS_KEY_ID=your-r2-access-key
R2_SECRET_ACCESS_KEY=your-r2-secret-key
R2_BUCKET_NAME=mytelevision-media
R2_PUBLIC_URL=https://media.mytelevision.app
8. Deploiement & CI/CD
Pipeline GitHub Actions
Le pipeline CI (.github/workflows/ci.yml) comprend :
| Job | Description | Bloquant |
|---|---|---|
| lint | ESLint + Prettier check | Oui |
| test | Unit tests + coverage | Oui |
| build | TypeScript compilation | Oui |
| security | npm audit (high/critical) | Oui |
| monitoring | Validation config Prometheus/Grafana | Oui |
| codeql | CodeQL SAST analysis | Oui |
| license-check | Conformite des licences | Oui |
| quality-gate | Verification finale | Oui |
Docker Deployment
# Build et demarrage en staging
docker compose --profile staging up -d --build
# Voir les logs
docker logs mytv-api-staging --tail 100 -f
# Executer le seed
docker exec -it mytv-api-staging ./node_modules/.bin/prisma db seed
# Acces au shell du conteneur
docker exec -it mytv-api-staging sh
Pre-commit Hooks (Husky)
| Hook | Action |
|---|---|
pre-commit | lint-staged + TypeScript check + secret detection |
commit-msg | Validation Conventional Commits |
9. Securite & Observabilite
Securite en production
- Docker Secrets : Utiliser
docker-compose.production.ymlpour monter les secrets via/run/secrets/ - Helmet : Headers de securite (HSTS, XSS, etc.)
- Rate Limiting : 3 tiers via @nestjs/throttler
- CORS : Origines strictement definies
- Validation : Tous les DTOs valides via class-validator
Stack Monitoring
# Demarrer le monitoring
docker-compose -f docker-compose.yml -f docker-compose.monitoring.yml up -d
# Acces aux dashboards
# Grafana: http://localhost:3001 (admin/admin)
# Prometheus: http://localhost:9090
# Alertmanager: http://localhost:9093
# API Metrics: http://localhost:3000/metrics
Dashboards Grafana
| Dashboard | UID | Metriques |
|---|---|---|
| API Overview | api-overview | Requetes, latence, erreurs, memoire |
| Auth & Sessions | auth-sessions | Logins, sessions, evenements securite |
| Database | database-perf | PostgreSQL connections, queries |
| Business Metrics | business-metrics | Users, payments, engagement |
| Infrastructure | infrastructure | CPU, memoire, disque, reseau |
10. Rollback & Incident Management
Procedure de rollback
# 1. Identifier la version precedente
docker images | grep mytv-api
# 2. Revenir a l'image precedente
docker compose --profile prod down
docker tag mytv-api:previous mytv-api:latest
docker compose --profile prod up -d
# 3. Verifier le sante
curl https://api.mytelevision.app/api/v2/health
Rollback Prisma (base de donnees)
# Lister les migrations
npx prisma migrate status
# Rollback d'une migration (dev uniquement)
npx prisma migrate reset
# En production : creer une migration de correction
npx prisma migrate dev --name fix_rollback_xyz
npx prisma migrate deploy
Incident Management
- Detection : Alertmanager + Grafana dashboards
- Triage : Evaluer la severite (P1-P4)
- Mitigation : Rollback ou hotfix
- Resolution : Fix et deploiement
- Post-mortem : Analyse root cause + actions correctives
Changelog
| Version | Date | Modifications |
|---|---|---|
| 1.0.0 | 2025-12-12 | Version initiale Parties II & III |
Derniere mise a jour : 12 decembre 2025 Auteurs : Equipe MyTelevision + Claude Code AI