rss logo

Installer Open WebUI avec Ollama sur Debian

Logo Open WebUI

Dans un précédent tutoriel, nous avons vu comment installer Ollama et exécuter des modèles LLM locaux sur Debian. Dans cet article, nous allons installer Open WebUI, une interface web auto-hébergée offrant une expérience conviviale proche de services comme ChatGPT, Claude ou Le Chat de Mistral.

Open WebUI peut fonctionner entièrement sur votre propre infrastructure et communiquer avec un serveur Ollama local, sans nécessiter de fournisseur de LLM dans le cloud pour la configuration présentée dans ce tutoriel.

Nous allons le déployer dans un conteneur Docker, le connecter à Ollama, créer des comptes utilisateurs et configurer l’accès aux modèles de langage disponibles.

🚨 Note de sécurité : ce tutoriel utilise HTTP à des fins de démonstration. Pour un environnement de production ou un réseau non fiable, placez Open WebUI derrière un proxy inverse HTTPS.

Architecture

Pour simplifier la configuration initiale, nous allons installer le conteneur Docker Open WebUI sur le même serveur Debian qu’Ollama. Les utilisateurs se connecteront à l’interface Open WebUI depuis leur navigateur web, tandis qu’Open WebUI communiquera localement avec Ollama. Une architecture reposant sur deux serveurs distincts sera présentée plus loin dans ce tutoriel.

Open WebUI et Ollama exécutés sur le même serveur Debian avec Docker
Open WebUI exécuté dans un conteneur Docker et communiquant localement avec Ollama sur le même serveur Debian.

Installer Open WebUI avec Docker

Dans cette section, nous allons déployer Open WebUI à l’aide de son conteneur Docker officiel. Nous devons donc commencer par installer Docker avant de créer et de démarrer le conteneur.

Installer Docker

  • Mettre à jour l’index des paquets et installer Docker depuis les dépôts Debian :
root@host:~# apt update && apt install docker.io
  • Activer et démarrer le service Docker :
root@host:~# systemctl enable --now docker

Exécuter le conteneur Open WebUI

  • Télécharger l’image Open WebUI, créer le conteneur et le démarrer avec les options suivantes :
    • -d : exécute le conteneur en mode détaché, en arrière-plan ;
    • --network=host : donne au conteneur un accès direct au réseau de l’hôte ;
    • -v open-webui:/app/backend/data : stocke les données d’Open WebUI dans un volume Docker persistant ;
    • -e OLLAMA_BASE_URL=http://127.0.0.1:11434 : configure l’adresse du serveur Ollama local ;
    • --name open-webui : attribue le nom open-webui au conteneur ;
    • --restart always : redémarre automatiquement le conteneur après une panne ou un redémarrage du serveur ;
    • ghcr.io/open-webui/open-webui:main : indique l’image du conteneur Open WebUI à utiliser.
root@host:~# docker run -d \
--network=host \
-v open-webui:/app/backend/data \
-e OLLAMA_BASE_URL=http://127.0.0.1:11434 \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main

Se connecter à Open WebUI

  • Ouvrez un navigateur web et saisissez l’adresse IP du serveur exécutant Open WebUI, suivie du port 8080. Par exemple : http://192.168.1.10:8080. Cliquez ensuite sur Get started pour continuer :
Page d’accueil d’Open WebUI accessible depuis un navigateur web sur le port 8080
Page d’accueil d’Open WebUI affichée à l’adresse http://192.168.1.10:8080.
  • Saisissez les informations requises pour créer le compte administrateur. L’adresse e-mail sera utilisée comme identifiant de connexion. Cliquez ensuite sur Create Admin Account :
Formulaire Open WebUI de création du compte administrateur
Création du premier compte administrateur Open WebUI.
  • Depuis l’interface Open WebUI, sélectionnez dans la liste le modèle Ollama que vous souhaitez utiliser :
Sélection du modèle Ollama mistral:instruct dans l’interface Open WebUI
Sélection du modèle mistral:instruct dans Open WebUI.
  • Envoyez un prompt de test afin de vérifier qu’Open WebUI peut bien communiquer avec le modèle Ollama sélectionné ☺️ :
Prompt de test et réponse du modèle Ollama mistral:instruct dans Open WebUI
Test du modèle mistral:instruct depuis l’interface de discussion d’Open WebUI.

Installer Open WebUI sur un autre serveur

