Spaces:
Configuration error
🚀 Guide de Déploiement - Trash Detection
📋 Prérequis
- Compte GitHub (gratuit)
- Compte Render.com (gratuit)
- Git installé localement
🔧 Étape 1 : Préparer le Projet
1.1 Initialiser Git (si pas déjà fait)
cd trash_full_detection
git init
git add .
git commit -m "Initial commit - Trash Detection App"
1.2 Construire le Frontend
# Exécuter le script de build
./build-frontend.sh
# Vérifier que le dossier static/ a été créé
ls -la static/
📦 Étape 2 : Créer un Dépôt GitHub
2.1 Via l'interface GitHub
- Aller sur https://github.com/new
- Nom du repository :
trash-detection-app - Visibilité : Public (requis pour Render.com gratuit)
- Ne pas initialiser avec README (on a déjà nos fichiers)
- Cliquer "Create repository"
2.2 Pousser le Code
# Ajouter le remote GitHub (remplacer YOUR_USERNAME)
git remote add origin https://github.com/YOUR_USERNAME/trash-detection-app.git
# Pousser le code
git branch -M main
git push -u origin main
🌐 Étape 3 : Déployer sur Render.com
3.1 Créer un Compte Render
- Aller sur https://render.com
- S'inscrire avec GitHub (gratuit)
- Autoriser Render à accéder à vos repos
3.2 Créer un Web Service
- Dashboard → "New +" → "Web Service"
- Connecter votre repository GitHub
trash-detection-app - Configuration :
Name: trash-detection
Region: Frankfurt (ou le plus proche)
Branch: main
Runtime: Docker
Instance Type: Free
3.3 Variables d'Environnement (optionnel)
Si besoin, ajouter dans "Environment Variables" :
PYTHON_VERSION=3.9.18
3.4 Déployer
- Cliquer "Create Web Service"
- Render va automatiquement :
- Détecter le
Dockerfile - Construire l'image Docker
- Déployer l'application
- Vous donner une URL :
https://trash-detection-xxxx.onrender.com
- Détecter le
⏱️ Le premier déploiement prend 5-10 minutes.
✅ Étape 4 : Vérifier le Déploiement
4.1 Tester l'API
# Health check
curl https://trash-detection-xxxx.onrender.com/api/health
# Info du modèle
curl https://trash-detection-xxxx.onrender.com/api/info
4.2 Tester l'Interface Web
- Ouvrir
https://trash-detection-xxxx.onrender.comdans un navigateur - Tester l'upload d'images
- Tester l'upload de vidéos
🔧 Étape 5 : Configuration Avancée (Optionnel)
5.1 Domaine Personnalisé
- Dans Render Dashboard → votre service → "Settings"
- Section "Custom Domain"
- Ajouter votre domaine
5.2 Optimisation des Performances
Limitations du plan gratuit :
- 512 MB RAM
- CPU partagé
- Service s'endort après 15 min d'inactivité
- Premier accès après sommeil : ~30 secondes
Solutions :
Upgrade vers plan payant ($7/mois) pour :
- Toujours actif
- Plus de RAM (1 GB+)
- CPU dédié
Garder le service actif (gratuit mais limité) :
- Créer un cron job qui ping l'API toutes les 10 minutes
- Utiliser UptimeRobot (gratuit) : https://uptimerobot.com
🐛 Dépannage
Erreur : "Failed to build"
Cause : Problème de dépendances
Solution :
- Vérifier
requirements.txt - Dans les logs Render, chercher l'erreur exacte
- Ajuster les versions si nécessaire
Erreur : "Model not found"
Cause : Fichier models/yolo/best.pt manquant
Solution :
- Vérifier que le fichier est dans le repo
- Vérifier
.gitignore(ne doit pas exclure*.pt) - Re-commit et push
Vidéos ne fonctionnent pas
Cause : Timeout (plan gratuit)
Solutions :
- Limiter la durée des vidéos (< 30 secondes)
- Upgrade vers plan payant
- Utiliser un service séparé pour le traitement vidéo (AWS Lambda, etc.)
Service très lent
Cause : Service endormi (plan gratuit)
Solutions :
- Premier accès après sommeil = normal
- Utiliser UptimeRobot pour garder actif
- Upgrade vers plan payant
📊 Monitoring
Logs en Temps Réel
# Via Render Dashboard
Dashboard → votre service → "Logs"
Métriques
Le dashboard Render montre :
- CPU usage
- Memory usage
- Request count
- Response times
🔄 Mise à Jour
Déploiement Automatique
Render redéploie automatiquement à chaque push sur main :
# Faire des modifications
git add .
git commit -m "Update: nouvelle fonctionnalité"
git push origin main
# Render redéploie automatiquement
Déploiement Manuel
Si vous avez désactivé auto-deploy :
- Render Dashboard → votre service
- Cliquer "Manual Deploy" → "Deploy latest commit"
💰 Coûts
Plan Gratuit (Actuel)
- ✅ 0 €/mois
- ✅ 750 heures/mois
- ⚠️ Service s'endort après 15 min
- ⚠️ 512 MB RAM
- ⚠️ CPU partagé
Plan Starter (Recommandé pour Production)
- 💵 7 €/mois
- ✅ Toujours actif
- ✅ 1 GB RAM
- ✅ CPU dédié
- ✅ SSL gratuit
🔐 Sécurité
Recommandations Production
- CORS : Limiter les origines dans
api.py
allow_origins=["https://votre-domaine.com"]
- Rate Limiting : Ajouter slowapi
pip install slowapi
- Variables d'Environnement : Pour les secrets
API_KEY = os.environ.get("API_KEY")
📱 Alternatives de Déploiement Gratuit
Option 1 : Vercel (Frontend) + Render (Backend)
Avantages :
- Frontend ultra-rapide sur Vercel
- Backend sur Render
- Les deux gratuits
Setup :
- Frontend → Vercel (déploiement automatique depuis GitHub)
- Backend → Render (comme ci-dessus)
- Configurer l'URL API dans Vercel env vars
Option 2 : Railway
Avantages :
- 500 heures gratuites/mois
- Plus de RAM (1 GB)
- Support Docker natif
URL : https://railway.app
Option 3 : Fly.io
Avantages :
- 3 machines gratuites
- Plus de contrôle
- Meilleure performance
URL : https://fly.io
📞 Support
Problèmes ?
- Render Docs : https://render.com/docs
- Community Forum : https://community.render.com
Pour ce projet :
- Créer une issue sur GitHub
- Consulter
DEPLOIEMENT_APP.mdpour plus de détails
✅ Votre application est maintenant déployée et accessible sur Internet !
URL de test : Remplacer xxxx par votre ID Render
https://trash-detection-xxxx.onrender.com