Di tanto in tanto capita di imbattersi in applicazioni o tool che, pur supportando Ollama, non permettono di configurare un server remoto. Il problema è piuttosto comune: il programma si aspetta di trovare Ollama in locale, in ascolto sulla classica porta 11434, e non offre alcuna opzione per puntare a un host diverso.
La buona notizia è che esiste un piccolo trucco elegante e funzionale per aggirare il limite, senza dover modificare l’applicazione o ricorrere a soluzioni invasive. In questo articolo vediamo passo passo come far credere al software di avere Ollama in locale, mentre in realtà sta parlando con un server remoto.
L’idea di base
Il concetto è semplice:
- installiamo Ollama localmente, così che i client e i programmi che lo cercano “si sentano a casa”
- disabilitiamo il servizio Ollama locale, per evitare che per errore i modelli vengano eseguiti sulla CPU
- creiamo un servizio systemd personalizzato che fa da ponte (proxy TCP) verso il vero server Ollama remoto utilizziando
socatper inoltrare tutte le richieste dalla porta locale11434al server remoto
Dal punto di vista del programma client, Ollama è in locale. Dal punto di vista tuo… sta lavorando un’altra macchina 😉
1. Installare Ollama in locale
Anche se non lo useremo davvero, è importante installare Ollama seguendo le istruzioni ufficiali, in modo da avere binari, percorsi e dipendenze correttamente configurati.
curl -fsSL https://ollama.com/install.sh | shQuesto passaggio serve principalmente a soddisfare le aspettative dei programmi che cercano ollama nel sistema.
2. Fermare e disabilitare il servizio Ollama locale
Una volta installato, fermiamo e disabilitiamo il servizio systemd di Ollama, altrimenti proverà ad avviarsi in locale sulla porta 11434.
systemctl stop ollama
systemctl disable ollamaIn questo modo la porta rimane libera per il nostro “finto” servizio Ollama.
3. Creare il servizio systemd di inoltro verso Ollama remoto
Ora arriva la parte interessante. Creiamo un nuovo servizio systemd che utilizza socat per inoltrare il traffico TCP.
Crea il file:
/etc/systemd/system/remote_ollama.service
con il seguente contenuto, sostituendo x.y.z.w con l’indirizzo IP del tuo server Ollama remoto:
[Unit]
Description=Remote Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/bin/socat -d -d TCP-LISTEN:11434,fork TCP:x.y.z.w:11434
User=root
Restart=always
RestartSec=3
[Install]
WantedBy=default.target
Cosa fa questo servizio? Apre la porta locale 11434, accetta connessioni TCP in ingresso ed inoltra tutto il traffico verso x.y.z.w:11434.
In pratica, è un tunnel trasparente tra il client locale e il server remoto.
4. Abilitare e avviare il servizio
Una volta creato il file, ricarichiamo systemd e avviamo il servizio:
systemctl daemon-reload
systemctl enable remote_ollama
systemctl start remote_ollama
Da questo momento in poi, ogni richiesta a localhost:11434 verrà girata automaticamente al server Ollama remoto, a questo punto puoi usare il client Ollama esattamente come se fosse installato sulla macchina locale.
Ad esempio:
ollama ls
Vedrai i modelli presenti sul server remoto, senza che il programma client si accorga di nulla, ed è proprio questo il bello della soluzione:
zero modifiche alle applicazioni, zero configurazioni speciali, massima compatibilità.
Questa tecnica è particolarmente utile quando usi tool chiusi o rigidi che non supportano server Ollama remoti e vuoi centralizzare i modelli su una macchina dotata di GPU, con una soluzione pulita, reversibile e facile da mantenere.
Inoltre, sfruttando systemd, il servizio è robusto, parte automaticamente al boot e si riavvia in caso di problemi.
Un piccolo hack di quelli che ti fanno risparmiare tempo, risorse e qualche imprecazione 😄
Se utilizzi Ollama in ambienti complessi o distribuiti, questa è decisamente una carta da tenere nel mazzo.