Debian: installare Ollama ed impostare il proxy

Cos’è Ollama

Ollama è una piattaforma open source che semplifica l’esecuzione locale di modelli linguistici di grandi dimensioni (LLM) e modelli di embedding su Windows, macOS e Linux. In pratica, gestisce download, archiviazione, caricamento e avvio dei modelli, esponendoli anche tramite una API HTTP locale sulla porta 11434. Non è sicuramente il sistema più performante, ma è il più pratico da utilizzare per testare modelli, soprattutto se si vuole sperimentare velocemente tra più modelli.

È utile quando si vogliono mantenere dati e inferenza all’interno della propria infrastruttura: ad esempio per riassumere documenti, classificare testi, creare assistenti interni o integrare un modello in un’applicazione senza inviare contenuti a servizi cloud esterni.

Ollama espone un endpoint compatibile con le API OpenAI all’indirizzo http://localhost:11434/v1, quindi può essere integrato facilmente in molte librerie e applicazioni esistenti.

Requisiti minimi

I requisiti dipendono molto dal modello scelto. Per iniziare con modelli piccoli può bastare un computer moderno; per modelli più grandi servono RAM, storage e, idealmente, una GPU dedicata.

Come indicazione pratica per un primo utilizzo su server, una configurazione con almeno 16 GB di RAM, circa 12 GB di spazio libero e 4 core CPU è un punto di partenza ragionevole. Chiaramente la presenza di un GPU permette di avere risultati più interessanti.

Installazione su Linux

Su Debian, Ubuntu e distribuzioni derivate, aggiorna prima il sistema:

sudo apt update
sudo apt upgrade -y

Poi installa Ollama con lo script ufficiale:

curl -fsSL https://ollama.com/install.sh | sh

Lo script installa il binario e, nella maggior parte dei casi, configura anche il servizio di sistema. Puoi verificare che il server sia attivo con:

systemctl status ollama

Se non è in esecuzione, avvialo manualmente con:

systemctl start ollama

Scaricare ed eseguire un modello

Per scaricare un modello:

ollama pull llama3.1:8b

Per avviare una conversazione da terminale:

ollama run llama3.1:8b

Per verificare che il server risponda:

curl http://localhost:11434

Se tutto funziona, Ollama restituisce il messaggio Ollama is running.

Configurare un proxy in uscita

Se il server si trova in una rete aziendale o dietro un firewall, Ollama potrebbe non riuscire a scaricare i modelli. In questo caso puoi impostare le variabili d’ambiente standard HTTP_PROXY, HTTPS_PROXY e NO_PROXY.

Esempio per una sessione di terminale:

export HTTP_PROXY="http://proxy.azienda.local:3128"
export HTTPS_PROXY="http://proxy.azienda.local:3128"
export NO_PROXY="localhost,127.0.0.1"
ollama pull llama3.1:8b

Se il proxy richiede autenticazione, la sintassi è:

export HTTPS_PROXY="http://utente:password@proxy.azienda.local:3128"

Rendere permanente l’environment con systemd

Se Ollama è gestito da systemd, modifica il servizio:

sudo systemctl edit ollama

Aggiungi:

[Service]
Environment="HTTP_PROXY=http://proxy.azienda.local:3128"
Environment="HTTPS_PROXY=http://proxy.azienda.local:3128"
Environment="NO_PROXY=localhost,127.0.0.1"

Poi ricarica e riavvia il servizio:

sudo systemctl daemon-reload
sudo systemctl restart ollama

In questo modo anche i download dei modelli effettuati dal servizio passeranno attraverso il proxy aziendale.

Altre variabili utili da per utilizzare nel file di configurazione di systemd:

Environment="OLLAMA_HOST=0.0.0.0:11435"
Environment="OLLAMA_ORIGINS=*"

# per abilitare il debug in journalctl -uollama -f
#Environment="OLLAMA_DEBUG=1"

