- Add API token authentication middleware (X-API-Key header) - Add CORS configuration with ALLOWED_ORIGINS - Add security HTTP headers (X-Frame-Options, CSP, etc.) - Add web interface for API token configuration with localStorage - Add toggle visibility for token input - Add connection status indicator - Add auto-save token functionality - Update API documentation with authentication examples - Add deployment guides (OVH specific and general) - Add local testing guide 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
7.9 KiB
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):
# Générer un token aléatoire de 64 caractères
openssl rand -hex 32
Ou sur Windows (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 :
ssh user@ton-serveur-ovh.com
Navigue vers le dossier du projet :
cd /chemin/vers/videotoMP3Transcriptor
Édite le fichier .env :
nano .env
Ajoute ces lignes (ou modifie si elles existent déjà) :
# ========================================
# 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
# 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:
# 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:
# 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):
curl http://localhost:8888/health
Résultat attendu:
{"status":"ok","timestamp":"2025-..."}
Test avec authentification (devrait échouer sans token):
curl http://localhost:8888/info?url=https://youtube.com/watch?v=test
Résultat attendu:
{"error":"Unauthorized","message":"API key required..."}
Test avec token (devrait marcher):
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:
- Va dans Web Cloud → Domaines → Ton domaine
- Clique sur Zone DNS
- Ajoute un enregistrement A :
- Sous-domaine:
api(ou@pour le domaine principal) - Cible: L'IP de ton VPS OVH
- TTL: 3600
- Sous-domaine:
Exemple:
Type: A
Nom: api
Cible: 51.195.XXX.XXX (ton IP OVH)
- Attends 5-10 minutes pour la propagation DNS
7. Tester depuis l'interface web
-
Ouvre ton navigateur et va sur :
http://ton-domaine.com(ouhttp://ip-du-serveur:8888) -
Clique sur le panneau "🔐 API Configuration"
-
Colle ton token dans le champ
-
Clique sur "Save & Test"
-
Résultat attendu :
- Statut passe en vert "Connected ✓"
- Notification de succès
- Le token est sauvegardé dans le navigateur
-
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 :
nano .env
Change :
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 :
# 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 :
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:
# 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:
- Vérifie que le token est bien configuré dans l'interface web
- Rafraîchis la page et entre le token à nouveau
- Vérifie que le token dans
.envest le même que dans l'interface
❌ Le service ne démarre pas
# Voir les logs
pm2 logs video-transcriptor --lines 50
# ou pour systemd
sudo journalctl -u video-transcriptor -n 50
Vérifications:
- La variable
API_TOKENest 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
ALLOWED_ORIGINS=*
Solution 2: En production
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:
# 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) ousudo systemd-resolve --flush-caches(Linux)
Checklist Finale
Avant de considérer le déploiement comme terminé :
.envconfiguré avec unAPI_TOKENfort- Service redémarré et en cours d'exécution
- Test
/healthfonctionne - 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
# 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 :
- Vérifie les logs :
pm2 logs - Vérifie le
.env:cat .env | grep API_TOKEN - Teste en local :
curl http://localhost:8888/health - 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 !