[jr_instagram id="1"]
6 Mar
2025

⚡ Installer carte NVIDIA dans Proxmox / LXC / Docker (IA LLM et Ollama)

Proxmox LXC Debian et Docker pour NVIDIA

Dans ce tutoriel, nous allons configurer une carte graphique NVIDIA sur Proxmox, la rendre disponible dans un conteneur LXC, puis l’exploiter dans Docker au sein de ce même conteneur.
L’exemple final porte sur l’installation de l’application Ollama pour l’IA qui utilisera l’accélération matériel de la carte graphique, mais la procédure s’applique à d’autres usages (Serveur multimedia Plex, encodage/décodage …).


Matériel et environnements testés

  • Serveurs HP : ML110 G9 et Z840
  • Cartes graphiques : Nvidia Quadro P6000 et Nvidia RTX 2080

Mais le plus important c’est :

-D’avoir du CPU Intel
-Une carte Nvidia assez récente en fonction des besoins pour pouvoir suivre ce tuto
-Le mode secure boot désactivé pour pouvoir charger le driver Nvidia (Et donc activer le mode legacy boot), par exemple pour HP :
https://support.hp.com/us-en/document/ish_6930187-6931079-16
-Que la carte graphique soit reconnu en faisant un lspci (dans mon cas une GeForce RTX 2080) :

root@ml110:~# lspci |grep NVIDIA
03:00.0 VGA compatible controller: NVIDIA Corporation TU104 [GeForce RTX 2080] (rev a1)
03:00.1 Audio device: NVIDIA Corporation TU104 HD Audio Controller (rev a1)
03:00.2 USB controller: NVIDIA Corporation TU104 USB 3.1 Host Controller (rev a1)
03:00.3 Serial bus controller: NVIDIA Corporation TU104 USB Type-C UCSI Controller (rev a1)
root@ml110:~#

Pour une config AMD, un autre tuto arrivera.


1. 🚀 Configuration de Proxmox

1.1. Modifier le fichier sources.list

nano /etc/apt/sources.list

Assurez-vous d’avoir les dépôts suivants (pour Proxmox 8 sur base Debian Bookworm) :

deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription

deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware

Note : Commentez (désactivez) le repository ceph et le repository pve-enterprise s’ils sont présents.

1.2. Mettre à jour le système

apt update
apt upgrade

1.3. Installer les dépendances

apt install pve-headers-$(uname -r) build-essential dkms wget libglvnd-dev  sudo libglvnd0

1.4. Activer l’IOMMU dans GRUB

Éditez le fichier /etc/default/grub :

nano /etc/default/grub

Dans la ligne contenant GRUB_CMDLINE_LINUX_DEFAULT, ajoutez les paramètres intel_iommu=on iommu=pt, par exemple :

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"

Puis mettez à jour GRUB :

update-grub

1.5. Activer le regroupement des IOMMU (recommandé)

Créez ou modifiez les fichiers suivants :

echo "options kvm ignore_msrs=1" > /etc/modprobe.d/kvm.conf
echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu.conf

Puis mettez à jour initramfs

update-initramfs -u

Info : S’il y a eu une mise à jour du noyau (après apt upgrade), redémarrez la machine.

1.6. Désactiver le module nouveau

sudo modprobe -r nouveau

1.7. Installer le driver NVIDIA

(Exemple : version 550.144.03 – adaptez si nécessaire)

wget https://fr.download.nvidia.com/XFree86/Linux-x86_64/550.144.03/NVIDIA-Linux-x86_64-550.144.03.run
chmod +x NVIDIA-Linux-x86_64-550.144.03.run
./NVIDIA-Linux-x86_64-550.144.03.run --dkms

1.8. Charger les modules nécessaires

Modifiez le fichier /etc/modules :

nano /etc/modules

Ajoutez-y :

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

# load nvidia modules
nvidia-drm
nvidia-uvm

1.9. Créer un fichier pour blacklist nouveau

nano /etc/modprobe.d/nvidia-installer-disable-nouveau.conf

Mettez-y :

blacklist nvidiafb
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0

1.10. Règles udev pour gérer les périphériques NVIDIA

nano /etc/udev/rules.d/70-nvidia.rules

Ajoutez-y :

KERNEL=="nvidia", RUN+="/bin/bash -c '/usr/bin/nvidia-smi -L && /bin/chmod 666 /dev/nvidia*'"
KERNEL=="nvidia_uvm", RUN+="/bin/bash -c '/usr/bin/nvidia-modprobe -c0 -u && /bin/chmod 0666 /dev/nvidia-uvm*'"
SUBSYSTEM=="module", ACTION=="add", DEVPATH=="/module/nvidia", RUN+="/usr/bin/nvidia-modprobe -m"

