====== Proxmox : utiliser une image Docker (format OCI) ======
===== Ressources =====
* https://www.virtualizationhowto.com/2025/11/complete-guide-to-proxmox-containers-in-2025-docker-vms-lxc-and-new-oci-support/
* https://github.com/containers/skopeo
* https://raymii.org/s/tutorials/Finally_run_Docker_containers_natively_in_Proxmox_9.1.html
===== Présentation =====
La version de Proxmox VE 9.1 permet l'importation et l'utilisation d'image au format OCI pour créer des conteneurs LXC.
OCI est une organisation visant à créer un standard pour unifier la façon de stocker les containers.
* opencontainers.org/
Voici quelques registres qui permettent l'hébergement d'images au format OCI :
* Docker hub : docker.io (https://hub.docker.com/)
* Github Container Registry : ghcr.io (https://oalahurikar.github.io/app-dev-blog/Github/Github-Container-Registry)
* Red Hat Quay : quay.io (https://www.projectquay.io/)
* etc.
===== En cas de problème de droits sur le stockage (solution non testée)=====
Problème possible lors de l'utilisation d'un NAS :
* La conversion OCI→LXC peut nécessiter de créer/écrire des fichiers et d'ajuster des propriétaires UID/GID dans le rootfs.
* Si le serveur NAS a configuré dans sa directive **export**, **root\_squash** (mapping qui dégrade root), Proxmox ne peut pas faire les **chown/chmod nécessaires** pour extraire les couches de l'image OCI entrainant une **erreur OS 13**.
**Solution** : privilégiez dans la définition de l'export **/etc/exports**, le paramètre **no\_root\_squash**.
/export/proxmox 192.168.x.0/24(rw,sync,no_root_squash,no_subtree_check)
Puis exécutez la commande
exportfs -ra.
Le **no\_root\_squash** est la clé pour que Proxmox (root) puisse lire/écrire et chown le contenu.
===== Création/configuration d'un stockage dans Proxmox pour importer les images OCI =====
* Créer un stockage de type **Directory** :
* Menu Datacenter → Storage → Add → Directory
* Paramètres :
* **ID** : templates (définir le nom de votre choix)
* **Directory** : /var/lib/vz (ou un autre chemin de votre choix comme /mnt/templates )
* **Content** : cochez **CT Template**
* Cliquez sur **Add**.
En configurant la valeur **Directory** avec **/var/lib/vz**, les **templates OCI** seront stockés dans le dossier **/var/lib/vz/template/cache**.
===== Importer une image OCI =====
* menu Datacenter → Storage → local → CT Templates,
* cliquez sur **Pull from OCI Registry**,
* téléchargez l’image OCI après avoir indiqué sa **référence**, puis cliqué sur le bouton **Query Tags** pour lister les tags disponibles et choisi le **tag** voulu.
Exemple pour l'image Docker **debian** :
{{ :reseau:cloud:proxmox:oci_01.png |}}
Exemple pour l'image Docker **rancher/nginx** :
{{ :reseau:cloud:proxmox:oci_02.png |}}
Après téléchargement, les images sont disponibles dans le dossier au format tar :
{{ :reseau:cloud:proxmox:oci_03.png |}}
===== Exemple de création d'un conteneur LXC pour n8n=====
==== Importer l'image OCI n8nnio/n8n:2.5.0====
* menu Datacenter → Storage → local → CT Templates,
* cliquez sur **Pull from OCI Registry**,
* téléchargez l’image OCI après avoir indiqué sa **référence**, puis cliqué sur le bouton **Query Tags** pour lister les tags disponibles et choisi le **tag** voulu.
{{ :reseau:cloud:proxmox:n8n_01.png |}}
{{ :reseau:cloud:proxmox:n8n_02.png |}}
==== Création du conteneur LXC ====
* Pour le choix du template, sélectionner comme stockage **template-OCI** puis le modèle n8n_2.5.0-amd64.tar :
{{ :reseau:cloud:proxmox:n8n_02b.png |}}
* Pour le disque, rajoutez un volume **mp0** pour le mappage vers le dossier **/home/node/.n8n** du conteneur :
{{ :reseau:cloud:proxmox:n8n_03.png |}}
* après la création du conteneur LXC, accédez aux variables d'environnemens dans la rubrique **Options** pour ajouter :
* N8N\_BASIC\_AUTH\_ACTIVE=true
* N8N\_BASIC\_AUTH\_USER=admin
* N8N\_BASIC\_AUTH\_PASSWORD=Sio1234*
* GENERIC\_TIMEZONE=Europe/Paris
* N8N\_SECURE\_COOKIE=false
{{ :reseau:cloud:proxmox:n8n_08.png |}}
* accédez à n8n depuis un navigateur à l'URL http://adresseipconteneurlxc:5678
{{ :reseau:cloud:proxmox:n8n_09.png |}}