201 lines
5.4 KiB
Markdown
201 lines
5.4 KiB
Markdown
# Guide de déploiement et mise à jour - zapwall.fr
|
|
|
|
## État actuel
|
|
|
|
- **Service**: zapwall.service (systemd)
|
|
- **Répertoire**: `/var/www/zapwall.fr`
|
|
- **Port application**: 3001
|
|
- **Nginx**: Conteneur Docker `lecoffre_nginx_test`
|
|
- **HTTPS**: Configuré avec redirection automatique HTTP → HTTPS
|
|
|
|
## Mise à jour du site depuis Git
|
|
|
|
### Méthode 1 : Si le dépôt Git est déjà cloné sur le serveur
|
|
|
|
```bash
|
|
# Se connecter au serveur
|
|
ssh debian@92.243.27.35
|
|
|
|
# Aller dans le répertoire de l'application
|
|
cd /var/www/zapwall.fr
|
|
|
|
# Récupérer les dernières modifications
|
|
git fetch origin
|
|
|
|
# Basculer sur la branche souhaitée (par défaut: main)
|
|
git checkout main # ou master, ou une autre branche
|
|
|
|
# Récupérer les modifications
|
|
git pull origin main
|
|
|
|
# Installer les dépendances
|
|
npm ci
|
|
|
|
# Construire l'application
|
|
npm run build
|
|
|
|
# Redémarrer le service
|
|
sudo systemctl restart zapwall
|
|
|
|
# Vérifier que le service fonctionne
|
|
sudo systemctl status zapwall
|
|
```
|
|
|
|
### Méthode 2 : Utiliser le script de mise à jour
|
|
|
|
Depuis votre machine locale :
|
|
|
|
```bash
|
|
# Mise à jour depuis la branche main
|
|
./update-from-git.sh main
|
|
|
|
# Ou depuis une autre branche
|
|
./update-from-git.sh master
|
|
```
|
|
|
|
Le script :
|
|
1. Se connecte au serveur
|
|
2. Récupère les modifications depuis Git
|
|
3. Installe les dépendances
|
|
4. Construit l'application
|
|
5. Redémarre le service
|
|
6. Vérifie que tout fonctionne
|
|
|
|
### Méthode 3 : Transfert manuel depuis le dépôt local
|
|
|
|
Si le dépôt Git n'est pas sur le serveur :
|
|
|
|
```bash
|
|
# Depuis votre machine locale, dans le répertoire du projet
|
|
tar --exclude='node_modules' \
|
|
--exclude='.next' \
|
|
--exclude='.git' \
|
|
--exclude='*.tsbuildinfo' \
|
|
--exclude='.env*.local' \
|
|
--exclude='.cursor' \
|
|
-czf - . | ssh debian@92.243.27.35 "cd /var/www/zapwall.fr && tar -xzf -"
|
|
|
|
# Puis sur le serveur
|
|
ssh debian@92.243.27.35
|
|
cd /var/www/zapwall.fr
|
|
npm ci
|
|
npm run build
|
|
sudo systemctl restart zapwall
|
|
```
|
|
|
|
## Commandes utiles
|
|
|
|
### Voir les logs du service
|
|
```bash
|
|
ssh debian@92.243.27.35 'sudo journalctl -u zapwall -f'
|
|
```
|
|
|
|
### Vérifier le statut du service
|
|
```bash
|
|
ssh debian@92.243.27.35 'sudo systemctl status zapwall'
|
|
```
|
|
|
|
### Redémarrer le service
|
|
```bash
|
|
ssh debian@92.243.27.35 'sudo systemctl restart zapwall'
|
|
```
|
|
|
|
### Vérifier que le port 3001 est en écoute
|
|
```bash
|
|
ssh debian@92.243.27.35 'sudo ss -tuln | grep 3001'
|
|
```
|
|
|
|
### Vérifier la configuration nginx
|
|
```bash
|
|
ssh debian@92.243.27.35 'sudo docker exec lecoffre_nginx_test nginx -t'
|
|
```
|
|
|
|
### Recharger nginx après modification
|
|
```bash
|
|
ssh debian@92.243.27.35 'sudo docker exec lecoffre_nginx_test nginx -s reload'
|
|
```
|
|
|
|
## Configuration HTTPS
|
|
|
|
Actuellement, HTTPS est configuré avec des certificats auto-signés. Pour obtenir des certificats Let's Encrypt valides :
|
|
|
|
### Option 1 : Utiliser certbot via snap (recommandé)
|
|
|
|
```bash
|
|
ssh debian@92.243.27.35
|
|
sudo snap install certbot --classic
|
|
sudo docker stop lecoffre_nginx_test
|
|
sudo certbot certonly --standalone -d zapwall.fr --non-interactive --agree-tos --email admin@zapwall.fr
|
|
sudo docker start lecoffre_nginx_test
|
|
|
|
# Copier les certificats dans le conteneur
|
|
sudo docker cp /etc/letsencrypt/live/zapwall.fr/fullchain.pem lecoffre_nginx_test:/etc/letsencrypt/live/zapwall.fr/fullchain.pem
|
|
sudo docker cp /etc/letsencrypt/live/zapwall.fr/privkey.pem lecoffre_nginx_test:/etc/letsencrypt/live/zapwall.fr/privkey.pem
|
|
|
|
# Mettre à jour la configuration nginx pour utiliser les certificats Let's Encrypt
|
|
# (modifier ssl_certificate et ssl_certificate_key dans /etc/nginx/conf.d/zapwall.fr.conf)
|
|
sudo docker exec lecoffre_nginx_test nginx -s reload
|
|
```
|
|
|
|
### Option 2 : Utiliser acme.sh
|
|
|
|
```bash
|
|
ssh debian@92.243.27.35
|
|
curl https://get.acme.sh | sh
|
|
~/.acme.sh/acme.sh --issue -d zapwall.fr --standalone
|
|
```
|
|
|
|
## Structure des fichiers
|
|
|
|
```
|
|
/var/www/zapwall.fr/ # Répertoire de l'application
|
|
├── .next/ # Build de production Next.js
|
|
├── node_modules/ # Dépendances npm
|
|
├── pages/ # Pages Next.js
|
|
├── components/ # Composants React
|
|
├── lib/ # Bibliothèques
|
|
└── package.json # Configuration npm
|
|
|
|
/etc/systemd/system/zapwall.service # Service systemd
|
|
/etc/nginx/conf.d/zapwall.fr.conf # Configuration nginx (dans le conteneur)
|
|
```
|
|
|
|
## Dépannage
|
|
|
|
### Le service ne démarre pas
|
|
```bash
|
|
# Voir les logs
|
|
ssh debian@92.243.27.35 'sudo journalctl -u zapwall -n 50'
|
|
|
|
# Vérifier que le répertoire existe
|
|
ssh debian@92.243.27.35 'ls -la /var/www/zapwall.fr'
|
|
|
|
# Vérifier que l'application est construite
|
|
ssh debian@92.243.27.35 'ls -la /var/www/zapwall.fr/.next'
|
|
```
|
|
|
|
### Le port 3001 n'est pas en écoute
|
|
```bash
|
|
# Vérifier que le service est actif
|
|
ssh debian@92.243.27.35 'sudo systemctl status zapwall'
|
|
|
|
# Redémarrer le service
|
|
ssh debian@92.243.27.35 'sudo systemctl restart zapwall'
|
|
```
|
|
|
|
### Nginx ne sert pas le bon site
|
|
```bash
|
|
# Vérifier la configuration
|
|
ssh debian@92.243.35 'sudo docker exec lecoffre_nginx_test cat /etc/nginx/conf.d/zapwall.fr.conf'
|
|
|
|
# Vérifier que proxy_pass pointe vers 172.17.0.1:3001
|
|
# Vérifier que server_name contient zapwall.fr
|
|
```
|
|
|
|
## Notes importantes
|
|
|
|
- Le service zapwall doit être actif pour que l'application soit accessible
|
|
- Nginx fait un reverse proxy vers le port 3001
|
|
- Les modifications de code nécessitent un rebuild (`npm run build`) et un redémarrage du service
|
|
- Les certificats Let's Encrypt doivent être renouvelés tous les 90 jours
|