Activez immédiatement les règles :

udevadm control --reload-rules && udevadm trigger

1.11. Redémarrer Proxmox

reboot

1.12. Vérifier la présence des périphériques NVIDIA

Après reboot, vous devriez voir :

ls -lah /dev/nvidia*

Exemple :

crw-rw-rw- 1 root root 195,   0 Mar  4 19:03 /dev/nvidia0
crw-rw-rw- 1 root root 195, 255 Mar  4 19:03 /dev/nvidiactl
crw-rw-rw- 1 root root 195, 254 Mar  4 19:03 /dev/nvidia-modeset
crw-rw-rw- 1 root root 510,   0 Mar  4 19:03 /dev/nvidia-uvm
crw-rw-rw- 1 root root 510,   1 Mar  4 19:03 /dev/nvidia-uvm-tools

/dev/nvidia-caps:
cr--------  1 root root 237, 1 Mar  4 19:03 nvidia-cap1
cr--r--r--  1 root root 237, 2 Mar  4 19:03 nvidia-cap2

On retrouve les numéros majeurs (ex. 195, 510 et 237) pour la configuration du LXC.


2. 🏷 Créer et configurer un conteneur LXC Debian 12

2.1. Créer un LXC Debian 12 privilégié, avec Nesting activé

Depuis l’interface Proxmox, créez un conteneur LXC Debian 12 et, dans l’onglet Options (ou Features selon la version) :

  • Cochez Privileged (ou assurez-vous que la case “Unprivileged container” est désactivée).
  • Activez l’option Nesting.

Vous pouvez également télécharger le template lxc debian et l’installer en ligne de commande :

pveam update
pveam available | grep debian-12-standard

Vous devriez voir la dernière version en date, dans notre cas :

system          debian-12-standard_12.7-1_amd64.tar.zst

SI votre stockage est bien nommé local (par défaut en général dans proxmox) vous pouvez lancer :

pveam download local debian-12-standard_12.7-1_amd64.tar.zst

Lancez la création du LXC avec le template debian :

pct create 100 local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst \
  --hostname debian12-nvidia \
  --cores 4 \
  --memory 4096 \
  --swap 0 \
  --rootfs local-lvm:20 \
  --net0 name=eth0,bridge=vmbr0,ip=dhcp \
  --features nesting=1 \
  --unprivileged=0 \
  --password TonMotDePasseIci

Dans cet exemple nous allons créer un LXC avec le template Debian précédement télécharger et les paramètres :

-Nom de machine : debian12-nvidia

-Nombre de core CPU : 4

-Taille RAM : 4096

-Taille SWAP :0

-Emplacement du stockage : local-lvm

-Carte réseau – Quel switch virtuel – Paramètres IP : vmbr0 en DHCP

-Activation de l’option Nesting pour Docker : nesting=1

-LXC en mode privilégié : –unprivileged=0

-Mot de passe root du LXC : TonMotDePasseIci

2.2. Éditer la configuration du LXC

Après création, éditez la conf (ex. ID 100) :

nano /etc/pve/lxc/100.conf

Ajoutez à la fin : les instructions suivantes (en adaptant les numéros majeures grace à la commande ls -lah /dev/nvidia* vue au point : 1.12. Vérifier la présence des périphériques NVIDIA) :

lxc.cgroup2.devices.allow: c 195:* rwm
lxc.cgroup2.devices.allow: c 510:* rwm
lxc.cgroup2.devices.allow: c 237:* rwm

lxc.mount.entry: /dev/nvidia-caps dev/nvidia-caps none bind,optional,create=dir
lxc.mount.entry: /dev/nvidia0 dev/nvidia0 none bind,optional,create=file
lxc.mount.entry: /dev/nvidiactl dev/nvidiactl none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-modeset dev/nvidia-modeset none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-uvm dev/nvidia-uvm none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-uvm-tools dev/nvidia-uvm-tools none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-caps dev/nvidia-caps none bind,optional,create=dir,mode=0777
lxc.mount.entry: /dev/nvidia-uvm-tools dev/nvidia-caps/nvidia-cap1 none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-uvm-tools dev/nvidia-caps/nvidia-cap2 none bind,optional,create=file

2.3. Démarrer le LXC et y transférer le driver NVIDIA

Sur l’hôte Proxmox :

pct start 100
pct push 100 /root/NVIDIA-Linux-x86_64-550.144.03.run /root/NVIDIA-Linux-x86_64-550.144.03.run

(Adaptez le chemin si nécessaire.)

2.4. Configurer la Debian du LXC

Dans le conteneur (SSH ou console Proxmox) :

lxc-attach 100
nano /etc/apt/sources.list