Selon votre infrastructure, vous pouvez souhaiter installer Open WebUI sur une machine distincte. Dans ce cas, le serveur Open WebUI distant doit pouvoir se connecter à l’API Ollama. Par défaut, Ollama écoute uniquement sur 127.0.0.1:11434. Nous devons donc le configurer afin qu’il écoute sur une interface réseau.

🚨 Avertissement : l’API Ollama ne propose pas d’authentification native. Si vous configurez Ollama pour écouter sur une interface réseau, tout hôte pouvant atteindre le port 11434/tcp pourra potentiellement envoyer des requêtes au serveur. Limitez l’accès à l’aide d’une règle de pare-feu et autorisez uniquement les connexions provenant du serveur Open WebUI. La configuration de nftables dépasse le cadre de ce tutoriel, mais vous pouvez consulter mon article consacré à la sécurisation de SSH sous Linux avec un pare-feu nftables pour une approche similaire.

Dans cette architecture, les utilisateurs se connectent uniquement au serveur exécutant Open WebUI ; ils ne communiquent pas directement avec le serveur Ollama. Open WebUI reçoit les connexions sur le port 3000/tcp, lequel est redirigé vers le port interne 8080/tcp du conteneur.

Open WebUI et Ollama installés sur deux serveurs Debian distincts
Open WebUI exécuté sur un serveur Debian distinct et communiquant avec un serveur Ollama distant.

Configurer le serveur Ollama

Pour permettre au serveur Open WebUI distant de se connecter à Ollama, nous devons configurer l’API Ollama afin qu’elle écoute sur le réseau. Par défaut, Ollama écoute uniquement sur 127.0.0.1:11434.

  • Créer une surcharge systemd pour le service Ollama :
root@host:~# systemctl edit ollama.service
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
  • Recharger la configuration systemd et redémarrer Ollama :
root@host:~# systemctl daemon-reload
root@host:~# systemctl restart ollama.service
  • Vérifier qu’Ollama écoute bien sur le port 11434/tcp :
root@host:~# ss -lntp | grep 11434

Installer le serveur Open WebUI

Sur le second serveur Debian, créez et démarrez le conteneur Open WebUI. Configurez-le afin qu’il se connecte à l’API Ollama distante à l’aide de l’adresse IP du serveur Ollama.

  • Exécutez le conteneur Open WebUI avec les options suivantes :
    • -d : exécute le conteneur en mode détaché, en arrière-plan ;
    • -p 3000:8080 : redirige le port 3000/tcp du serveur Open WebUI vers le port 8080/tcp du conteneur ;
    • -e OLLAMA_BASE_URL=http://192.168.1.10:11434 : configure l’URL de l’API Ollama distante ;
    • -v open-webui:/app/backend/data : stocke les données d’Open WebUI dans un volume Docker persistant ;
    • --name open-webui : attribue le nom open-webui au conteneur ;
    • --restart always : redémarre automatiquement le conteneur après une panne ou un redémarrage du serveur ;
    • ghcr.io/open-webui/open-webui:main : indique l’image standard du conteneur Open WebUI à utiliser.
root@host:~# docker run -d \
  -p 3000:8080 \
  -e OLLAMA_BASE_URL=http://192.168.1.10:11434 \
  -v open-webui:/app/backend/data \
  --name open-webui \
  --restart always \
  ghcr.io/open-webui/open-webui:main
  • Connectez-vous à Open WebUI sur le port 3000 à l’aide de l’adresse http://IP_SERVEUR_OPEN_WEBUI:3000. Ouvrez ensuite le menu utilisateur, sélectionnez Admin Panel, puis accédez à Settings :
Ouverture du panneau d’administration et de la page des paramètres dans Open WebUI
Accès aux paramètres d’administration d’Open WebUI.
  • Ouvrez la section Connections dans les paramètres d’Open WebUI, modifiez Manage Ollama API Connections, puis vérifiez que l’URL configurée correspond bien à l’adresse du serveur Ollama distant :
Modification de la connexion à l’API Ollama dans Open WebUI pour utiliser un serveur Ollama distant
Configuration d’Open WebUI pour se connecter à un point de terminaison API Ollama distant.

Mettre à jour Open WebUI

Pour bénéficier des dernières fonctionnalités, améliorations et corrections de sécurité, vous devez mettre régulièrement à jour l’image du conteneur Open WebUI.

  • Télécharger la dernière image d’Open WebUI :
root@host:~# docker pull ghcr.io/open-webui/open-webui:main
  • Supprimer le conteneur existant sans supprimer le volume persistant :
root@host:~# docker rm -f open-webui

