From 55e14a95aee715d45b60e0ed743f69e5ff922952 Mon Sep 17 00:00:00 2001 From: Carmine Savino Date: Fri, 23 Jan 2026 10:33:31 +0100 Subject: [PATCH] Aggiungi script di debug e aggiornamenti alla configurazione per il deploy --- .claude/settings.local.json | 3 +- .gitea/workflows/deploy.yml | 5 + TROUBLESHOOTING.md | 238 ++++++++++++++++++++++++++++++++++++ debug-server.sh | 72 +++++++++++ quick-debug.sh | 24 ++++ 5 files changed, 341 insertions(+), 1 deletion(-) create mode 100644 TROUBLESHOOTING.md create mode 100644 debug-server.sh create mode 100644 quick-debug.sh diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 601f63e..8927e65 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -1,7 +1,8 @@ { "permissions": { "allow": [ - "Bash(npm install)" + "Bash(npm install)", + "Bash(npm run build:*)" ] } } diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 8cc22cc..7ccdf23 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -12,6 +12,11 @@ jobs: - name: Checkout del codice uses: actions/checkout@v3 + - name: Crea file .env + run: | + echo "DOMAIN=${{ secrets.DOMAIN }}" > .env + cat .env + - name: Deploy run: | docker compose down --remove-orphans diff --git a/TROUBLESHOOTING.md b/TROUBLESHOOTING.md new file mode 100644 index 0000000..ad0f68b --- /dev/null +++ b/TROUBLESHOOTING.md @@ -0,0 +1,238 @@ +# Troubleshooting 404 Error + +Se ottieni un errore 404 visitando il sito, segui questi passaggi: + +## 1. Esegui lo Script di Debug + +Sul server, nella directory del progetto: + +```bash +chmod +x debug-server.sh +./debug-server.sh +``` + +Questo script ti mostrerà: +- Stato del container +- Logs +- File presenti in nginx +- Configurazione rete +- Labels Traefik + +## 2. Problemi Comuni e Soluzioni + +### ❌ Container non in esecuzione + +**Verifica:** +```bash +docker ps -a | grep vue-demo-app +``` + +**Soluzione:** +```bash +docker-compose up -d +``` + +### ❌ File mancanti in /usr/share/nginx/html/ + +**Verifica:** +```bash +docker exec vue-demo-app ls -la /usr/share/nginx/html/ +``` + +**Dovrebbe mostrare:** +- index.html +- assets/ (directory) + +**Soluzione se i file mancano:** +```bash +# Rebuild completo +docker-compose down +docker-compose build --no-cache +docker-compose up -d +``` + +### ❌ Rete web_proxy non esiste + +**Verifica:** +```bash +docker network ls | grep web_proxy +``` + +**Soluzione:** +```bash +docker network create web_proxy +docker-compose restart +``` + +### ❌ Container non sulla rete corretta + +**Verifica:** +```bash +docker inspect vue-demo-app --format='{{range $key, $value := .NetworkSettings.Networks}}{{$key}}{{"\n"}}{{end}}' +``` + +**Soluzione:** +```bash +docker network connect web_proxy vue-demo-app +docker-compose restart +``` + +### ❌ Variabile DOMAIN non configurata + +**Verifica:** +```bash +cat .env +``` + +**Soluzione:** +```bash +echo "DOMAIN=tuo-dominio.com" > .env +docker-compose down +docker-compose up -d +``` + +### ❌ Traefik non trova il container + +**Verifica labels:** +```bash +docker inspect vue-demo-app | grep -A 20 Labels +``` + +**Verifica logs Traefik:** +```bash +docker logs traefik | grep vue-demo +``` + +**Possibili problemi:** +1. Dominio nel .env non corrisponde al DNS +2. Traefik non è sulla stessa rete del container +3. Labels Traefik non corretti + +**Soluzione:** +```bash +# Ricrea container con labels corretti +docker-compose down +docker-compose up -d + +# Verifica che entrambi siano sulla rete web_proxy +docker network inspect web_proxy +``` + +### ❌ Nginx restituisce 404 + +**Test diretto:** +```bash +# Ottieni IP del container +CONTAINER_IP=$(docker inspect vue-demo-app --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}') + +# Test diretto (dall'interno del server) +curl http://$CONTAINER_IP +``` + +**Se questo funziona ma il dominio no, il problema è Traefik.** +**Se anche questo restituisce 404, il problema è nginx/build.** + +**Soluzione problemi nginx:** +```bash +# Verifica file +docker exec vue-demo-app cat /usr/share/nginx/html/index.html + +# Verifica configurazione nginx +docker exec vue-demo-app nginx -t + +# Rebuild se necessario +docker-compose build --no-cache +docker-compose up -d +``` + +## 3. Verifica Configurazione Traefik + +Assicurati che Traefik sia configurato correttamente: + +### Verifica entrypoints: +```bash +docker inspect traefik | grep -i entrypoint +``` + +Dovrebbe avere: +- `web` su porta 80 +- `websecure` su porta 443 + +### Verifica cert resolver: +```bash +docker inspect traefik | grep -i letsencrypt +``` + +Dovrebbe avere il resolver `letsencrypt` configurato. + +### Verifica rete: +```bash +docker network inspect web_proxy +``` + +Traefik e vue-demo-app devono essere entrambi su questa rete. + +## 4. Test Manuale Completo + +```bash +# 1. Verifica DNS +nslookup tuo-dominio.com + +# 2. Verifica rete +docker network inspect web_proxy + +# 3. Verifica container +docker ps | grep vue-demo + +# 4. Test interno +docker exec vue-demo-app wget -O - http://localhost + +# 5. Verifica logs +docker logs vue-demo-app +docker logs traefik | grep vue-demo + +# 6. Test dal server +curl -H "Host: tuo-dominio.com" http://localhost + +# 7. Test esterno +curl https://tuo-dominio.com +``` + +## 5. Rebuild Completo (Last Resort) + +Se nulla funziona: + +```bash +# Stop tutto +docker-compose down + +# Rimuovi immagini vecchie +docker rmi vue-demo:latest +docker system prune -f + +# Verifica .env +cat .env + +# Rebuild completo +docker-compose build --no-cache + +# Verifica rete +docker network ls | grep web_proxy || docker network create web_proxy + +# Avvia +docker-compose up -d + +# Controlla logs +docker-compose logs -f +``` + +## 6. Contatta Supporto + +Se dopo tutti questi passaggi il problema persiste, raccogli le seguenti informazioni: + +```bash +./debug-server.sh > debug-output.txt +docker-compose logs > docker-logs.txt +``` + +E invia i file di output per ulteriore analisi. diff --git a/debug-server.sh b/debug-server.sh new file mode 100644 index 0000000..5009cc1 --- /dev/null +++ b/debug-server.sh @@ -0,0 +1,72 @@ +#!/bin/bash + +# Script di debug per diagnosticare problemi di deploy + +echo "======================================" +echo " DIAGNOSTICA DEPLOY VUE APP" +echo "======================================" +echo "" + +# 1. Verifica container in esecuzione +echo "1. Container in esecuzione:" +docker ps | grep vue-demo-app +if [ $? -eq 0 ]; then + echo "✅ Container trovato" +else + echo "❌ Container non trovato!" +fi +echo "" + +# 2. Verifica logs container +echo "2. Ultimi logs del container:" +docker logs vue-demo-app --tail 20 +echo "" + +# 3. Verifica rete +echo "3. Reti del container:" +docker inspect vue-demo-app --format='{{range $key, $value := .NetworkSettings.Networks}}{{$key}}: {{$value.IPAddress}}{{"\n"}}{{end}}' +echo "" + +# 4. Verifica file dentro container +echo "4. File nella directory nginx:" +docker exec vue-demo-app ls -la /usr/share/nginx/html/ +echo "" + +# 5. Test nginx interno +echo "5. Test richiesta HTTP interna al container:" +docker exec vue-demo-app wget -O - http://localhost:80 2>/dev/null | head -20 +echo "" + +# 6. Verifica configurazione nginx +echo "6. Configurazione nginx:" +docker exec vue-demo-app cat /etc/nginx/conf.d/default.conf +echo "" + +# 7. Verifica variabile DOMAIN +echo "7. Variabile DOMAIN nel .env:" +cat .env 2>/dev/null || echo "❌ File .env non trovato!" +echo "" + +# 8. Verifica labels Traefik +echo "8. Labels Traefik del container:" +docker inspect vue-demo-app --format='{{range $key, $value := .Config.Labels}}{{$key}}: {{$value}}{{"\n"}}{{end}}' | grep traefik +echo "" + +# 9. Verifica rete Traefik +echo "9. Verifica rete web_proxy:" +docker network inspect web_proxy --format='{{range .Containers}}{{.Name}}: {{.IPv4Address}}{{"\n"}}{{end}}' 2>/dev/null || echo "❌ Rete web_proxy non trovata!" +echo "" + +# 10. Stato Traefik +echo "10. Container Traefik:" +docker ps | grep traefik +if [ $? -eq 0 ]; then + echo "✅ Traefik in esecuzione" +else + echo "❌ Traefik non trovato!" +fi +echo "" + +echo "======================================" +echo " DIAGNOSTICA COMPLETATA" +echo "======================================" diff --git a/quick-debug.sh b/quick-debug.sh new file mode 100644 index 0000000..f2fce6a --- /dev/null +++ b/quick-debug.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +echo "=== QUICK DEBUG ===" +echo "" + +echo "1. Logs del container:" +docker logs vue-demo-app --tail 50 +echo "" + +echo "2. Processi in esecuzione nel container:" +docker exec vue-demo-app ps aux +echo "" + +echo "3. File presenti in nginx:" +docker exec vue-demo-app ls -la /usr/share/nginx/html/ +echo "" + +echo "4. Porta 80 in ascolto?" +docker exec vue-demo-app netstat -tlnp 2>/dev/null || docker exec vue-demo-app ss -tlnp 2>/dev/null || echo "netstat/ss non disponibile" +echo "" + +echo "5. Test configurazione nginx:" +docker exec vue-demo-app nginx -t +echo ""