Intelligence Artificielle
Validé pour E5

Infrastructure IA auto-hébergée avec Ollama

Déploiement d'une solution d'IA locale (Ollama + Open WebUI) sur Rocky Linux 9 dans une VM VMware ESXi.

01

Contexte du projet

Dans le cadre du BTS SIO (option SISR), j'ai mis en place une infrastructure IA auto-hébergée afin de tester des modèles de langage (LLM) directement sur un serveur local, sans dépendre d'un service cloud. L'objectif est de comprendre la chaîne complète : virtualisation, administration Linux, conteneurs Docker, services réseau et consommation d'API.

La solution s'appuie sur Ollama (moteur d'exécution des modèles) et Open WebUI (interface web) déployés sur une VM Rocky Linux hébergée sur VMware ESXi.

Spécifications : Rocky Linux 9, 2 vCPU, 8 Go RAM, 60 Go de stockage.

Outils et technologies

VMware ESXi Rocky Linux 9 Ollama Open WebUI Docker LLM (Phi-3, Llama 3.2)

Livrables

VM fonctionnelle Interface web accessible Schéma d'architecture Documentation d'installation
02

Compétences E5 validées

Ce projet valide plusieurs compétences du référentiel BTS SIO pour l'Épreuve E5. Voir le tableau complet E5 →

Bloc 4 : Travailler en mode projet

  • Analyser les objectifs et les modalités d'organisation d'un projet
  • Planifier les activités de déploiement

Bloc 5 : Mettre à disposition un service

  • Réaliser les tests d'intégration et d'acceptation d'un service
  • Déployer un service (Ollama + Open WebUI)

Bloc 6 : Développement professionnel

  • Mettre en œuvre des outils et stratégies de veille informationnelle (IA/LLM)
  • Mettre en place son environnement d'apprentissage personnel
03

Objectifs du projet

Déployer une solution IA auto-hébergée sur une infrastructure locale.
Installer et configurer Ollama pour l'exécution de modèles LLM.
Mettre en place Open WebUI comme interface utilisateur.
Optimiser les performances avec des contraintes matérielles (8 Go RAM).
Sécuriser l'accès réseau et configurer le firewall (ports et services).
Tester plusieurs modèles IA légers (Phi-3, Llama 3.2 3B).
04

Architecture et schémas

L'hyperviseur VMware ESXi héberge une VM Rocky Linux 9. Ollama tourne en tant que service systemd et expose une API HTTP sur le port 11434. Open WebUI est déployé en conteneur Docker et fournit l'interface web sur le port 8080.

Flux : Navigateur → Open WebUI → Ollama → Modèle LLM (Phi-3, Llama 3.2).

VM Rocky Linux 9 sur VMware ESXi
Ollama (API HTTP :11434) + modèles LLM
Open WebUI en conteneur (HTTP :8080)
Accès LAN + règles firewalld
05

Étapes d'implémentation

Création de la VM sur VMware ESXi (RHEL 9 64-bit) et installation Rocky Linux 9 (minimal).
Mise à jour du système et installation des outils de base : curl, wget, git, nano.
Configuration sécurité : SELinux en mode permissif (si nécessaire) et ouverture des ports nécessaires (ex: 8080, et 11434 si l'API Ollama est exposée) via firewall-cmd.
Installation d'Ollama via le script officiel + vérification du service (systemctl status ollama).
Téléchargement et tests des modèles : ollama pull phi3, ollama pull llama3.2:3b, puis test en CLI.
Configuration Ollama pour l'écoute réseau (override systemd / variables d'environnement).
Installation de Docker CE et déploiement d'Open WebUI en conteneur (liaison vers l'API Ollama).
Validation : accès navigateur à Open WebUI et tests de conversation / sélection de modèles.
06

Difficultés rencontrées

Contraintes matérielles : 8 Go de RAM limitent le choix des modèles et les performances.
Ollama écoute en localhost par défaut : adaptation nécessaire pour l'accès réseau.
Dépendances Docker sur Rocky/RHEL : configuration des dépôts et services.
Optimisation pour éviter le swap lors du chargement de modèles.
07

Solutions appliquées

Choix de modèles légers : Phi-3 et Llama 3.2 3B, adaptés à 8 Go RAM.
Override systemd / variable d'environnement pour exposer l'API Ollama (0.0.0.0:11434).
Déploiement Open WebUI avec paramètres réseau adaptés (mapping de port ou --network=host).
Règles firewalld pour autoriser les ports nécessaires : 8080 (Open WebUI) et, si besoin, 11434 (API Ollama exposée).
Tests de stabilité et ajustements pour limiter l'usage mémoire.
08

Commandes clés

Voici les principales commandes utilisées pour déployer et configurer l'infrastructure IA.

Installation d'Ollama

# Télécharger et installer Ollama
curl -fsSL https://ollama.com/install.sh | sh

# Vérifier le service
systemctl status ollama
systemctl enable ollama --now

Configuration réseau (expose API)

# Créer un override systemd pour exposer l'API
sudo mkdir -p /etc/systemd/system/ollama.service.d
sudo nano /etc/systemd/system/ollama.service.d/override.conf

# Contenu du fichier override.conf :
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"

# Recharger et redémarrer
sudo systemctl daemon-reload
sudo systemctl restart ollama

Configuration firewalld

# Ouvrir le port 8080 (Open WebUI)
sudo firewall-cmd --permanent --add-port=8080/tcp

# Ouvrir le port 11434 (API Ollama, optionnel)
sudo firewall-cmd --permanent --add-port=11434/tcp

# Recharger le firewall
sudo firewall-cmd --reload

# Vérifier les ports ouverts
sudo firewall-cmd --list-ports

Téléchargement et test des modèles

# Télécharger le modèle Phi-3
ollama pull phi3

# Télécharger Llama 3.2 (3B)
ollama pull llama3.2:3b

# Lister les modèles installés
ollama list

# Tester un modèle en CLI
ollama run phi3 "Bonjour, peux-tu te présenter ?"

Déploiement d'Open WebUI

# Installer Docker
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io
sudo systemctl enable docker --now

# Déployer Open WebUI
docker run -d \
  --name open-webui \
  -p 8080:8080 \
  -e OLLAMA_BASE_URL=http://localhost:11434 \
  -v open-webui:/app/backend/data \
  --restart always \
  ghcr.io/open-webui/open-webui:main

# Vérifier le conteneur
docker ps
docker logs open-webui
09

Résultats et captures

La VM héberge une solution IA locale opérationnelle : l'interface Open WebUI est accessible depuis le réseau et permet de dialoguer avec des modèles LLM exécutés par Ollama.

Astuce : cliquez sur une image pour l'agrandir (zoom).