Avant de commencer
- Une machine ou une VM Debian 13 (ou Ubuntu récente) avec au moins 16 Go de mémoire vive ; une carte graphique est fortement conseillée
- Docker et Docker Compose installés pour l'interface web (voir installer Docker sur Debian ou Ubuntu)
- Un accès sudo, et des bases en ligne de commande (voir les commandes Linux pour débuter)
En clair
Les assistants comme Claude tournent dans les centres de données de leur éditeur. Avec une IA locale, c'est l'inverse : un modèle ouvert tourne sur votre machine, et vos questions, vos documents et vos réponses ne quittent jamais votre réseau. Ollama est le moteur : il télécharge les modèles et les fait tourner. Open WebUI est l'interface : une page web de discussion, semblable à celle des grands assistants, accessible depuis tous les postes de la maison. Le résultat est moins puissant que les meilleurs modèles en ligne, mais privé, gratuit à l'usage et disponible même sans Internet.
Pour les notions de modèle, de jeton et de quantification, voir l'IA générative expliquée simplement.
1. L'architecture
| Composant | Rôle | Port |
|---|---|---|
| Ollama | Service qui charge les modèles en mémoire et répond aux requêtes (API) | 11434 |
| Open WebUI | Interface web de discussion, comptes utilisateurs, historique, envoi de documents | 3000 (vers 8080 dans le conteneur) |
| Vos postes | Un navigateur, sur le réseau local ou par VPN | — |
Ollama est installé directement sur le système, pour un accès simple à la carte graphique ; Open WebUI tourne dans un conteneur Docker.
2. Le matériel et le choix du modèle
Le facteur limitant est la mémoire de la carte graphique (VRAM). Sans carte graphique, Ollama fonctionne sur le processeur et la mémoire vive, mais beaucoup plus lentement : utilisable pour de petits modèles, pénible au-delà.
| Matériel | Modèles utilisables confortablement (quantifiés en 4 bits) |
|---|---|
| Processeur seul, 16 Go de mémoire | 1 à 4 milliards de paramètres, lents |
| Carte graphique de 8 Go | 7 à 8 milliards de paramètres |
| Carte graphique de 12 à 16 Go | Jusqu'à 14 milliards, ou 20 milliards selon les modèles |
| Carte graphique de 24 Go | Jusqu'à 30 à 32 milliards |
| Mac à puce Apple | Selon la mémoire unifiée : environ les deux tiers utilisables par le modèle |
Les cartes NVIDIA sont les mieux prises en charge (CUDA). Les cartes AMD récentes fonctionnent avec ROCm, avec une liste de compatibilité plus restreinte.
Quel modèle ?
La bibliothèque d'Ollama recense les modèles disponibles, avec leurs tailles. Quelques familles ouvertes reconnues :
| Famille | Éditeur | Points forts |
|---|---|---|
| Mistral, Ministral | Mistral AI (France) | Bon en français, plusieurs tailles |
| Qwen | Alibaba | Très polyvalent, bon en code, nombreuses tailles |
| Gemma | Compact et efficace, certaines versions lisent les images | |
| Llama | Meta | Très répandu, large écosystème |
| gpt-oss | OpenAI | Modèles à poids ouverts orientés raisonnement |
| DeepSeek-R1 (versions distillées) | DeepSeek | Raisonnement détaillé, plus lent |
Commencez par un modèle de 7 à 8 milliards de paramètres si vous avez 8 Go de VRAM, puis comparez sur vos propres usages : les classements généraux ne remplacent pas un essai sur vos questions.
Proxmox VE : donner la carte graphique à une VM
Sur un hyperviseur, deux approches : une VM à laquelle on donne la carte graphique en passthrough (la carte n'est alors plus utilisable par l'hôte ni par d'autres VM), ou un conteneur LXC qui partage la carte de l'hôte. Le passthrough demande l'IOMMU (VT-d ou AMD-Vi) activée dans le BIOS. Voir la documentation de Proxmox en bas de page et installer Proxmox VE.
3. Installer Ollama
Sur une Debian 13 à jour, avec un compte disposant de sudo :
curl -fsSL https://ollama.com/install.sh | sh
Le script installe Ollama, crée l'utilisateur système ollama et le service systemd ollama. Pour une carte NVIDIA, installez d'abord le pilote propriétaire et CUDA (voir la documentation d'Ollama), puis vérifiez que la carte est vue :
nvidia-smi
Vérifiez le service :
systemctl status ollama
curl http://127.0.0.1:11434/api/version
{"version":"0.x.y"}
Lire un script avant de le lancer
curl … | sh exécute un script téléchargé avec les droits de l'utilisateur, puis sudo. C'est la méthode officielle, mais vous pouvez d'abord le télécharger et le lire : curl -fsSL https://ollama.com/install.sh -o install.sh, puis less install.sh.
4. Premiers pas avec Ollama
Télécharger et discuter avec un modèle (le nom et la taille se choisissent dans la bibliothèque) :
ollama run mistral
Tapez votre question, puis /bye pour quitter. Les commandes utiles :
| Commande | Effet |
|---|---|
ollama pull nom |
Télécharge un modèle sans le lancer |
ollama run nom |
Lance une discussion (télécharge le modèle si besoin) |
ollama list |
Liste les modèles téléchargés et leur taille |
ollama ps |
Montre les modèles chargés en mémoire, et s'ils tournent sur la carte graphique |
ollama show nom |
Détails d'un modèle : taille, quantification, longueur de contexte |
ollama rm nom |
Supprime un modèle |
Vérifiez que le modèle utilise bien la carte graphique :
ollama ps
NAME ID SIZE PROCESSOR CONTEXT UNTIL
mistral:latest 6577803aa9a0 5.7 GB 100% GPU 4096 4 minutes from now
100% GPU : le modèle tient entièrement en VRAM. Une valeur partagée (48%/52% CPU/GPU) signifie qu'il déborde sur la mémoire vive, avec des réponses nettement plus lentes : choisissez un modèle plus petit ou une quantification plus forte.
L'API se teste directement :
curl http://127.0.0.1:11434/api/generate -d '{"model": "mistral", "prompt": "Explique le RAID 1 en une phrase.", "stream": false}'
5. Régler Ollama
Les réglages passent par des variables d'environnement du service. Ouvrez une surcharge du service :
sudo systemctl edit ollama
Ajoutez dans la zone prévue :
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_CONTEXT_LENGTH=8192"
Environment="OLLAMA_KEEP_ALIVE=15m"
Puis rechargez :
sudo systemctl daemon-reload
sudo systemctl restart ollama
| Variable | Valeur par défaut | Rôle |
|---|---|---|
OLLAMA_HOST |
127.0.0.1:11434 |
Adresse d'écoute ; 0.0.0.0 l'ouvre à toutes les interfaces, nécessaire pour qu'Open WebUI dans Docker le joigne |
OLLAMA_CONTEXT_LENGTH |
4096 jetons |
Longueur de contexte : plus elle est grande, plus le modèle « se souvient » de la conversation et des documents, mais plus il consomme de mémoire |
OLLAMA_KEEP_ALIVE |
5m |
Durée pendant laquelle un modèle reste chargé après la dernière requête |
OLLAMA_MODELS |
/usr/share/ollama/.ollama/models |
Dossier des modèles ; pratique pour les placer sur un disque plus grand (l'utilisateur ollama doit pouvoir y écrire) |
L'API d'Ollama n'a aucune authentification
Quiconque joint le port 11434 peut utiliser vos modèles, en télécharger d'autres ou en supprimer. Des milliers de serveurs Ollama exposés par erreur sur Internet ont été recensés. N'ouvrez jamais ce port vers Internet, et limitez-le au strict nécessaire avec le pare-feu (partie 7).
6. Installer Open WebUI avec Docker Compose
Créez un dossier pour le service :
sudo mkdir -p /opt/open-webui
cd /opt/open-webui
Générez une clé secrète pour les sessions :
openssl rand -hex 32
Créez le fichier /opt/open-webui/compose.yaml, en remplaçant la valeur de WEBUI_SECRET_KEY par la clé générée :
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
restart: always
ports:
- "3000:8080"
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
OLLAMA_BASE_URL: "http://host.docker.internal:11434"
WEBUI_SECRET_KEY: "remplacez-par-la-cle-generee"
volumes:
- open-webui:/app/backend/data
volumes:
open-webui:
Démarrez :
sudo docker compose up -d
sudo docker compose logs -f
Quand les journaux indiquent que le serveur écoute, ouvrez http://IP-du-serveur:3000 depuis un poste du réseau.
| Élément | Explication |
|---|---|
ports: "3000:8080" |
L'interface est publiée sur le port 3000 de l'hôte |
extra_hosts |
Permet au conteneur de joindre l'hôte, donc Ollama, sous le nom host.docker.internal |
OLLAMA_BASE_URL |
Adresse d'Ollama vue depuis le conteneur |
Volume open-webui |
Comptes, conversations et réglages ; à sauvegarder |
Le premier compte
Le premier écran propose Create Admin Account : ce premier compte devient administrateur de l'instance. Créez-le immédiatement (par exemple spo), avec un mot de passe solide rangé dans votre gestionnaire de mots de passe : la perte de ce mot de passe bloque l'accès aux réglages. Les inscriptions se ferment ensuite d'elles-mêmes ; l'administrateur crée les comptes des autres utilisateurs dans le panneau d'administration.
Vos modèles Ollama apparaissent dans le sélecteur en haut de la conversation. Si la liste est vide, vérifiez OLLAMA_HOST (partie 5) et le pare-feu (partie 7).
Mettre à jour Open WebUI
cd /opt/open-webui
sudo docker compose pull
sudo docker compose up -d
Pour Ollama, relancez simplement le script d'installation : il met à jour le programme sans toucher aux modèles.
7. Sécuriser l'ensemble
Avec ufw, en supposant un réseau local 192.168.1.0/24 :
sudo ufw default deny incoming
sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp
sudo ufw allow from 192.168.1.0/24 to any port 3000 proto tcp
sudo ufw allow from 172.16.0.0/12 to any port 11434 proto tcp
sudo ufw enable
La troisième règle autorise uniquement les réseaux de Docker (plage 172.16.0.0/12) à joindre Ollama : Open WebUI y accède, les postes du réseau non. Ajoutez une règle pour un poste précis s'il doit utiliser l'API directement.
Docker et ufw
Les ports publiés par Docker (ici 3000) contournent les règles de ufw, car Docker écrit ses propres règles de pare-feu. Pour restreindre l'interface web, publiez-la uniquement sur l'adresse du réseau local ("192.168.1.10:3000:8080") ou derrière un reverse proxy, et filtrez au niveau du routeur.
| Mesure | Pourquoi |
|---|---|
| Pas d'exposition directe sur Internet : accès distant par VPN (WireGuard, Tailscale) | Ni Ollama ni une interface d'administration n'ont à être visibles de l'extérieur |
| HTTPS avec un reverse proxy (Caddy, Nginx Proxy Manager, Traefik) | Les mots de passe et les conversations ne circulent pas en clair sur le réseau |
| Comptes nominatifs, rôles « utilisateur » pour les autres membres | Chacun ne voit que ses conversations |
Sauvegarde du volume open-webui |
Conversations, comptes et réglages |
| Mises à jour régulières d'Ollama et d'Open WebUI | Les deux projets évoluent vite et corrigent des failles |
8. Aller plus loin
| Usage | Comment |
|---|---|
| Discuter avec ses documents | Glisser un PDF ou un texte dans la conversation : Open WebUI le découpe et fournit les passages pertinents au modèle (RAG) |
| Bases de connaissances | Dans Open WebUI, Workspace > Knowledge : un ensemble de documents interrogeable par plusieurs conversations |
| Modèles personnalisés | Un modèle avec des consignes permanentes (par exemple « réponds en français, en procédures numérotées ») dans Workspace > Models |
| Utiliser l'API dans vos scripts | curl http://127.0.0.1:11434/api/chat …, ou l'API compatible OpenAI d'Ollama sous /v1/ |
| Transcription audio, génération d'images | Open WebUI se connecte à d'autres services locaux ; chacun demande encore de la mémoire graphique |
9. En cas de problème
| Symptôme | Cause probable | Solution |
|---|---|---|
| Réponses très lentes | Le modèle déborde de la VRAM ou tourne sur le processeur | ollama ps ; prendre un modèle plus petit, réduire OLLAMA_CONTEXT_LENGTH |
nvidia-smi introuvable ou sans carte |
Pilote NVIDIA absent ou mal installé | Installer le pilote et CUDA, redémarrer |
| Aucun modèle dans Open WebUI | Ollama n'écoute que sur 127.0.0.1, ou le pare-feu bloque |
OLLAMA_HOST=0.0.0.0:11434, règle ufw pour 172.16.0.0/12 ; tester depuis le conteneur : sudo docker exec open-webui curl -s http://host.docker.internal:11434/api/version |
| Le modèle « oublie » le début d'un long document | Contexte trop court | Augmenter OLLAMA_CONTEXT_LENGTH, dans la limite de la VRAM |
| Mot de passe administrateur perdu | — | Voir la procédure de réinitialisation dans la documentation d'Open WebUI ; d'où l'importance du gestionnaire de mots de passe |
À retenir
- Ollama fait tourner les modèles, Open WebUI fournit l'interface : vos données restent sur votre réseau.
- La VRAM décide de la taille du modèle : 8 Go pour un modèle de 7 à 8 milliards de paramètres ; vérifiez
100% GPUavecollama ps. OLLAMA_HOST=0.0.0.0:11434pour qu'Open WebUI le joigne, mais jamais d'exposition du port 11434 : l'API n'a pas d'authentification.- Open WebUI : créez le compte administrateur immédiatement, sauvegardez le volume, mettez à jour régulièrement.
- Accès distant par VPN, HTTPS par reverse proxy, et attention aux ports publiés par Docker qui contournent
ufw.