01
$
</>
{ }
</>
Go back

LLM Locale su Linux | Il mio chatbot AI personale

Edit page

LLM Locale su Linux

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:

Ecco la macchina su cui ho fatto l’esperimento. Sto girando su Ubuntu 26.04 LTS. L’hardware è questo:

Hardware_llm_locale

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:

  1. 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.
  2. 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:

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ì.

Download_llm_locale

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:

Il CONTRO:

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 Telegram

Segui i miei esperimenti qui:


Edit page
Share this post on:

Next Post
La mia DISTRO Linux in tasca | USB LIVE LINUX PERSISTENTE