Ajoutez (ou vérifiez) :

deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware

Puis :

apt update
apt upgrade
apt install gpg curl wget


3. 🎉 Installer NVIDIA Container Toolkit

Parfois, le paquet nvidia-container-toolkit n’est pas dans les dépôts. Pour l’installer directement depuis NVIDIA :

Ajouter la clé GPG officielle :

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

curl -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

Mettre à jour :

apt update

Installer nvidia-container-toolkit :

apt install -y nvidia-container-toolkit

Ajuster la config (si besoin) :

nano /etc/nvidia-container-runtime/config.toml

Pour ajouter ou vérifier :

no-cgroups = true


4. 🔧 Installer le driver NVIDIA dans le LXC

Dans le conteneur :

chmod +x NVIDIA-Linux-x86_64-550.144.03.run
./NVIDIA-Linux-x86_64-550.144.03.run --no-kernel-module

L’option --no-kernel-module est utilisée car le module du noyau est déjà géré par l’hôte Proxmox.

Vérifiez :

ls -lah /dev/nvidia*
nvidia-smi

Vous devriez voir vos périphériques NVIDIA et avoir accès à la carte via nvidia-smi :

root@NVIDIA-TESTS:~# ls -lah /dev/nvidia*
crw-rw-rw- 1 root root 195, 254 Mar  6 13:41 /dev/nvidia-modeset
crw-rw-rw- 1 root root 510,   0 Mar  6 13:41 /dev/nvidia-uvm
crw-rw-rw- 1 root root 510,   1 Mar  6 13:41 /dev/nvidia-uvm-tools
crw-rw-rw- 1 root root 195,   0 Mar  6 13:41 /dev/nvidia0
crw-rw-rw- 1 root root 195, 255 Mar  6 13:41 /dev/nvidiactl

/dev/nvidia-caps:
total 0
drw-rw-rw- 2 root root     80 Mar  6 13:41 .
drwxr-xr-x 8 root root    620 Mar  6 14:00 ..
crw-rw-rw- 1 root root 510, 1 Mar  6 13:41 nvidia-cap1
crw-rw-rw- 1 root root 510, 1 Mar  6 13:41 nvidia-cap2
nvidia-smi


5. 🐳 Installer Docker dans le LXC

Ajouter la clé GPG Docker et le dépôt :

apt-get update
apt-get install ca-certificates curl sudo

install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc

chmod a+r /etc/apt/keyrings/docker.asc

echo   "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" |   sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

apt-get update

Installer Docker :

apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Configurer Docker pour utiliser le runtime NVIDIA par défaut :

nano /etc/docker/daemon.json 

Ajoutez :

{
  "runtimes": {
    "nvidia": {
      "path": "nvidia-container-runtime",
      "runtimeArgs": []
    }
  },
  "default-runtime": "nvidia"
}

Redémarrer Docker :

systemctl restart docker


6. 🤖 Exemple : Déployer Ollama (IA) via Docker Compose

6.1. Préparer le dossier et le fichier docker-compose.yml

mkdir ollama
cd ollama
nano docker-compose.yml

Exemple de configuration :

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - ollama:/root/.ollama
    pull_policy: always
    tty: true
    restart: unless-stopped
    environment:
      - NVIDIA_VISIBLE_DEVICES=all
      - NVIDIA_DRIVER_CAPABILITIES=all
      - OLLAMA_ACCELERATOR=cuda
      - CUDA_VISIBLE_DEVICES=0
      - OLLAMA_FORCE_CUDA=1
      - OLLAMA_USE_CUDA=1
    devices:
      - /dev/nvidia0:/dev/nvidia0
      - /dev/nvidiactl:/dev/nvidiactl
      - /dev/nvidia-uvm:/dev/nvidia-uvm
      - /dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools
      - /dev/nvidia-modeset:/dev/nvidia-modeset
      - /dev/nvidia-caps:/dev/nvidia-caps
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    runtime: nvidia

  ollama-webui:
    image: ghcr.io/ollama-webui/ollama-webui:main
    container_name: ollama-webui
    ports:
      - "3000:8080"
    volumes:
      - ollama-webui:/app/backend/data
    depends_on:
      - ollama
    environment:
      - 'OLLAMA_API_BASE_URL=http://ollama:11434/api'
    restart: unless-stopped

volumes:
  ollama: {}
  ollama-webui: {}

6.2. Lancer les conteneurs

Toujours dans le répertoire ollama :

docker compose up -d

6.3. Optionnel : Installer Portainer

Pour gérer vos conteneurs plus facilement, vous pouvez installer Portainer :

docker run -d -p 8000:8000 -p 9443:9443 \
  --name portainer \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:lts


