# Runbook — Rotation des secrets ## JWT_SECRET 1. Générer un nouveau secret : `openssl rand -base64 32` 2. Déployer avec l’ancien et le nouveau (dual-secret) si l’app le supporte 3. Sinon : maintenance window - Mettre à jour `JWT_SECRET` dans le déploiement - Redémarrer l’API - Tous les tokens existants sont invalidés (re-login requis) ## CHAT_JWT_SECRET Même procédure que JWT_SECRET. Doit être synchronisé entre backend et chat/stream si partagé. ## OAUTH_ENCRYPTION_KEY Utilisé pour chiffrer les tokens OAuth en DB. Rotation complexe : 1. Ne pas supprimer l’ancienne clé tant que des tokens chiffrés existent 2. Ajouter la nouvelle clé dans la config 3. Les nouveaux tokens utilisent la nouvelle clé 4. Après expiration des anciens tokens, retirer l’ancienne clé ## STREAM_SERVER_INTERNAL_API_KEY / INTERNAL_API_KEY Doivent correspondre entre backend et stream server. 1. Générer : `openssl rand -hex 32` 2. Mettre à jour les deux côtés quasi-simultanément 3. Redémarrer backend et stream server ## DATABASE_URL 1. Créer un nouvel utilisateur avec un nouveau mot de passe en DB 2. Mettre à jour `DATABASE_URL` dans le déploiement 3. Redémarrer l’API 4. Révoquer l’ancien utilisateur après validation