MVAESTECH
IA locale · Open WebUI

Publié le · mis à jour le · par Mathieu Vaes

Open WebUI, le chat IA qui reste chez vous.

Open WebUI est une interface de chat open source, dans le navigateur, branchée sur vos propres modèles. Chacun a son compte et son historique, peut interroger les documents internes et chercher sur le web. Les prompts ne sortent pas du réseau.

C'est l'outil que j'installe en premier sur un serveur IA. Voici comment il fonctionne, comment je l'installe et ce que je règle.

  • Open WebUI
  • Ollama
  • Docker
  • Documents (RAG)
  • SearXNG
  • Comptes et rôles

Une interface, pas un modèle

Open WebUI ne « pense » pas : il donne une fenêtre, des comptes et de la mémoire au modèle qui tourne sur votre carte graphique.

  1. L'interface · Open WebUICe que voit l'équipe

    Comptes, historique des conversations, documents, recherche web, modèles préparés pour un usage précis.

    comptesdocumentswebhistorique
  2. Le moteur · OllamaCe qui répond

    Les modèles, servis par une API compatible OpenAI. Open WebUI peut en proposer plusieurs à la fois.

    Qwen3visionembeddings
  3. Le matériel · GPUCe qui limite

    La VRAM fixe la taille des modèles et le nombre de personnes servies en même temps.

    NVIDIAVRAM
  • Plusieurs modèles, une seule adresseChacun choisit son modèle pour chaque conversation : un modèle de code, un modèle généraliste, un modèle qui lit les images. On peut même en interroger deux côte à côte pour comparer.
  • Des modèles préparésDans l'espace de travail, je crée un « modèle » sur mesure : un modèle de base, des consignes, une base de documents. Par exemple un assistant RH qui ne répond qu'à partir de vos procédures.
  • Pour toute l'équipeUn compte par personne, un historique par compte, des droits par groupe. Ce que vous connaissez des grands chats en ligne, mais sur votre serveur.

Une question, pas à pas

Entre le moment où vous appuyez sur Entrée et celui où la réponse s'affiche, Open WebUI fait plusieurs allers-retours, tous sur votre réseau, sauf la recherche web quand vous la demandez.

Le trajet d'une question dans Open WebUI Vous posez une question à Open WebUI. Il cherche les passages utiles dans vos documents et, si vous le demandez, sur le web par SearXNG. Il envoie la question et les extraits au modèle sur Ollama, puis vous rend la réponse avec ses sources. Vous une question Open WebUI comptes · historique Vos documents découpés, indexés RAG SearXNG le web sans pistage si demandé Ollama le modèle sur le GPU 1 2 3 4 5
Seule l'étape 3 sort du réseau, et seulement si vous activez la recherche web.
  1. Vous posez une questionDans le navigateur, avec votre compte : « Quelle est la procédure pour un arrêt maladie ? »
  2. Il cherche dans vos documentsSi une base de documents est jointe, il retrouve les passages les plus proches de la question, pas le fichier entier.
  3. Et sur le web, si vous le demandezLa recherche passe par SearXNG. Les pages trouvées sont lues, et seuls les extraits utiles sont gardés.
  4. Le modèle reçoit question et extraitsOllama génère la réponse sur la carte graphique, à partir de ce qu'on lui a donné.
  5. La réponse revient, avec ses sourcesLes passages utilisés sont cités sous la réponse : on vérifie d'où vient chaque information.

Vos documents : comment il les retrouve

Le modèle ne lit pas vos 300 pages à chaque question. Les documents sont préparés une fois, puis chaque question ne va chercher que quelques morceaux. C'est ce qu'on appelle le RAG.

Une fois à l'ajout d'un document

  1. Le documentPDF, Word, texte
  2. Découpéen morceaux de quelques paragraphes
  3. Traduit en nombresun vecteur par morceau
  4. Rangédans la base vectorielle

À chaque fois qu'on pose une question

  1. La question« Procédure arrêt maladie ? »
  2. Traduite en nombresavec le même modèle
  3. Les morceaux prochesles vecteurs qui ressemblent le plus
  4. Le modèlereçoit la question et ces extraits
  5. La réponseavec les sources citées
  • Les nombres restent chez vousLe modèle qui traduit le texte en vecteurs (les « embeddings ») tourne lui aussi sur Ollama. Rien n'est envoyé à un service externe pour indexer vos documents.
  • Une base par sujetDans l'espace de travail, une base « procédures », une base « technique »… et un modèle préparé relié à la bonne base. Chacun interroge ce qui le concerne.
  • Des réponses vérifiablesLes sources citées permettent de contrôler la réponse. Si la bonne source n'apparaît pas, c'est le découpage ou la base qu'il faut revoir, pas le modèle.

