deploiement - Tablify-Developement/Tablify-Web GitHub Wiki
+ Le groupe a pu mettre en ligne l'application développée dans son état actuel.
+ Le groupe peut expliquer ce qu'il a dû faire pour héberger et déployer, et justifier les choix.
+ Le groupe présente sur le wiki le choix qui a été posé pour héberger l'application web : fournisseur, configuration matérielle, prix, garantie, plateforme logicielle, …
+ Le groupe présente sur le wiki la configuration du serveur utilisée et la justifie.
+ Les étudiants présentent sur le wiki la manière dont le code est déployé en production : moment, étapes, outils et protocoles utilisés, …
+ Le groupe explique dans le wiki l'automatisation (CI/CD) qui aurait été mis en place.
Fournisseur : Hostinger VPS
- Plan : VPS 2
- CPU : 2 vCores
- RAM : 8 GB DDR4
- Stockage : 100 GB SSD NVMe
- Bande passante : 1000 Mbps (illimitée)
- OS : Ubuntu 22.04 LTS / Debian 11
- Localisation : Europe (Amsterdam/Londres)
- Coût : 8.99€/mois (avec promotion souvent disponible à 4.49€/mois)
- Performance : 8 GB RAM pour seulement ~9€/mois vs 15-25€ chez la concurrence
- Stockage : SSD NVMe 3x plus rapide que les SSD classiques
- 8 GB RAM : Largement suffisant pour Docker + PostgreSQL + Next.js + Express
- 2 vCores : Intel/AMD dernière génération, performances optimales
- 100 GB SSD NVMe : Vitesse d'I/O exceptionnelle pour la base de données
- Réseau 1Gbps : Latence faible, idéal pour applications web
- SLA : 99.9% de disponibilité garantie
- Uptime : Historique prouvé de >99.95%
- Support : 24/7/365 via chat en français
- Infrastructure : Datacenters Tier-3, redondance complète
- Sauvegardes : Snapshots automatiques hebdomadaires inclus
- IPv4 dédiée : Incluse sans frais supplémentaires
- Panel de gestion : hPanel intuitif + accès SSH complet
- Sécurité : Firewall inclus, protection DDoS
- Monitoring : Surveillance 24/7 des performances
- Documentation : Guides détaillés en français
- Communauté : Forum actif et tutorials
- Migration : Assistance gratuite pour migration
- Remboursement : 30 jours satisfait ou remboursé
Critère | Hostinger VPS 2 | DigitalOcean | AWS EC2 t3.medium | OVH VPS SSD 3 |
---|---|---|---|---|
RAM | 8 GB | 4 GB | 4 GB | 8 GB |
CPU | 2 vCores | 2 vCPUs | 2 vCPUs | 2 vCores |
Stockage | 100 GB NVMe | 80 GB SSD | 30 GB SSD | 160 GB SSD |
Prix/mois | 8.99€ | 24$ (~22€) | 35$ (~32€) | 11.99€ |
Support FR | ✅ 24/7 | ❌ EN uniquement | ❌ EN uniquement | ✅ 24/7 |
Bande passante | Illimitée 1Gbps | 4 TB inclus | Payant | 500 Mbps |
Setup | 5 min | 10 min | 30 min | 10 min |
Hostinger offre le meilleur rapport performance/prix pour notre application, avec une configuration largement suffisante (8GB RAM vs 4GB minimum requis) et un support francophone de qualité.
┌─────────────────────────────────────────────────────────────┐
│ INTERNET │
│ (Utilisateurs) │
└─────────────────────┬───────────────────────────────────────┘
│
│ HTTPS (443) / HTTP (80)
│
┌─────────────────────▼───────────────────────────────────────┐
│ HOSTINGER VPS │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ NGINX REVERSE PROXY ││
│ │ • SSL Termination (Let's Encrypt) ││
│ │ • Load Balancing ││
│ │ • Gzip Compression ││
│ │ • Rate Limiting ││
│ └─────────────────┬───────────────────────────────────────┘│
│ │ │
│ ┌─────────────────▼───────────────────────────────────────┐│
│ │ DOCKER NETWORK ││
│ │ ││
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ││
│ │ │ Frontend │ │ Backend │ │ PostgreSQL │ ││
│ │ │ Next.js │ │ Express.js │ │ 15 │ ││
│ │ │ :3000 │◄─┤ :3001 │◄─┤ :5432 │ ││
│ │ │ │ │ │ │ │ ││
│ │ └─────────────┘ └─────────────┘ └─────────────┘ ││
│ │ ││
│ │ ┌─────────────────────────────────────────────────────┐││
│ │ │ VOLUMES │││
│ │ │ • postgres_data (Base de données) │││
│ │ │ • backend_uploads (Fichiers uploadés) │││
│ │ └─────────────────────────────────────────────────────┘││
│ └────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘
Développement Local → GitHub → Serveur de Production
↓ ↓ ↓
• Tests unitaires • Git push • Git pull
• Docker local • CI checks • Docker rebuild
• Hot reload • Code review • Restart services
-
Phase de développement
# Développement en local avec hot reload npm run dev # Tests avec Docker docker-compose up
-
Validation et commit
# Tests avant commit npm run test npm run build
Commit et push
git add . git commit -m "feat: nouvelle fonctionnalité" git push origin main
-
Déploiement sur production
# Connexion au serveur ssh [email protected]
Mise à jour du code
cd ~/tablify git pull origin main
Déploiement avec zero-downtime
./deploy.sh
- Nouvelles fonctionnalités : Déploiement manuel après validation
- Corrections de bugs : Déploiement immédiat (hotfix)
- Mises à jour de sécurité : Déploiement planifié le dimanche soir
- Maintenance système : 1ère semaine de chaque mois
- Docker 24.0+ : Isolation des services et portabilité
- Docker Compose : Orchestration multi-conteneurs
- Docker Networks : Isolation réseau sécurisée
- Nginx 1.22+ : Reverse proxy haute performance
- Let's Encrypt : Certificats SSL automatiques et gratuits
- Certbot : Gestion automatique des certificats
- PostgreSQL 15 : Base de données relationnelle robuste
- Docker Volumes : Persistance des données garantie
- UFW : Firewall simplifié pour sécuriser les ports
- Logrotate : Rotation automatique des logs
- Cron : Tâches automatisées (sauvegardes, maintenance)
-
Script de déploiement (
deploy.sh
)#!/bin/bash # Déploiement zero-downtime echo "🚀 Démarrage du déploiement..." git pull origin main docker-compose -f docker-compose.prod.yml build docker-compose -f docker-compose.prod.yml up -d echo "✅ Déploiement terminé!"
-
Sauvegarde automatique quotidienne
# Cron job : 0 2 * * * #!/bin/bash DATE=$(date +%Y%m%d_%H%M%S) docker exec tablify-postgres pg_dump -U tablify_user tablify > /backup/db_$DATE.sql # Nettoyage des sauvegardes > 7 jours find /backup -name "db_*.sql" -mtime +7 -delete
-
Monitoring de santé
# Vérification toutes les 5 minutes #!/bin/bash if ! curl -f http://localhost:3000/health; then docker-compose -f docker-compose.prod.yml restart echo "Application redémarrée automatiquement" | mail [email protected] fi
- ✅ Restart automatique : Policy Docker "unless-stopped"
- ✅ Renouvellement SSL : Certbot automatique
- ✅ Rotation des logs : Logrotate configuré
- ✅ Sauvegardes : Script cron quotidien
- ✅ Updates système : Unattended-upgrades pour sécurité
- 🔄 GitHub Actions : CI/CD automatique sur push
- 🔄 Monitoring avancé : Prometheus + Grafana
- 🔄 Tests automatisés : Pipeline de tests intégrée
- 🔄 Notifications : Slack/Discord pour alerts
# Connexion au serveur Hostinger
ssh root@votre-ip-hostinger
Mise à jour du système
apt update && apt upgrade -y
Installation de Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
systemctl start docker
systemctl enable docker
Installation de Nginx
apt install nginx -y
systemctl start nginx
systemctl enable nginx
Installation de Certbot pour SSL
apt install certbot python3-certbot-nginx -y
Configuration du firewall
ufw allow 22,80,443/tcp
ufw enable
Création utilisateur deploy
adduser deploy
usermod -aG docker,sudo deploy
# Connexion avec l'utilisateur deploy
ssh deploy@votre-ip-hostinger
Clonage du repository
git clone https://github.com/votre-username/tablify.git
cd tablify
Configuration des variables d'environnement
nano .env
Ajouter vos variables (DB, JWT secrets, etc.)
Construction et démarrage des containers
docker compose -f docker-compose.prod.yml up -d --build
Configuration Nginx
sudo nano /etc/nginx/sites-available/tablify
Coller la configuration Nginx
sudo ln -s /etc/nginx/sites-available/tablify /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl reload nginx
# Obtention du certificat SSL Let's Encrypt
sudo certbot --nginx -d votre-domaine.com
Test du renouvellement automatique
sudo certbot renew --dry-run
# Connexion au serveur
ssh deploy@votre-ip-hostinger
Navigation vers le projet
cd ~/tablify
Mise à jour du code
git pull origin main
Redémarrage avec la nouvelle version
docker compose -f docker-compose.prod.yml down
docker compose -f docker-compose.prod.yml up -d --build
Vérification du statut
docker compose -f docker-compose.prod.yml ps
# Vérifier l'état des services
docker compose -f docker-compose.prod.yml ps
Voir les logs en temps réel
docker compose -f docker-compose.prod.yml logs -f
Vérifier l'utilisation des ressources
docker stats
Tester l'application
curl https://votre-domaine.com/api/health
Vérifier le certificat SSL
openssl s_client -connect votre-domaine.com:443 -servername votre-domaine.com
# Création du script de déploiement rapide
nano ~/deploy.sh
#!/bin/bash
echo "🚀 Début du déploiement Tablify..."
cd ~/tablify
git pull origin main
docker compose -f docker-compose.prod.yml down
docker compose -f docker-compose.prod.yml up -d --build
echo "✅ Déploiement terminé! Application disponible sur https://votre-domaine.com"
Rendre le script exécutable
chmod +x ~/deploy.sh
Utilisation future en une seule commande
./deploy.sh
# Sauvegarde manuelle de la base de données
docker exec tablify-postgres pg_dump -U tablify_user tablify > backup_$(date +%Y%m%d).sql
Nettoyage des images Docker inutilisées
docker system prune -a
Redémarrage complet en cas de problème
docker compose -f docker-compose.prod.yml restart
Mise à jour des certificats SSL
sudo certbot renew
✅ Performance : 8GB RAM Hostinger vs 4GB concurrence
✅ Prix : 8.99€/mois vs 20-35€ ailleurs
✅ Simplicité : Déploiement en 5 commandes
✅ Sécurité : HTTPS automatique + Firewall
✅ Fiabilité : 99.9% uptime garanti
✅ Support : 24/7 en français
✅ Évolutivité : Upgrade facile si besoin
Cette solution offre un excellent équilibre entre performance, coût et simplicité de gestion pour le déploiement de Tablify.