L’Intelligenza Artificiale Etica e a Km Zero
Modelli Aperti, Self-Hosting e un Chatbot in Locale (anche senza GPU)
Quando si parla di Intelligenza Artificiale, quello che vi viene in mente sono i grandi colossi tecnologici; magari senza neppure sapere cosa c’è oltre “ChatGPT” e senza conoscere la provenienza geografica di alternative altrettanto valide. Solitamente i loro modelli sono “closed-source” (chiusi). Ma esiste una via alternativa, radicata nella filosofia del software libero: l’AI open-weight, a “pesi aperti” ….open source!
Non si tratta solo di una scelta ideologica, ma di una questione di sovranità digitale, privacy e controllo dei dati—temi cruciali per chi gestisce informazioni sensibili, che si tratti di uno studio professionale o di un progetto personale.
E di oggi la notizia che Nvidia abbia acquistato per circa 13 miliardi di dollari, Hugging Face, la più famosa piattaforma di condivisione di modelli e software AI open source. Il Github dell’AI, quella che i non addetti ricordano o conoscono solo per essere stata “bucata” dall’Agente AI di OpenAI sfuggito dal recinto della SendBox di sviluppo. Si, bucata, come no?!
Ecco la versione ampliata dell’articolo, arricchita con un’alternativa a Ollama per l’esecuzione locale e con l’aggiunta di Open WebUI o AnythingLLM per avere un’interfaccia grafica completa (stile ChatGPT) sul proprio computer.
1. Modelli Aperti vs Modelli Chiusi: Vantaggi e Svantaggi
Prima di passare alla pratica, perchè questa è anche una mini guida, cerchiamo di comprendere perché la scelta del modello conta dal punto di vista etico e operativo.
-
Modelli Chiusi (es. OpenAI, Anthropic, Google):
-
Vantaggi: Prestazioni allo stato dell’arte, pronti all’uso, infrastruttura gestita da terzi con dimunizione dei costi di utilizzo.
-
Svantaggi: Non sai esattamente quali dati siano stati usati per l’addestramento, non puoi ispezionare il codice o i pesi, i dati viaggiano verso server esterni (spesso extra-UE, con problemi di conformità GDPR) e sei soggetto a vendor lock-in e variazioni unilaterali dei costi. Non sai come dove hanno “reperito” i dati di addestramento, magari anche in modo poco etico.
-
-
Modelli Aperti / Open-Weights (es. Llama, Qwen, Mistral, Gemma):
-
Vantaggi: Trasparenza totale. I pesi del modello sono scaricabili e utilizzabili ovunque. Puoi farli girare in locale sul tuo hardware, garantendo la massima privacy (nessun dato esce dalla tua rete) e un’indipendenza totale da connessioni internet o abbonamenti.
-
Svantaggi: Richiedono risorse hardware locali e una minima competenza tecnica per la configurazione iniziale. Una massima competenza per capire cosa fanno.
-
2. Guida Pratica: Motori di Esecuzione in Locale
Per far girare un modello di linguaggio sul proprio computer senza una scheda video dedicata, abbiamo bisogno di un runtime ottimizzato per la CPU. Avere a disposizione una GPU sarebbe meglio, ma questo è un test, ed io i soldi per la GPU o anche per un mini-pc dedicato, non ce li ho; fortunatamente sono sempre stato attento alle risorse e quindi facciamo qualcosa anche per chi non vuol investire 1.000,00 € per un nuovo hardware. Se a qualcuno interessa comunque, per test, e piccoli modelli suggerisco questi minipc da acquistare con almeno 16GB Ram (meglio 2x16) e un disco (veloce) da alemno 1TB:
- Beelink SER8 Ryzen 7 8845HS
- Geekom A8 / A8 Max Ryzen 7 8845HS
- Minisforum UM880 Plus Ryzen 7 8845HS
- GMKtec NucBox K8 Plus AMD Ryzen 7 8845HS
ovviamente in listino hanno tutti anche processori migliori, ma per noi può andare così.
Prerequisiti
Prima di partire, specifico che sto lavorando su un PC Linux. Nello specifico un notebook Lenovo Thinkpad X390, cpu intel i5-8365U con 16GB di RAM. Un notebook professionale ma del 2019, con prestazioni ben lontane anche da un MiniPC con scheda GPU, e paragonabili ad un Intel N150 da pochi centinaia di Euro reperibile nei grandi magazzini.
Tutti i comandi sono quindi eseguiti nel terminale (si, quella finestra nera anni 80).
Opzione A: Ollama (Il più semplice)
Ollama è il motore open source più celebre e immediato.
- Installazione (es. Linux Ubuntu/Mint/Debian/Fedora...etc):
$ curl -fsSL https://ollama.com/install.sh | sh

