IA / Tutoriel

Une IA locale sur son homelab avec Ollama et Open WebUI

Faire tourner des modèles d'IA ouverts chez soi, sans que les données ne quittent le réseau : choisir le matériel et le modèle, installer Ollama sur Debian, l'ouvrir prudemment au réseau local, ajouter l'interface web Open WebUI avec Docker Compose, et sécuriser l'ensemble.

IA Tutoriel Intermédiaire Publié le 20 octobre 2026 45 min de lecture
Circuit électronique surmonté d'un cerveau stylisé, en bleu
Photo : Steve A Johnson sur Unsplash

Avant de commencer

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 Google 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% GPU avec ollama ps.
  • OLLAMA_HOST=0.0.0.0:11434 pour 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.

À lire aussi