# aumento i thread del Go runtime - OK
Environment="GOMAXPROCS=64"
# Riduce instabilità su multi-GPU - OK
Environment="HSA_ENABLE_SDMA=0"
# Assicura che tutte e 3 le MI210 siano visibili - OK
Environment="ROCR_VISIBLE_DEVICES=0,1,2"
# Code hardware per GPU - OK
Environment="GPU_MAX_HW_QUEUES=4"

# --- MEMORIA ---
#Numero massimo di modelli caricati in memoria - OK
Environment="OLLAMA_MAX_LOADED_MODELS=5"
#mantiene il modello il memoria - OK
Environment="OLLAMA_KEEP_ALIVE=-1"
#Riserva 2GB per operazioni di sistema GPU - OK
Environment="OLLAMA_GPU_OVERHEAD=2147483648"

# --- PERFORMANCE ---
#Riduce uso memoria, più veloce su contesti lunghi - OK
Environment="OLLAMA_FLASH_ATTENTION=1"
#Usa circa metà della memoria rispetto a f16 - OK
Environment="OLLAMA_KV_CACHE_TYPE=q8_0"
# Permette lo scheduling dei modelli su tutte le GPU - OK
Environment="OLLAMA_SCHED_SPREAD=1"
# Cache multi-utente # da disabilitare, altrimenti mi cumula i prompr simile e finisce contesto
Environment="OLLAMA_MULTIUSER_CACHE=0"
# Imposta il numero di richieste parallele per modello - OK
Environment="OLLAMA_NUM_PARALLEL=6"
Environment="OLLAMA_MAX_QUEUE=512"
# Override della context window di default (4096) - OK
# Considera che OLLAMA_CONTEXT_LENGTH va divisa tra i OLLAMA_NUM_PARALLEL, inserire quindi una dimensione adeguata o ridurre le richieste parallele
Environment="OLLAMA_CONTEXT_LENGTH=131072"

Configurare un reverse proxy con Nginx

Il reverse proxy: un Nginx posto davanti a Ollama per gestire HTTPS, dominio, log, limiti di accesso o autenticazione. Questa soluzione è utile se Ollama deve essere raggiunto da altre macchine, ma va configurata con attenzione perché l’API non dovrebbe restare esposta liberamente su Internet.

Per impostazione predefinita, Ollama ascolta su 127.0.0.1:11434; la variabile OLLAMA_HOST controlla indirizzo e porta di ascolto.

Esempio Nginx

Crea il file /etc/nginx/sites-available/ollama.conf:

server {
listen 80;
server_name ai.miodominio.it;

location / {
proxy_pass http://127.0.0.1:11434;
proxy_http_version 1.1;

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

# Importante per streaming e risposte lunghe
proxy_buffering off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
}

Attiva la configurazione:

sudo ln -s /etc/nginx/sites-available/ollama.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Per HTTPS, aggiungi un certificato con Certbot:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d ai.miodominio.it

Proteggere l’accesso

Non esporre Ollama direttamente su Internet senza protezioni. Le opzioni più solide sono:

  • Mantenere Ollama in ascolto su 127.0.0.1 e farlo raggiungere solo tramite reverse proxy.
  • Limitare l’accesso al reverse proxy con firewall, VPN come WireGuard o Tailscale, oppure autenticazione HTTP.
  • Usare HTTPS con Let’s Encrypt se l’accesso avviene through dominio pubblico.
  • Non pubblicare la porta 11434 sul router o nel firewall.

Ioltre, per abilitare l’uso di un token di autenticazione nella chiamata, consiglio di leggere questo precedente post.

Verifica finale

Dopo la configurazione, prova a interrogare Ollama attraverso Nginx:

curl http://ai.miodominio.it/api/tags

Se ricevi un JSON con l’elenco dei modelli installati, il reverse proxy funziona correttamente.

enjoy!

Ti interessa acquistare un dominio a prezzi ultraconvenienti? clicca qui

Se hai trovato utili le informazioni su questo blog,
Fai una donazione!
Clicca sul bottone qui sotto o almeno clicca sul banner pubblicitario 🙂



Commenta