al termine otterremo:

- Avvio e download di un modello “Tiny” (es. Llama 3.2 1B o Qwen 2.5 1.5B):
$ ollama run llama3.2:1b


Alcuni comandi utili di Ollama
Ollama ha ovviamente dei comandi da terminal per interagire con il software.
Far partire il servizio
$ ollama serve
Elenca tutti modelli scaricati e disponibili
$ ollama list
Poi, c'è comuqnue l'help dei comandi
$ ollama -h
dado@X390:~$ ollama --helpLarge language model runner
Usage: ollama [flags] ollama [command]
Available Commands: serve Start Ollama create Create a model show Show information for a model run Run a model stop Stop a running model pull Pull a model from a registry push Push a model to a registry signin Sign in to ollama.com signout Sign out from ollama.com list List models ps List running models cp Copy a model rm Remove a model launch Launch the Ollama menu or an integration help Help about any command
Comandi di sistema
poi ci sono i comandi di sistema per controllare il servizio, e dobbiamo essere "root"
Se Ollama è configurato per avviarsi in automatico o lo hai gestito tramite systemctl:
Per spegnerlo subito:
$ sudo systemctl stop ollama
Per verificare che sia fermo:
$ sudo systemctl status ollama
Per evitare che si riavvii automaticamente all'accensione del PC (se vuoi disabilitare l'avvio automatico):
$ sudo systemctl disable ollama
(Potrai sempre riattivarilo quando ti serve con sudo systemctl start ollama).
E' spento o acceso
Ollama è un servizio, che se avviato a girare in backgroud, resta sempre acceso anche alla chiusura del terminale e riparte all'avvio. come visto sopra basta controllare se è o meno avviato. Considerando che è ogni servizio "risponde su una porta", e sappiamo che ollama risponde sulla 11434 possiamo vericare con molti comandi se il processo è attivo o meno. Ricordate che se risponde, risponde o dall'interno, o magari anche dall'esterno, e questi possono essere (come per tutti i software) problemi di sicurezza
Vedere se attivo con cURL interrogando l'ulr, ma si può anche visitare da browser
dado@X390:~$ curl http://localhost:11434/Ollama is running
Con ps. ps è un comando che interroga i processi di sistema. nello specifico
dado@X390:~$ ps aux | grep ollamaollama 2236 0.0 0.2 2191544 38092 ? Ssl 11:09 0:00 /usr/local/bin/ollama servedado 19026 0.0 0.0 9172 2364 pts/0 S+ 11:48 0:00 grep --color=auto ollama
ollama è attivo con il PID 2236
oppure, con maggior precisione
dado@X390:~$ sudo netstat -ntap | grep ollama[sudo] password di dado: tcp 0 0 127.0.0.1:11434 0.0.0.0:* LISTEN 2236/ollama
ollama è in attesa solo da localhost (127.0.0.1), sulla porta 11434, da qualsiasi sorgente, sulla porta 2236
se mi collego con il browser vedrei:

