Newer
Older
geekbrain_io_web / DEPLOY.md

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) :

# 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 :

ssh user@nas_ip

Naviguez vers le dossier du projet :

cd /volume1/Docker/geekbrain-portfolio

Rendez le script exécutable :

chmod +x install.sh

Lancez l'installation :

./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 :

curl http://localhost:8000

Le health check doit retourner 200 :

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

# 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 :
    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

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.