Chi sono?

Ho iniziato a lavorare in Selesta Ingegneria nel settembre del 1983. Provenivo da studi su transistor in bassa e alta frequenza ma sempre in campo analogico. Il digitale non mi piaceva: vari operatori booleani OR|AND|XOR non facevano per me. E come accede in realtà, il vecchio adagio “Nella minestra che non ti piace ci affoghi”. Sono rimasto in Selesta sino al 1995 gli ultimi anni ero una specie di responsabile di manutenzione. In quei anni iniziavano a comparire i primi “provider internet”; un mio collega voleva provare l’avventura e io avevo alle spalle i miei genitori. Se non provi ora.. tra le altre cose avevo capito che, pur essendo una specie di leggenda nell’hardware di Selesta la mia conoscenza tecnica terminava li. A me non stava bene. Cosi iniziammo a fornire servizi internet con dei modem a 9600 bps e un paio di router Cisco 2501. Nel 2002 mi è venuto in mente che volevo lavorare per me stesso e non per gli altri. Cosi’ a maggio fondai Tech2 Srl. Dopo ventiquattro anni siamo una piccola società che fornisce servizi e consulenza informatica a molte aziende e alcune veramente grandi.

Cose che conosco.

Conosco bene l’hardware che gravita attorno ai processori Intel 8085 grazie a Selesta. Mi piace l’alta fedeltà più la parte tecnica che non la musica in se (sindrome comune dei tecnici). Ho una profonda conoscenza di linux: lavoro da oltre vent’anni con Ubuntu/Debian e con Centos/Rocky/Redhat. Ovviamente conosco la parte server di Windows da NT in poi per ovvie ragioni. Sono stato certificato Cisco CCNA quando valeva qualcosa (verso il ’98). Conosco bene la virtualizzazione di diversi ‘gusti’ Vmware, Proxmox, Hyper-V.. Sono stato certificato Sonicwall e con questa azienza continua la collaborazione iniziata nel 1999. Ora cerco di vivere della mia esperienza ma purtroppo in questo mestiere la tecnica a avanti e se non ti aggiorni sei fuori. Credo di aver elencato tutto quello che conosco, senza scendere nei particolari che tanto non interessano a nessuno. Grazie per aver perso tempo a leggere questo testo.

QNAP – caratteristiche particolari

