story-research-zapwall/docs/README-DEPLOYMENT.md

5.4 KiB

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

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

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

# 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

ssh debian@92.243.27.35 'sudo journalctl -u zapwall -f'

Vérifier le statut du service

ssh debian@92.243.27.35 'sudo systemctl status zapwall'

Redémarrer le service

ssh debian@92.243.27.35 'sudo systemctl restart zapwall'

Vérifier que le port 3001 est en écoute

ssh debian@92.243.27.35 'sudo ss -tuln | grep 3001'

Vérifier la configuration nginx

ssh debian@92.243.27.35 'sudo docker exec lecoffre_nginx_test nginx -t'

Recharger nginx après modification

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

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

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

# 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

# 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

# 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