e di conseguenza:
dado@X390:~$ sudo netstat -ntap | grep ollamatcp 0 0 127.0.0.1:11434 0.0.0.0:* LISTEN 2236/ollama tcp 0 0 127.0.0.1:11434 127.0.0.1:59112 ESTABLISHED 2236/ollama tcp 0 0 127.0.0.1:11434 127.0.0.1:59114 ESTABLISHED 2236/ollama
Come scaricare e lanciare altri modelli
In Ollama puoi separare le azioni: puoi scaricare un modello senza avviarlo, oppure scaricarlo e lanciarlo contemporaneamente.
Solo download (senza avviarlo subito):
Se vuoi scaricare un modello in background (ad esempio il modello leggero Qwen 2.5 1.5B):
$ ollama pull qwen2.5:1.5b
Scarica e avvia subito:
$ ollama run qwen2.5:1.5b
(Nota: se il modello è già stato scaricato in precedenza, il comando ollama run salterà il download e aprirà immediatamente la chat).
Se volesso consocere tutti i modelli disponibili, ecco il link alla pagina del sito:
https://ollama.com/library
Opzione B: Llama.cpp / LM Studio (L’alternativa flessibile)
Se cerchi un controllo ancora più granulare sulle performance della CPU (gestione dei thread, caricamento parziale su RAM), llama.cpp (e la sua interfaccia desktop LM Studio) rappresenta lo standard d’eccellenza.
- Permette di scaricare direttamente i file in formato
.gguf(pesantemente quantizzati e ottimizzati per girare fluidamente su macchine modeste). - Espone anch’esso un server locale compatibile con le API OpenAI standard, perfetto per collegare strumenti esterni.
Non è oggetto di questo articolo, magari ne scriviamo un altro... ok
3. Diamo una interfaccia al Chatbot: Open WebUI o AnythingLLM
Proseguiamo. Interagire via terminale va bene per i test, ma per un utilizzo quotidiano è comoda un’interfaccia grafica web, magari self-hosted tramite Docker. Insomma, voi tutti siete abituati ad aprire il browser e scrivere, giusto? un uso basico di un LLM, allora possiamo scegliere tra due soluzioni eccellenti:
1. Open WebUI (L’esperienza “stile ChatGPT”)
È l’interfaccia open source più ricca e rifinita per connettersi a Ollama o a endpoint compatibili.
- Caratteristiche: Gestione utenti, supporto RAG (per chattare con i tuoi documenti locali), cronologia delle chat e interfaccia pulita e reattiva.
- Installazione rapida via Docker:
$ docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
Basterà puntare il browser su http://localhost:3000 per avere il tuo assistente grafico privato.
Se non hai docker, è possibile installarlo con 2 comandi:
$ sudo apt install docker.io
$ sudo apt install podman-docker
Ma cos'è? Docker è una piattaforma open source che permette di creare, eseguire e gestire applicazioni all'interno di ambienti isolati chiamati container. Un container è come una scatola chiusa che contiene un'applicazione insieme a tutto ciò di cui ha bisogno per funzionare (codice, librerie, file di configurazione e dipendenze). La famosa SendBox di OpenAI... come vedi non ti stavano parlando di chissà quale magia. I container sono una normalità nel mondo del cloud e non solo.

Anche qui attendiamo il download e l'installazione di qualche giga di dati (quindi dipende dalla vostra linea internet)
Al termine del download, attendiamo qualche minuti e poi puntiamo il nostro Browser (chrome, firefox) all'indirizzo

dove localhost significa: questo computer locale
Premiamo inizia e creiamo il primo account che è anche l'amministratore del sistema:

wow... abbiamo il nostro ChatGPT personale