VJBOD – E’ la possibilità di aumentare lo spazio del NAS connettendolo ad un’altro NAS – Sembra l’uovo di colombo, ma a volte si è in presenza di un NAS near-full e magari hai un’altro NAS in un’altra sede near-empty.. puoi connetterli assieme per scaricare il primo NAS. (fonte: https://www.youtube.com/watch?v=iEUJv-ke4dE https://www.youtube.com/watch?v=yNCqr5YlI8g )

MARS – E’ un’utility di backup, ora puo’ fare solo backup di siti wordpress.. prima poteva fare anche backup di google foto.. 

Snapshot Vault/Replica – E’ la possibilità di copiare una snapshot effettuata dal un NAS Qnap verso un secondo NAS Qnap posto in un’altra locazione fisica. Mette il c..o a paratia (gergo militare) da errori umani e guasti e anche da virus. (fonte: https://www.qnap.com/en/how-to/tutorial/article/save-snapshots-to-other-qnap-nas-with-snapshot-replica)

Migrazione per guasto serio su un’altro NAS QNAP – In una vita puo’ capitare che un NAS smetta di funzionare per problemi non derivati da dischi o alimentatori, come ad esempio guasto sulla scheda madre e potrebbe essere conveniente acquistare un nuovo NAS.. con i QNAP è sufficiente migrare i dischi sul nuovo NAS QNAP e ripartire… puo’ sembrare una cosa da poco.. ma è una garanzia in ambiente industriale da non sottovalutare.. ( applicativo per migrazione https://www.qnap.com/it-it/nas-migration/ )

Boxafe – Backup di email e altro di Office 365 oppure Gmail Suite. Purtroppo a pagamento se su supera un cert numero di account. (fonte: https://www.youtube.com/watch?v=_TQQYVNFQUs )

Malware e Virus come evitare sorprese – Leggete questo articolo: https://www.qnap.com/solution/secure-storage/it-it/

Squid Proxy HA+LB

Qualche tempo fa, mi è stato chiesto di implementare un sistema proxy in alta affidabilità da un mio cliente. Ho notato che in rete non c’e’ un howto per costruire un sistema del genere, allora ho pensato di scrivere qualche nota.

Elenco dei requisiti:

  1. Il sistema proxy non deve avere delle licenze da pagare ne one-shot ne annualmente; insomma, deve essere gratis.
  2. Deve servire circa 150 utenti possibilmente senza rallentamenti anche in caso di failover del primo nodo.
  3. Non deve essere soggetto a sospensione del servizio dovuti a manutenzione (pianificati) o guasti (non pianificati).
  4. Il sistema proxera’ le richieste solo se aderenti ai dati presenti su tre white-list a cura dal personale IT contenenti indirizzi IP, URL e domini.
  5. Deve essere emessa una notifica in caso di down del nodo primario in modo che il personale IT sia a conoscenza che il sistema proxy sta funzionando in maniera degradata.
  6. Il sistema si deve automaticamente ritornare sul nodo MASTER quando il problema su di esse è cessato.
  7. In modalita’ normale sarebbe preferibile che il sistema processi le richieste in parallelo, bilanciando il carico tra le due macchine (active-active e non active-passive)

Briefing

Dunque, la prima cosa da decidere,  il sistema operativo, gratis significa Linux o BSD.. io lavoro da circa vent’anni con Redhat (ora a pagamento) e quindi oggi lavoro con CentOS il quale è basato sugli stessi sorgenti. Non ho trovato in rete un vero HOW-TO sul come fare questo progetto, quindi ho deciso di scriverne uno, in italiano. Per il sistema proxy, non c’e’ tanto da pensare, il cliente ha gia’ le liste in formato testo adatte a squid, qundi direi che il sistema proxy è squid. Inoltre è un software che c’e’ da sempre (non so se sia nato prima Linux o prima squid) quindi è affidabile e soprattutto open-source. Per quanto riguarda le White-list basta montarle su una share di un file server per avere tre liste sempre aggiornate su entrambi i proxy. Poi mi sono pensato un trucchetto in caso il file server contenente le White-list non fosse disponibile in modo che gli squid continuino a funzionare, su White-list non aggiornate ma continuino ad andare (e si potrebbero anche aggiornare ogni tanto via script). Ora manca un modulo che mi permetta di avere una sorta di alta affidabilità: un modulo che in caso rilevi un problema possa migrare un indirizzo IP sulla macchina secondaria. Keepalived è la mia scelta. Il motivo è che ci ho gia’ lavorato e che mi piace per la sua semplicità. I nodi comunicano tra loro in Multicast e sembra che questo demone sia molto leggero per il sistema. Per fornire il servizio dei proxy active-active ho pensato che HAPROXY potrebbe fornirmi il necessario. L’idea è stata di mettere in ascolto HAPROXY su qualsiasi IP della macchina linux su porta 3128 porta classica di Squid, e inoltrare in modalità tcp le richieste ai due Squid presenti sulle due macchine, controllando che siano attivi via istruzione check effettuato da HAPROXY. Ovviamente ho dovuto modificare la porta di ascolto degli Squid. Quindi in modalità normale, ovvero quando tutto è correttamente funzionante, la macchina MASTER invia tramite HAPROXY le richieste dei client ad entrambi gli Squid in modaità round-robin che per le sessioni http sembra sia la migliore strategia.

Il sistema operativo

Lavoro da un mare di tempo con CentOS e non mi viene proprio voglia di cambiare, quindi i due nodi saranno due linux box con CentOS V7.5. Finita l’installazione io ho effettuato le seguenti personalizzazioni:

  1. Disabilitato Selinux
  2. Installato net-tools – Per avere ifconfig
  3. Installato procps – Per avere killall che serve a keepalive
  4. Disabilitato e rimosso dall’autostart Firewalld
  5. Impostato in /etc/sysctl.conf la linea “net.ipv4.ip_nonlocal_bind = 1” che serve per ascoltare anche su ip che non esistono sulla macchina.

Keepalived

Ci sono diversi sistemi per avere una coppia di Linux box ad alta affidabilita’, ma io sono di quelli che “cavallo che vince non si cambia”: ho gia’ lavorato con keepalived e quindi implemento cio’ che conosco. Secondo me semplice come configurazione e si installa facilmente perché è di ‘serie’ su CentOS, ti basta fare:

[root@nodo1 ~]# yum install keepalived

# cat /etc/keepalived/keepalived.conf
global_defs {
  enable_script_security
  script_user root
  notification_email {
gbiondi@tech2.it
  }
  notification_email_from node1@tech2.it
  smtp_server localhost
  smtp_connect_timeout 30
}

vrrp_script chk_squid {
   script “/usr/bin/killall -0 squid”      # verify the pid existance
   interval 2                     # check every 2 seconds
   weight 2                       # add 2 points of prio if OK
}

vrrp_script chk_haproxy {
   script “/usr/bin/killall -0 haproxy”      # verify the pid existance
   interval 2                     # check every 2 seconds
   weight 2                       # add 2 points of prio if OK
}

vrrp_instance VI_1 {
   interface eth0                # interface to monitor
   state MASTER
   virtual_router_id 54          # Assign one ID for this route
   priority 101                  # 101 on master, 100 on backup
   advert_int 1
   smtp_alert
   virtual_ipaddress {
        10.12.14.140              # the virtual IP
   }
   track_script {
       chk_squid
       chk_haproxy
   }
}

In sostanza si vedono bene i due ‘vrrp_script’ che controllano che i due processi siano UP e il ‘vrrp_instance’ che è il cuore di keepalived. Questo è lo script del MASTER, quindi quando si sveglia si mette come MASTER e si autoassegna un priorita’. Si assegna un ‘router_id’ che serve al demone per comunicare con l’altro nodo via unicast. Inoltre quando deve operare perché qualcosa è andato storto (non vede l’altro nodo) ci avvisa via smtp. Il resto non credo che ci sia bisogno di spiegazioni. Allego anche lo script del secondo nodo per completezza:

global_defs {
  enable_script_security
  script_user root
  notification_email {
gbiondi@tech2.it
  }
  notification_email_from node2@tech2.it
  smtp_server localhost
  smtp_connect_timeout 30
}

vrrp_script chk_squid {
   script “/usr/bin/killall -0 squid”      # verify the pid existance
   interval 2                     # check every 2 seconds
   weight 2                       # add 2 points of prio if OK
}

vrrp_script chk_haproxy {
   script “/usr/bin/killall -0 haproxy”      # verify the pid existance
   interval 2                     # check every 2 seconds
   weight 2                       # add 2 points of prio if OK
}

vrrp_instance VI_1 {
   interface  eth0               # interface to monitor
   state BACKUP
   virtual_router_id 54          # Assign one ID for this route
   priority 100                  # 101 on master, 100 on backup
   advert_int 1
   smtp_alert
   virtual_ipaddress {
       10.12.14.140               # the virtual IP
   }
   track_script {
       chk_squid
       chk_haproxy
   }
}

HAProxy

Il demone HAProxy è il responsabile per il bilanciamento di carico dei proxy Squid. Esso riceve le richieste dei client su porta 3128 (ho scelto questa porta in quanto tutti sono abituati al fatto che se c’e’ un proxy Squid questo ascolta su questa porta) e inoltra le sessioni sui proxy Squid attivi in quel momento. Il demone conosce il proxy attivo il quanto effettua un check su entrambi i proxy Squid in modo da esere a conoscenza su quale Squid inoltrare le richieste. Il demone HAProxy è in grado di inoltrare migliaia di sessioni senza avere problemi di performance, leggete la documentazione e i test che sono stati effettuati su questo software se siete curiosi. Allego i file di configurazione dei due HAProxy montati sulle due macchine linux: i due file sono uguale su entrambe le macchine linux. Precisiamo che in questo particolare caso ci limitamo ad avere ‘solo’ due proxy Squid, ma si potrebbe aggiungere altre macchine linux, queste con i solo demone Squid configurato, per avere un cluster con un parallelismo maggiore di due. Si potrebbe avere altre due macchine linux con Squid montato e utilizzare quattro Squid per servire i nostri utenti.

global
daemon
maxconn 256
defaults
mode tcp
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms

frontend squid_frontend
bind *:3128

default_backend squid_backend
backend squid_backend
server node1 10.12.14.141:8001 check
server node2 10.12.14.142:8001 check
# Add more IPs here as required
balance roundrobin

listen stats # Define a listen section called “stats”
bind :9000 # Listen on localhost:9000
mode http
stats enable # Enable stats page
stats hide-version # Hide HAProxy version
stats realm Haproxy\ Statistics # Title text for popup window
stats uri /haproxy_stats # Stats URI
stats auth amin:paperina # Authentication credentials

Squid

Proxy Squid. Squid è un proxy che conosciamo tutti: chi ha messo in pista una macchina proxy con linux lo ha fatto con Squid. E’ robusto, e’ mantenuto aggiornato, e’ gratis e funziona, non c’e’ bisogno di provare qualcosa d’altro. Nel nostro sistema proxy, viene usato molto semplicemente con delle white-list, c’e’ un minimo di configurazione da fare ma la cosa piu’ importate è il cambio di porta di ascolto, nel nostro caso da 3128 viene modificata in 8001. Poi c’e’ il discorso delle white-list ma non mi pare che sia un argomento da trattare.. non ci interessa l’autenticazione, ma anche qui si trova tutto in rete. Invece voglio dirvi come ho fatto a fare in modo che, se per caso la share che condivide le white-list non fosse disponibile ,il sistema comunque continui a funzionare. Ho semplicemente copiate le white-list interessate nella directory /mnt/wl – certo che nel momento del problema non saranno aggiornate, ma sempre meglio che rimanere senza che su un sistema che lavora in white list significa non navigare piu’ da nessuna parte… e poi si potrebbe fare in modo via script che ogni giorno venga smontata la share, copiate le whitelist e rimontata la share..

Conclusioni

Il sistema sta funzionando correttamente, per ora non sono stati riscontrati disservizi, purtroppo non è sottoposto ad un carico pesantissimo, i due nodi sfiorano carico ‘1’ negli ultimi 5 minuti solo all’inizio delle ore mattutine e pomeridiane

Wazuh – A cosa serve

La piattaforma Wazuh offre funzionalità XDR e SIEM per proteggere i carichi di lavoro cloud, container e server. Queste includono l’analisi dei dati di log, il rilevamento di intrusioni e malware, il monitoraggio dell’integrità dei file, la valutazione della configurazione, il rilevamento delle vulnerabilità e il supporto per la conformità normativa.

La soluzione Wazuh si basa sull’agente Wazuh, che viene distribuito sugli endpoint monitorati, e su tre componenti centrali: il server Wazuh, l’indicizzatore Wazuh e la dashboard Wazuh.

  • L’ indicizzatore di Wazuh è un motore di ricerca e analisi full-text altamente scalabile. Questo componente centrale indicizza e memorizza gli avvisi generati dal server Wazuh.
  • Il server Wazuh analizza i dati ricevuti dagli agenti. Li elabora tramite decodificatori e regole, utilizzando l’intelligence sulle minacce per individuare i noti indicatori di compromissione (IOC). Un singolo server può analizzare i dati provenienti da centinaia o migliaia di agenti e scalare orizzontalmente se configurato in cluster. Questo componente centrale viene utilizzato anche per gestire gli agenti, configurandoli e aggiornandoli da remoto quando necessario.
  • La dashboard di Wazuh è l’interfaccia utente web per la visualizzazione e l’analisi dei dati. Include dashboard predefinite per la ricerca di minacce, la conformità normativa (ad esempio, PCI DSS, GDPR, CIS, HIPAA, NIST 800-53), le applicazioni vulnerabili rilevate, i dati di monitoraggio dell’integrità dei file, i risultati della valutazione della configurazione, gli eventi di monitoraggio dell’infrastruttura cloud e altro ancora. Viene inoltre utilizzata per gestire la configurazione di Wazuh e per monitorarne lo stato.
  • Gli agenti Wazuh vengono installati su endpoint quali laptop, computer desktop, server, istanze cloud o macchine virtuali. Forniscono funzionalità di prevenzione, rilevamento e risposta alle minacce. Sono compatibili con sistemi operativi come Linux, Windows, macOS, Solaris, AIX e HP-UX.

Oltre alle funzionalità di monitoraggio basate su agenti, la piattaforma Wazuh è in grado di monitorare dispositivi senza agenti come firewall, switch, router o IDS di rete, tra gli altri. Ad esempio, i dati di log di un sistema possono essere raccolti tramite Syslog e la sua configurazione può essere monitorata tramite interrogazioni periodiche dei dati, via SSH o tramite API.

Zabbix Proxy su container con Sqlite

  1. Su Ubuntu 24.04 installa docker
  2. Lavora in “sudo -s” nella /root
  3. Fai una directory zabbix-proxy
  4. Crea una directory data con dentro sqlite e logs
  5. Dai permessi chmod -R 777 ./data/
  6. Crea un docker compose come quello che vedi qui sotto
  7. Fallo partire: docker “compose up -d”
  8. Controlla che stia su “docker ps” e anche “docker stats zabbix-proxy-sqlite”
  9. Quando si modifica il docker-compose bisogna fare “docker compose down’ e poi ‘docker compose up -d’

docker-compose.yml



services:
  zabbix-proxy-sqlite:
    image: zabbix/zabbix-proxy-sqlite3:7.0-ubuntu-latest
    container_name: zabbix-proxy-sqlite
    restart: unless-stopped

    # Limiti di risorse: proteggiamo la VM da 8GB
    deploy:
      resources:
        limits:
          memory: 1G    # Il container non supererà mai 1GB (ne usa circa 160MB ora)
        reservations:
          memory: 256M  # RAM garantita al boot

    ports:
      - "10051:10051"

    environment:
      # --- Connessione ---
      - ZBX_HOSTNAME=zp01
      - ZBX_SERVER_HOST=10.12.14.56
      - TZ=Europe/Rome

      # --- Database SQLite ---
      - ZBX_DBNAME=zabbixproxy01.sqlite

      # --- Ottimizzazione Performance (per 100 host) ---
      - ZBX_CONFIGCACHESIZE=32M      # Cache per la configurazione degli host
      - ZBX_HISTORYCACHESIZE=16M     # Buffer per i dati prima della scrittura su disco
      - ZBX_HISTORYINDEXCACHESIZE=4M # Velocizza l'indicizzazione dei dati

      # --- Tuning Processi ---
      - ZBX_STARTPOLLERS=10          # Numero di processi per interrogare gli host
      - ZBX_STARTPOLLERSUNREACHABLE=5 # Processi dedicati agli host offline
      - ZBX_STARTTRAPPERS=5          # Per dati inviati attivamente dagli agenti

    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./data/sqlite:/var/lib/zabbix/db_data
      - ./data/logs:/var/lib/zabbix/logs
    logging:
      driver: "json-file"
      options:
        max-size: "10m" # Ogni file di log massimo 10 Mega
        max-file: "3"   # Tiene solo gli ultimi 3 file


Update zabbix proxy containerized

Procedura definitiva per aggiornare un proxy Zabbix containerizzato (SQLite) — versione 7.0.x → 7.0.x

Questa procedura è valida per:

  • proxy Zabbix 7.0.x containerizzati
  • database SQLite interno
  • nessun dato da preservare (proxy online)
  • configurazione gestita via variabili ZBX_*
  • nessun bind‑mount del file di configurazione

È esattamente il modello che ora funziona.

1️⃣ Preparazione

1.1. Verifica versione attuale del proxy

bash

docker exec -it zabbix-proxy-sqlite zabbix_proxy -V

1.2. Verifica che il proxy sia online sul server

(UI → Administration → Proxies)

2️⃣ Scarica l’immagine aggiornata

bash

docker pull zabbix/zabbix-proxy-sqlite3:7.0-ubuntu-latest

Questo garantisce che il nuovo container userà l’ultima build della 7.0 LTS.

3️⃣ Spegni e parcheggia il vecchio container

bash

docker stop zabbix-proxy-sqlite
docker rename zabbix-proxy-sqlite zabbix-proxy-sqlite-old

Questo ti permette un rollback immediato.

4️⃣ Crea il nuovo container (modello corretto)

⚠️ Niente bind‑mount del file di configurazione. ⚠️ Nessun volume per il DB SQLite.

Il comando standard è:

bash

docker run -d \
  --name zabbix-proxy-sqlite \
  --restart unless-stopped \
  -p 10051:10051 \
  -e ZBX_SERVER_HOST="10.12.14.56" \
  -e ZBX_HOSTNAME="NOME_DEL_PROXY" \
  zabbix/zabbix-proxy-sqlite3:7.0-ubuntu-latest

Per gli altri proxy, cambia solo:

  • --name
  • ZBX_HOSTNAME

Esempio:

Codice

zabbixproxy02
zabbixproxy03

5️⃣ Verifica immediata

5.1. Container running

bash

docker ps | grep zabbix-proxy-sqlite

5.2. Log del proxy

bash

docker logs -f zabbix-proxy-sqlite

Devi vedere:

  • “Starting Zabbix Proxy…”
  • “received configuration data from server”
  • nessun errore sed
  • nessun errore sul log file
  • creazione del DB SQLite senza errori

5.3. Versione

bash

docker exec -it zabbix-proxy-sqlite zabbix_proxy -V

6️⃣ Verifica dal server Zabbix

UI → Administration → Proxies → proxy‑name

Controlla:

  • Last seen aggiornato
  • Stato Online
  • Nessun errore

7️⃣ Rollback (se necessario)

bash

docker stop zabbix-proxy-sqlite
docker rm zabbix-proxy-sqlite
docker rename zabbix-proxy-sqlite-old zabbix-proxy-sqlite
docker start zabbix-proxy-sqlite

Rollback istantaneo.

Copia di due directory

Se vuoi fare una copia di due directory su due NAS il comando migliore che tu possa utilizzare è RSYNC:

/bin/rsync -rtlhv –no-p –no-g –no-o –ignore-existing /volume1/a500-Musica/Music/ /volume1/music/

/bin/rsync -rtlhv –no-p –no-g –no-o –ignore-existing /volume1/a500-Photo/Photo/ /volume1/photo/

Sostituzione Sonicwall Alta Affidabilità con due nuove unità

Questa procedura serve a guidare la sostituzione di due firewall Sonicwall in alta affidabilità resi obsoleti dal passare del tempo, con una coppia di firewall in alta affidabilità.

Si assume la nuova coppia sia gia’ stata registrata, provata e configurata con la configurazione della vecchia coppia di firewall.

Si assume che il cluster HA sia funzionante e a regime (Primario Attivo e Secondario Stand by)

Occorre avere a disposizione un pc portatile con interfaccia ethernet configurata su un ip compatibile con l’interfaccia di management del firewall (se di fascia NSa) il quale è di default configurato con l’ip 192.168.1.254/24

  1. Etichettare tutti i cavi
  2. Spegnere il vecchio secondario, che deve essere in STAND-BY ovviamente.
  3. Smontare il vecchio secondario
  4. Montare il nuovo primario al posto del vecchio secondario
  5. Collegare i cavi al nuovo primario ma senza inserire sino a fondo le ethernet in modo che non siano collegate elettricamente ma pronte ad esserlo con una piccola pressione per minimizzare i tempi. L’interfaccia per l’alta disponibilità non deve essere collegata.
  6. Accendere il nuovo primario che (ripeto) non dovra’ avere i cavi elettricamente connessi.
  7. Attendere sino a che il nuovo primario sia pronto all’operativita’ (spie con la chiave inglese spente)
  8. Spegnere il vecchio primario
  9. Spingere le connessioni ethernet del nuovo primario in modo che siano elettricamente connesse.
  10. Effettuare i primi test per verificare che tutto sia perfettamente funzionante.
  11. Nota che l’interfaccia di alta disponibilità non è collegata.

NOTA BENE : In caso di problemi è sufficiente spegnere il nuovo primario ed accendere il vecchio primario per essere nella vecchia situazione sicuramente funzionante.

Se possibile lasciare questa configurazione per qualche giorno, in modo da essere perfettamente certi che il nuovo primario sia operativo esattamente come ci si aspetta.

Inserimento nuova unità secondaria

Per l’inserimento del nuovo secondario è sufficiente smontare il vecchio primario e al suo posto installare il nuovo secondario rispettando l’ordine delle interfacce ethernet. Ora è possibile collegare l’interfaccia di alta disponibilità. Accendere il nuovo secondario e aspettare. Il nuovo primario prenderà in carico il nuovo secondario, gli invierà la configurazione e lo farà ripartire.. dopo circa 10 minuti la pagina della gestione HA dovrebbe mostrare il primario attivo e il secondario in stand-by.

Proxmox aggiornamento da 8.4.16 a 9.1

Oggi 7 gennaio 2026 ho iniziato l’aggiornamento del nostro Proxmox 8.4.16 all’ultima versione. Elenco i passi necessari che ho fatto per questo aggiornamento.

A macro step questi sono i passi:

  • Allineamento di tutti i nodi all’ultima versione di PVE nel mio caso 8.4.16
  • Aggiornamento di CEPH da versione Reef (V.18) a Squid (V.19) su tutti i nodi
  • Aggiornamento di tutti i nodi alla V9.1 di PVE

Aggiornamento di CEPH da Reef a Squid

Questo si fa abbastanza velocemente: è sufficiente modificare le sorgenti ceph con
sed -i ‘s/reef/squid/’ /etc/apt/sources.list.d/ceph.list
e impostare il flag noout:
ceph osd set noout
Seguito da:
apt update
apt full-upgrade

Ovviamente su tutti i nodi.
Il flag di noout deve restare cosi’ sino alla fine dell’aggiornamento.

Aggiornamento da PVE V.8.4.16 a V9.1

Successivamente quando tutti i nodi sono su CEPH Squid si modificano le sorgenti APT in che da bookworm si modifica in trixie con un comando sed:

sed -i ‘s/bookworm/trixie/g’ /etc/apt/sources.list
sed -i ‘s/bookworm/trixie/g’ /etc/apt/sources.list.d/pve-no-subscription.list
sed -i ‘s/bookworm/trixie/g’ /etc/apt/sources.list.d/pve-enterprise.list
sed -i ‘s/bookworm/trixie/g’ /etc/apt/sources.list.d/pve-enterprise.list
sed -i ‘s/bookworm/trixie/g’ /etc/apt/sources.list.d/ceph.list

Per verifica poi fa un:
grep -R “trixie” /etc/apt/sources.list /etc/apt/sources.list.d
dovresti vedere un bel po’ di file che matchano e poi un
grep -R “book” /etc/apt/sources.list /etc/apt/sources.list.d
e non dovrebbe darti nessun risultato
Ora puoi procedere con:
apt update
Seguito da:
apt dist-upgrade
e poi un ‘reboot’
Ovviamente su tutti i nodi.
Quando hai finito dovresti avere solo da togliere il flag noout, basta che lo fai su un nodo
ceph osd unset noout

Il tuo cluster ora è V9.1

Fonti:
https://pve.proxmox.com/wiki/Upgrade_from_8_to_9?utm_source=copilot.com#In-place_upgrade
https://pve.proxmox.com/wiki/Ceph_Reef_to_Squid

OpenCloud

Non installate questo software a meno che non vogliate installare anche il provider di autenticazione keyclock. Secondo me è molto meglio usare nextcloud che gestisce normalmente l’autenticazione doppio fattore TOTP. Lasciate perdere ‘sto coso’.

Disabilitare Hyper-V per abilitare la “nested virtualization” in Vmware Workstation

Fai girare questo script se continui a ricevere l’errore da Vmware Workstation che non puo’ abilitare la “Intel VT-x”

@echo off
echo Disattivazione di Hyper-V e funzionalità correlate…

:: Disattiva Hyper-V e componenti legati
dism /Online /Disable-Feature:Microsoft-Hyper-V-All /NoRestart
dism /Online /Disable-Feature:VirtualMachinePlatform /NoRestart
dism /Online /Disable-Feature:HypervisorPlatform /NoRestart
dism /Online /Disable-Feature:Microsoft-Windows-Subsystem-Linux /NoRestart
dism /Online /Disable-Feature:Containers /NoRestart
dism /Online /Disable-Feature:Windows-Defender-ApplicationGuard /NoRestart

:: Disattiva il caricamento dell’hypervisor all’avvio
bcdedit /set hypervisorlaunchtype off

:: Disabilita la sicurezza basata sulla virtualizzazione (VBS)
reg add “HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard” /v EnableVirtualizationBasedSecurity /t REG_DWORD /d 0 /f
reg add “HKLM\SYSTEM\CurrentControlSet\Control\Lsa” /v LsaCfgFlags /t REG_DWORD /d 0 /f

:: Disabilita Credential Guard (se attivo)
reg delete “HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\CredentialGuard” /f

echo.
echo Riavviare il computer per applicare le modifiche.
pause