# 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 root@192.168.1.100:/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.