2. AnythingLLM (RAG Specializzato in Documenti e Privacy)
Se il tuo obiettivo è interrogare file PDF, note o archivi aziendali in locale senza che un singolo byte lasci il PC.
- Caratteristiche: Nasce nativamente per la gestione documentale (RAG locale), indicizza i file sul tuo disco rigido e permette di scegliere quale motore (Ollama o llama.cpp) usare “sotto il cofano”.
- Anche in questo caso, è facilmente distribuibile in pochi secondi tramite container Docker.
4. Integrare l’AI nel proprio flusso: Connettere le API a Thunderbird
Ora che il nostro motore gira in locale (solitamente sulla porta http://localhost:11434 per Ollama o http://localhost:1234 per LM Studio), possiamo esporre le sue API locali per collegarlo ad altri strumenti di uso quotidiano, come il client di posta Mozilla Thunderbird per farci controllare il testo dei messaggi da inviare o farci rispondere… quindi non serve Microsoft Office+Copilot? o Gmail? … no, non serve! Servono le “conoscenze”.
Puoi farlo installando il componente aggiuntivo denominato ThunderAI reperibile qui. Ma non voglio toglierti un po' di divertimento nel provare da solo a farlo.
Sfruttando estensioni dedicate o plugin di produttività che supportano endpoint compatibili con le API OpenAI, puoi configurare il client inserendo l’indirizzo locale come endpoint e selezionando il modello leggero installato. In questo modo potrai abbozzare risposte alle email o riassumere thread lunghi mantenendo una riservatezza assoluta.
Conclusione
Passare a un’AI open source e self-hosted non è solo un esercizio tecnico. È un atto di responsabilità digitale: significa riappropriarsi dei propri dati, scegliere la trasparenza contro l’opacità delle grandi piattaforme e dimostrare che è possibile innovare mantenendo il controllo etico e tecnologico dei propri strumenti di lavoro.
E se le tue risposte sono: “ma cosa vuoi che mi interessi”, “tra poco tanto vado in pensione”, “non sarò certo io a cambiare il mondo”; a me viene da pensare … che non sappiamo pensare.
Ecco la sezione dedicata alla pulizia e disinstallazione completa di tutti i componenti installati (runtime, modelli, interfaccia grafica e container Docker), così da ripristinare il sistema allo stato iniziale in modo pulito.
5. Appendice: Come disinstallare e ripulire tutto
Se hai fatto dei test e desideri rimuovere completamente Ollama, i modelli scaricati, i container Docker di Open WebUI / AnythingLLM e liberare interamente lo spazio su disco, ecco i comandi passo-passo (pensati per ambienti Linux/Fedora).
1. Fermare e riavviare Open WebUI
Se desideri "spengere" il container digita semplicemente:
$docker stop open-webui
Per riavviarlo in futuro ti basterà dare il comando:
$ docker start open-webui
Se vuoi rimuovere del tutto il container (liberando il nome e l'istanza):
$ docker stop open-webui$ docker rm open-webui
(Nota: grazie all'opzione -v open-webui:/app/backend/data che hai usato al momento dell'avvio, i tuoi dati, le chat e le configurazioni salvate non andranno persi, perché sono memorizzati in un volume Docker separato).
Se vuoi vedere lo stato di tutti i container presenti sul tuo PC:
$ docker ps -a
il comando ti mostrerà l'elenco dei container, il loro ID, il nome (open-webui) e se sono attualmente in esecuzione (Up) o fermi (Exited).
Disinstallare Ollama e rimuovere i modelli
Se hai installato Ollama tramite lo script ufficiale, puoi rimuovere l’eseguibile, il servizio di sistema e tutti i modelli scaricati (che si trovano solitamente nella cartella utente .ollama):
- Arresta il servizio Ollama (se in esecuzione):
sudo systemctl stop ollama
sudo systemctl disable ollama
- Rimuovi i file binari e i servizi di sistema:
sudo rm /usr/local/bin/ollama
sudo rm /etc/systemd/system/ollama.service
sudo userdel ollama
sudo groupdel ollama
- Elimina tutti i modelli scaricati e i dati di configurazione (libera lo spazio su disco):
rm -rf ~/.ollama
2. Rimuovere Open WebUI (o AnythingLLM) da Docker
Se hai avviato l’interfaccia grafica tramite Docker, i container e i volumi di dati persistenti si rimuovono con pochi comandi mirati:
- Ferma e rimuovi il container (sostituisci
open-webuicon il nome del container se hai usato AnythingLLM):
docker stop open-webui
docker rm open-webui
- Elimina il volume Docker associato (per cancellare definitivamente chat salvate, utenti e documenti indicizzati):
docker volume rm open-webui
(Nota: se avevi usato AnythingLLM, il comando per il volume sarà docker volume rm anythingllm o simile, a seconda di come lo hai battezzato).
3. Pulizia generale di Docker (Opzionale)
Se vuoi ripulire anche eventuali immagini Docker scaricate per l’installazione che non ti servono più:
docker image prune -a
Con questi passaggi il tuo computer tornerà esattamente allo stato precedente, senza tracce residue né dei motori di inferenza né delle interfacce web.
Informationi
Siamo uno splendido Team di professionisti
diffusi sul territorio
Milano - Livorno - Roma
[@] info@officinaetica.it
[mob.] +39 393 401 3332