{"id":1271,"date":"2025-03-06T12:41:05","date_gmt":"2025-03-06T11:41:05","guid":{"rendered":"https:\/\/www.jjtronics.com\/wordpress\/?p=1271"},"modified":"2025-03-21T13:28:31","modified_gmt":"2025-03-21T12:28:31","slug":"%e2%9a%a1-installer-carte-nvidia-dans-proxmox-lxc-docker-exemple-ia-et-ollama","status":"publish","type":"post","link":"https:\/\/www.jjtronics.com\/wordpress\/2025\/03\/06\/%e2%9a%a1-installer-carte-nvidia-dans-proxmox-lxc-docker-exemple-ia-et-ollama\/","title":{"rendered":"\u26a1 Installer carte NVIDIA dans Proxmox \/ LXC \/ Docker (IA LLM et Ollama)"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full is-resized is-style-rounded\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" data-attachment-id=\"1272\" data-permalink=\"https:\/\/www.jjtronics.com\/wordpress\/2025\/03\/06\/%e2%9a%a1-installer-carte-nvidia-dans-proxmox-lxc-docker-exemple-ia-et-ollama\/proxmox-lxc-debian-et-docker-pour-nvidia\/\" data-orig-file=\"https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/Proxmox-LXC-Debian-et-Docker-pour-NVIDIA.webp\" data-orig-size=\"1024,1024\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Proxmox LXC Debian et Docker pour NVIDIA\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/Proxmox-LXC-Debian-et-Docker-pour-NVIDIA.webp\" src=\"https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/Proxmox-LXC-Debian-et-Docker-pour-NVIDIA.webp\" alt=\"Proxmox LXC Debian et Docker pour NVIDIA\" class=\"wp-image-1272\" style=\"width:214px;height:auto\" srcset=\"https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/Proxmox-LXC-Debian-et-Docker-pour-NVIDIA.webp 1024w, https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/Proxmox-LXC-Debian-et-Docker-pour-NVIDIA-300x300.webp 300w, https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/Proxmox-LXC-Debian-et-Docker-pour-NVIDIA-150x150.webp 150w, https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/Proxmox-LXC-Debian-et-Docker-pour-NVIDIA-768x768.webp 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Dans ce tutoriel, nous allons configurer une carte graphique NVIDIA sur Proxmox, la rendre disponible dans un conteneur LXC, puis l\u2019exploiter dans Docker au sein de ce m\u00eame conteneur.<br>L\u2019exemple final porte sur l\u2019installation de l\u2019application <strong>Ollama<\/strong> pour l\u2019IA qui utilisera l&rsquo;acc\u00e9l\u00e9ration mat\u00e9riel de la carte graphique, mais la proc\u00e9dure s\u2019applique \u00e0 d\u2019autres usages (Serveur multimedia Plex, encodage\/d\u00e9codage &#8230;).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Mat\u00e9riel et environnements test\u00e9s<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Serveurs HP<\/strong> : ML110 G9 et Z840<\/li>\n\n\n\n<li><strong>Cartes graphiques<\/strong> : Nvidia Quadro P6000 et Nvidia RTX 2080<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Mais le plus important c&rsquo;est : <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-D&rsquo;avoir du CPU Intel <br>-Une carte Nvidia assez r\u00e9cente en fonction des besoins pour pouvoir suivre ce tuto<br>-Le mode secure boot d\u00e9sactiv\u00e9 pour pouvoir charger le driver Nvidia (Et donc activer le mode legacy boot), par exemple pour HP : <br>  <a href=\"https:\/\/support.hp.com\/us-en\/document\/ish_6930187-6931079-16\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/support.hp.com\/us-en\/document\/ish_6930187-6931079-16<\/a> <br>-Que la carte graphique soit reconnu en faisant un lspci (dans mon cas une GeForce RTX 2080) :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">root@ml110:~# lspci |grep NVIDIA\n03:00.0 VGA compatible controller: NVIDIA Corporation TU104 [GeForce RTX 2080] (rev a1)\n03:00.1 Audio device: NVIDIA Corporation TU104 HD Audio Controller (rev a1)\n03:00.2 USB controller: NVIDIA Corporation TU104 USB 3.1 Host Controller (rev a1)\n03:00.3 Serial bus controller: NVIDIA Corporation TU104 USB Type-C UCSI Controller (rev a1)\nroot@ml110:~#<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Pour une config AMD, un autre tuto arrivera.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. \ud83d\ude80 Configuration de Proxmox<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1.1. Modifier le fichier <code>sources.list<\/code><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">nano \/etc\/apt\/sources.list<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Assurez-vous d\u2019avoir les d\u00e9p\u00f4ts suivants (pour <strong>Proxmox 8<\/strong> sur base Debian Bookworm)\u202f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>deb http:\/\/download.proxmox.com\/debian\/pve bookworm pve-no-subscription\n\ndeb http:\/\/deb.debian.org\/debian bookworm main contrib non-free non-free-firmware\ndeb http:\/\/security.debian.org\/debian-security bookworm-security main contrib non-free non-free-firmware\ndeb http:\/\/deb.debian.org\/debian bookworm-updates main contrib non-free non-free-firmware<\/code><\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Note<\/strong> : Commentez (d\u00e9sactivez) le repository <code>ceph<\/code> et le repository <code>pve-enterprise<\/code> s\u2019ils sont pr\u00e9sents.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">1.2. Mettre \u00e0 jour le syst\u00e8me<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>apt update\napt upgrade<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">1.3. Installer les d\u00e9pendances<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>apt install pve-headers-$(uname -r) build-essential dkms wget libglvnd-dev  sudo libglvnd0<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">1.4. Activer l\u2019IOMMU dans GRUB<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9ditez le fichier <code>\/etc\/default\/grub<\/code> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>nano \/etc\/default\/grub<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dans la ligne contenant <code>GRUB_CMDLINE_LINUX_DEFAULT<\/code>, ajoutez les param\u00e8tres <code>intel_iommu=on iommu=pt<\/code>, par exemple :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>GRUB_CMDLINE_LINUX_DEFAULT=\"quiet intel_iommu=on iommu=pt\"\n<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Puis mettez \u00e0 jour GRUB :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>update-grub\n<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">1.5. Activer le regroupement des IOMMU (recommand\u00e9)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Cr\u00e9ez ou modifiez les fichiers suivants :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>echo \"options kvm ignore_msrs=1\" &gt; \/etc\/modprobe.d\/kvm.conf\necho \"options vfio_iommu_type1 allow_unsafe_interrupts=1\" &gt; \/etc\/modprobe.d\/iommu.conf<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Puis mettez \u00e0 jour <code>initramfs<\/code> <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>update-initramfs -u\n<\/code><\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Info<\/strong> : S\u2019il y a eu une mise \u00e0 jour du noyau (apr\u00e8s <code>apt upgrade<\/code>), red\u00e9marrez la machine.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">1.6. D\u00e9sactiver le module <code>nouveau<\/code><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>sudo modprobe -r nouveau\n<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">1.7. Installer le driver NVIDIA<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><em>(Exemple : version <code>550.144.03<\/code> \u2013 adaptez si n\u00e9cessaire)<\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>wget https:\/\/fr.download.nvidia.com\/XFree86\/Linux-x86_64\/550.144.03\/NVIDIA-Linux-x86_64-550.144.03.run\nchmod +x NVIDIA-Linux-x86_64-550.144.03.run\n.\/NVIDIA-Linux-x86_64-550.144.03.run --dkms<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">1.8. Charger les modules n\u00e9cessaires<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Modifiez le fichier <code>\/etc\/modules<\/code> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>nano \/etc\/modules\n<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ajoutez-y :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>vfio\nvfio_iommu_type1\nvfio_pci\nvfio_virqfd\n\n# load nvidia modules\nnvidia-drm\nnvidia-uvm<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">1.9. Cr\u00e9er un fichier pour blacklist <code>nouveau<\/code><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>nano \/etc\/modprobe.d\/nvidia-installer-disable-nouveau.conf\n<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Mettez-y :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>blacklist nvidiafb\nblacklist nouveau\nblacklist lbm-nouveau\noptions nouveau modeset=0<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">1.10. R\u00e8gles udev pour g\u00e9rer les p\u00e9riph\u00e9riques NVIDIA<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>nano \/etc\/udev\/rules.d\/70-nvidia.rules\n<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ajoutez-y :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>KERNEL==\"nvidia\", RUN+=\"\/bin\/bash -c '\/usr\/bin\/nvidia-smi -L &amp;&amp; \/bin\/chmod 666 \/dev\/nvidia*'\"\nKERNEL==\"nvidia_uvm\", RUN+=\"\/bin\/bash -c '\/usr\/bin\/nvidia-modprobe -c0 -u &amp;&amp; \/bin\/chmod 0666 \/dev\/nvidia-uvm*'\"\nSUBSYSTEM==\"module\", ACTION==\"add\", DEVPATH==\"\/module\/nvidia\", RUN+=\"\/usr\/bin\/nvidia-modprobe -m\"<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Activez imm\u00e9diatement les r\u00e8gles :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>udevadm control --reload-rules &amp;&amp; udevadm trigger\n<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">1.11. Red\u00e9marrer Proxmox<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>reboot\n<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">1.12. V\u00e9rifier la pr\u00e9sence des p\u00e9riph\u00e9riques NVIDIA<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Apr\u00e8s reboot, vous devriez voir :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>ls -lah \/dev\/nvidia*\n<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Exemple :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>crw-rw-rw- 1 root root 195,   0 Mar  4 19:03 \/dev\/nvidia0\ncrw-rw-rw- 1 root root 195, 255 Mar  4 19:03 \/dev\/nvidiactl\ncrw-rw-rw- 1 root root 195, 254 Mar  4 19:03 \/dev\/nvidia-modeset\ncrw-rw-rw- 1 root root 510,   0 Mar  4 19:03 \/dev\/nvidia-uvm\ncrw-rw-rw- 1 root root 510,   1 Mar  4 19:03 \/dev\/nvidia-uvm-tools\n\n\/dev\/nvidia-caps:\ncr--------  1 root root 237, 1 Mar  4 19:03 nvidia-cap1\ncr--r--r--  1 root root 237, 2 Mar  4 19:03 nvidia-cap2\n<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">On retrouve les num\u00e9ros majeurs (ex. 195, 510 et 237) pour la configuration du LXC.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. \ud83c\udff7 Cr\u00e9er et configurer un conteneur LXC Debian 12<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">2.1. Cr\u00e9er un LXC Debian 12 <strong>privil\u00e9gi\u00e9<\/strong>, avec Nesting activ\u00e9<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Depuis l\u2019interface Proxmox, cr\u00e9ez un conteneur LXC Debian 12 et, dans l\u2019onglet <strong>Options<\/strong> (ou <strong>Features<\/strong> selon la version) :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cochez <strong>Privileged<\/strong> (ou assurez-vous que la case \u201cUnprivileged container\u201d est <strong>d\u00e9sactiv\u00e9e<\/strong>).<\/li>\n\n\n\n<li>Activez l\u2019option <strong>Nesting<\/strong>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Vous pouvez \u00e9galement t\u00e9l\u00e9charger le template lxc debian et l&rsquo;installer en ligne de commande : <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">pveam update\npveam available | grep debian-12-standard<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Vous devriez voir la derni\u00e8re version en date, dans notre cas :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">system          debian-12-standard_12.7-1_amd64.tar.zst<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">SI votre stockage est bien nomm\u00e9 local (par d\u00e9faut en g\u00e9n\u00e9ral dans proxmox) vous pouvez lancer :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">pveam download local debian-12-standard_12.7-1_amd64.tar.zst<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Lancez la cr\u00e9ation du LXC avec le template debian : <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">pct create 100 local:vztmpl\/debian-12-standard_12.7-1_amd64.tar.zst \\\n  --hostname debian12-nvidia \\\n  --cores 4 \\\n  --memory 4096 \\\n  --swap 0 \\\n  --rootfs local-lvm:20 \\\n  --net0 name=eth0,bridge=vmbr0,ip=dhcp \\\n  --features nesting=1 \\\n  --unprivileged=0 \\\n  --password TonMotDePasseIci<\/code><\/pre>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Dans cet exemple nous allons cr\u00e9er un LXC avec le template Debian pr\u00e9c\u00e9dement t\u00e9l\u00e9charger et les param\u00e8tres :<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-Nom de machine : debian12-nvidia<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-Nombre de core CPU : 4<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-Taille RAM : 4096<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-Taille SWAP :0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-Emplacement du stockage : local-lvm<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-Carte r\u00e9seau &#8211; Quel switch virtuel &#8211; Param\u00e8tres IP : vmbr0 en DHCP<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-Activation de l&rsquo;option Nesting pour Docker : nesting=1<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-LXC en mode privil\u00e9gi\u00e9 : &#8211;unprivileged=0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-Mot de passe root du LXC : TonMotDePasseIci<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2.2. \u00c9diter la configuration du LXC<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Apr\u00e8s cr\u00e9ation, \u00e9ditez la conf (ex. ID 100) :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>nano \/etc\/pve\/lxc\/100.conf\n<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ajoutez \u00e0 la fin<code> :<\/code> les instructions suivantes (en adaptant les num\u00e9ros majeures grace \u00e0 la commande <code>ls -lah \/dev\/nvidia*<\/code> vue au point : 1.12. V\u00e9rifier la pr\u00e9sence des p\u00e9riph\u00e9riques NVIDIA) :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>lxc.cgroup2.devices.allow: c 195:* rwm\nlxc.cgroup2.devices.allow: c 510:* rwm\nlxc.cgroup2.devices.allow: c 237:* rwm\n\nlxc.mount.entry: \/dev\/nvidia-caps dev\/nvidia-caps none bind,optional,create=dir\nlxc.mount.entry: \/dev\/nvidia0 dev\/nvidia0 none bind,optional,create=file\nlxc.mount.entry: \/dev\/nvidiactl dev\/nvidiactl none bind,optional,create=file\nlxc.mount.entry: \/dev\/nvidia-modeset dev\/nvidia-modeset none bind,optional,create=file\nlxc.mount.entry: \/dev\/nvidia-uvm dev\/nvidia-uvm none bind,optional,create=file\nlxc.mount.entry: \/dev\/nvidia-uvm-tools dev\/nvidia-uvm-tools none bind,optional,create=file\nlxc.mount.entry: \/dev\/nvidia-caps dev\/nvidia-caps none bind,optional,create=dir,mode=0777\nlxc.mount.entry: \/dev\/nvidia-uvm-tools dev\/nvidia-caps\/nvidia-cap1 none bind,optional,create=file\nlxc.mount.entry: \/dev\/nvidia-uvm-tools dev\/nvidia-caps\/nvidia-cap2 none bind,optional,create=file<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2.3. D\u00e9marrer le LXC et y transf\u00e9rer le driver NVIDIA<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Sur l\u2019h\u00f4te Proxmox :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>pct start 100\npct push 100 \/root\/NVIDIA-Linux-x86_64-550.144.03.run \/root\/NVIDIA-Linux-x86_64-550.144.03.run<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><em>(Adaptez le chemin si n\u00e9cessaire.)<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2.4. Configurer la Debian du LXC<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Dans le conteneur (SSH ou console Proxmox) :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">lxc-attach 100<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>nano \/etc\/apt\/sources.list\n<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ajoutez (ou v\u00e9rifiez) :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>deb http:\/\/deb.debian.org\/debian bookworm main contrib non-free non-free-firmware\ndeb http:\/\/security.debian.org\/debian-security bookworm-security main contrib non-free non-free-firmware\ndeb http:\/\/deb.debian.org\/debian bookworm-updates main contrib non-free non-free-firmware<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Puis :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>apt update\napt upgrade\napt install gpg curl wget<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. \ud83c\udf89 Installer NVIDIA Container Toolkit<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Parfois, le paquet <code>nvidia-container-toolkit<\/code> n\u2019est pas dans les d\u00e9p\u00f4ts. Pour l\u2019installer directement depuis NVIDIA :<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ajouter la cl\u00e9 GPG officielle :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">curl -fsSL https:\/\/nvidia.github.io\/libnvidia-container\/gpgkey | gpg --dearmor -o \/usr\/share\/keyrings\/nvidia-container-toolkit-keyring.gpg\n\ncurl -s -L https:\/\/nvidia.github.io\/libnvidia-container\/debian11\/nvidia-container-toolkit.list | sed 's#deb https:\/\/#deb [signed-by=\/usr\/share\/keyrings\/nvidia-container-toolkit-keyring.gpg] https:\/\/#g' | tee \/etc\/apt\/sources.list.d\/nvidia-container-toolkit.list<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Mettre \u00e0 jour :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>apt update<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Installer <code>nvidia-container-toolkit<\/code> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>apt install -y nvidia-container-toolkit<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ajuster la config (si besoin) :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>nano \/etc\/nvidia-container-runtime\/config.toml<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Pour ajouter ou v\u00e9rifier :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>no-cgroups = true<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. \ud83d\udd27 Installer le driver NVIDIA dans le LXC<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dans le conteneur :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>chmod +x NVIDIA-Linux-x86_64-550.144.03.run\n.\/NVIDIA-Linux-x86_64-550.144.03.run --no-kernel-module<\/code><\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">L\u2019option <code>--no-kernel-module<\/code> est utilis\u00e9e car le module du noyau est d\u00e9j\u00e0 g\u00e9r\u00e9 par l\u2019h\u00f4te Proxmox.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">V\u00e9rifiez :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>ls -lah \/dev\/nvidia*\nnvidia-smi<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Vous devriez voir vos p\u00e9riph\u00e9riques NVIDIA et avoir acc\u00e8s \u00e0 la carte via <code>nvidia-smi<\/code> : <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">root@NVIDIA-TESTS:~# ls -lah \/dev\/nvidia*\ncrw-rw-rw- 1 root root 195, 254 Mar  6 13:41 \/dev\/nvidia-modeset\ncrw-rw-rw- 1 root root 510,   0 Mar  6 13:41 \/dev\/nvidia-uvm\ncrw-rw-rw- 1 root root 510,   1 Mar  6 13:41 \/dev\/nvidia-uvm-tools\ncrw-rw-rw- 1 root root 195,   0 Mar  6 13:41 \/dev\/nvidia0\ncrw-rw-rw- 1 root root 195, 255 Mar  6 13:41 \/dev\/nvidiactl\n\n\/dev\/nvidia-caps:\ntotal 0\ndrw-rw-rw- 2 root root     80 Mar  6 13:41 .\ndrwxr-xr-x 8 root root    620 Mar  6 14:00 ..\ncrw-rw-rw- 1 root root 510, 1 Mar  6 13:41 nvidia-cap1\ncrw-rw-rw- 1 root root 510, 1 Mar  6 13:41 nvidia-cap2<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"828\" height=\"344\" data-attachment-id=\"1283\" data-permalink=\"https:\/\/www.jjtronics.com\/wordpress\/2025\/03\/06\/%e2%9a%a1-installer-carte-nvidia-dans-proxmox-lxc-docker-exemple-ia-et-ollama\/image\/\" data-orig-file=\"https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/image.png\" data-orig-size=\"828,344\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"nvidia-smi\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/image.png\" src=\"https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/image.png\" alt=\"nvidia-smi\" class=\"wp-image-1283\" srcset=\"https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/image.png 828w, https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/image-300x125.png 300w\" sizes=\"auto, (max-width: 828px) 100vw, 828px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. \ud83d\udc33 Installer Docker dans le LXC<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ajouter la cl\u00e9 GPG Docker et le d\u00e9p\u00f4t :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">apt-get update\napt-get install ca-certificates curl sudo\n\ninstall -m 0755 -d \/etc\/apt\/keyrings\n\ncurl -fsSL https:\/\/download.docker.com\/linux\/debian\/gpg -o \/etc\/apt\/keyrings\/docker.asc\n\nchmod a+r \/etc\/apt\/keyrings\/docker.asc\n\necho   \"deb [arch=$(dpkg --print-architecture) signed-by=\/etc\/apt\/keyrings\/docker.asc] https:\/\/download.docker.com\/linux\/debian \\\n  $(. \/etc\/os-release &amp;&amp; echo \"$VERSION_CODENAME\") stable\" |   sudo tee \/etc\/apt\/sources.list.d\/docker.list &gt; \/dev\/null\n\napt-get update<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Installer Docker :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Configurer Docker pour utiliser le runtime NVIDIA par d\u00e9faut :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>nano \/etc\/docker\/daemon.json <\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ajoutez :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">{\n  \"runtimes\": {\n    \"nvidia\": {\n      \"path\": \"nvidia-container-runtime\",\n      \"runtimeArgs\": []\n    }\n  },\n  \"default-runtime\": \"nvidia\"\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Red\u00e9marrer Docker :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>systemctl restart docker<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">6. \ud83e\udd16 Exemple : D\u00e9ployer Ollama (IA) via Docker Compose<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">6.1. Pr\u00e9parer le dossier et le fichier <code>docker-compose.yml<\/code><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>mkdir ollama\ncd ollama\nnano docker-compose.yml<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Exemple de configuration :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>services:\n  ollama:\n    image: ollama\/ollama:latest\n    container_name: ollama\n    ports:\n      - \"11434:11434\"\n    volumes:\n      - ollama:\/root\/.ollama\n    pull_policy: always\n    tty: true\n    restart: unless-stopped\n    environment:\n      - NVIDIA_VISIBLE_DEVICES=all\n      - NVIDIA_DRIVER_CAPABILITIES=all\n      - OLLAMA_ACCELERATOR=cuda\n      - CUDA_VISIBLE_DEVICES=0\n      - OLLAMA_FORCE_CUDA=1\n      - OLLAMA_USE_CUDA=1\n    devices:\n      - \/dev\/nvidia0:\/dev\/nvidia0\n      - \/dev\/nvidiactl:\/dev\/nvidiactl\n      - \/dev\/nvidia-uvm:\/dev\/nvidia-uvm\n      - \/dev\/nvidia-uvm-tools:\/dev\/nvidia-uvm-tools\n      - \/dev\/nvidia-modeset:\/dev\/nvidia-modeset\n      - \/dev\/nvidia-caps:\/dev\/nvidia-caps\n    deploy:\n      resources:\n        reservations:\n          devices:\n            - driver: nvidia\n              count: 1\n              capabilities: [gpu]\n    runtime: nvidia\n\n  ollama-webui:\n    image: ghcr.io\/ollama-webui\/ollama-webui:main\n    container_name: ollama-webui\n    ports:\n      - \"3000:8080\"\n    volumes:\n      - ollama-webui:\/app\/backend\/data\n    depends_on:\n      - ollama\n    environment:\n      - 'OLLAMA_API_BASE_URL=http:\/\/ollama:11434\/api'\n    restart: unless-stopped\n\nvolumes:\n  ollama: {}\n  ollama-webui: {}<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">6.2. Lancer les conteneurs<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Toujours dans le r\u00e9pertoire <code>ollama<\/code> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>docker compose up -d\n<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">6.3. Optionnel : Installer Portainer<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Pour g\u00e9rer vos conteneurs plus facilement, vous pouvez installer <strong>Portainer<\/strong> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>docker run -d -p 8000:8000 -p 9443:9443 \\\n  --name portainer \\\n  --restart=always \\\n  -v \/var\/run\/docker.sock:\/var\/run\/docker.sock \\\n  -v portainer_data:\/data \\\n  portainer\/portainer-ce:lts<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">7. \ud83d\udd0e V\u00e9rification du fonctionnement d\u2019Ollama<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Consultez les logs pour v\u00e9rifier que votre GPU est d\u00e9tect\u00e9. Par exemple :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">docker logs -f ollama<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>time=2025-03-04T18:47:34.093Z level=INFO source=gpu.go:217 msg=\"looking for compatible GPUs\"\ntime=2025-03-04T18:47:34.450Z level=INFO source=types.go:130 msg=\"inference compute\" ...\nname=\"NVIDIA GeForce RTX 2080\" total=\"7.8 GiB\" available=\"7.7 GiB\"<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">ou par exemple :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>time=2025-03-04T20:05:05.414Z level=INFO source=types.go:130 msg=\"inference compute\" ...\nname=\"Quadro P6000\" total=\"23.9 GiB\" available=\"23.7 GiB\"<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tant qu\u2019il affiche bien le nom de la carte, c\u2019est que la configuration fonctionne !<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"652\" data-attachment-id=\"1289\" data-permalink=\"https:\/\/www.jjtronics.com\/wordpress\/2025\/03\/06\/%e2%9a%a1-installer-carte-nvidia-dans-proxmox-lxc-docker-exemple-ia-et-ollama\/ollama-docker-in-lxc-in-proxmox-with-nvidia\/\" data-orig-file=\"https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/ollama-docker-in-lxc-in-proxmox-with-nvidia.png\" data-orig-size=\"2066,1315\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"ollama docker in lxc in proxmox with nvidia\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/ollama-docker-in-lxc-in-proxmox-with-nvidia-1024x652.png\" src=\"https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/ollama-docker-in-lxc-in-proxmox-with-nvidia-1024x652.png\" alt=\"\" class=\"wp-image-1289\" srcset=\"https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/ollama-docker-in-lxc-in-proxmox-with-nvidia-1024x652.png 1024w, https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/ollama-docker-in-lxc-in-proxmox-with-nvidia-300x191.png 300w, https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/ollama-docker-in-lxc-in-proxmox-with-nvidia-1536x978.png 1536w, https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/ollama-docker-in-lxc-in-proxmox-with-nvidia-2048x1304.png 2048w, https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/ollama-docker-in-lxc-in-proxmox-with-nvidia-768x489.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83c\udf89 Conclusion<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Vous disposez d\u00e9sormais d\u2019un syst\u00e8me <strong>Proxmox<\/strong> avec une carte <strong>NVIDIA<\/strong> pass-through dans un conteneur <strong>LXC<\/strong> (privil\u00e9gi\u00e9, Nesting activ\u00e9) et exploitable dans <strong>Docker<\/strong>.<br>Cette configuration permet notamment d\u2019ex\u00e9cuter des t\u00e2ches d\u2019IA comme <strong>Ollama<\/strong>, ou tout autre outil GPU, dans vos conteneurs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vous pouvez bien \u00e9videment utiliser la carte graphique simultan\u00e9ment sur plusieurs LXC et plusieurs Dockers<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Points essentiels<\/strong> :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>V\u00e9rifiez toujours que le pilote NVIDIA de l\u2019h\u00f4te Proxmox est correctement install\u00e9 et que <code>nvidia-smi<\/code> fonctionne.<\/li>\n\n\n\n<li>Le conteneur LXC <strong>doit<\/strong> \u00eatre privil\u00e9gi\u00e9 et autoriser l\u2019acc\u00e8s aux p\u00e9riph\u00e9riques <code>nvidia*<\/code> et <code>nvidia-caps<\/code>.<\/li>\n\n\n\n<li>Le <strong>runtime<\/strong> <code>nvidia-container-runtime<\/code> est indispensable pour Docker.<\/li>\n\n\n\n<li>Adaptez les <strong>versions de driver<\/strong> et de paquets \u00e0 vos besoins mat\u00e9riels et logiciels.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">8. \ud83d\udd0e Debugging<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">8.1. Dans le cas ou \u00e7a \u00e0 march\u00e9 mais \u00e7a ne marche plus : <\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Dans le cas ou \u00e7a \u00e0 march\u00e9 mais \u00e7a ne marche plus et que vous voyez dans les logs ollama : <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">time=2025-03-06T18:37:14.645Z level=INFO source=gpu.go:217 msg=\"looking for compatible GPUs\"\ntime=2025-03-06T16:37:14.671Z level=WARN source=gpu.go:605 msg=\"unknown error initializing cuda driver library \/usr\/lib\/x86_64-linux-gnu\/libcuda.so.550.144.03: cuda driver library init failure: 999. see https:\/\/github.com\/ollama\/ollama\/blob\/main\/docs\/troubleshooting.md for more information\"\ntime=2025-03-06T18:37:14.689Z level=INFO source=gpu.go:377 msg=\"no compatible GPUs were discovered\"\ntime=2025-03-06T16:37:14.689Z level=INFO source=types.go:130 msg=\"inference compute\" id=0 library=cpu variant=\"\" compute=\"\" driver=0.0 name=\"\" total=\"125.7 GiB\" available=\"123.0 GiB\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">V\u00e9rifiez \u00e0 nouveau sur proxmox les num\u00e9ro majeure des interfaces :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>ls -lah \/dev\/nvidia*\n<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Exemple :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>crw-rw-rw- 1 root root 195,   0 Mar  4 19:03 \/dev\/nvidia0\ncrw-rw-rw- 1 root root 195, 255 Mar  4 19:03 \/dev\/nvidiactl\ncrw-rw-rw- 1 root root 195, 254 Mar  4 19:03 \/dev\/nvidia-modeset\ncrw-rw-rw- 1 root root 510,   0 Mar  4 19:03 \/dev\/nvidia-uvm\ncrw-rw-rw- 1 root root 510,   1 Mar  4 19:03 \/dev\/nvidia-uvm-tools\n\n\/dev\/nvidia-caps:\ncr--------  1 root root 237, 1 Mar  4 19:03 nvidia-cap1\ncr--r--r--  1 root root 237, 2 Mar  4 19:03 nvidia-cap2\n<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">On retrouve les num\u00e9ros majeurs (ex. 195, 510 et 237) pour la configuration du LXC.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Et v\u00e9rifiez qu&rsquo;ils sont identiques \u00e0 ceux de la config LXC : <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">root@ml110:~# cat \/etc\/pve\/lxc\/100.conf\narch: amd64\ncores: 4\nfeatures: nesting=1\nhostname: NVIDIA-TESTS\nmemory: 4096\nnet0: name=eth0,bridge=vmbr0,hwaddr=BC:24:11:AF:CE:A0,ip=dhcp,type=veth\nonboot: 1\nostype: debian\nrootfs: local-lvm:vm-100-disk-0,size=20G\nswap: 0\nlxc.cgroup2.devices.allow: c 195:* rwm\nlxc.cgroup2.devices.allow: c 510:* rwm\nlxc.cgroup2.devices.allow: c 237:* rwm\nlxc.mount.entry: \/dev\/nvidia-caps dev\/nvidia-caps none bind,optional,create=dir\nlxc.mount.entry: \/dev\/nvidia0 dev\/nvidia0 none bind,optional,create=file\nlxc.mount.entry: \/dev\/nvidiactl dev\/nvidiactl none bind,optional,create=file\nlxc.mount.entry: \/dev\/nvidia-modeset dev\/nvidia-modeset none bind,optional,create=file\nlxc.mount.entry: \/dev\/nvidia-uvm dev\/nvidia-uvm none bind,optional,create=file\nlxc.mount.entry: \/dev\/nvidia-uvm-tools dev\/nvidia-uvm-tools none bind,optional,create=file\nlxc.mount.entry: \/dev\/nvidia-caps dev\/nvidia-caps none bind,optional,create=dir,mode=0777\nlxc.mount.entry: \/dev\/nvidia-uvm-tools dev\/nvidia-caps\/nvidia-cap1 none bind,optional,create=file\nlxc.mount.entry: \/dev\/nvidia-uvm-tools dev\/nvidia-caps\/nvidia-cap2 none bind,optional,create=file<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">relancez votre LXC : <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">pct stop 100 &amp;&amp; pct start 100<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Connectez-vous au conteneur LXC : <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">root@ml110:~# lxc-attach 100<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Et v\u00e9rifiez \u00e0 nouveau les logs ollama : <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">root@NVIDIA-TESTS:~# docker logs -f ollama\n...\ntime=2025-03-06T18:38:39.326Z level=INFO source=gpu.go:217 msg=\"looking for compatible GPUs\"\ntime=2025-03-06T18:38:40.310Z level=INFO source=types.go:130 msg=\"inference compute\" id=GPU-000a74e5-c3c6-1f93-1295-5a276ecbeed4 library=cuda variant=v12 compute=7.5 driver=12.4 name=\"NVIDIA GeForce RTX 2080\" total=\"7.8 GiB\" available=\"7.7 GiB\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si vous voyez \u00e0 nouveau votre GPU, \u00e7a devrait fonctionner sans probl\u00e8mes !<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"652\" data-attachment-id=\"1289\" data-permalink=\"https:\/\/www.jjtronics.com\/wordpress\/2025\/03\/06\/%e2%9a%a1-installer-carte-nvidia-dans-proxmox-lxc-docker-exemple-ia-et-ollama\/ollama-docker-in-lxc-in-proxmox-with-nvidia\/\" data-orig-file=\"https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/ollama-docker-in-lxc-in-proxmox-with-nvidia.png\" data-orig-size=\"2066,1315\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"ollama docker in lxc in proxmox with nvidia\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/ollama-docker-in-lxc-in-proxmox-with-nvidia-1024x652.png\" src=\"https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/ollama-docker-in-lxc-in-proxmox-with-nvidia-1024x652.png\" alt=\"\" class=\"wp-image-1289\" srcset=\"https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/ollama-docker-in-lxc-in-proxmox-with-nvidia-1024x652.png 1024w, https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/ollama-docker-in-lxc-in-proxmox-with-nvidia-300x191.png 300w, https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/ollama-docker-in-lxc-in-proxmox-with-nvidia-1536x978.png 1536w, https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/ollama-docker-in-lxc-in-proxmox-with-nvidia-2048x1304.png 2048w, https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/ollama-docker-in-lxc-in-proxmox-with-nvidia-768x489.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">8.2. Dans le cas le driver <code>NVIDIA-Linux-x86_64-550.144.03.run<\/code> ne veut pas s&rsquo;installer :<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Si vous bloquez d\u00e8s l&rsquo;installation de l&rsquo;ex\u00e9cutable Nvidia, il est fort probable que vous ayez des drivers nvidia deja install\u00e9 avec le gestionnaire de d\u00e9pot debian (apt);<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lancez donc ces commandes pour supprimer tous les drivers Nvidia install\u00e9s :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">apt remove --purge '^nvidia-.*' '^libnvidia-.*' '^cuda-.*' '^libcuda.*' -y\napt autoremove -y\napt clean\n\nrm -rf \/etc\/modprobe.d\/nvidia.conf\nrm -rf \/etc\/modules-load.d\/nvidia.conf\nrm -rf \/etc\/X11\/xorg.conf.d\/10-nvidia.conf\nrm -rf \/usr\/local\/cuda*\nrm -rf \/etc\/apt\/sources.list.d\/cuda.list\nrm -rf \/var\/lib\/dkms\/nvidia\/\nrm -rf \/usr\/lib\/nvidia\nrm -rf \/usr\/share\/nvidia\nrm -rf \/var\/cache\/nvidia-installer\n\nupdate-initramfs -u\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Et recommencez le tuto \u00e0 partir du point <strong>1.6. D\u00e9sactiver le module <code>nouveau<\/code><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">8.3. Pour tout autre cas :<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Si vous n&rsquo;arrivez toujours pas \u00e0 faire fonctionner votre carte Nvidia, je vous invite \u00e0 poster un commentaire avec un max d&rsquo;indications, logs etc &#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bonne continuation et bon usage de votre GPU\u202f!<br>\u2728\ud83d\ude80<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans ce tutoriel, nous allons configurer une carte graphique NVIDIA sur Proxmox, la rendre disponible dans un conteneur LXC, puis l\u2019exploiter dans Docker au sein de ce m\u00eame conteneur.L\u2019exemple final porte sur l\u2019installation de&hellip;<\/p>\n","protected":false},"author":1,"featured_media":1272,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[157,2,27,156],"tags":[],"class_list":["post-1271","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ia","category-linux","category-projets","category-proxmox"],"jetpack_publicize_connections":[],"jetpack_shortlink":"https:\/\/wp.me\/p6YUVZ-kv","jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2025\/03\/Proxmox-LXC-Debian-et-Docker-pour-NVIDIA.webp","_links":{"self":[{"href":"https:\/\/www.jjtronics.com\/wordpress\/wp-json\/wp\/v2\/posts\/1271","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jjtronics.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jjtronics.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jjtronics.com\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jjtronics.com\/wordpress\/wp-json\/wp\/v2\/comments?post=1271"}],"version-history":[{"count":28,"href":"https:\/\/www.jjtronics.com\/wordpress\/wp-json\/wp\/v2\/posts\/1271\/revisions"}],"predecessor-version":[{"id":1311,"href":"https:\/\/www.jjtronics.com\/wordpress\/wp-json\/wp\/v2\/posts\/1271\/revisions\/1311"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jjtronics.com\/wordpress\/wp-json\/wp\/v2\/media\/1272"}],"wp:attachment":[{"href":"https:\/\/www.jjtronics.com\/wordpress\/wp-json\/wp\/v2\/media?parent=1271"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jjtronics.com\/wordpress\/wp-json\/wp\/v2\/categories?post=1271"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jjtronics.com\/wordpress\/wp-json\/wp\/v2\/tags?post=1271"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}