Utiliser Ollama depuis un autre ordinateur ou depuis son téléphone, sans l'exposer

Par MV2 de Munim, Inc. Vérifié le 12 octobre 2026 d'après la FAQ d'Ollama, le code source du serveur d'Ollama (server/routes.go), la documentation de Tailscale Serve, la page HTTPS using Tailscale d'Open WebUI et la documentation serveur de LM Studio. Uniquement pour vos propres machines. Cette page a été traduite avec une IA à partir de l'original en anglais ; en cas d'écart, l'original fait foi.

Le conseil habituel est « définissez OLLAMA_HOST=0.0.0.0 » (ou activez Settings → Expose Ollama to the network dans l'application macOS et Windows). Ça marche, mais l'API d'Ollama n'a pas d'authentification : n'importe quel appareil de ce réseau peut alors utiliser vos modèles, les télécharger et les supprimer, et atteindre les points d'accès concernés par les CVE d'Ollama de cette année (en anglais). Si le port est un jour redirigé sur votre box, cela veut dire tout Internet. Choisissez l'option la plus restreinte qui fait l'affaire :

Vous voulezUtilisezQui d'autre peut atteindre Ollama
Un portable à vous, de temps en tempsA. Tunnel SSHPersonne. Rien de nouveau n'est ouvert.
Discuter depuis votre téléphone, chez vous ou ailleursB. Open WebUI via Tailscale ServeSeulement votre tailnet, et seulement via la connexion d'Open WebUI. Ollama reste sur localhost.
Des applications sur d'autres appareils qui parlent à l'API d'Ollama (outils d'un autre PC, n8n, une appli mobile)C. Ollama sur votre tailnetLes appareils de votre tailnet
D'autres machines du même réseau domestiqueD. Réseau local et règle de pare-feuTous les appareils de ce réseau, sans authentification

À éviter : rediriger le port 11434 sur votre box ; utiliser tailscale funnel, ngrok ou cloudflared devant Ollama sans le contrôle d'accès du fournisseur (tous trois le publient sur Internet) ; ou définir OLLAMA_ORIGINS=* « pour que ça marche ». Ce dernier change quels sites web peuvent l'appeler, pas quels appareils (voir la vérification dans le navigateur (en anglais)).

A. Tunnel SSH : un portable, rien à ouvrir

Laissez Ollama sur sa valeur par défaut 127.0.0.1:11434 sur la machine avec le GPU. Depuis le portable :

ssh -N -L 11434:127.0.0.1:11434 you@gpu-box

Tant que la commande tourne, http://127.0.0.1:11434 sur le portable correspond à l'Ollama de la machine GPU : ollama list, Open WebUI et tout ce qui utilise localhost par défaut fonctionnent directement. Testez avec curl http://127.0.0.1:11434/api/version. Si le portable fait tourner son propre Ollama sur 11434, redirigez plutôt un autre port (-L 11435:127.0.0.1:11434) et pointez les clients dessus, par exemple OLLAMA_HOST=127.0.0.1:11435 ollama list.

