Tutoriel : Accès Ollama distant via un pont local (Socat)

📄 Documentation : Accès Ollama distant via un pont local (Socat)

1. Présentation

Cette configuration permet à une application (type OpenClaw) installée sur un serveur distant (VM Proxmox/Cloud) d’accéder à une instance Ollama située sur un réseau local (PC Windows/Linux derrière une Box), tout en laissant l’application croire qu’Ollama tourne en local sur 127.0.0.1.

Le principe : on crée sur la VM un pont local qui écoute sur 127.0.0.1:11434 et redirige vers l’instance Ollama distante exposée via la box.

2. Prérequis

  • Côté Maison : une redirection de port (NAT) sur votre routeur/box (port 11434/TCP) pointant vers la machine Ollama.
  • Sécurité : restriction de l’IP source sur le routeur/box pour n’autoriser que l’IP publique de votre serveur (OVH/Proxmox).
  • Côté Serveur Distant (VM OpenClaw) : le port 11434 doit être libre (si un Ollama local écoute déjà, il faudra l’arrêter).

Variables à remplacer

  • VOTRE_ADRESSE_DISTANTE : le nom DNS ou l’IP publique qui pointe vers votre box (ex : mon-domaine.example ou 203.0.113.10).

3. Installation de l’utilitaire

Sur le serveur distant (Debian/Ubuntu) :

sudo apt update && sudo apt install socat -y

4. Création du service de redirection (persistance)

Pour éviter de relancer la commande à chaque redémarrage, on crée un service systemd.

1) Créer le fichier de service :

sudo nano /etc/systemd/system/ollama-bridge.service

2) Coller la configuration suivante (remplacez VOTRE_ADRESSE_DISTANTE) :

[Unit]
Description=Pont local vers Ollama distant (socat)
After=network.target

[Service]
Type=simple
# Écoute uniquement en local (127.0.0.1) et redirige vers l'instance Ollama distante
ExecStart=/usr/bin/socat TCP-LISTEN:11434,fork,bind=127.0.0.1 TCP:VOTRE_ADRESSE_DISTANTE:11434
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

3) Activer et démarrer le service :

sudo systemctl daemon-reload
sudo systemctl enable ollama-bridge
sudo systemctl start ollama-bridge

4) Vérifier l’état :

sudo systemctl status ollama-bridge --no-pager

5. Configuration de l’application (OpenClaw)

Dans OpenClaw (ou son fichier de configuration), utilisez l’URL locale :

  • Ollama API URL : http://127.0.0.1:11434

Même si OpenClaw régénère un fichier comme models.json et remet 127.0.0.1, cela restera correct, car socat fournit justement ce endpoint local.

6. Vérification

Depuis la VM OpenClaw :

curl http://127.0.0.1:11434/api/tags

Si le JSON listant vos modèles s’affiche, le pont est opérationnel.

7. Avantages de cette méthode

  • Léger : pas besoin d’installer/maintenir Nginx.
  • Transparent : OpenClaw continue de viser 127.0.0.1:11434.
  • Sécurisé côté VM : le port 11434 n’écoute que sur 127.0.0.1 (pas exposé publiquement).

8. Dépannage rapide

Voir les logs du service :

journalctl -u ollama-bridge -f

Tester l’accès direct à l’instance distante (doit fonctionner depuis la VM) :

curl http://VOTRE_ADRESSE_DISTANTE:11434/api/tags

Conflit de port (11434 déjà utilisé) :

sudo ss -lntp | grep 11434

Si un processus écoute déjà sur 127.0.0.1:11434, il faut l’arrêter ou changer le port local du bridge.

9. Configuration des modèles dans OpenClaw

9.1. Modification du fichier .openclaw/openclaw.json

Ajouter ou modifier les paramètres nécessaires dans le fichier pour configurer les modèles selon vos besoins.

a) Dans la section auth, ajouter la partie pour Ollama :

"auth": {
  "profiles": {
    "zai:default": {
      "provider": "zai",
      "mode": "api_key"
    },
    "mistral:default": {
      "provider": "mistral",
      "mode": "api_key"
    },
    "ollama:default": {
      "provider": "ollama",
      "mode": "api_key"
    }
  }
}

b) Dans la section defaults, ajouter les modèles Ollama :

"model": {
  "primary": "ollama/ministral-gpu:latest"
},
"models": {
  "zai/glm-4.7-flash": {},
  "mistral/mistral-medium-latest": {},
  "mistral/mistral-small-latest": {},
  "mistral/mistral-large-latest": {},
  "mistral/pixtral-large-latest": {},
  "mistral/open-mistral-7b": {},
  "mistral/magistral-medium-latest": {},
  "mistral/magistral-small": {},
  "ollama/glm-4.7-flash:latest": {},
  "ollama/glm4:9b-chat-q5_K_M": {},
  "ollama/glm-4.6:cloud": {},
  "ollama/ministral-3:8b": {},
  "ollama/qwen3-vl:latest": {},
  "ollama/ministral-gpu:latest": {},
  "ollama/gpt-oss:latest": {}
}

9.2. Modification du fichier .openclaw/agents/main/agent/auth-profiles.json

Dans la section profiles, ajouter les informations concernant Ollama :

"profiles": {
  "zai:default": {
    "type": "api_key",
    "provider": "zai",
    "key": "VOTRE_CLE_API"
  },
  "mistral:default": {
    "provider": "mistral",
    "type": "api_key",
    "key": "VOTRE_CLE_API",
    "baseURL": "https://api.mistral.ai/v1"
  },
  "ollama:default": {
    "type": "api_key",
    "provider": "ollama",
    "baseURL": "http://127.0.0.1:11434",
    "key": "ollama"
  }
}