
Table of contents
Open Table of contents
LLM Locale su Linux | Il mio chatbot IA personale
Negli ultimi tempi mi sono fatto una domanda molto semplice: ma è davvero necessario inviare ogni singola parola che scrivo, ogni mio file di configurazione, ogni mio appunto personale ai server di qualche colosso tech americano o asiatico per usare un assistente virtuale?
La risposta che mi sono dato è stata un secco: no. Per determinati utilizzi, specialmente per le cose un po’ più personali o legate al mio server, voglio il mio chatbot. Un chatbot che gira sul mio hardware, gestito dalla mia Distro Linux.
Oggi vi racconto passo passo come ho tirato su il mio chatbot AI locale in pochissimi minuti, usando Ollama e Open WebUI, e vi faccio vedere come lo uso nella mia quotidianità.
⚠️ DISCLAIMER: Ogni articolo o pagina di questo blog riflette la mia opinione, la mia esperienza e i miei esperimenti da “Enthusiast Newbie”, a scopo informativo e di intrattenimento. L’informatica è piena di variabili: se decidi di seguire i miei passi e replicare qualche mio esperimento, lo fai sotto la tua esclusiva responsabilità. Backup sempre, rischi mai!
Perché l’ho fatto: Privacy, Controllo e Indipendenza
Innanzitutto, perché ho deciso di fare questo esperimento? I servizi cloud come ChatGPT, Claude o Gemini sono fantastici. Sono velocissimi, potenti… insomma, una comodità assoluta. Ma usandoli tutti i giorni per i miei progetti, ho iniziato a sentire una sottile sensazione di disagio.
Ogni volta che incollavo qualcosa che stavo scrivendo per il blog per fargli analizzare il testo, o per fare una ricerca mirata, mi chiedevo: dove vanno a finire queste informazioni? Chi può leggerle? Chi può farsi i fatti miei? Quando usiamo servizi (gratuiti o a pagamento) nel cloud, noi siamo ospiti in casa d’altri. I nostri dati viaggiano su Internet, vengono elaborati in data center remoti e salvati su database che non controlliamo. Se domani una di queste aziende decide di cambiare i termini di servizio, alzare i prezzi da un giorno all’altro, o bloccare l’accesso al nostro account… rimaniamo a mani vuote.
Quando ho installato il mio modello locale, la prima sensazione che ho provato è stata di pura libertà. Il mio chatbot AI locale funziona completamente offline. Posso staccare il cavo di rete dal PC, disattivare il Wi-Fi, e l’intelligenza artificiale continua a rispondermi con la stessa identica velocità. Nessuna telemetria, nessun tracciamento, nessun dato che esce dalla mia rete locale. Posso finalmente condividere con l’AI i miei documenti più personali. Per me questo concetto di “sovranità dei dati” sta diventando sempre più vitale.
Un altro motivo fondamentale è la gestione dei limiti. Quante volte vi è capitato di fare una sessione intensa di brainstorming con un’AI cloud e veder comparire il messaggio: “Hai raggiunto il limite di messaggi, riprova tra 3 ore”? A me tantissime volte, e mi spezzava totalmente il flusso di lavoro. Con un modello locale non esistono limiti di messaggi. Non esistono code. Non c’è nessun server esterno intasato perché c’è il picco di traffico mondiale. Se la mia GPU ce la fa, il chatbot risponde. Fine.
3. Il mio Setup (Hardware & OS)
Volevo qualcosa di pulito, semplice da usare e facilmente replicabile se un domani dovessi cambiare PC o reinstallare il sistema operativo (sapete quanto mi piace smanettare con le distro). Ho diviso la soluzione in due componenti principali:
- Il “Cervello” (Backend): Il motore d’inferenza che fa i calcoli matematici pesanti, ovvero Ollama.
- L’Interfaccia Grafica (Frontend): Quella che mi permette di utilizzarlo con semplicità, ovvero Open WebUI. Mi permette di gestire più utenti, salvare le cronologie, caricare file PDF da far analizzare all’AI e persino cambiare modello al volo.
Ecco la macchina su cui ho fatto l’esperimento. Sto girando su Ubuntu 26.04 LTS. L’hardware è questo:
- CPU: AMD Ryzen 5 7600
- RAM: 16 GB DDR5
- GPU: NVIDIA RTX 4060 Ti (8 GB di VRAM)