(Dans la commande, remplacez you@gpu-box par votre nom d'utilisateur et le nom de la machine GPU.) La machine GPU a besoin d'un serveur SSH : sous Linux il est généralement déjà actif ; sous macOS, activez Réglages Système → Général → Partage → Session à distance ; sous Windows, ajoutez la fonctionnalité facultative « Serveur OpenSSH ». Le client ssh est intégré à Windows 10/11, macOS et Linux. Cela passe aussi la vérification de Host d'Ollama (voir plus bas), car la requête est adressée à 127.0.0.1.

B. Depuis votre téléphone : Open WebUI via Tailscale Serve

Pour discuter depuis un téléphone, mettez le téléphone sur un réseau privé avec le serveur et accédez à Open WebUI, pas à Ollama. Ollama ne quitte jamais localhost, et les comptes d'Open WebUI restent la porte d'entrée.

  1. Installez Tailscale sur le serveur et sur le téléphone, et connectez-vous au même compte sur les deux.
  2. Gardez Open WebUI sur localhost. Avec Docker : -p 127.0.0.1:3000:8080 (avec Compose : ports: [ "127.0.0.1:3000:8080" ]), Ollama restant joignable via OLLAMA_BASE_URL comme avant.
  3. Sur le serveur :
    tailscale serve --bg 3000
    tailscale serve status
    Le statut affiche votre adresse, https://<machine>.<tailnet>.ts.net (avec le nom de votre machine et de votre tailnet). Tailscale Serve a besoin que les certificats HTTPS soient activés pour votre tailnet ; s'ils ne le sont pas, la première exécution vous envoie vers une page de consentement. --bg le garde actif après un redémarrage.
  4. Indiquez son adresse à Open WebUI, comme le dit sa page Tailscale : WEBUI_URL=https://<machine>.<tailnet>.ts.net et CORS_ALLOW_ORIGIN=https://<machine>.<tailnet>.ts.net. Recréez le conteneur. (Pourquoi c'est important, et les réglages de cookies et de clé secrète : Open WebUI behind a proxy (en anglais).)
  5. Sur le téléphone, ouvrez cette adresse et connectez-vous. « Sur l'écran d'accueil » en fait une icône d'application. La documentation d'Open WebUI précise que des fonctions du navigateur comme les appels vocaux exigent HTTPS, ce que Serve vous fournit.

Testez : coupez le Wi-Fi du téléphone et rechargez : cela doit toujours marcher en données mobiles. Un appareil qui n'est pas dans votre tailnet ne doit pas du tout charger l'adresse. Si les inscriptions sont ouvertes dans Open WebUI, fermez-les (ENABLE_SIGNUP=False) après avoir créé vos comptes. Pour annuler : tailscale serve reset.

Pas tailscale funnel. Funnel rend la même adresse publique sur Internet. La documentation d'Open WebUI met en garde contre cela et, au vu des avis de sécurité de septembre d'Open WebUI (en anglais), un tailnet privé est le choix par défaut le plus sûr.

C. L'API d'Ollama elle-même sur votre tailnet

Certains clients ont besoin de l'API brute : Ollama sur un autre PC, n8n ou un script sur un autre serveur, des applis mobiles qui se connectent directement à une URL Ollama.

Pourquoi tailscale serve 11434 renvoie 403

L'idée évidente, mettre tailscale serve devant un Ollama qui n'écoute que sur localhost, reçoit 403 Forbidden à chaque requête. Ce n'est pas Tailscale. Quand Ollama écoute sur une adresse de bouclage, son allowedHostsMiddleware vérifie l'en-tête Host de la requête. Il n'accepte que localhost, le nom d'hôte de la machine elle-même, les noms se terminant par .localhost, .local ou .internal, et les IP de bouclage, privées ou d'interfaces locales. Cette vérification protège contre le DNS rebinding depuis des sites web. Serve transmet <machine>.<tailnet>.ts.net, qui n'est pas dans la liste. Vous pouvez le constater sur le serveur lui-même : curl http://127.0.0.1:11434/api/version répond, alors que curl -H "Host: gpu-box.example.ts.net" http://127.0.0.1:11434/api/version reçoit 403. Quand Ollama écoute sur une adresse qui n'est pas de bouclage, il saute cette vérification.

Solution 1 (tout système) : lier Ollama à la seule adresse Tailscale

  1. Récupérez l'adresse IPv4 du serveur sur le tailnet : tailscale ip -4 (par exemple 100.101.102.103).
  2. Définissez OLLAMA_HOST=100.101.102.103:11434 comme l'indique la FAQ d'Ollama. Linux : sudo systemctl edit ollama.service, ajoutez Environment="OLLAMA_HOST=100.101.102.103:11434" sous [Service], puis sudo systemctl daemon-reload && sudo systemctl restart ollama. Application macOS : launchctl setenv OLLAMA_HOST "100.101.102.103:11434", puis quittez et rouvrez Ollama. Windows : quittez Ollama, définissez OLLAMA_HOST dans « Modifier les variables d'environnement pour votre compte », puis lancez-le depuis le menu Démarrer. Laissez désactivé l'interrupteur « Expose Ollama to the network » de l'application.
  3. Vérifiez sur quoi il écoute vraiment (Linux ss -tlnp | grep 11434, macOS lsof -nP -iTCP:11434 -sTCP:LISTEN, Windows netstat -ano | findstr :11434). Vous devez voir l'adresse 100.x, pas 0.0.0.0 ni *.
  4. Les clients utilisent http://100.101.102.103:11434, ou le nom MagicDNS de la machine, comme http://gpu-box:11434. Pour la CLI d'Ollama sur un autre ordinateur : OLLAMA_HOST=http://gpu-box:11434 ollama list.

Deux effets de bord. (1) localhost:11434 ne répond plus sur le serveur lui-même. Pointez aussi les outils locaux vers l'adresse 100.x, par exemple OLLAMA_HOST=100.101.102.103:11434 ollama run ..., ainsi que l'OLLAMA_BASE_URL d'Open WebUI sur la même machine. (2) Si Ollama démarre avant que Tailscale ait son adresse, la liaison échoue. L'unité Linux écrite par l'installateur d'Ollama contient Restart=always et RestartSec=3 : il réessaie donc jusqu'à réussir. Sous macOS et Windows, redémarrez Ollama une fois Tailscale connecté.

Solution 2 (Linux avec ufw) : écouter partout, mais ne laisser entrer que le tailnet

Cela garde localhost:11434 fonctionnel. Définissez OLLAMA_HOST=0.0.0.0:11434 (comme ci-dessus), puis :

sudo ufw allow OpenSSH            # first, if you manage this box over SSH
sudo ufw default deny incoming
sudo ufw allow in on tailscale0 to any port 11434 proto tcp
sudo ufw enable
sudo ufw status verbose            # no other rule should allow 11434

(Les commentaires signifient : la première ligne d'abord si vous administrez cette machine en SSH ; et dans le statut, aucune autre règle ne doit autoriser 11434.) Cela couvre un Ollama installé nativement. Si Ollama tourne dans Docker avec un port publié, ufw ne s'applique pas : Docker écrit ses propres règles de pare-feu (voir Docker can't reach Ollama (en anglais)).

Dans les deux cas : par défaut, chaque appareil de votre tailnet peut joindre tous les autres. Si vous avez partagé la machine avec d'autres personnes, ou si certains appareils vous inspirent moins confiance, limitez le port 11434 à vos propres appareils dans la politique d'accès du tailnet. Pour exiger aussi une clé des applications, placez devant un proxy à clé Bearer (en anglais).

D. Même réseau domestique uniquement : réseau local et règle de pare-feu

C'est acceptable sur un réseau domestique de confiance. Pas sur le Wi-Fi d'un bureau, d'une résidence étudiante, d'un hôtel ou d'un café : tout le monde sur le réseau, invités compris, accède à votre Ollama sans authentification.

  1. Définissez OLLAMA_HOST=0.0.0.0:11434 (mêmes étapes que la solution 1, avec 0.0.0.0) ou activez « Expose Ollama to the network » dans l'application. Quittez complètement Ollama, puis rouvrez-le.
  2. Limitez qui peut se connecter :
  3. N'ajoutez jamais de redirection de port pour 11434 sur votre box.

Testez : depuis un autre appareil du réseau, curl http://<server LAN IP>:11434/api/version (avec l'IP locale du serveur) doit répondre. Depuis un téléphone en données mobiles (Wi-Fi coupé), la même adresse ne doit pas répondre.

LM Studio

LM Studio a ses propres interrupteurs sous Developer → Server Settings. À partir de la 0.4.0, activez Require Authentication avant Serve on Local Network, créez un jeton sous Manage Tokens avec uniquement les droits dont le client a besoin, et faites envoyer Authorization: Bearer <token> par les clients. L'authentification est désactivée par défaut. Laissez Enable CORS désactivé sauf si une page web en a vraiment besoin (la vérification dans le navigateur (en anglais) teste aussi le port 1234). Les options A, C et D fonctionnent de la même façon avec le port 1234, par exemple ssh -N -L 1234:127.0.0.1:1234 you@gpu-box.

Vérifier le résultat

Le script gratuit local-ai-checkup signale les ports d'IA d'une machine joignables depuis le réseau, et vérifie votre version d'Ollama, OLLAMA_ORIGINS et les ports publiés par Docker. Il ne fait que lire et n'envoie rien hors de la machine. Vérifiez ensuite les versions avec le vérificateur de CVE (en anglais). La liste de contrôle pour sécuriser Ollama se trouve sur Mon Ollama est-il exposé ?

Vous préférez une vérification faite pour vous ?

MV2 de Munim, Inc. propose un bilan d'IA locale à 49 USD pour une machine, ou un bilan petit bureau à 199 USD pour jusqu'à 5 machines ou un serveur Ollama ou Open WebUI partagé. Vous recevez un rapport écrit sur ce qui est exposé, risqué ou lent et sur ce qu'il faut corriger en premier, avec les commandes exactes pour votre système et des modèles adaptés à votre GPU. Le rapport est rédigé en anglais. Voir un exemple de rapport (en anglais). Payer 49 USD ou payer 199 USD sur Stripe, puis envoyez à munimversion2@gmail.com la sortie de python3 local_ai_checkup.py --json, votre système d'exploitation et l'usage que vous en faites. MV2 ne demande jamais de mots de passe, de clés ni d'accès à distance.