# 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