Insomma, un hardware da gamer medio, nulla di spaziale! Quando ho iniziato questo test temevo che servissero server da migliaia di euro. La verità è che oggi, grazie alle tecniche di quantizzazione dei modelli (ovvero come i modelli vengono “compressi” per occupare meno memoria senza perdere troppa intelligenza), si possono far girare LLM da 4 o 8 miliardi di parametri su PC desktop assolutamente normali.
La Fase Pratica: Come ho configurato l’ambiente
Per mettere su questo chatbot ho perso davvero pochissimo tempo.
Passo 1: Installazione di Ollama
Per prima cosa ho installato Ollama direttamente sul mio host Ubuntu, lanciando il comando ufficiale:
curl -fsSL [https://ollama.com/install.sh](https://ollama.com/install.sh) | sh
Ollama riconosce in automatico la RTX 4060 Ti e i driver CUDA del sistema. Tuttavia, siccome Open WebUI girerà dentro un container Docker, dovevo essere sicuro che il container potesse raggiungere le API di Ollama sull’host. Di default, per sicurezza, Ollama ascolta solo su localhost (127.0.0.1).
Per farlo ascoltare su tutte le interfacce di rete, ho modificato la configurazione del servizio systemd:
sudo systemctl edit ollama.service
Nel file che si è aperto, ho aggiunto queste esatte righe per forzare l’host a 0.0.0.0:
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
Poi ho riavviato il servizio per fargli digerire la novità:
sudo systemctl daemon-reload && sudo systemctl restart ollama
Ora le API di Ollama sono pronte e spalancate per la nostra rete interna!
Passo 2: Open WebUI
Ora passiamo al frontend. Sul sito di Open WebUI forniscono il comando docker run per fare il pull dell’immagine e istanziare il container… ma preferisco Docker Compose.
Ho creato una cartella dedicata chiamata ai-stack e al suo interno ho preparato il file docker-compose.yml. Ecco il codice esatto che ho usato:
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
restart: always
ports:
- "3000:8080"
environment:
- OLLAMA_BASE_URL=[http://host.docker.internal:11434](http://host.docker.internal:11434)
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- open-webui-data:/app/backend/data
volumes:
open-webui-data:
Due piccoli appunti:
OLLAMA_BASE_URL=http://host.docker.internal:11434: Dice a Open WebUI di non cercare Ollama dentro la rete interna isolata di Docker, ma di contattare direttamente l’host esterno.extra_hosts: - "host.docker.internal:host-gateway": Permette al container di risolvere l’indirizzo e dialogare direttamente con il servizio Ollama installato nativamente su Ubuntu.
Passo 3: Il Primo Avvio
Una volta salvato il file, ho digitato il classico:
docker compose up -d
Ho visto Docker scaricare l’immagine, creare il volume persistente per le mie chat e avviare il servizio. (Nota: in alternativa, sul sito di Open WebUI, trovate anche dei comandi pronti per tirare su un container “all-in-one” che comprende sia l’interfaccia che Ollama, se non volete installare Ollama nativamente sull’host).
La selezione dei modelli e i primi test
A questo punto ho aperto il browser e sono andato all’indirizzo http://localhost:3000. Mi sono trovato davanti la schermata di benvenuto di Open WebUI. Al primo accesso vi chiede di creare un account amministratore locale (ricordatevi: tutto risiede sulla vostra macchina, non sta inviando credenziali a nessuno).
Una volta dentro, l’interfaccia era vuota. Mancava il “cervello”: i modelli!
Avendo Ollama esposto sull’host, posso scaricare i modelli in due modi. Il primo è tramite il fido terminale:
ollama run llama3.2
ollama run qwen2.5-coder:7b
Ho scelto questi due nello specifico:
- Llama 3.2 (3B): Leggerissimo, preciso per i classici “compiti per casa” come traduzioni, riassunti o definizioni veloci.
- Qwen2.5-Coder (7B): È fulmineo sulla RTX 4060 Ti, consuma pochissima VRAM ed è il re indiscusso per il coding (nel mio caso utilissimo per script Bash o file YAML/configurazioni).
In alternativa al terminale, si può fare direttamente dalla chat di Open WebUI: basta copiare il nome esatto del modello dalla Libreria ufficiale di Ollama, incollarlo nel campo di ricerca interno all’interfaccia e scaricarlo da lì.

I modelli compresi tra i 3B e gli 8B parametri rappresentano per il mio hardware il punto di equilibrio perfetto tra velocità di risposta e qualità del ragionamento. Ma cosa sono questi famosi parametri? In soldoni: sono i “pesi” matematici interni che il modello ha calibrato durante l’addestramento. La conoscenza, i fatti, le regole logiche sono “salvati” direttamente in questi miliardi di numeri. Un modello piccolo da 3B parametri ha memorizzato le nozioni generali e i concetti cardine. Se gli chiedi un dettaglio iper-specifico o raro, non avendolo nei suoi “pesi”, cercherà di inventarlo (le famose allucinazioni).
Casi d’uso reali:
Ora voglio farvi vedere come uso davvero questo chatbot nella mia routine per il canale e il blog.
Prima però, vi svelo un trucco per risolvere uno dei problemi più fastidiosi degli LLM locali quantizzati: la tendenza a bloccarsi in un loop infinito (“Aspetta, fammi riflettere…”) finché non si esaurisce il contesto, sprecando token e non dando la risposta. Per evitarlo, Open WebUI permette di creare dei Workspace. Per ogni caso d’uso creo un workspace specifico, scelgo il modello di riferimento e gli do istruzioni di sistema (System Prompt) rigidissime per “indirizzarlo” ed evitargli deliri filosofici.
Caso d’uso 1: Refactoring di Script Bash
Ho creato un workspace dedicato con Qwen2.5-Coder (7B).
Nel System Prompt ho inserito una direttiva drastica: NON generare blocchi di pensiero, vai subito alla risposta finale e restituisci solo il codice.
Nei parametri avanzati ho alzato il num_ctx (la finestra di contesto) a 16384. Un contesto più alto evita che il modello “dimentichi” pezzi di codice a metà conversazione.
Gli incollo lo script bash che uso per monitorare il mio server domestico (quello che mi invia i report su Telegram) e gli chiedo una code-review. La velocità di generazione non è istantanea come ChatGPT, ma è assolutamente accettabile. E la cosa più importante? Sto analizzando la struttura della mia rete locale e l’AI non sta mandando questi dati a nessuno. Zero preoccupazioni di privacy.
Caso d’uso 2: Analisi di Documenti Riservati (RAG Locale)
Una delle funzionalità più clamorose di Open WebUI è la gestione dei documenti tramite RAG (Retrieval-Augmented Generation). Posso caricare un PDF di 500 pagine direttamente nella chat e interrogarlo. Gli ho dato in pasto il pdf “learning materials” fornito dalla LPI (Linux Professional Institute) Gli chiedo: “Fammi un riassunto della sezione relativa al bootloader”. L’AI “legge” il documento locale, trova l’informazione e me la restituisce inserendo perfino la citazione e la pagina di riferimento!
Ho replicato questo setup anche sul mio portatile da battaglia (senza scheda grafica dedicata). I modelli da 2B/3B parametri volano anche lì usando solo la CPU. Spesso mi trovo a lavorare in posti dove la connessione a internet è inesistente o fa pena, e avere un compagno di lavoro locale per formattare testi, generare snippet o cercare idee è una vera salvezza.
Ricerca Web (Quando il locale non basta)
Se mai vi servisse un’informazione freschissima che il vostro piccolo modello locale non conosce, Open WebUI vi permette di abilitare un toggle per la Ricerca Web. Il sistema interroga internet, estrae i contenuti dei siti e li passa come contesto extra al vostro modello locale. Quando avete finito e volete tornare in modalità “bunker”, basta disattivare l’interruttore.
Considerazioni Finali: Pro e Contro
Tirando le somme: vale davvero la pena sbattersi (che poi, come avete visto, è questione di minuti) per crearsi un’IA locale su Linux? Per me la risposta è assolutamente sì.
✅ I Miei PRO:
- Privacy Totale: I miei dati, i miei script e i miei pensieri non escono dalla mia stanza. E già solo questo vale il biglietto.
- Affidabilità e Disponibilità: Funziona sempre. Che ci sia un down globale dei server o che io sia su un treno senza campo, il mio chatbot è lì.
- Libertà di Esplorazione: Posso scaricare decine di modelli diversi, testarli e confrontare i loro ragionamenti senza alcun limite di utilizzo.
- Costo Zero: Nessun abbonamento da 20€/30€ al mese.
❌ Il CONTRO:
- Potenza di calcolo limitata: Dobbiamo essere realisti. Un modello da 8B che gira sulla nostra scheda video va benissimo per l’80% delle task quotidiane, ma non avrà mai la sterminata conoscenza enciclopedica o la capacità di logica pura di un mostro proprietario da trilioni di parametri fatto girare su un supercomputer industriale.
Sono felicissimo di questo esperimento. La combo Ollama + Open WebUI su Docker è diventata parte integrante del mio flusso di lavoro. Mi dà quella tranquillità, quell’indipendenza e quel sano gusto per il fai-da-te che solo il mondo Linux e Open Source sanno regalare.
Ciao e al prossimo esperimento! 🐧
Ti è piaciuto l'articolo?
Lascia un commento, il tuo parere, i tuoi consigli... Partecipa alla Discussione sul Gruppo Telegram!!!
Unisciti al Gruppo TelegramSegui i miei esperimenti qui:
- YouTube: @enthusiastnewbie
- Sito Web: enthusiastnewbie.com
- Ko-Fi: enthusiastnewbie
- Social: Instagram (@enthusiast_newbie)