Partager Ollama sur son réseau local (famille, équipe)
Faire tourner Ollama comme un serveur réseau local change tout : un seul GPU, plusieurs utilisateurs. Le conjoint sur son MacBook, le développeur sur son poste fixe, l'enfant sur la tablette — tout le monde tape sur le même daemon, sans dupliquer 30 Go de modèles. Ce guide montre comment exposer Ollama sur le réseau local proprement, sans l'ouvrir au monde entier.
#Pourquoi un serveur Ollama sur réseau local ?
Par défaut, Ollama écoute uniquement sur 127.0.0.1:11434 — donc seule la machine sur laquelle il tourne peut y accéder. C'est sûr, mais ça gâche un GPU. Une RTX 4090 ou un Mac Studio M4 Max sert 3 à 5 utilisateurs simultanés sans broncher sur des modèles 7B–14B Q4.
- Mutualiser la VRAM
- Un seul modèle chargé en mémoire pour toute la maison ou l'équipe — pas de copies redondantes.
- Centraliser les modèles
- 150 Go de GGUF stockés une fois sur le serveur, jamais sur les laptops.
- Standardiser les versions
- Tout le monde tape sur le même Llama 3.1 8B Q4 — fini les écarts de qualité entre postes.
- Économiser la batterie
- Les laptops ne calculent rien — ils envoient un POST HTTP au serveur fixe.
#Prérequis
- Ollama installé
- Sur la machine qui hébergera le serveur (Linux, macOS ou Windows). Idéalement la machine avec le meilleur GPU.
- IP fixe ou DNS local
- Le serveur doit garder la même IP. Réservation DHCP côté box ou IP statique. Sinon, hostname.local via mDNS.
- Réseau de confiance
- Wi-Fi domestique avec WPA2/3, ou VLAN d'équipe. Pas de Wi-Fi public partagé.
- Droits admin
- Pour modifier le firewall et le service système (systemd, launchd, services.msc).
#1. Exposer Ollama avec OLLAMA_HOST=0.0.0.0
Ollama lit deux variables d'environnement clés : OLLAMA_HOST définit l'interface d'écoute, OLLAMA_ORIGINS définit les origines CORS autorisées. Pour passer en mode serveur, on bascule OLLAMA_HOST de 127.0.0.1 à 0.0.0.0 (toutes les interfaces).
#Linux (systemd)
Sur les distributions modernes, Ollama tourne via systemd. On édite l'override du service plutôt que le fichier de base — ça survit aux mises à jour du package.
Dans l'éditeur qui s'ouvre, collez ce bloc entre les lignes commentées :
Vérifiez que ss -tlnp affiche bien Ollama sur 0.0.0.0:11434 et plus seulement 127.0.0.1:11434.
#Windows
Sous Windows, Ollama lit les variables d'environnement utilisateur au démarrage. La méthode propre : ajouter OLLAMA_HOST dans les variables utilisateur, puis relancer le service depuis la barre des tâches (clic droit sur l'icône → Quit Ollama, puis relancer).
#2. Ouvrir le firewall pour le LAN
Une fois Ollama en écoute sur 0.0.0.0, le firewall doit autoriser le port 11434 — mais uniquement depuis le réseau local. Jamais ouvrir 11434 sur Internet : Ollama n'a aucune authentification native.
#UFW (Ubuntu, Debian)
Adaptez 192.168.1.0/24 à votre sous-réseau réel (ip a pour vérifier). Si vous laissez ufw allow 11434 sans restriction de source et que la machine est exposée derrière un port-forward, vous offrez Ollama au monde entier — anonymement.
#iptables (sans UFW)
#Windows Defender Firewall
#3. Spécificités macOS
Sur macOS, Ollama tourne comme une app GUI (icône dans la barre de menus) qui lance le daemon en arrière-plan. Les variables d'environnement définies dans le shell ne sont pas vues par l'app GUI — il faut passer par launchctl ou modifier l'app.
- 01Quitter Ollama complètementCliquez sur l'icône llama dans la barre de menus → Quit Ollama. Vérifiez avec ps aux | grep ollama que plus rien ne tourne.
- 02Définir la variable au niveau launchctlDans un terminal : launchctl setenv OLLAMA_HOST "0.0.0.0:11434" puis launchctl setenv OLLAMA_ORIGINS "*". Ces variables sont héritées par toutes les apps GUI lancées ensuite.
- 03Relancer Ollama.appOuvrez Applications → Ollama.app. L'app va relire l'environnement et écouter sur 0.0.0.0.
- 04Persister au rebootlaunchctl setenv ne survit pas au redémarrage. Pour le rendre permanent, créez un LaunchAgent ~/Library/LaunchAgents/com.ollama.env.plist (voir doc Apple) ou réexécutez les setenv depuis un script de démarrage.
#4. Connecter les clients
Depuis une autre machine du LAN, l'IP du serveur remplace localhost dans toutes les commandes et configurations.
Pour la CLI ollama elle-même, on exporte OLLAMA_HOST côté client — la commande ollama run pointe alors vers le serveur distant.
- Open WebUI
- Dans Settings → Connections, ajoutez l'URL http://192.168.1.42:11434 comme Ollama API URL. L'interface tourne sur n'importe quelle machine du LAN.
- Continue.dev (VS Code)
- Dans config.json, le champ apiBase du provider ollama pointe vers http://192.168.1.42:11434.
- LangChain Python
- Ollama(base_url="http://192.168.1.42:11434", model="llama3.1:8b") — identique au localhost en local.
#5. Reverse proxy Nginx + authentification basique
Exposer Ollama nu sur le LAN va pour la famille, mais pour une équipe il vaut mieux ajouter au minimum une auth HTTP Basic et un peu de logging. Nginx fait ça en 20 lignes.
Important : avec ce setup, Ollama doit repasser sur 127.0.0.1:11434 (pas 0.0.0.0). Nginx écoute en public sur le port 8080, vérifie l'IP et le mot de passe, puis transfère vers Ollama en local. Les clients tapent désormais sur http://alice:[email protected]:8080.
#Bonnes pratiques de sécurité
- Restreindre par IP source au firewall
- Belt and suspenders : même avec Nginx, gardez la règle UFW/iptables. Un bug Nginx ou un mauvais bind peut exposer 11434 directement.
- Désactiver /api/create depuis l'extérieur
- Cette route permet de pousser un Modelfile arbitraire. Avec Nginx, ajoutez location /api/create { return 403; }.
- Logger les requêtes
- Nginx access_log montre qui appelle quoi. Utile pour spotter une fuite d'IP serveur ou un client mal configuré qui spam.
- Quotas par utilisateur
- Pas natif chez Ollama. Pour limiter Bob qui fine-tune un Llama 70B à 3h du matin, regardez du côté de LiteLLM ou Open WebUI comme couche middleware.
- Sauvegarder ~/.ollama
- Le serveur centralisé devient un single point of failure. Le dossier des modèles peut peser 100+ Go — au minimum un script rsync vers un disque externe.
#Dépannage
- Connection refused depuis un client
- Ollama écoute toujours sur 127.0.0.1. Vérifiez ss -tlnp | grep 11434 sur le serveur — si ça affiche 127.0.0.1:11434, la variable OLLAMA_HOST n'est pas vue par le service. Recheckez systemctl show ollama | grep Environment.
- Connection timed out
- Le firewall bloque. Testez nc -zv 192.168.1.42 11434 depuis le client : si timeout, c'est le firewall. Si refused, c'est Ollama qui n'écoute pas.
- CORS error dans Open WebUI
- OLLAMA_ORIGINS=* manquant ou pas appliqué. Pour debug : curl -H "Origin: http://autre-machine" -I http://192.168.1.42:11434 — la réponse doit contenir Access-Control-Allow-Origin.
- macOS : variable ignorée après redémarrage
- launchctl setenv ne persiste pas. Il faut un LaunchAgent. Alternative pragmatique : un script ~/start-ollama.sh qui fait launchctl setenv + open Ollama.app, à lancer manuellement après chaque reboot.
- Lenteur soudaine multi-utilisateurs
- Ollama traite les requêtes en file d'attente par modèle. À 3 utilisateurs simultanés sur un 14B, le 3e attend. OLLAMA_NUM_PARALLEL=2 (env var) permet 2 requêtes en parallèle au prix de plus de VRAM.
- Le modèle se décharge entre les requêtes
- Par défaut, Ollama décharge un modèle 5 minutes après la dernière requête. OLLAMA_KEEP_ALIVE=24h force le maintien en VRAM — crucial pour un serveur partagé.
#Pour aller plus loin
Le serveur Ollama partagé est la brique de base d'un setup multi-utilisateurs. Trois directions naturelles ensuite :
- Ajouter une interface chat partagée
- Le guide Open WebUI avec Ollama : guide complet détaille la mise en place d'un front ChatGPT-like multi-utilisateurs qui se branche sur ce serveur.
- Déployer en production avec Docker
- Le guide Déployer un LLM en production avec Docker Compose montre la même architecture en containerisé avec Traefik et HTTPS.
- Étendre à un chatbot intranet
- Le guide Déployer un chatbot IA pour son équipe sur intranet ajoute auth SSO, monitoring et sauvegarde des conversations.
Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.