12 novembre 2026 · Team VRAMfarm
Il tuo ChatGPT privato: Open WebUI con Ollama o vLLM su una GPU a noleggio
Vuoi incollare in una chat un contratto, una lista clienti o del codice non ancora pubblicato, e preferiresti che non finissero sui server di un’azienda di IA. La risposta è un modello aperto che gira su una GPU a noleggio, dietro Open WebUI, un’interfaccia di chat che si presenta e funziona in modo molto simile a ChatGPT. Qwen3 8B chiede una scheda da 12 GB, Qwen3 32B una da 24 GB, un modello da 70B una da 48 GB. La nostra app pronta Chat IA privata configura da sola i primi due, più MiMo 9B; da quando premi Avvia alla prima risposta passano circa 10 minuti.
L’app pronta: avvia, aspetta, chatta
Scegli Chat IA privata nella dashboard e uno dei tre modelli:
- Qwen3 8B, da una scheda da 12 GB. Veloce, adatto a bozze, riscritture e domande su testi brevi.
- MiMo 9B (Xiaomi, licenza MIT), da una scheda da 12 GB. Dimensioni e velocità simili, e capisce le immagini: trascina uno screenshot, la foto di un documento o un grafico e fai domande.
- Qwen3 32B, da una scheda da 24 GB. Decisamente più intelligente: testi più lunghi, ragionamento, codice. È quello che tiene la maggior parte delle persone.
Il server è pronto in 2–5 minuti, e quei minuti sono gratuiti. Poi l’app installa Open WebUI e scarica il modello, circa 5 GB per l’8B e 20 GB per il 32B, il che richiede altri 5–10 minuti fatturati; i download contano come traffico. La dashboard mostra quando la chat è pronta, e il pulsante Chat la apre nel browser. Se la apri prima vedi una pagina di errore, non un server rotto.
L’app arriva già regolata: 8k token di contesto con una cache a 8 bit, così il modello da 32B resta tutto su una scheda da 24 GB a circa 30 token al secondo, e il modello viene caricato in memoria appena arriva, così la prima risposta non deve aspettarlo. La chat si apre senza login, perché il server è solo tuo; leggi la sezione sulla privacy prima di condividere il link.
I modelli Qwen3 ragionano prima di rispondere, e Open WebUI mostra quel ragionamento ripiegato sopra la risposta. Per le domande veloci aggiungi /no_think al messaggio e la risposta arriva parecchie volte prima. La pagina di Qwen3 e la pagina di MiMo riportano memoria e licenze.
Quale scheda per 8B, 32B e 70B
| Modello | Download | Scheda minima | Velocità per un utente | Prezzo all’ora |
|---|---|---|---|---|
| Qwen3 8B, MiMo 9B | 5–6 GB | 12 GB: RTX 3060 | 40–55 token/s | da 0,12 € |
| Qwen3 8B su una scheda più veloce | 5 GB | 16 GB: RTX 5070 Ti | 90–130 token/s | da 0,24 € |
| Qwen3 14B (da configurare tu) | 9 GB | 16 GB: RTX 4080, RTX 5070 Ti | 45–75 token/s | da 0,31 € |
| Qwen3 32B | 20 GB | 24 GB: RTX 3090, RTX 4090 | 25–40 token/s | da 0,30 € |
| Llama 3.3 70B (da configurare tu) | 43 GB | 48 GB: RTX A6000, L40S | 12–18 token/s | da 0,72 € |
Le velocità sono intervalli indicativi per modelli a 4 bit, ricavati dalla banda di memoria e dai report della community. Oltre gli 8 token al secondo il testo scorre più in fretta di quanto riesci a leggerlo.
Per un modello da 70B, avvia l’app pronta su una scheda da 48 GB e cambia il modello dal terminale (Jupyter → Terminal):
ollama stop qwen3:8b
ollama pull llama3.3:70b
Il download da 43 GB è traffico fatturato e richiede un po’ di tempo. Ricarica la pagina della chat e scegli llama3.3:70b dal menu dei modelli. Con gli 8k di contesto dell’app, un 70B sta in 48 GB; per documenti lunghi ti serve una scheda da 80 GB, come spiegato in far girare un modello da 70B su una GPU.
Fallo da te: Open WebUI con Ollama o vLLM
Su un server vuoto PyTorch puoi mettere in piedi la stessa cosa con pochi comandi, con qualsiasi modello:
curl -fsSL https://ollama.com/install.sh | sh
OLLAMA_CONTEXT_LENGTH=8192 OLLAMA_FLASH_ATTENTION=1 OLLAMA_KV_CACHE_TYPE=q8_0 \
nohup ollama serve > /workspace/ollama.log 2>&1 &
ollama pull qwen3:14b
pip install open-webui
DATA_DIR=/workspace/open-webui OLLAMA_BASE_URL=http://127.0.0.1:11434 \
nohup open-webui serve --host 127.0.0.1 --port 3000 > /workspace/webui.log 2>&1 &
Un server vuoto pubblica solo SSH e Jupyter, quindi apri la chat con un tunnel SSH dal tuo computer: ssh -p <port> -L 3000:localhost:3000 root@<address>, con porta e indirizzo presi dalla scheda del server, poi vai su http://localhost:3000. La guida alla chiave SSH ti aiuta a configurare la chiave. Open WebUI tiene chat, utenti e impostazioni in DATA_DIR, ed è per questo che punta dentro /workspace.
Ollama è il motore giusto per una persona o per pochi. Se molte persone scriveranno nello stesso momento, metti invece vLLM dietro Open WebUI. Raggruppa le richieste parallele, così venti persone che chiedono insieme ricevono ciascuna una risposta quasi alla massima velocità, mentre Ollama risponde ad alcune e mette in coda le altre. Su una scheda da 48 GB, dove Qwen3 32B a 4 bit (circa 19 GB) lascia spazio di cache per circa dieci conversazioni da 8k in contemporanea, scarica il modello di Ollama dalla memoria (ollama stop <model>), avvia vLLM con una chiave, poi aggiungilo in Open WebUI da Admin Panel → Settings → Connections come connessione OpenAI API con l’indirizzo http://127.0.0.1:8000/v1 e la stessa chiave:
pip install "vllm==0.11.0" "transformers>=4.56,<5"
nohup vllm serve Qwen/Qwen3-32B-AWQ --max-model-len 8192 --port 8000 \
--api-key change-me > /workspace/vllm.log 2>&1 &
La versione bloccata è compilata per CUDA 12.8; un vLLM più recente può richiedere un driver più nuovo di quello della macchina. Il confronto tra runtime spiega perché, e quando conviene ciascun motore.
Cosa resta privato e cosa no
Cosa resta sul server. Il modello gira sulla GPU che hai noleggiato. I tuoi prompt, i file che alleghi e le risposte vengono elaborati lì, senza passare dall’API di un’azienda di IA. Anche la ricerca nei documenti di Open WebUI gira in locale, con un piccolo modello di embedding scaricato sul server. Open WebUI prevede la ricerca web e le connessioni ad API di modelli esterni, ma restano spente finché non le aggiungi tu.
Dove si trova il server. È una macchina presso uno dei nostri host verificati, non hardware tuo. Il suo paese è indicato prima dell’avvio, quindi puoi sceglierne uno adatto ai tuoi requisiti. “Privato” qui significa che nessun fornitore di IA vede o conserva le tue conversazioni, che è ciò che serve alla maggior parte delle persone quando lascia un chatbot pubblico.
Il link. L’indirizzo della chat dell’app pronta è un semplice link http su una porta del nostro indirizzo, e si apre senza login. Chiunque abbia il link, o provi le porte del nostro indirizzo finché una risponde, può usare la chat mentre il server è acceso. Non pubblicarlo da nessuna parte, attiva gli account prima di condividerlo (sezione successiva) e, per il materiale riservato, apri la chat con un tunnel SSH come sopra, che cifra la connessione.
Dopo lo stop. Il disco del server viene cancellato. La cronologia delle chat sta in /workspace/open-webui, quindi quando fermi il server scegli di salvare la cartella se vuoi ritrovarla la prossima volta; viene ripristinata sul server successivo, anche su un’altra scheda, a 0,03 € per GB al mese, e la cronologia delle chat di solito sta ben sotto il gigabyte. Il modello invece non viene conservato e si riscarica al prossimo avvio. L’articolo sui file dopo lo stop ha i dettagli.
Condividere la chat con un team
Per un team, attiva gli account di Open WebUI. La cartella dati creata dall’app è stata configurata senza account veri, quindi la strada pulita è avviare Open WebUI con una nuova:
pkill -f "open-webui serve"
DATA_DIR=/workspace/open-webui-team WEBUI_AUTH=True OLLAMA_BASE_URL=http://127.0.0.1:11434 \
nohup open-webui serve --host 0.0.0.0 --port 3000 > /workspace/webui.log 2>&1 &
Il primo account che crei diventa l’amministratore. I colleghi che si registrano aspettano la tua approvazione, oppure crei tu i loro account da Admin Panel → Users. Ognuno ha la propria cronologia di chat; l’amministratore può condividere con tutti modelli, prompt di sistema e raccolte di documenti. Le chat della vecchia cartella restano lì e non vengono spostate. Se questo processo va in crash, la riparazione automatica dell’app riavvia la chat originale senza login, quindi dopo ogni riavvio controlla che la chat chieda ancora il login.
Quanto regge un server: una scheda da 24 GB con Qwen3 32B tramite Ollama va bene per un piccolo gruppo di persone che fa domande ogni tanto. Con dieci o più persone che scrivono nello stesso momento, le risposte cominciano a fare la coda; passa a vLLM come motore e valuta una scheda da 48 GB, così nella cache entrano più conversazioni insieme.
Il costo si calcola per server, non per utente. Una RTX 4090 da 24 GB per 9 ore in 22 giorni lavorativi fa 198 ore, 116,82 € al mese per tutto il team. Un abbonamento a una chat a pagamento costa circa 20–25 € a persona al mese (novembre 2026). Per una persona sola l’abbonamento costa meno, a meno che il punto non sia la privacy. Più o meno da sei persone in su, a seconda del prezzo della scheda del giorno e delle tue ore, un server condiviso costa meno di un abbonamento a testa, con i dati su una macchina che controlli tu.
Qui aiuta la protezione dall’inattività: se nessuno usa la chat, dopo 2 ore senza connessioni né carico sulla GPU ti manda un’email, e un’ora dopo salva la cartella e ferma il server. Per un orario d’ufficio fisso, un piccolo script dalla tua parte (per esempio con cron) può avviare e fermare il server tramite l’API, con un token preso dalle Impostazioni.