Open WebUI donne une interface de chat familière au-dessus d’Ollama, sans envoyer vos conversations vers un service distant. Ce tutoriel pose Docker Compose, démarre l’image, crée le premier compte administrateur, connecte Ollama et fixe les réglages essentiels avant une mise à jour. Idéal pour une TPE de Tourcoing, un labo associatif à Compiègne ou un poste technique de collectivité qui veut un « ChatGPT privé » sur le réseau local. Les variables d’environnement évoluent : on indique le geste, vous vérifiez le README de la version épinglée.
Pourquoi Open WebUI plutôt que le terminal Ollama
Ollama seul suffit pour tester un modèle. Dès que plusieurs personnes, un historique, des documents ou des comptes entrent en jeu, une interface web devient plus simple à transmettre. Open WebUI ajoute authentification, espaces, outils et pipeline RAG. Pour une équipe de cinq personnes à Maubeuge, expliquer « ouvre cette URL interne » bat largement « installe Ollama et tape des commandes ».
Ce n’est pas un produit IAHDF et nous ne sommes pas rémunérés pour en parler. C’est un projet open source dont l’image, les menus et les variables bougent. Votre filet de sécurité : épingler une version, lire le changelog avant d’upgrader, garder un volume sauvegardé. Si vous visez déjà le RAG sur PDF, enchaînez ensuite avec Qwen + RAG et réglages RAG.
Prérequis matériels et logiciels
Il vous faut une machine où Docker tourne correctement : PC Windows avec Docker Desktop, Mac, ou serveur Linux. Ollama peut vivre sur la même machine (cas le plus simple) ou sur un autre hôte du réseau local. La RAM et le GPU dépendent du modèle que vous chargerez, pas d’Open WebUI lui-même, qui reste relativement léger. Un petit NUC sous le bureau d’une agence à Arras suffit pour l’interface ; c’est le LLM qui décidera du confort.
Vérifiez que vous pouvez ouvrir un terminal, que `docker version` répond, et que vous avez les droits pour publier un port local (souvent 3000). Désactivez temporairement les VPN d’entreprise si ils cassent le DNS Docker — scénario fréquent sur les portables de consultants à Lille. Préparez aussi l’URL sous laquelle Ollama écoute (par défaut sur l’hôte, un port local bien connu ; confirmez dans votre installation).
Pas à pas : Docker Compose jusqu’au premier chat
Créer le dossier et le fichier compose
Choisissez un emplacement stable (pas le Bureau synchronisé d’une sync cloud flaky). Créez un dossier `open-webui`, puis un fichier `docker-compose.yml`. Vous y déclarerez le service, le port publié, le volume de données et l’URL Ollama vue depuis le conteneur. Épinglez un tag d’image plutôt que de laisser flotter `latest` si vous voulez pouvoir reproduire l’environnement dans six mois pour une démo à Amiens. Si quelque chose échoue, arrêtez-vous et notez le message exact avant de retenter. Une capture d’écran des logs vaut mieux qu’une reformulation de mémoire, surtout quand un collègue de Douai ou Arras reprendra le dossier le lendemain.
Renseigner l’image et le volume
Utilisez l’image connue `ghcr.io/open-webui/open-webui` en précisant un tag lu sur le dépôt ou la registry le jour J. Montez un volume nommé vers le chemin de données indiqué par la documentation de cette version (souvent sous `/app/backend/data`). Sans volume, chaque `docker compose down -v` efface comptes et historiques. Sur un serveur associatif à Dunkerque, placez ce volume sur un disque sauvegardé. Gardez un bloc-notes ouvert : commande tapée, résultat attendu, résultat obtenu. Cette trace courte accélère le dépannage et évite de croire qu’« on a déjà essayé » sans preuve.
Brancher l’URL Ollama depuis le conteneur
Le piège classique : `http://127.0.0.1:11434` depuis le conteneur pointe vers le conteneur lui-même, pas vers Ollama sur l’hôte. Sur Docker Desktop, on utilise souvent `host.docker.internal` ; sur Linux, l’IP de l’hôte ou un réseau partagé. Vérifiez le nom de la variable d’environnement dans le README de votre version (il a déjà changé au fil des releases). Un mauvais endpoint se traduit par une liste de modèles vide, pas par un message clair.
Lancer et ouvrir l’interface
Dans le dossier du compose, exécutez `docker compose up -d`. Attendez que le conteneur soit healthy ou que les logs montrent le serveur prêt. Ouvrez le navigateur sur `http://localhost:PORT`. Si la page ne charge pas, regardez `docker compose ps` et `docker compose logs`. Un port déjà pris (autre service sur 3000) se corrige en changeant le mapping `HOST:CONTAINER`. Vérifiez aussi l’environnement : VPN, proxy, antivirus, espace disque. Beaucoup d’échecs attribués au modèle viennent d’un réseau d’entreprise à Lille ou d’un disque plein après plusieurs pulls.
Créer le compte administrateur
Le premier utilisateur inscrit devient en général admin. Utilisez un mot de passe long, stocké dans votre gestionnaire. Ne réutilisez pas le mot de passe Wi-Fi de la box. Sur une machine partagée à Laon, créez tout de suite un second compte de test non admin pour vérifier ce que voient les collègues. Activez les options de confidentialité que vous comprenez ; ignorez le reste jusqu’à lecture de la doc. Quand l’étape réussit, marquez-la explicitement dans votre checklist. Les bascules trop rapides vers l’étape suivante masquent des configs demi-installées qui cassent plus tard en démo publique.
Vérifier les modèles et fixer le défaut
Dans les réglages de connexion, confirmez qu’Ollama répond et que vos tags apparaissent. Choisissez un modèle par défaut raisonnable pour le public (petit pour atelier, plus gros pour poste dédié). Envoyez « Réponds en français en une phrase : tu es en ligne. » Si la réponse arrive, l’installation de base est bonne. Ensuite seulement, créez d’autres comptes et documentez l’URL interne. Si vous travaillez à deux, faites reformuler le geste par la personne la moins technique. Ce qui n’est pas dit clairement maintenant reviendra en ticket flou après l’atelier.
Sauvegarder le volume et noter les versions
Écrivez dans un README : tag d’image Open WebUI, URL Ollama, port publié, date. Exportez ou sauvegardez le volume Docker selon votre méthode habituelle (snapshot, `docker run` de backup, copie du bind mount). Testez une restauration une fois sur un autre dossier. Sans cet exercice, la « sauvegarde » reste théorique — jusqu’au crash disque d’un vendredi soir à Roubaix. Testez une fois « à froid » après redémarrage de la machine. Un service qui ne survit pas au reboot n’est pas prêt pour une permanence à Valenciennes ou Amiens.
Écrire le docker-compose.yml
Le fichier compose est votre contrat de reproductibilité. Gardez-le dans un dépôt Git interne ou un dossier documenté. Évitez d’y coller des secrets en clair si vous le partagez : préférez un fichier `.env` non versionné pour les tokens éventuels. Pour beaucoup d’équipes HdF, le besoin se limite à image + port + volume + URL Ollama.
services:
open-webui:
image: ghcr.io/open-webui/open-webui:TAG_A_EPINGLER
container_name: open-webui
ports:
- "3000:8080"
volumes:
- open-webui-data:/app/backend/data
environment:
- OLLAMA_BASE_URL=http://host.docker.internal:11434
restart: unless-stopped
volumes:
open-webui-data:Adaptez le port hôte si 3000 est pris. Sur Linux sans `host.docker.internal`, ajoutez la feature Docker correspondante ou utilisez l’IP bridge de l’hôte. Si Ollama tourne lui aussi en conteneur, placez les deux services sur le même réseau Compose et appelez le service par son nom. Ne recopiez pas aveuglément des variables trouvées au hasard sur un forum : une variable obsolète peut être ignorée sans erreur visible.
Premier compte admin et hygiène de base
Dès l’écran d’inscription, considérez que quiconque atteint l’URL peut tenter de créer un compte si vous n’avez pas restreint l’accès réseau. Sur un Wi-Fi invité d’open space à Lille, ce n’est pas acceptable. Bornez l’écoute à `127.0.0.1:3000` si seul le poste local doit s’y connecter, ou placez l’instance derrière un reverse proxy authentifié sur le LAN.
Après création, explorez les réglages : langue de l’interface, modèle par défaut, éventuelles connexions à des API cloud (laissez-les vides si vous voulez du strict local). Lisez données à ne pas confier avant d’autoriser l’équipe à coller des fichiers clients. Un outil « privé » mal cadré devient un disque dur collectif sans politique.
Connecter Ollama sans se tromper de cible
Trois topologies courantes. (1) Ollama sur l’hôte, Open WebUI en Docker Desktop : `host.docker.internal` est le réflexe. (2) Les deux sur Linux nu : IP de l’hôte ou socket selon doc. (3) Ollama sur une autre machine du LAN : URL `http://IP:port`, en ouvrant le pare-feu avec parcimonie. Testez l’URL avec un navigateur ou `curl` depuis un conteneur de debug avant d’accuser Open WebUI.
| Ollama | Open WebUI | URL typique à valider |
|---|---|---|
| Hôte Windows/Mac | Docker Desktop | host.docker.internal + port Ollama |
| Hôte Linux | Docker | IP bridge ou extra_hosts |
| Autre machine LAN | Docker | http://ip-lan:port (pare-feu) |
| Conteneur Compose | Même compose | http://nom-service:port |
Quand la liste des modèles apparaît, tirez un petit modèle de confirmation si besoin (`ollama pull` avec un tag exact de la library). Réservez les gros tags pour les postes qui ont la VRAM — voir quel modèle selon la machine.
Réglages essentiels après installation
Fixez le modèle par défaut, la langue, et désactivez ce que vous n’utilisez pas (connexions cloud, outils externes). Si vous activez les documents / RAG plus tard, sachez que l’embedding et le chunking se règlent côté admin documents : optimiser le RAG. Pour l’instant, validez le chat simple.
Créez au moins un utilisateur métier. Connectez-vous avec ce compte depuis un autre navigateur ou une session privée. Vérifiez qu’il ne voit pas les panneaux d’administration. Ce test de dix minutes évite de découvrir le contraire pendant une réunion de direction à Beauvais.
Mises à jour sans perdre les données
Procédure prudente : lire le changelog de la version cible, sauvegarder le volume, changer le tag d’image dans le compose, `docker compose pull` puis `up -d`, rejouer un chat de smoke test, vérifier les comptes. Si quelque chose casse, remettez le tag précédent et `up -d` à nouveau. Évitez d’upgrader le vendredi 17 h avant un salon à Douai.
Les variables d’environnement sont le point le plus fragile d’une mise à jour : un renommage silencieux et Ollama « disparaît ». Gardez l’ancien compose commenté ou versionné. Documentez aussi la version d’Ollama : une incompatibilité API reste rare mais possible.
Sauvegarde et restauration du volume
Identifiez où vivent les données : volume nommé Docker ou bind mount. Pour un volume nommé, un conteneur temporaire qui archive `/app/backend/data` vers un fichier `.tar` sur l’hôte est une méthode classique ; adaptez-la à votre doc Docker. Stockez l’archive hors de la machine (NAS, disque chiffré). Restaurez une fois sur un dossier test pour savoir que la procédure n’est pas qu’un slide.
- Tag d’image écrit dans le README
- Date de la dernière sauvegarde du volume
- URL Ollama et topologie réseau
- Compte admin vs comptes métiers
- Politique : local only, pas d’API cloud
Dépannage
Page blanche : logs du conteneur, port, proxy navigateur. Liste modèles vide : URL Ollama, pare-feu, Ollama arrêté après mise en veille Windows. Connexion refusée depuis un autre PC : Open WebUI n’écoute que localhost, ou le pare-feu Windows bloque. Mot de passe admin perdu : selon versions, la recovery passe par des opérations sur le volume — lisez la doc courante, ne suivez pas un tutoriel obsolète qui efface tout. Conteneur qui redémarre en boucle : tag d’image corrompu ou conflit de volume ; `docker compose logs` avant tout `down -v` destructif.
Sur Mac, allouez assez de RAM à Docker Desktop si l’interface rame dès que le modèle charge. Sur un mini-PC d’association à Boulogne, surveillez la température : un boîtier fermé + LLM + Docker peut throttle. Le chat « marche » mais très lent n’est souvent pas un bug Open WebUI : c’est le modèle.
Questions fréquentes
Puis-je utiliser Open WebUI sans Docker ?
Des installations alternatives existent selon les époques (Python, binaire). Docker reste le chemin le plus documenté pour une équipe mixte. Si votre DSI interdit Docker, demandez un équivalent approuvé plutôt que de bricoler une install fragile sur un poste unique. L’important est la reproductibilité et la sauvegarde des données utilisateurs. Pour trancher chez vous, reproduisez le scénario sur la machine réelle avec un protocole court écrit à l’avance. Une conclusion d’atelier à Roubaix ne se transfère pas telle quelle sur un portable différent.
Open WebUI remplace-t-il ChatGPT ?
Il en imite le geste d’interface au-dessus de modèles que vous choisissez (souvent via Ollama). La qualité dépend du modèle local, pas du chrome de l’UI. Vous gagnez en contrôle et en résidence des données ; vous perdez les services cloud que vous n’avez pas branchés. Pour beaucoup de TPE des Hauts-de-France, ce compromis est exactement le but. Gardez une fiche datée : question, hypothèse, test, résultat. Cette hygiène évite les débats sans fin et construit une mémoire utile pour la prochaine personne référente.
Comment inviter mon équipe ?
Donnez l’URL sur le réseau local ou via VPN, créez des comptes non admin, et expliquez la politique de données en une page. Ne partagez pas le compte admin. Faites une session de quinze minutes où chacun envoie un message de test. Si vous ajoutez des documents, formez d’abord un référent — voir tuto RAG complet. Si deux camps s’opposent dans l’équipe, imposez un A/B sur la même batterie de prompts plutôt qu’un vote d’opinion. Le terrain tranche plus vite que les digressions de salon.
Que faire si j’ai déjà LM Studio ?
LM Studio et Open WebUI peuvent coexister. Certains branchent Open WebUI sur une API compatible exposée par un autre runtime. Pour ce tutoriel, on reste sur Ollama par simplicité. Choisissez une stack et documentez-la : deux runtimes sur le même GPU se marchent parfois dessus en VRAM. Méfiez-vous des captures hors contexte trouvées en ligne. Sans connaître quantification, contexte et charge machine, un chiffre spectaculaire ne dit rien de votre poste à Beauvais. Complétez par un test de non-régression : refaites le même geste après avoir fermé puis rouvert l’outil, afin de confirmer que la configuration survit au redémarrage et reste compréhensible pour un collègue qui n’a pas suivi toute la session.
Les mises à jour sont-elles obligatoires tout de suite ?
Non. Épinglez une version qui fonctionne, lisez les notes, puis upgez quand vous avez une fenêtre de test. Une instance stable pour un service public local vaut mieux qu’une course au dernier tag. Planifiez plutôt une revue trimestrielle, comme suggéré pour les piles locales dans l’écosystème IAHDF. Quand le problème semble intermittent, journalisez l’heure, la température perçue et les autres apps ouvertes. Les coïncidences thermiques et mémoire sont fréquentes sur machines partagées. Ajoutez une vérification métier : demandez à une personne du terrain de reformuler le besoin en une phrase, puis vérifiez que votre réglage répond vraiment à cette phrase, pas seulement au scénario technique imaginé au départ.
