Ollama remoto, ma trasparente: come ingannare le applicazioni che lo vogliono solo in locale

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 socat per inoltrare tutte le richieste dalla porta locale 11434 al 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 | sh

Questo 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 ollama

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


Leave a Reply

Your email address will not be published. Required fields are marked *

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close