7. 🔎 Vérification du fonctionnement d’Ollama

Consultez les logs pour vérifier que votre GPU est détecté. Par exemple :

docker logs -f ollama
time=2025-03-04T18:47:34.093Z level=INFO source=gpu.go:217 msg="looking for compatible GPUs"
time=2025-03-04T18:47:34.450Z level=INFO source=types.go:130 msg="inference compute" ...
name="NVIDIA GeForce RTX 2080" total="7.8 GiB" available="7.7 GiB"

ou par exemple :

time=2025-03-04T20:05:05.414Z level=INFO source=types.go:130 msg="inference compute" ...
name="Quadro P6000" total="23.9 GiB" available="23.7 GiB"

Tant qu’il affiche bien le nom de la carte, c’est que la configuration fonctionne !


🎉 Conclusion

Vous disposez désormais d’un système Proxmox avec une carte NVIDIA pass-through dans un conteneur LXC (privilégié, Nesting activé) et exploitable dans Docker.
Cette configuration permet notamment d’exécuter des tâches d’IA comme Ollama, ou tout autre outil GPU, dans vos conteneurs.

Vous pouvez bien évidement utiliser la carte graphique simultanément sur plusieurs LXC et plusieurs Dockers

Points essentiels :

  • Vérifiez toujours que le pilote NVIDIA de l’hôte Proxmox est correctement installé et que nvidia-smi fonctionne.
  • Le conteneur LXC doit être privilégié et autoriser l’accès aux périphériques nvidia* et nvidia-caps.
  • Le runtime nvidia-container-runtime est indispensable pour Docker.
  • Adaptez les versions de driver et de paquets à vos besoins matériels et logiciels.


8. 🔎 Debugging

8.1. Dans le cas ou ça à marché mais ça ne marche plus :

Dans le cas ou ça à marché mais ça ne marche plus et que vous voyez dans les logs ollama :

time=2025-03-06T18:37:14.645Z level=INFO source=gpu.go:217 msg="looking for compatible GPUs"
time=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"
time=2025-03-06T18:37:14.689Z level=INFO source=gpu.go:377 msg="no compatible GPUs were discovered"
time=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"

Vérifiez à nouveau sur proxmox les numéro majeure des interfaces :

ls -lah /dev/nvidia*

Exemple :

crw-rw-rw- 1 root root 195,   0 Mar  4 19:03 /dev/nvidia0
crw-rw-rw- 1 root root 195, 255 Mar  4 19:03 /dev/nvidiactl
crw-rw-rw- 1 root root 195, 254 Mar  4 19:03 /dev/nvidia-modeset
crw-rw-rw- 1 root root 510,   0 Mar  4 19:03 /dev/nvidia-uvm
crw-rw-rw- 1 root root 510,   1 Mar  4 19:03 /dev/nvidia-uvm-tools

/dev/nvidia-caps:
cr--------  1 root root 237, 1 Mar  4 19:03 nvidia-cap1
cr--r--r--  1 root root 237, 2 Mar  4 19:03 nvidia-cap2

On retrouve les numéros majeurs (ex. 195, 510 et 237) pour la configuration du LXC.

Et vérifiez qu’ils sont identiques à ceux de la config LXC :

root@ml110:~# cat /etc/pve/lxc/100.conf
arch: amd64
cores: 4
features: nesting=1
hostname: NVIDIA-TESTS
memory: 4096
net0: name=eth0,bridge=vmbr0,hwaddr=BC:24:11:AF:CE:A0,ip=dhcp,type=veth
onboot: 1
ostype: debian
rootfs: local-lvm:vm-100-disk-0,size=20G
swap: 0
lxc.cgroup2.devices.allow: c 195:* rwm
lxc.cgroup2.devices.allow: c 510:* rwm
lxc.cgroup2.devices.allow: c 237:* rwm
lxc.mount.entry: /dev/nvidia-caps dev/nvidia-caps none bind,optional,create=dir
lxc.mount.entry: /dev/nvidia0 dev/nvidia0 none bind,optional,create=file
lxc.mount.entry: /dev/nvidiactl dev/nvidiactl none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-modeset dev/nvidia-modeset none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-uvm dev/nvidia-uvm none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-uvm-tools dev/nvidia-uvm-tools none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-caps dev/nvidia-caps none bind,optional,create=dir,mode=0777
lxc.mount.entry: /dev/nvidia-uvm-tools dev/nvidia-caps/nvidia-cap1 none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-uvm-tools dev/nvidia-caps/nvidia-cap2 none bind,optional,create=file

relancez votre LXC :

pct stop 100 && pct start 100

Connectez-vous au conteneur LXC :

root@ml110:~# lxc-attach 100

