# βœ… Checklist Deploy IDS - AlmaLinux 9 ## πŸ“‹ Procedura Completa per Deploy Sicuro ### 1. **Pre-Deploy: Verifiche Locali** ```bash # Su Replit - verificare che non ci siano errori npm run build npm run db:push --force # Sync schema database ``` ### 2. **Commit e Push su GitLab** ```bash # Su Replit ./push-gitlab.sh ``` *Messaggio commit descrittivo consigliato con tipo di modifica* --- ### 3. **Pull Codice sul Server** ```bash # Sul server AlmaLinux cd /opt/ids ./deployment/update_from_git.sh # Se ci sono migrations database ./deployment/update_from_git.sh --db ``` --- ### 4. **CRITICO: Setup Servizi Systemd** #### 4a. Servizi Python (ML Backend & Syslog Parser) ```bash # Prima volta O dopo modifiche ai .service files sudo ./deployment/install_systemd_services.sh ``` #### 4b. ⚠️ **Analytics Aggregator Timer** (SPESSO DIMENTICATO!) ```bash # IMPORTANTE: Deve essere fatto SEMPRE al primo deploy sudo ./deployment/setup_analytics_timer.sh # Verifica che sia attivo sudo systemctl list-timers ids-analytics-aggregator.timer ``` **PerchΓ© Γ¨ critico?** - Dashboard Live e Analytics Storici dipendono da aggregazioni orarie - Se il timer non Γ¨ attivo β†’ dati fermi/vecchi! - Ultima run > 2 ore = problema grave --- ### 5. **Restart Servizi Modificati** ```bash # Se hai modificato codice Python ML sudo systemctl restart ids-ml-backend # Se hai modificato syslog_parser.py sudo systemctl restart ids-syslog-parser # Se hai modificato frontend (Node.js) ./deployment/restart_frontend.sh ``` --- ### 6. **Verifiche Post-Deploy** #### 6a. Check Status Servizi ```bash # Verifica tutti i servizi sudo systemctl status ids-ml-backend sudo systemctl status ids-syslog-parser sudo systemctl status ids-analytics-aggregator.timer # Verifica prossima esecuzione timer sudo systemctl list-timers | grep ids-analytics ``` **Output atteso Analytics Timer:** ``` NEXT LEFT LAST PASSED UNIT ACTIVATES Sun 2025-11-24 17:05:00 CET 14min Sun 2025-11-24 16:05:00 CET 35min ids-analytics-aggregator.timer ids-analytics-aggregator.service ``` #### 6b. Check Logs (primi 2-3 minuti) ```bash # ML Backend tail -f /var/log/ids/backend.log # Syslog Parser tail -f /var/log/ids/syslog_parser.log # Analytics Aggregator (journal) journalctl -u ids-analytics-aggregator -n 50 ``` #### 6c. Test API Endpoints ```bash # Health checks curl http://localhost:5000/api/stats curl http://localhost:8000/health # Verifica Analytics curl http://localhost:5000/api/analytics/recent | jq '.[] | length' ``` #### 6d. Check Database ```bash # Verifica tabelle critiche sudo -u postgres psql ids -c "\dt" # Verifica ultime aggregazioni sudo -u postgres psql ids -c "SELECT COUNT(*), MAX(date), MAX(hour) FROM network_analytics;" # Verifica ultime detections sudo -u postgres psql ids -c "SELECT COUNT(*), MAX(detected_at) FROM detections;" ``` --- ### 7. **Troubleshooting Comuni** #### Problem: Analytics Aggregator non gira ```bash # Soluzione sudo ./deployment/setup_analytics_timer.sh # Forza run immediata sudo systemctl start ids-analytics-aggregator # Check log journalctl -u ids-analytics-aggregator -n 50 ``` #### Problem: ML Backend crash loop ```bash # Check log per errore tail -100 /var/log/ids/backend.log # Spesso Γ¨ problema .env o venv ls -la /opt/ids/.env # Deve esistere e 600 permissions ls -la /opt/ids/python_ml/venv/ # Deve esistere ``` #### Problem: Syslog Parser non processa log ```bash # Verifica RSyslog riceve dati tail -f /var/log/mikrotik/raw.log # Verifica parser in esecuzione ps aux | grep syslog_parser | grep -v grep # Check permessi file log ls -la /var/log/mikrotik/ ``` --- ### 8. **Checklist Finale (Prima di Dichiarare Deploy OK)** - [ ] ML Backend: `systemctl status ids-ml-backend` β†’ **active (running)** - [ ] Syslog Parser: `systemctl status ids-syslog-parser` β†’ **active (running)** - [ ] Analytics Timer: `systemctl status ids-analytics-aggregator.timer` β†’ **active (waiting)** - [ ] Next timer run: `systemctl list-timers` β†’ mostra prossima esecuzione < 1 ora - [ ] Frontend: `curl http://localhost:5000/` β†’ **200 OK** - [ ] ML API: `curl http://localhost:8000/health` β†’ **{"status":"healthy"}** - [ ] Database: `psql $DATABASE_URL -c "SELECT 1"` β†’ **?column? 1** - [ ] Analytics data: Ultima aggregazione < 2 ore fa - [ ] Logs: Nessun errore critico negli ultimi 5 minuti - [ ] Web UI: Dashboard e Analytics caricano senza errori --- ## 🚨 Errori Comuni da Evitare 1. **Dimenticare setup_analytics_timer.sh** β†’ Dashboard fermi! 2. Non verificare timer systemd dopo deploy 3. Non controllare logs dopo restart servizi 4. Non testare API endpoints prima di dichiarare deploy OK 5. Modificare .env senza chmod 600 6. Fare `git pull` invece di `./update_from_git.sh` --- ## πŸ“Š Monitoring Continuo ```bash # Script debug completo ./deployment/debug_system.sh # Verifica salute sistema ogni ora (crontab) 0 * * * * /opt/ids/deployment/check_backend.sh ``` --- ## πŸ†˜ In Caso di Emergenza ```bash # Restart completo sistema IDS sudo ./deployment/restart_all.sh # Backup database PRIMA di interventi drastici ./deployment/backup_db.sh # Restore da backup pg_restore -U postgres -d ids /backup/ids_backup_YYYYMMDD.dump ``` --- **Ultimo aggiornamento:** 24 Novembre 2025 **Versione:** 1.0.0