Qui entre, et qui voit quoi

Un serveur partagé, c'est d'abord une question de comptes. Open WebUI arrive fermé, et c'est l'administrateur qui ouvre la porte.

  1. Premier compteil devient administrateur
  2. Inscriptions ferméesdès que l'admin existe
  3. Nouveau comptesi l'admin les rouvre : « en attente »
  4. Validépar l'admin, il devient utilisateur
Administrateur

Règle tout

Modèles proposés, bases de documents, recherche web, comptes et groupes. Une ou deux personnes, pas plus.

Utilisateur

Utilise

Discute avec les modèles qu'on lui ouvre et interroge les bases de son groupe. Son historique n'est qu'à lui.

En attente

Attend

Le compte existe, mais ne voit rien tant que l'administrateur ne l'a pas validé.

L'installation, étape par étape

Sur un serveur Linux avec Docker et Ollama déjà en place. Les valeurs ci-dessous sont des exemples : chaque installation a ses propres adresses et ses propres secrets.

  1. Lancer Open WebUI

    Le conteneur officiel, avec un volume pour garder comptes et conversations, et une clé secrète fixe. Il n'écoute que sur la machine : l'accès des utilisateurs passe par un accès protégé devant.

    # Une clé secrète, générée une fois et conservée$ openssl rand -hex 32 $ docker run -d --name open-webui --restart always \    -p 127.0.0.1:3000:8080 \    --add-host=host.docker.internal:host-gateway \    -v open-webui:/app/backend/data \    -e WEBUI_SECRET_KEY="votre-cle" \    ghcr.io/open-webui/open-webui:main
  2. Créer l'administrateur, puis fermer

    Le premier compte créé est administrateur. Ensuite, les inscriptions sont fermées. Si on les rouvre pour l'équipe, chaque nouveau compte attend une validation.

    # Variables du conteneur, pour être expliciteENABLE_SIGNUP=falseDEFAULT_USER_ROLE=pending
  3. Les embeddings sur le GPU

    Un petit modèle d'embeddings servi par Ollama, pour que l'indexation des documents reste sur la carte graphique, comme le reste.

    $ ollama pull nomic-embed-text # Variables du conteneur Open WebUIRAG_EMBEDDING_ENGINE=ollamaRAG_EMBEDDING_MODEL=nomic-embed-text
  4. La recherche web par SearXNG

    SearXNG doit accepter les réponses en JSON, sinon il refuse les requêtes d'Open WebUI. Ensuite, on l'active dans le panneau d'administration, rubrique « Web Search », ou par variables.

    # settings.yml de SearXNGsearch:  formats:    - html    - json # Variables du conteneur Open WebUIENABLE_WEB_SEARCH=trueWEB_SEARCH_ENGINE=searxngSEARXNG_QUERY_URL=http://votre-searxng/search

Une partie de ces variables n'est lue qu'au premier démarrage : ensuite, les réglages vivent dans le panneau d'administration. Je les note quand même dans la configuration du conteneur, pour qu'une réinstallation reparte à l'identique.

Ce que je vérifie

Avant de livrer, je teste l'installation avec les vrais documents et les vrais usages de l'équipe.

  • Les droits tiennentUn utilisateur ne voit que ses conversations, les modèles et les bases de son groupe. Je le vérifie avec un compte de test.
  • Les bonnes sources sortentSur une série de questions dont je connais la réponse, la source citée est-elle la bonne ? Sinon, je revois le découpage.
  • La recherche web aideLes résultats de SearXNG sont-ils lus et cités, ou la réponse les ignore-t-elle ?
  • Plusieurs personnes à la foisLe temps de réponse quand trois ou quatre collègues écrivent en même temps, avec la VRAM disponible.
  • La sauvegardeLe volume de données est sauvegardé, et une restauration a été testée. Une sauvegarde jamais restaurée n'en est pas une.
  • Les mises à jourJe fixe une version plutôt que de suivre la dernière, et je la teste sur une copie avant de mettre à jour l'équipe.
Pour discuter

Open WebUI

Un chat pour toute l'équipe : comptes, historique, questions sur vos documents, recherche web. Il répond, il n'agit pas sur votre code.

Revoir le trajet d'une question
Pour déléguer du code

OpenCode

Un agent qui travaille sur un projet : il lit les fichiers, modifie, lance les tests, dans le terminal ou le navigateur. Pour les développeurs.

Voir l'agent OpenCode

Un chat privé pour votre équipe ?

Serveur, modèles testés sur vos documents, comptes et groupes, recherche web sans pistage, accès distant protégé : je vous installe l'ensemble.