Et vérifiez à nouveau les logs ollama :

root@NVIDIA-TESTS:~# docker logs -f ollama
...
time=2025-03-06T18:38:39.326Z level=INFO source=gpu.go:217 msg="looking for compatible GPUs"
time=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"

Si vous voyez à nouveau votre GPU, ça devrait fonctionner sans problèmes !

8.2. Dans le cas le driver NVIDIA-Linux-x86_64-550.144.03.run ne veut pas s’installer :

Si vous bloquez dès l’installation de l’exécutable Nvidia, il est fort probable que vous ayez des drivers nvidia deja installé avec le gestionnaire de dépot debian (apt);

Lancez donc ces commandes pour supprimer tous les drivers Nvidia installés :

apt remove --purge '^nvidia-.*' '^libnvidia-.*' '^cuda-.*' '^libcuda.*' -y
apt autoremove -y
apt clean

rm -rf /etc/modprobe.d/nvidia.conf
rm -rf /etc/modules-load.d/nvidia.conf
rm -rf /etc/X11/xorg.conf.d/10-nvidia.conf
rm -rf /usr/local/cuda*
rm -rf /etc/apt/sources.list.d/cuda.list
rm -rf /var/lib/dkms/nvidia/
rm -rf /usr/lib/nvidia
rm -rf /usr/share/nvidia
rm -rf /var/cache/nvidia-installer

update-initramfs -u

Et recommencez le tuto à partir du point 1.6. Désactiver le module nouveau

8.3. Pour tout autre cas :

Si vous n’arrivez toujours pas à faire fonctionner votre carte Nvidia, je vous invite à poster un commentaire avec un max d’indications, logs etc …


Bonne continuation et bon usage de votre GPU !
✨🚀

2 Jan
2024

Découverte et Création Durant les Fêtes : Naissance de Resin Print Portal

Un Week-end du Nouvel An sous le Signe de l’Innovation

Alors que le monde célébrait l’arrivée de la nouvelle année, je me suis lancé dans un projet passionnant, motivé par l’envie de repousser les limites de l’impression 3D, je me suis payé une imprimante résine. Armé de ma toute nouvelle imprimante #Elegoo Saturn 3 Ultra, un cadeau de Noël à moi-même, j’étais prêt à explorer les possibilités offertes par cette technologie fascinante.

Le Dilemme des Slicers

Au cœur de l’impression 3D se trouve le slicer, un logiciel indispensable pour préparer les modèles pour l’impression. J’ai commencé par faire l’expérience des slicers fournit comme Chitubox et Voxeldance Tango. Cependant, je me suis heurté à des limitations avec la version gratuite de Chitubox, et des problèmes de licence avec Voxeldance Tango.

Dans ma quête de solutions, je me suis tourné vers Lychee Slicer, dont j’avais beaucoup entendu parler. Malgré son prix, j’ai été conquis par ses fonctionnalités (entre autre la détection d’effet ventouse) et j’ai fini par acquérir une licence. Lychee Slicer était un plaisir à utiliser, mais il manquait une fonctionnalité cruciale pour moi : la possibilité d’envoyer directement des fichiers à mon imprimante en WiFi.

De la Frustration à la Création

La procédure pour envoyer mes fichiers était fastidieuse : préparer le modèle dans Lychee Slicer, puis le réimporter dans Chitubox uniquement pour l’envoi en WiFi, une opération qui prenait un temps considérable. Cette routine frustrante m’a rapidement poussé à chercher une solution plus pratique.

C’est alors que je suis tombé sur le projet Cassini, qui offrait la possibilité d’envoyer des fichiers à l’imprimante en ligne de commande. Si Cassini apportait une réponse à mon problème, l’absence d’une interface utilisateur graphique me laissait sur ma faim. Habitué à la convivialité d’OctoPrint pour mon imprimante à filament, je désirais quelque chose de similaire pour mon imprimante à résine.

La Naissance de Resin Print Portal

C’est ainsi qu’est né Resin Print Portal (RPP). Inspiré par Cassini, j’ai développé une interface web pour gérer mon imprimante résine, un outil qui allie la simplicité d’utilisation à l’efficacité, en voici un aperçu :

RPP est conçu pour rendre l’impression 3D à base de résine aussi pratique et agréable que possible, en permettant l’envoi de fichiers, le lancement et le suivi des impressions, le tout via une interface web conviviale.

L’Esprit d’Initiative d’un Non-Développeur

Il est important de mentionner que je ne suis pas un développeur de formation. Mon parcours dans la création de RPP est simplement celui d’un geek, motivé par le désir de surmonter un défi pratique plutôt que par une expertise en programmation. Ce projet est le fruit d’un apprentissage autodidacte, de l’exploration, la détermination et aussi un bon coup de main de ChatGPT. J’ai rassemblé des connaissances ici et là, apprenant sur le tas pour transformer mon idée en réalité.

