# Guide de déploiement automatique Ce dossier contient l'application portfolio Geekbrain.io prête à être déployée sur votre NAS. ## Prérequis - Un NAS avec Docker et Docker Compose installés - Accès SSH au NAS depuis votre machine locale - MariaDB accessible (10.0.0.16:3306) avec la base `geekbrain_portfolio` créée - Compte Gmail (avec 2FA et mot de passe d'application si 2FA activé) - Clés reCAPTCHA v2 obtenues depuis https://www.google.com/recaptcha/admin - GitBucket API accessible (10.0.0.16:8080) --- ## Étape 1 : Copier le projet sur le NAS Depuis votre **machine locale** (pas sur le NAS) : ```bash # Remplacez user@nas_ip par vos identifiants SSH # Exemple : scp -r ./Geekbrain_web_site [email protected]:/volume1/Docker/geekbrain-portfolio/ scp -r /home/rcairbum/Documents/Claude_Projects/Geekbrain_web_site/* user@nas_ip:/volume1/Docker/geekbrain-portfolio/ ``` > **Note** : Si vous avez déjà copié les fichiers, passez à l'étape 2. --- ## Étape 2 : Exécuter le script d'installation sur le NAS Connectez-vous en SSH à votre NAS : ```bash ssh user@nas_ip ``` Naviguez vers le dossier du projet : ```bash cd /volume1/Docker/geekbrain-portfolio ``` Rendez le script exécutable : ```bash chmod +x install.sh ``` Lancez l'installation : ```bash ./install.sh ``` Le script va : 1. Vérifier Docker 2. Vous demander toutes les configurations (avec masquage des mots de passe) 3. Créer le fichier `.env` 4. Construire l'image Docker 5. Démarrer le container 6. Vérifier que tout fonctionne --- ## Étape 3 : Vérifier le déploiement Après l'installation, testez depuis votre navigateur : ``` http://nas_ip:8000 ``` Ou depuis le NAS lui-même : ```bash curl http://localhost:8000 ``` Le health check doit retourner `200` : ```bash curl http://localhost:8000/health ``` --- ## Étape 4 : Configurer Nginx Proxy Manager 1. Connectez-vous à l'interface de NPM 2. Ajouter un **Proxy Host** : - **Domain names** : `portfolio.geekbrain.io` - **Scheme** : `http` - **Hostname/IP** : IP de votre NAS - **Port** : `8000` - **SSL** : Activer (Let's Encrypt) - **Force SSL** : Oui - **WebSockets** : Non 3. Enregistrer 4. Attendre quelques instants que le certificat SSL soit émis --- ## Étape 5 : Tester en production Visitez : `https://portfolio.geekbrain.io` Vérifiez : - [ ] Les pages s'affichent (Accueil, À propos, Projets, Contact) - [ ] Le formulaire de contact fonctionne (vous recevrez un email) - [ ] Les projets s'affichent depuis GitBucket - [ ] Le design steampunk est correct (couleurs or, fond sombre) - [ ] Le site est responsive (mobile/tablette) --- ## Commandes utiles ```bash # Voir les logs en temps réel docker-compose -f docker/docker-compose.yml logs -f web # Arrêter le container docker-compose -f docker/docker-compose.yml down # Redémarrer docker-compose -f docker/docker-compose.yml up -d # Reconstruire (après modification du code) docker-compose -f docker/docker-compose.yml build docker-compose -f docker/docker-compose.yml up -d # Voir l'état des containers docker-compose -f docker/docker-compose.yml ps # Accéder au container (debug) docker-compose -f docker/docker-compose.yml exec web bash ``` --- ## Dépannage ### Erreur de connexion à la base de données - Vérifiez que `10.0.0.16:3306` est accessible depuis le container : ```bash docker-compose -f docker/docker-compose.yml exec web ping 10.0.0.16 ``` - Vérifiez les credentials dans `.env` - Assurez-vous que l'utilisateur `geekbrain_app` existe et a les droits ### Erreur de connexion à GitBucket ```bash docker-compose -f docker/docker-compose.yml exec web curl http://10.0.0.16:8080/api/v3/users/rcairbum/repos ``` ### Email non envoyé - Vérifiez les logs (`docker-compose logs -f web`) - Pour Gmail, utilisez un **mot de passe d'application** (pas votre mot de passe normal) - Activez "Accès des applications moins sécurisées" si 2FA désactivé (non recommandé) ### reCAPTCHA ne fonctionne pas - Vérifiez que les clés dans `.env` correspondent à `portfolio.geekbrain.io` - Dans la console Google reCAPTCHA, ajoutez `portfolio.geekbrain.io` aux domaines autorisés --- ## Structure du projet sur le NAS ``` /volume1/Docker/geekbrain-portfolio/ ├── app/ │ ├── static/ # Fichiers statiques (CSS, js, images) │ ├── templates/ # Templates HTML │ ├── main.py │ ├── config.py │ ├── database.py │ ├── models.py │ ├── schemas.py │ ├── crud.py │ └── services/ ├── docker/ │ ├── Dockerfile │ └── docker-compose.yml ├── tests/ ├── requirements.txt ├── .env # Vos secrets (NE PAS PARTAGER) ├── install.sh # Script d'installation └── README.md ``` --- **L'installation est maintenant entièrement automatisée !** Exécutez simplement `./install.sh` après avoir copié les fichiers.