Ollama
Cette VM ollama est une machine NixOS hébergée sous XCP-ng, avec passage de la carte graphique NVIDIA en PCI passthrough. Elle sert d’hôte à Ollama (serveur LLM local).
Environnement & matériel
Hyperviseur: XCP-ng
OS invité: NixOS (configuration déclarative via Nix flakes)
GPU passthrough: NVIDIA, avec modules noyau propriétaire
Modules
nvidiachargés dans l’initrdSupport CUDA via
hardware.nvidia-container-toolkit.enable = trueInstallation de CUDA Toolkit,
nvtop,pciutils,file
Étapes XCP-ng : PCI Passthrough de la carte NVIDIA
La VM srv-ollama utilise le PCI passthrough pour exposer la carte graphique NVIDIA GeForce RTX 4060 à l’environnement NixOS invité. Voici les étapes réalisées depuis XCP-ng :
1. Préparation : masquer la carte à Dom0
Voici l'exécution des commandes pour cacher les deux périphériques PCI (VGA et Audio) de la carte NVIDIA :
On redémarre le serveur pour une bonne prise en compte :
reboot
On vérifie que les périphériques sont bien assignables :
2. Attribution à la VM cible
Identification de l’UUID de la VM ollama:
xe vm-list
On affecte les deux périphériques PCI à cette VM :
xe vm-param-set other-config:pci=0/0000:03:00.0,0/0000:03:00.1 uuid=<UUID_VM_SRV_OLLAMA>
On redémarre l'hyperviseur XCP-ng :
reboot

Fichiers de configuration
Fichier | Description |
|---|---|
| Drivers NVIDIA, CUDA Toolkit, GPU passthrough |
| Services Ollama, nginx |
Configuration logicielle
Tous les services sont gérés dans la flake ollama.nix
1. Service services.ollama
Accélération CUDA activée
Débogage activé
Service exposé sur le port
8081Firewall mis à jour automatiquement
2. Service Open WebUI
Interface web disponible sur le port
8080Communication vers Ollama via
localhost:8081
3. Reverse proxy via nginx
Accès WebUI depuis
http://10.0.0.50/Support des WebSockets
Installation & déploiement
Nous avons configuré le passthrough GPU dans XCP-ng (assignation à la VM)
Il a fallut activer les drivers NVIDIA dans NixOS (
nvidia.nix)Et appliquer la flake Nix :
nixos-rebuild switchAprès build :
ollamaécoute sur le port8081open-webuisur8080nginxproxy sur10.0.0.50
Accès aux services
Ollama API:
http://10.0.0.50:8081
Gestion des modèles
Pour télécharger les modèles, nous somme passé via la CLI Ollama.
Les modèles sont stockés par défaut dans
/var/lib/ollama
Maintenance & mise à jour
Configuration entièrement déclarative via Nix
Rebuild :
nixos-rebuild switch --flake ~/Documents/nixos-config/ollamaSurveillance GPU via
nvtop,nvidia-smi