C’est peut-être cette perspective de non-développeur qui rend RPP si intuitif et centré sur l’utilisateur. Mon objectif n’était pas de créer un outil complexe avec des fonctionnalités avancées, mais plutôt quelque chose de simple, efficace et, surtout, totalement fonctionnel. Dans le monde de la technologie, où l’on peut facilement se perdre dans les détails techniques, rappelons-nous que l’utilité et la fonctionnalité sont souvent ce qui compte le plus.

Resin Print Portal est la preuve qu’avec un peu de persévérance et beaucoup d’enthousiasme, les barrières de la complexité peuvent être franchies, même par ceux qui ne sont pas des professionnels du domaine.

Vers un Avenir Plus Lumineux en 3D

Alors que les feux d’artifice du Nouvel An illuminaient le ciel, Resin Print Portal est devenu mon feu de joie personnel. Ce projet est un exemple parfait de la manière dont une frustration peut se transformer en une opportunité de créer quelque chose de nouveau et d’utile, pas seulement pour moi, mais pour toute la communauté des passionnés d’impression 3D.

Si vous souhaitez en savoir plus sur ce projet ou y contribuer, je vous invite à visiter le projet sur GitHub.

17 Avr
2020

Octoprint : Paramétrer plusieurs camera

  Bonjour à tous les printers !!

Aujourd’hui nous allons voir comment paramétrer deux ou plusieurs webcam sur votre serveur d’impression préféré j’ai nommé Octoprint.

Ce tuto à été réalisé sur une installation OctoPi Debian Buster (Donc avec systemd)

 

Dans un premier temps, nous allons vérifier que vos webcam (ou module camera de raspberry) sont bien détecté par l’OS :

ls -l /dev/ | grep video

Vous devriez voir :

/dev/video1

/dev/video2

/dev/videoX

(N’oubliez pas d’activer le module camera dans raspi-config si vous avez installer le module camera Raspberry)

Dans mon cas, je pars sur deux caméra connecté au Raspberry (Le module caméra Raspberry et une webcam usb Logitech) je n’aurais donc que :

/dev/video1

/dev/video2

Nous allons copier le daemon de la webcam pour l’utiliser avec la seconde webcam :

cd /root/bin
ls
gencert  git  webcamd
sudo cp webcamd webcam2d

Et copier le fichier de conf raspbian que l’on modifiera par la suite :

sudo cp /boot/octopi.txt /boot/octopi-cam2.txt

sudo nano /boot/octopi-cam2.txt

Ajoutons les champs à la fin du fichier :

camera_usb_options="-r 1280x720 -f 30 -d /dev/video2"

camera_http_webroot="./www"
camera_http_options="-p 8081"

Modifions maintenant le second daemon :

sudo nano webcam2d

Modifiez la variable :

cfg_files+=/boot/octopi.txt

Par :

cfg_files+=/boot/octopi-cam2.txt

Enregistrez et testez le daemon :

./webcam2d

Vous devriez voir dans votre terminal :

Starting up webcamDaemon...

--- Configuration: ----------------------------
camera:        auto
usb options:   -r 1280x720 -f 30 -d /dev/video1
raspi options: -fps 20
http options:  -w ./www-octopi -n
-----------------------------------------------

 

Avec votre navigateur allez à l’adresse :

http://IpDuRaspberry:8081/?action=stream

Vous devriez voir le flux de votre seconde camera !!

Nous allons maintenant paramétrer le daemon pour qu’il se lance automatiquement au démarrage :

sudo cp /etc/systemd/system/webcamd.service /etc/systemd/system/webcam2d.service

sudo nano /etc/systemd/system/webcam2d.service

Changez la ligne :

ExecStart=/root/bin/webcamd

Par :

ExecStart=/root/bin/webcam2d

Enregistrez et activez le script :

sudo systemctl enable webcam2d.service

sudo nano /etc/systemd/system/webcam2d.service

Maintenant paramétrons le serveur web :

sudo nano /etc/haproxy/haproxy.cfg

Modifier la partie frontend public et backend webcam pour que ça devienne :

frontend public
        bind *:80
        use_backend webcam1 if { path_beg /webcam1/ }
        use_backend webcam2 if { path_beg /webcam2/ }
        use_backend octoprint_socket if { path_beg /sockjs/ }
        default_backend octoprint

backend webcam1
        reqrep ^([^\ :]*)\ /webcam1/(.*)     \1\ /\2
        server webcam1  127.0.0.1:8080

