# 🔧 Fix Deployment Server vt.alfacom.it

Guida completa per risolvere i problemi di deployment su AlmaLinux 9.

## 🔍 Problemi Risolti

| Problema | Soluzione |
|----------|-----------|
| ❌ `REPLIT_DOMAINS not provided` | Reso opzionale con fallback a `vt.alfacom.it` |
| ❌ Vite/drizzle-kit non trovati | `npm ci --include=dev` per installare devDependencies |
| ❌ App crasha in loop | Fix variabili ambiente + compatibilità server esterno |
| ✅ Build funzionante | Vite 521 pacchetti installati correttamente |

## 🚀 Procedura Fix Rapida (3 Step)

### **Step 1: Copia Script Fix sul Server**

```bash
# Dal tuo PC/terminale
scp fix-server.sh root@vt.alfacom.it:/var/www/vigilanza-turni/
```

### **Step 2: Esegui Fix sul Server**

```bash
ssh root@vt.alfacom.it
cd /var/www/vigilanza-turni
chmod +x fix-server.sh
bash fix-server.sh
```

### **Step 3: Deploy Aggiornato**

```bash
# Ancora connesso al server
bash deploy/deploy.sh
```

## 📋 Cosa Fa lo Script fix-server.sh

1. ✅ Aggiorna `package.json` scripts per usare comandi robusti
2. ✅ Aggiunge `DOMAIN=vt.alfacom.it` al `.env` se mancante
3. ✅ Aggiunge `ISSUER_URL=https://replit.com/oidc` al `.env` se mancante  
4. ✅ Verifica che `deploy.sh` usi `npm ci --include=dev`

## 🔧 Fix Manuali (Se Necessario)

### Fix 1: Variabili Ambiente (.env)

Aggiungi al file `.env` sul server:

```bash
# SSH al server
ssh root@vt.alfacom.it
nano /var/www/vigilanza-turni/.env

# Aggiungi queste righe se mancanti:
DOMAIN=vt.alfacom.it
ISSUER_URL=https://replit.com/oidc
```

### Fix 2: package.json Scripts

Se lo script automatico fallisce, modifica manualmente:

```bash
nano /var/www/vigilanza-turni/package.json
```

Trova la sezione `"scripts"` e aggiorna:

```json
"scripts": {
  "dev": "NODE_ENV=development tsx server/index.ts",
  "build": "vite build && esbuild server/index.ts --platform=node --packages=external --bundle --format=esm --outdir=dist",
  "start": "NODE_ENV=production node dist/index.js",
  "check": "tsc",
  "db:push": "drizzle-kit push --force || drizzle-kit push || echo 'DB schema sync skipped'"
}
```

### Fix 3: deploy.sh DevDependencies

```bash
nano /var/www/vigilanza-turni/deploy/deploy.sh
```

Trova la riga `npm ci` e cambiala in:

```bash
npm ci --include=dev
```

## ✅ Verifica Deployment Funzionante

Dopo il deploy, verifica:

```bash
# 1. PM2 status
pm2 status

# 2. Logs applicazione
pm2 logs vigilanza-turni --lines 50

# 3. Test HTTP
curl -I https://vt.alfacom.it

# 4. Database connesso
pm2 logs vigilanza-turni | grep -i "database\|error" | tail -20
```

## 📊 Output Atteso

**Build Success:**
```
✓ 2683 modules transformed.
✓ built in 9.75s
```

**PM2 Running:**
```
┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
│ id │ name               │ mode     │ ↺    │ status    │ cpu      │ memory   │
├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
│ 0  │ vigilanza-turni    │ fork     │ 0    │ online    │ 0%       │ 66.1mb   │
└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘
```

**No Errors:**
```
🏥 Health check...
✅ Deployment completato con successo!
```

## 🔄 Workflow Deployment Completo

```bash
# 1. Push modifiche da Replit a GitLab
./push-to-gitlab.sh

# 2. Deploy su server
ssh root@vt.alfacom.it "cd /var/www/vigilanza-turni && bash deploy/deploy.sh"

# 3. Verifica applicazione
curl https://vt.alfacom.it
```

## 🆘 Troubleshooting

### Problema: App crasha con "REPLIT_DOMAINS"
**Soluzione:** Assicurati che `server/replitAuth.ts` sia aggiornato con i fallback

### Problema: "Cannot find package vite"  
**Soluzione:** `npm ci --include=dev` installa devDependencies (vite, drizzle-kit)

### Problema: DB migration fallisce
**Soluzione:** Schema già aggiornato, il warning `⚠️ Schema push skipped` è normale

### Problema: PM2 restart loop
**Soluzione:** Controlla logs con `pm2 logs vigilanza-turni --err --lines 100`

## 📝 File Modificati

- ✅ `server/replitAuth.ts` - Supporto deployment non-Replit
- ✅ `deploy/deploy.sh` - npm ci --include=dev
- ✅ `.env` - DOMAIN e ISSUER_URL
- ✅ `fix-server.sh` - Script automazione fix
- ✅ `replit.md` - Documentazione aggiornata

## 🎯 Risultato Finale

✅ Applicazione online su: **https://vt.alfacom.it**  
✅ Build Vite funzionante (521 packages)  
✅ Database connesso e migrations sync  
✅ PM2 running senza errori  
✅ Backup automatici attivi (retention 30 giorni)

---

**Supporto:** Per problemi contatta l'amministratore del sistema.
