# Guide de Mise à Jour - Serveur OVH Existant Ce guide explique comment mettre à jour ton serveur OVH existant avec le nouveau système de sécurité. ## Prérequis Tu as déjà : - ✅ Un VPS chez OVH - ✅ Git configuré - ✅ Un service qui tourne (PM2/systemd) ## Étapes de Mise à Jour ### 1. Générer un token API sécurisé **Sur ton serveur OVH (via SSH):** ```bash # Générer un token aléatoire de 64 caractères openssl rand -hex 32 ``` **Ou sur Windows (PowerShell):** ```powershell -join ((48..57) + (65..90) + (97..122) | Get-Random -Count 64 | % {[char]$_}) ``` **Copie ce token**, tu vas en avoir besoin maintenant. --- ### 2. Configurer les variables d'environnement Connecte-toi en SSH à ton serveur : ```bash ssh user@ton-serveur-ovh.com ``` Navigue vers le dossier du projet : ```bash cd /chemin/vers/videotoMP3Transcriptor ``` Édite le fichier `.env` : ```bash nano .env ``` **Ajoute ces lignes** (ou modifie si elles existent déjà) : ```env # ======================================== # SÉCURITÉ API # ======================================== # Remplace par le token que tu viens de générer API_TOKEN=ton_token_de_64_caracteres_ici # Domaines autorisés (séparés par des virgules) # En développement: * (tout le monde) # En production: https://ton-domaine.com,https://api.ton-domaine.com ALLOWED_ORIGINS=* # Port (optionnel, défaut: 8888) PORT=8888 # OpenAI API Key (tu dois déjà l'avoir) OPENAI_API_KEY=sk-... ``` **Sauvegarde** : `Ctrl + X`, puis `Y`, puis `Enter` --- ### 3. Pull les dernières modifications ```bash # Sauvegarder les modifications locales si nécessaire git stash # Récupérer les dernières modifications git pull origin main # Restaurer tes modifications si tu avais stashé git stash pop ``` --- ### 4. Redémarrer le service **Si tu utilises PM2:** ```bash # Redémarrer l'application pm2 restart video-transcriptor # Vérifier que ça tourne pm2 status # Voir les logs en temps réel pm2 logs video-transcriptor ``` **Si tu utilises systemd:** ```bash # Redémarrer le service sudo systemctl restart video-transcriptor # Vérifier le statut sudo systemctl status video-transcriptor # Voir les logs sudo journalctl -u video-transcriptor -f ``` --- ### 5. Tester l'API **Test de santé (sans token - devrait marcher):** ```bash curl http://localhost:8888/health ``` **Résultat attendu:** ```json {"status":"ok","timestamp":"2025-..."} ``` **Test avec authentification (devrait échouer sans token):** ```bash curl http://localhost:8888/info?url=https://youtube.com/watch?v=test ``` **Résultat attendu:** ```json {"error":"Unauthorized","message":"API key required..."} ``` **Test avec token (devrait marcher):** ```bash curl -H "X-API-Key: ton_token_ici" \ "http://localhost:8888/info?url=https://youtube.com/watch?v=dQw4w9WgXcQ" ``` **Résultat attendu:** Informations sur la vidéo --- ### 6. Configurer le DNS (si pas déjà fait) **Chez OVH, dans l'espace client:** 1. Va dans **Web Cloud** → **Domaines** → **Ton domaine** 2. Clique sur **Zone DNS** 3. Ajoute un enregistrement **A** : - Sous-domaine: `api` (ou `@` pour le domaine principal) - Cible: **L'IP de ton VPS OVH** - TTL: 3600 **Exemple:** ``` Type: A Nom: api Cible: 51.195.XXX.XXX (ton IP OVH) ``` 4. **Attends 5-10 minutes** pour la propagation DNS --- ### 7. Tester depuis l'interface web 1. **Ouvre ton navigateur** et va sur : `http://ton-domaine.com` (ou `http://ip-du-serveur:8888`) 2. **Clique sur le panneau "🔐 API Configuration"** 3. **Colle ton token** dans le champ 4. **Clique sur "Save & Test"** 5. **Résultat attendu :** - Statut passe en vert "Connected ✓" - Notification de succès - Le token est sauvegardé dans le navigateur 6. **Teste un téléchargement** dans l'onglet "Download" - Entre une URL YouTube - Le token sera automatiquement ajouté aux requêtes --- ## Sécurité en Production ### Option 1 : Limiter les origines CORS Si tu veux que SEUL ton domaine puisse utiliser l'API : ```bash nano .env ``` Change : ```env ALLOWED_ORIGINS=https://ton-domaine.com,https://api.ton-domaine.com ``` ### Option 2 : HTTPS avec Nginx + Let's Encrypt **Si pas déjà configuré**, installe Nginx et SSL : ```bash # Installer Nginx sudo apt update sudo apt install -y nginx certbot python3-certbot-nginx # Créer la configuration Nginx sudo nano /etc/nginx/sites-available/video-transcriptor ``` **Colle cette configuration :** ```nginx server { listen 80; server_name api.ton-domaine.com; # Redirection vers HTTPS (sera configuré après) # return 301 https://$server_name$request_uri; location / { proxy_pass http://localhost:8888; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` **Activer et tester:** ```bash # Activer le site sudo ln -s /etc/nginx/sites-available/video-transcriptor /etc/nginx/sites-enabled/ # Tester la config sudo nginx -t # Redémarrer Nginx sudo systemctl restart nginx # Obtenir un certificat SSL GRATUIT sudo certbot --nginx -d api.ton-domaine.com ``` Certbot va automatiquement configurer HTTPS et les redirections. --- ## Dépannage ### ❌ "API token required" **Problème:** Le token n'est pas envoyé ou invalide **Solution:** 1. Vérifie que le token est bien configuré dans l'interface web 2. Rafraîchis la page et entre le token à nouveau 3. Vérifie que le token dans `.env` est le même que dans l'interface --- ### ❌ Le service ne démarre pas ```bash # Voir les logs pm2 logs video-transcriptor --lines 50 # ou pour systemd sudo journalctl -u video-transcriptor -n 50 ``` **Vérifications:** - La variable `API_TOKEN` est bien dans `.env` - Pas d'erreurs de syntaxe dans `.env` - Node modules à jour : `npm ci` --- ### ❌ CORS errors dans le navigateur **Problème:** "Access to fetch at ... has been blocked by CORS policy" **Solution 1:** En développement ```env ALLOWED_ORIGINS=* ``` **Solution 2:** En production ```env ALLOWED_ORIGINS=https://ton-domaine.com,https://www.ton-domaine.com ``` Redémarre après modification : `pm2 restart video-transcriptor` --- ### ❌ DNS ne fonctionne pas **Vérifier la propagation DNS:** ```bash # Depuis ton serveur dig api.ton-domaine.com # Ou depuis Windows nslookup api.ton-domaine.com ``` **Si ça ne fonctionne pas:** - Attends 10-30 minutes - Vérifie dans l'interface OVH que l'enregistrement A pointe vers la bonne IP - Vide le cache DNS : `ipconfig /flushdns` (Windows) ou `sudo systemd-resolve --flush-caches` (Linux) --- ## Checklist Finale Avant de considérer le déploiement comme terminé : - [ ] `.env` configuré avec un `API_TOKEN` fort - [ ] Service redémarré et en cours d'exécution - [ ] Test `/health` fonctionne - [ ] Test avec token fonctionne - [ ] Interface web accessible - [ ] Token sauvegardé dans l'interface web - [ ] Test de téléchargement YouTube réussi - [ ] DNS configuré (si applicable) - [ ] HTTPS configuré (recommandé pour production) --- ## Commandes Utiles ```bash # Voir les logs en temps réel pm2 logs video-transcriptor # Statut du service pm2 status # Redémarrer pm2 restart video-transcriptor # Vérifier les ports ouverts sudo netstat -tlnp | grep 8888 # Vérifier l'utilisation des ressources htop # Espace disque df -h # Tester l'API locale curl -H "X-API-Key: ton_token" http://localhost:8888/health ``` --- ## Support Si tu rencontres des problèmes : 1. **Vérifie les logs** : `pm2 logs` 2. **Vérifie le `.env`** : `cat .env | grep API_TOKEN` 3. **Teste en local** : `curl http://localhost:8888/health` 4. **Vérifie le firewall** : `sudo ufw status` --- **Bon déploiement ! 🚀** Si tout fonctionne, tu devrais pouvoir utiliser l'interface web avec le token sauvegardé, et ne plus avoir à le copier-coller à chaque fois !