backend webcam2
        reqrep ^([^\ :]*)\ /webcam2/(.*)     \1\ /\2
        server webcam2  127.0.0.1:8081

Enregistrez et redémarrer le service nginx :

sudo systemctl restart nginx

Connectez vous au portail Octoprint et dans paramètres / webcam & timelapse changez le lien vers la webcam :

/webcam/?action=stream

Par celle de votre choix :

/webcam1/?action=stream

Ou

/webcam2/?action=stream

Ensuite dans le plugin MultiCam :

En première webcam vous devriez avoir :

/webcam1/?action=stream

Ajoutez la seconde webcam :

/webcam1/?action=stream

 

Ce qui nous donnera dans l’interface de contrôle :

 

Pour Printoid c’est la même chose, vous pouvez suivre le tuto :

https://printoid.net/2017/04/29/trick-12-support-two-cameras-in-printoid-premium/

En vous référant uniquement à la partie :

8. CONFIGURE PRINTOID

 

Et voilà, vous pouvez surveiller vos impressions sous tous les angles !

Bon courage pour la suite,

31 Mar
2020

Raspberry Pi double alimentation (Dual PSU)

Bonjour à tous, Aujourd’hui nous allons à nouveau parler Raspberry et alimentation ! après mon article sur :
Raspberry Pi et alimentation UPS (Onduleur)
Nous allons parler double alimentation ! Pourquoi ? Car ces petites bêtes sont si fiable que je les utilises pour des usages spécifiques au niveau professionnel comme par exemple des boucle de secours vidéo pour chaines TV, connexion à distance au port console de certains équipements spécifiques, communication par gpio avec d’autres équipements (par exemple une grille vidéo qui remonte une absence vidéo sur le gpio et le raspberry allume un gyrophare)… Et quand dans sa baie on a tous nos équipements qui sont double alimentés, le raspberry ne peut faire exception. Après quelques recherches sur le net, un collègue (Merci Gilles) me dégotte cette solution : https://www.tindie.com/products/8086net/dual-supply-for-raspberry-pi/ Ce qui nous donne une fois monté : Cette carte dispose de diode à l’entrée de l’alimentation ce qui permet de protéger vos alimentation (Important car les raspberry eux ne sont pas protégés), de plus aucun port du GPIO n’est utilisé ! Il y a également une diode qui s’allume en présence de tension sur l’entrée :

Ici la diode à gauche est allumé car présence de tension en entrée.

Mais si vous connectez deux alimentations, sur quel alimentation le raspberry va s’alimenter ? Ce sera celle qui à la tension la plus élevée qui sera choisis comme alimentation principal, mais une fois que le raspberry va s’allumer, il va tirer du courant et donc la tension va surement chuter, à un instant t les deux tensions seront égales, alors la carte tirera sur les deux alimentations simultanément. Si l’une des deux alimentation se coupe, la tension va tomber en entrée, la seconde alimentation sera donc celle avec le plus fort voltage, elle sera donc la seule utilisé ! Simple et efficace ! La carte est donné pour 3 ampères mais recommandé de travailler sur 2 ce qui est amplement suffisant pour la plupart des usages. Maintenant coté intégration, vous pouvez oublier les boitiers officiels, je suis donc allé sur mon site de STL préféré et j’ai pris ce boitier comme modèle : https://www.thingiverse.com/thing:2875319 Voici ce que ça donne une fois modifié : Je ne suis pas très bon coté design mais ça a le mérite d’etre fonctionnel !
Vous pouvez récupérer les STL à imprimer sur Thingiverse :
https://www.thingiverse.com/thing:4253035 N’hésitez pas à me partagez vos projets pro avec Raspberry/Arduino & co dans les commentaires ! Bon print à tous !
31 Mar
2020

Upgrade #3Dprint to #2Dprint Ou comment trouver une solution pour imprimer les attestations de sorties

  Upgrade #3Dprint to #2Dprint Ou comment trouver une solution pour imprimer les attestations de sorties
Fan Duct et Pen Plotter à la fois, cela permet de passer de l’impression au dessin très rapidement.
https://www.thingiverse.com/thing:4294712
Bon print !
19 Oct
2019