💡 Remarque : le volume persistant nommé open-webui n’est pas supprimé. Les comptes utilisateurs, les paramètres et les données de l’application sont donc conservés lors de la recréation du conteneur.

  • Recréer le conteneur à l’aide de la même commande docker run que celle utilisée lors de l’installation initiale :
root@host:~# docker run -d \
  --network=host \
  -v open-webui:/app/backend/data \
  -e OLLAMA_BASE_URL=http://127.0.0.1:11434 \
  --name open-webui \
  --restart always \
  ghcr.io/open-webui/open-webui:main

Créer des comptes utilisateurs Open WebUI

À ce stade, l’administrateur peut accéder à Open WebUI et interagir avec les LLM disponibles. Afin de donner accès à d’autres utilisateurs sans partager le compte administrateur, nous allons maintenant créer des comptes utilisateurs distincts.

  • Depuis l’Admin Panel, ouvrez l’onglet Users puis cliquez sur le bouton + pour créer un nouveau compte utilisateur :
Ajout d’un nouveau compte utilisateur depuis le panneau d’administration d’Open WebUI
Ouverture du formulaire de création d’un utilisateur depuis le panneau d’administration d’Open WebUI.
  • Sélectionnez le rôle User, saisissez le nom de l’utilisateur, son adresse e-mail ainsi que son mot de passe, puis cliquez sur Save :
Formulaire Open WebUI de création d’un nouveau compte utilisateur
Création d’un compte utilisateur standard dans Open WebUI.
  • Maintenant que le compte utilisateur a été créé, nous devons lui accorder l’accès aux LLM requis. Depuis l’Admin Panel, ouvrez l’onglet Settings :
Ouverture de l’onglet Settings dans le panneau d’administration d’Open WebUI pour configurer l’accès utilisateur aux modèles
Accès aux paramètres d’Open WebUI avant la configuration des permissions sur les modèles.
  • Ouvrez la section Models. Pour chaque modèle dont vous souhaitez configurer les permissions d’accès, cliquez sur l’icône en forme de crayon :
Modification des permissions d’accès aux modèles depuis la section Models dans Open WebUI
Ouverture des paramètres du modèle afin de configurer les permissions d’accès dans Open WebUI.
  • Ouvrez les paramètres du modèle, cliquez sur Access, puis sélectionnez Add Access afin de définir quels utilisateurs ou groupes peuvent utiliser le modèle :
Ouverture du panneau de contrôle d’accès d’un modèle dans Open WebUI
Ouverture des paramètres de contrôle d’accès du modèle dans Open WebUI.
  • Sélectionnez les utilisateurs auxquels vous souhaitez accorder l’accès au modèle, cliquez sur Add, puis sur Save & Update afin d’appliquer les modifications :
Attribution à un utilisateur de l’accès à un modèle privé dans Open WebUI
Ajout d’un utilisateur à la liste d’accès au modèle et enregistrement des permissions mises à jour.

L’utilisateur peut désormais accéder au modèle sélectionné et l’utiliser dans Open WebUI.

Récupérer un identifiant Open WebUI oublié

Si vous avez oublié l’adresse e-mail associée à votre compte Open WebUI, vous pouvez la retrouver dans la base de données SQLite de l’application. Les mots de passe enregistrés dans cette base sont hachés et ne peuvent pas être affichés en clair.

  • Ouvrez un shell dans le conteneur Open WebUI :
root@host:~# docker exec -it open-webui /bin/bash
  • Mettez à jour l’index des paquets et installez l’utilitaire en ligne de commande sqlite3 :
root@host:/app/backend# apt update && apt install sqlite3
  • Ouvrez la base de données SQLite d’Open WebUI :
root@host:/app/backend# sqlite3 /app/backend/data/webui.db
  • Affichez uniquement les adresses e-mail enregistrées dans la table d’authentification :
sqlite> SELECT email FROM auth;
admin@std.rocks
  • Quittez SQLite, puis sortez du conteneur :
sqlite> .quit
root@host:/app/backend# exit

Conclusion

Open WebUI fonctionne désormais dans un conteneur Docker et est connecté à votre serveur Ollama. Les utilisateurs peuvent accéder aux LLM locaux depuis une interface web, tandis que les administrateurs peuvent créer des comptes et contrôler l’accès à chaque modèle.

Pour un déploiement en production, pensez à restreindre l’accès à l’API Ollama, à utiliser HTTPS pour l’interface Open WebUI, à sauvegarder le volume Docker persistant et à épingler une version précise d’Open WebUI avant d’effectuer les mises à jour.