Mac OS : Activer l’écriture NTFS MacOS Catalina

  Aujourd’hui nous allons voir comment pouvoir écrire sur les disques NTFS (C’est un système de fichiers développé par Microsoft Corporation pour sa famille de systèmes d’exploitation Windows NT, à partir de Windows NT 3.1, Windows 2000 et tous leurs successeurs à ce jour (XP, Server 2003, 7 , etc.  Merci wikipedia).

image-1

Cette opération s’effectue en trois étapes : 

 

-Désactivation du System Integrity Protection (SIP mais pas comme la téléphonie) :

  En effet, depuis Mac Os X El Capitain si ma mémoire est bonne Apple à ajouté une protection supplémentaire au système : Meme en root, vous ne pouvez plus modifier les fichiers utilisé par le système.

Nous allons commencer par voir quel est le status de SIP sur votre Mac : 

csrutil status

S’il est activé, vous devriez voir :

System Integrity Protection status: enabled.

Et pour désactiver SIP, vous devez redémarrer votre Mac en mode recovery en pressant les touches du clavier CMD + R juste pendant la sonnerie d’initialisation du démarrage du Mac. Allez ensuite dans le menu Utilitaire et cliquez sur Terminal.

Pour stopper le SIP et reboot le système, entrez la commande suivante :

csrutil disable; reboot

Une fois votre mac démarrer, nous allons vérifier que le SIP est bien désactivé : 

csrutil status

S’il est bien désactivé, vous devriez voir :

System Integrity Protection status: disabled.

Nous allons pouvoir installer FUSE et NTFS3g

 

-Installation de Fuse et du homebrew + NTFS3g + Activation du montage automatique

  Nous allons maintenant nous occuper de l’installation des packet nécessaire à l’écriture sur des partitions NTFS.

-Téléchargez la dernière version de Fuse for OS X et installez le.

-Installation de homebrew : 

Dans un terminal, tapez : 

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

A la fin il va vous demander votre mot de passe de session et vous afficher un : « Install successfull »

 

-Installation de NTFS-3G :

NTFS3g à besoin du homebrew Cask, nous allons donc l’installer, tapez dans un terminal :

brew install cask
brew cask install osxfuse

Nous pouvons maintenant lancer l’installation de NTFS3g : 

brew install ntfs-3g

-Activer l’écriture sur / (Indispensable depuis MacOs Catalina)  :

Tapez dans votre Terminal :

sudo mount -uw /

-Activer le montage auto des volumes NTFS :

Tapez dans votre Terminal :

sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.original
sudo ln -s /usr/local/Cellar/ntfs-3g/2017*/sbin/mount_ntfs /sbin/mount_ntfs

 

Mais n’oublions pas de réactiver la protection SIP !

-Réactivation de SIP : 

Et pour réactiver SIP, vous devez redémarrer votre Mac en mode recovery en pressant les touches du clavier CMD + R juste pendant la sonnerie d’initialisation du démarrage du Mac. Allez ensuite dans le menu Utilitaire et cliquez sur Terminal.

Pour activer la protection SIP et reboot le système, entrez la commande suivante :

csrutil enable; reboot

 

Et voilà, maintenant vous pouvez écrire sur les disques NTFS de vos collègues sous windows ;)

Raspberry Pi 2 ou 3 et Raspbian Jessie - VLC 2.4 et accélération matériel (hardware acceleration)

Raspberry Pi 2 ou 3 et Raspbian Jessie – VLC 2.4 et accélération matériel (hardware acceleration)

Aujourd’hui je vais à nouveau publier une mise à jour de l’article : Raspberry Pi 2 – VLC et accélération matériel (hardware [&hellip

Raspberry Pi 2 ou 3 et Raspbian Jessie - VLC 2.2 et accélération matériel (hardware acceleration)

Raspberry Pi 2 ou 3 et Raspbian Jessie – VLC 2.2 et accélération matériel (hardware acceleration)

UPDATE : Raspberry Pi 2 ou 3 et Raspbian Pixel – VLC 2.4 et accélération matériel (hardware acceleration) Aujourd’hui je vais [&hellip

Compilation de la derniere version de FFMPEG

Compilation de la derniere version de FFMPEG

Bonjour à tous, Aujourd’hui un petit tuto pour avoir la dernière version de ffmpeg, ce tutoriel à été utilisé maintes [&hellip

Raspberry Pi 2 - VLC et accélération matériel (hardware acceleration)

Raspberry Pi 2 – VLC et accélération matériel (hardware acceleration)

UPDATE : Raspberry Pi 3 et Raspbian Pixel – VLC 2.4 et accélération matériel (hardware acceleration) Ayant un petit projet de [&hellip

FFMPEG - Diffuser un flux ip multicast en adaptative smooth streaming

FFMPEG – Diffuser un flux ip multicast en adaptative smooth streaming

Un petit script bien utile pour délivrer un flux video multicast en adaptative smooth streaming

Installation de Transform Manager

Installation de Transform Manager

Prérequis – résumé : Télécharger Transform Manager Télécharger IIS Media Services 4.1 Télécharger IIS Managment console Télécharger .NET Framework 3.5 [&hellip

Suivez moi !

Follow Me! Follow Me! Follow Me! Follow Me!

Chercher