HL-PRC-018 — ProxPanel — mise en service LXC et publication NPM

HOMELAB
Infrastructure auto-hébergée

PROCÉDURE TECHNIQUE

Mise en service de ProxPanel sur conteneur LXC et publication sécurisée via Nginx Proxy Manager

Déploiement Debian 13 natif, intégration API Proxmox VE 9 avec privilèges dédiés, résolution des incidents réseau et terminaison TLS par certificat AD CS.

Référence
HL-PRC-018
Version
1.0
Date d’édition
26/10/2026
Auteur
Administrateur système et réseaux
Classification
Interne
Statut
Validé

Sommaire

Mise en service de ProxPanel sur conteneur LXC et publication sécurisée via Nginx Proxy Manager — HL-PRC-018

1 Objet

Cette procédure formalise le déploiement, la configuration opérationnelle et la publication sécurisée de la console de supervision et d’administration ProxPanel (version 1.7.2-beta) sous la forme d’un conteneur LXC non privilégié sous Debian 13 (Trixie) au sein de la grappe de virtualisation Proxmox VE du laboratoire DozyLab. Elle détaille l’interconnexion sécurisée du service à l’interface de programmation (API REST) du cluster Proxmox VE 9 au moyen d’un compte et d’un jeton d’API dédiés appliquant le principe du moindre privilège, ainsi que son exposition sécurisée en HTTPS via le mandataire inverse Nginx Proxy Manager (NPM) sous le nom de domaine complet proxpanel.srv.dozylab.lan avec un certificat TLS d’entreprise émis par l’autorité de certification Active Directory (AD CS).

La difficulté principale traitée réside dans la résolution d’une succession d’anomalies critiques survenues lors de l’intégration : d’une part, la disparition du privilège d’API historique VM.Monitor sous Proxmox VE 9, nécessitant son remplacement par VM.GuestAgent.Audit pour autoriser la découverte des nœuds sans élévation super-administrateur ; d’autre part, un dysfonctionnement de routage et de connectivité inter-VLAN causé par la coexistence d’un bail DHCP parasite (10.10.10.103) et d’une adresse statique dans le conteneur, corrigé par la fixation du tag VLAN 20 sur l’hyperviseur ; enfin, le blocage de l’authentification SSH par mot de passe sous Debian 13 pour la passerelle bastion Apache Guacamole, et une anomalie de génération sous l’autorité AD CS où l’absence d’ajout explicite des attributs de sujet a provoqué l’affectation indue d’un certificat tiers (PBS), résolue par extraction rigoureuse OpenSSL des certificats et clés au format PEM.

2 Périmètre et prérequis

Périmètre

Couvert : exécution du script d’installation officiel sur le nœud hôte Proxmox VE et instanciation du conteneur LXC non privilégié Debian 13 ; dimensionnement des ressources matérielles virtuelles (2 vCPU, 2048 Mo de mémoire vive, 8 Go de stockage) ; configuration du réseau virtuel sur le pont vmbr0 avec étiquetage VLAN 20 (sous-réseau 10.10.20.0/24) et purge des baux DHCP parasites ; création du rôle de privilèges Proxmox VE 9 (ProxPanelUser) et génération du jeton d’API avec séparation de privilèges (privsep 1) sur le compte proxpanel@pve ; raccordement de l’API de grappe dans ProxPanel avec épinglage de certificat (certificate pinning) et contournement des alertes auto-signées ; activation et durcissement des accès SSH du conteneur pour l’exploitation depuis le bastion Apache Guacamole ; émission d’un certificat TLS serveur web sous Active Directory Certificate Services (AD CS), conversion du fichier PKCS#12 (.pfx) et extraction OpenSSL des fichiers .crt et .key ; déclaration du Proxy Host sous Nginx Proxy Manager avec support des WebSockets et terminaison TLS forcée ; procédure d’urgence de réinitialisation des identifiants d’administration locale dans le stockage applicatif users.json.

Hors périmètre : mise en service initiale de la grappe Proxmox VE à trois nœuds (couverte par HL-PRC-003) ; déploiement de l’autorité de certification racine Active Directory (AD CS) ; configuration générale du serveur DNS Technitium (couverte par HL-PRC-004) et de la passerelle Apache Guacamole (couverte par HL-PRC-008).

Prérequis

•    Accès hôte Proxmox VE : session d’administration root directe sur le shell du nœud pve3 ou pve1 (commandes pct, pvesm, pveum disponibles).

• Ressources de virtualisation : espace de stockage disponible d’au moins 8 Go sur le volume local-lvm et gabarit Debian 13 téléchargeable.

• Réseau et passerelle : pare-feu Juniper SRX300 configuré avec passerelle VLAN 20 (10.10.20.254) et routage inter-VLAN autorisé vers les adresses de gestion Proxmox VE (VLAN 10).

• Infrastructure d’annuaire et PKI : contrôleur de domaine Active Directory Windows Server 2022 opérationnel avec rôle AD CS d’entreprise (DOZYLAB-ROOT-CA).

• Services d’infrastructure : serveur Technitium DNS (10.10.20.11) joignable et instance Nginx Proxy Manager (10.10.20.12) prête à accueillir les certificats personnalisés.

Note Versions et environnement validés sur le terrain : ProxPanel v1.7.2-beta.8.3 exécuté sur Node.js v20.18.0 natif ; conteneur LXC Debian 13 (Trixie) non privilégié ; hyperviseurs Proxmox VE 9.x (API v2) ; Nginx Proxy Manager v2.11 ; Windows Server 2022 Datacenter AD CS ; Apache Guacamole 1.6.0. Validation opérationnelle réalisée le 26/10/2026.

3 Rôles et responsabilités

RôleResponsabilité
Administrateur système et réseauxExécute le déploiement sur l’hôte Proxmox, configure l’adressage VLAN 20, crée le rôle API PVE 9, configure le service SSH et paramètre le proxy inverse NPM.
Détenteur des secretsGénère et consigne dans le coffre-fort Vaultwarden le secret du jeton API Proxmox, le mot de passe root du conteneur et le mot de passe administrateur ProxPanel.
Exploitant d’infrastructureAssure la supervision opérationnelle de la grappe, audite l’état des hyperviseurs et gère le cycle de vie des machines virtuelles depuis le tableau de bord.

Note Homelab individuel : Dans le cadre du laboratoire personnel, l’ensemble de ces rôles est assumé par l’unique administrateur. La séparation conceptuelle est maintenue pour garantir la traçabilité des droits et la sécurité des accès.

4 Procédure de déploiement et de configuration

Paramètres de la procédure

ParamètreDescriptionValeur de référenceContrainte
CTID_PROXPANELIdentifiant numérique du conteneur LXC ProxPanel105Entier > 100 unique
HOST_NODEHyperviseur Proxmox accueillant le conteneurpve3Nœud actif du cluster
IPV4_PROXPANELAdresse IPv4 statique du conteneur ProxPanel10.10.20.23/24VLAN 20 (zone srv)
GW_PROXPANELPasserelle par défaut du sous-réseau serveurs10.10.20.254Interface SRX300
DNS_PROXPANELServeur DNS autoritaire interne10.10.20.11Technitium DNS
FQDN_PROXPANELNom de domaine complet publié via reverse proxyproxpanel.srv.dozylab.lanZone dozylab.lan
IP_NPMAdresse du mandataire inverse Nginx Proxy Manager10.10.20.12VLAN 20 (zone srv)
PVE_API_HOSTNœud Proxmox cible pour l’interconnexion API10.10.10.10VLAN 10 (zone adm)
PVE_USERCompte de service Proxmox dédié à ProxPanelproxpanel@pveRealm pve natif
PVE_TOKEN_IDIdentifiant du jeton API (sans préfixe utilisateur)proxpanelAlphanumérique
PVE_TOKEN_SECRETClé secrète d’authentification du jeton Proxmox[SECRET — NON DOCUMENTÉ]UUID v4 généré par PVE

Attention Substitution des paramètres : Les blocs de commandes ci-dessous intègrent directement les valeurs de référence du laboratoire DozyLab. Lors d’une exécution sur un environnement distinct, substituer impérativement les adresses IP, identifiants de conteneurs et jetons secrets préalablement à toute copie dans le terminal.

Inventaire technique du conteneur

Le tableau ci-dessous synthétise les spécifications techniques et l’empreinte système du conteneur LXC déployé pour l’hébergement de l’application ProxPanel :

Composant / CaractéristiqueSpécification technique validée
Type de conteneurisationLXC non privilégié (unprivileged: 1) sous Proxmox VE 9
Système d’exploitation invitéDebian GNU/Linux 13.7 (Trixie) — template officiel debian-13-standard
Ressources de calcul2 vCPU (cœurs partagés), priorité CPU 1024
Mémoire vive et pagination2048 Mo de RAM allouée, 512 Mo d’espace swap
Stockage disque racine8 Go au format ext4 sur le pool LVM-Thin local-lvm
Moteur d’exécution applicatifNode.js v20.18.0 natif (gestionnaire systemd)
Répertoire applicatif seed/opt/proxpanel-seed et /opt/proxpanel-runtime/current
Stockage des données persistantes/var/lib/proxpanel/data (fichiers JSON chiffrés et clés de chiffrement)
Port d’écoute interneTCP 8080 en écoute sur toutes les interfaces (0.0.0.0:8080)

Étapes d’exécution

1. Déploiement du conteneur LXC depuis l’hôte Proxmox VE

Le script d’installation officiel de ProxPanel est conçu pour être exécuté directement depuis le shell root de l’hyperviseur Proxmox physique. Il effectue la détection automatique de l’environnement, télécharge le modèle officiel Debian 13, crée le conteneur non privilégié, installe Node.js et déploie le paquet applicatif.

Connexion sur le nœud physique pve3 ou pve1 en root
bash -c "$(curl -fsSL https://updates.proxpanel.fr/lxc.sh)"

Attention : ce bloc télécharge et exécute un script distant avec les privilèges root, sans inspection préalable du code. Récupérer d’abord le script (curl -fsSL … -o /tmp/lxc.sh), le relire, puis l’exécuter ; ne jamais chaîner curl et bash en root sur un script non audité.

L’assistant automatisé détecte la version Proxmox VE 9, sélectionne le prochain ID libre (ex. 105), configure 2 vCPU, 2048 Mo de RAM, 8 Go de disque, et instancie le service. Valider avec l’option standard par défaut.

Vérification : Vérifier que le conteneur est créé et actif au moyen de la commande Proxmox :

pct status 105
Sortie attendue : status: running

2. Correction de l’adressage réseau et élimination des baux DHCP

Par défaut, l’assistant associe l’interface réseau au pont vmbr0 en mode DHCP. Si le réseau de management possède un serveur DHCP actif, le conteneur reçoit une adresse sur le VLAN 10 (ex. 10.10.10.103) incompatible avec l’adressage prévu sur le VLAN 20 serveurs (10.10.20.23). Sous Proxmox VE, la configuration réseau d’un conteneur doit impérativement être déclarée au niveau de l’hyperviseur hôte et non dans /etc/network/interfaces sous peine de conflits et de blocages de routage.

Sur le nœud hôte Proxmox : affecter l’IP statique, la passerelle et le tag VLAN 20
pct set 105 -net0 name=eth0,bridge=vmbr0,tag=20,ip=10.10.20.23/24,gw=10.10.20.254
pct set 105 -nameserver 10.10.20.11 -searchdomain dozylab.lan
pct reboot 105

Si une seconde adresse IP parasite subsiste temporairement dans la table d’adresses du conteneur avant reboot, la purger explicitement dans le conteneur :

Entrer dans le conteneur et libérer le bail dynamique
pct enter 105
ip addr del 10.10.10.103/24 dev eth0
dhclient -r eth0 2>/dev/null || true

Vérification : Contrôler que seule l’adresse 10.10.20.23/24 est active et tester la passerelle :

ip a show eth0
ping -c 2 10.10.20.254

3. Création du rôle et du jeton API sur la grappe Proxmox VE 9

ProxPanel interroge l’API REST de Proxmox VE pour surveiller l’ensemble des hyperviseurs et des machines. Sous Proxmox VE 9, le privilège historique VM.Monitor a été retiré. Il est impératif d’utiliser VM.GuestAgent.Audit au sein du rôle personnalisé. L’attribution s’effectue sur la racine du cluster (/) avec séparation de privilèges pour confiner strictement les actions du jeton.

Exécuter sur l’un des nœuds de la grappe Proxmox VE (ex. pve1)
pveum role add ProxPanelUser -privs "Sys.Audit Datastore.Audit VM.Audit VM.PowerMgmt VM.Console VM.Backup VM.GuestAgent.Audit"
pveum user add proxpanel@pve
pveum user token add proxpanel@pve proxpanel -privsep 1
pveum acl modify / -user proxpanel@pve -role ProxPanelUser
pveum acl modify / -token 'proxpanel@pve!proxpanel' -role ProxPanelUser

Proxmox affiche la valeur secrète du jeton (Token Secret UUID). La copier immédiatement dans le gestionnaire de mots de passe car elle ne pourra plus être consultée ultérieurement.

Vérification : Contrôler que les permissions effectives du token couvrent bien le rôle ProxPanelUser :

pveum user token permissions proxpanel@pve proxpanel

4. Autorisation des connexions SSH pour la passerelle Apache Guacamole

Sur Debian 13, le démon OpenSSH désactive par défaut l’authentification du compte root par mot de passe. Pour permettre l’administration du conteneur depuis le bastion Apache Guacamole via session SSH directe, activer la directive dans la configuration modulaire sshd.

Attention : cette directive autorise l’ouverture de session root par mot de passe et affaiblit l’authentification SSH ; la réserver au bastion Guacamole (adresse source 10.10.10.20) ou la désactiver dès le déploiement de la clé publique définitive.

Dans le conteneur LXC ProxPanel
echo -e "PermitRootLogin yes\nPasswordAuthentication yes" > /etc/ssh/sshd_config.d/guacamole.conf
passwd root
systemctl restart ssh

Vérification : Vérifier que le service SSH écoute sur le port 22 et tester la connexion depuis Guacamole :

ss -tulpn | grep :22
Sortie attendue : LISTEN 0 128 0.0.0.0:22

5. Initialisation du compte administrateur et liaison de l’API Proxmox

Accéder à l’interface initiale en HTTP via http://10.10.20.23:8080. L’assistant invite à créer le premier compte d’administration : renseigner un nom d’utilisateur et un mot de passe d’au moins 12 caractères. Puis, dans Administration > Serveurs Proxmox > Ajouter un serveur Proxmox, saisir les paramètres de connexion à l’API de grappe :

• Nom : PVE1 (ou Grappe DozyLab)

• URL : https://10.10.10.10:8006

• Utilisateur complet : proxpanel@pve

• Authentification : API Token

• Token ID : proxpanel (saisir uniquement le nom du token, sans le préfixe utilisateur)

• Token Secret : Saisir la clé secrète générée à l’étape 3

• Certificat : Cocher impérativement « Autoriser certificat auto-signé + certificate pinning »

Vérification : Cliquer sur le bouton Tester. Le panneau doit afficher une notification verte : Connexion OK · PVE 9.x · certificat épinglé. La vue d’ensemble liste immédiatement l’ensemble des nœuds du cluster.

6. Génération du certificat TLS serveur web sous Active Directory (AD CS)

Pour assurer une navigation sécurisée exempte d’alerte de certificat sur https://proxpanel.srv.dozylab.lan, émettre un certificat d’entreprise auprès de l’autorité DOZYLAB-ROOT-CA via la console MMC Certificats de la machine d’administration Windows.

Ouvrir certlm.msc > Personnel > Certificats > Toutes les tâches > Demander un nouveau certificat > Sélectionner la stratégie Active Directory et le modèle DozyLab Web Server. Cliquer sur le lien d’avertissement pour renseigner les propriétés du certificat :

• Nom du sujet : Type Nom commun, Valeur proxpanel.srv.dozylab.lan -> Cliquer sur Ajouter >

• Autre nom (SAN) : Type DNS, Valeur proxpanel.srv.dozylab.lan -> Cliquer sur Ajouter >

Attention Piège de validation dans la console MMC : Il est impératif de cliquer sur le bouton Ajouter > pour que les valeurs basculent dans la colonne de droite. Dans le cas contraire, les champs restent non enregistrés et l’autorité émet un certificat invalide ou réutilise les métadonnées résiduelles de l’inscription précédente.

Finaliser l’inscription. Exporter le certificat obtenu avec sa clé privée au format PKCS#12 (.pfx) avec un mot de passe d’export fort, et transférer le fichier proxpanel.pfx dans le répertoire /opt/npm/certs/ de la machine hébergeant Nginx Proxy Manager.

7. Extraction OpenSSL et publication sous Nginx Proxy Manager

Nginx Proxy Manager requiert des certificats et clés au format PEM (.crt et .key). L’extraction est réalisée au moyen de l’utilitaire OpenSSL directement sur le serveur NPM.

Sur le serveur Nginx Proxy Manager, se positionner dans le répertoire cible
cd /opt/npm/certs
openssl pkcs12 -in proxpanel.pfx -nocerts -nodes -out proxpanel.key
openssl pkcs12 -in proxpanel.pfx -clcerts -nokeys -out proxpanel.crt

Dans l’interface web de Nginx Proxy Manager (http://10.10.20.12:81) :

• SSL Certificates : Cliquer sur Add SSL Certificate > Custom. Nommer le certificat « proxpanel », puis charger proxpanel.key et proxpanel.crt.

• Proxy Hosts : Ajouter un hôte mandataire avec les caractéristiques suivantes :

• • Domain Names : proxpanel.srv.dozylab.lan

• • Scheme : http | Forward Hostname : 10.10.20.23 | Forward Port : 8080

• • Websockets Support : Coché (indispensable pour les graphiques temps réel et consoles noVNC)

• • Block Common Exploits : Coché

• • Onglet SSL : Sélectionner le certificat « proxpanel », cocher Force SSL et HTTP/2 Support

Vérification : Tester l’accès depuis un poste de travail client sur https://proxpanel.srv.dozylab.lan. La connexion doit s’établir en HTTPS avec un certificat valide.

8. Procédure de secours : Réinitialisation du mot de passe administrateur

En cas d’oubli du mot de passe administrateur local de ProxPanel ou de perte d’accès, le hachage cryptographique (scryptSync avec sel aléatoire de 16 octets) peut être régénéré directement depuis le shell du conteneur sans réinstaller l’application.

Dans le conteneur LXC ProxPanel (pct enter 105)
node -e '
const fs = require("fs"), crypto = require("crypto");
const newPass = "NouveauMotDePasse123!";
const salt = crypto.randomBytes(16).toString("hex");
const hash = crypto.scryptSync(newPass, salt, 64).toString("hex");
const usersFile = "/var/lib/proxpanel/data/users.json";
if (fs.existsSync(usersFile)) {
const users = JSON.parse(fs.readFileSync(usersFile, "utf8"));
if (users.length > 0) {
users[0].salt = salt; users[0].hash = hash; users[0].totpEnabled = false;
fs.writeFileSync(usersFile, JSON.stringify(users, null, 2));
console.log("Mot de passe mis a jour pour:", users[0].username);
}
}
'
systemctl restart proxpanel

Vérification : Se connecter immédiatement sur l’interface web avec le nouveau mot de passe défini.

Retour arrière

Situation d’échecAction corrective et restauration
Échec d’exécution du script lxc.shSupprimer le conteneur corrompu via pct destroy 105 -purge 1 et purger le cache des templates dans /var/lib/vz/template/cache. Cette opération supprime définitivement le conteneur et toutes ses données ; confirmer l’échec de l’installation avant d’exécuter.
Perte de connectivité réseau du conteneurRétablir la configuration réseau depuis l’hôte physique via pct set 105 -net0 name=eth0,bridge=vmbr0,tag=20,ip=10.10.20.23/24,gw=10.10.20.254 puis redémarrer le conteneur.
Corruption de la base locale users.jsonSupprimer /var/lib/proxpanel/data/users.json et redémarrer le service systemctl restart proxpanel pour déclencher à nouveau l’assistant d’initialisation /api/setup.
Échec du certificat ou du proxy inverse NPMDésactiver le Proxy Host dans NPM et accéder temporairement à l’application en direct via son flux HTTP interne sur http://10.10.20.23:8080.

Pièges connus

Symptôme et message d’erreurCause technique identifiéeProcédure de résolution
pct introuvable. Lance ce script directement sur un hôte Proxmox VE.Le script lxc.sh a été exécuté à l’intérieur d’un conteneur LXC au lieu du shell root de l’hyperviseur Proxmox.Lancer la commande d’installation directement depuis la session SSH ou console du nœud physique Proxmox.
400 Parameter verification failed. privs: invalid format – invalid privilege 'VM.Monitor'Sous Proxmox VE 9, le privilège historique VM.Monitor a été supprimé du modèle de sécurité.Remplacer VM.Monitor par VM.GuestAgent.Audit dans la commande pveum role add ProxPanelUser.
Connexion Proxmox impossible : Timeout TLSLe conteneur ProxPanel ne parvient pas à joindre le port TCP 8006 de l’hôte Proxmox (problème de routage ou de pare-feu SRX300).Vérifier la connectivité par curl -k -I https://10.10.10.10:8006 et autoriser la politique de sécurité inter-VLAN srv vers adm.
getaddrinfo ENOTFOUND pve1.adm.dozylab.lanÉchec de résolution DNS du FQDN Proxmox par le conteneur ProxPanel.Utiliser directement l’adresse IPv4 dans l’URL ProxPanel (https://10.10.10.10:8006) ou ajouter l’entrée dans /etc/hosts.
NPM affiche le domaine pbs.adm.dozylab.lan au lieu de proxpanel.srvOmission du clic sur « Ajouter > » lors de la saisie des attributs CN/SAN dans la console MMC AD CS.Rééditer la demande de certificat en cliquant impérativement sur « Ajouter > » pour valider les champs avant l’export PFX.
Can't open "proxpanel.pfx" for reading, No such file or directoryExécution de la commande OpenSSL depuis le répertoire /root alors que le fichier PFX est dans /opt/npm/certs/.Exécuter au préalable cd /opt/npm/certs avant d’extraire la clé et le certificat PEM.
Conflit d’adresses : 10.10.10.103 et 10.10.20.23 simultanées sur eth0Bail DHCP automatique reçu sur vmbr0 combiné à une configuration statique locale erronée.Purger l’adresse dynamique via ip addr del 10.10.10.103/24 dev eth0 et fixer le tag VLAN 20 dans Proxmox.

5 Intégration réseau

Identité et raccordement du conteneur

Paramètre d’interconnexionValeur d’exploitation
Identifiant conteneur (CTID)105 (hébergé sur le nœud physique pve3)
Nom d’hôte système (Hostname)proxpanel.dozylab.lan
Interface réseau virtuelleeth0 (raccordée au pont virtuel vmbr0 de Proxmox)
Tag VLAN appliquéVLAN 20 (zone de sécurité srv — Serveurs)
Adresse IPv4 et masque10.10.20.23 / 24 (255.255.255.0)
Passerelle par défaut (Gateway)10.10.20.254 (sous-interface ge-0/0/1.20 du pare-feu Juniper SRX300)
Serveur DNS configuré10.10.20.11 (Technitium DNS interne)

Matrice des flux réseau inter-zones

SourceDestinationPortProto.Application / UsageStatut
Postes clients (LAN)NPM (10.10.20.12)443TCPjunos-https (Frontal TLS)Autorisé
NPM (10.10.20.12)ProxPanel (10.10.20.23)8080TCPHTTP applicatif interneAutorisé
ProxPanel (10.10.20.23)Nœuds PVE (10.10.10.0/24)8006TCPAPI Proxmox VE (PVE-8006)Autorisé
ProxPanel (10.10.20.23)Technitium (10.10.20.11)53UDP/TCPjunos-dns (Résolution DNS)Autorisé
Guacamole (10.10.10.20)ProxPanel (10.10.20.23)22TCPjunos-ssh (Administration)Autorisé

Dépendances et points de défaillance

Élément d’infrastructureImpact en cas de panne et continuité de service
Nginx Proxy Manager (10.10.20.12)Interruption de l’accès frontal HTTPS sécurisé. L’accès direct interne reste joignable en HTTP sur http://10.10.20.23:8080.
Nœud Proxmox cible API (pve1)Perte de connectivité de ProxPanel à la grappe si l’URL pointe sur un nœud arrêté. Basculer l’URL sur pve2 ou pve3 pour rétablir la supervision.
Pare-feu Juniper SRX300Rupture du routage inter-VLAN entre le conteneur ProxPanel (VLAN 20) et les hyperviseurs Proxmox VE (VLAN 10).
Serveur Technitium DNSImpossibilité de résoudre le nom proxpanel.srv.dozylab.lan pour les clients du réseau local.

6 Durcissement et sécurité

• Moindre privilège strict sur l’API Proxmox : ProxPanel n’utilise aucun compte super-utilisateur root@pam. Il est raccordé au moyen d’un utilisateur dédié proxpanel@pve muni d’un jeton API avec séparation de privilèges (privsep 1), cantonné aux rôles de consultation (Sys.Audit, Datastore.Audit, VM.Audit), de gestion des machines (VM.PowerMgmt, VM.Console) et de télémétrie (VM.GuestAgent.Audit).

• Confinement en conteneur non privilégié : Le conteneur LXC s’exécute avec une table de correspondance d’UID/GID décalée (unprivileged: 1). En cas de compromission applicative, l’attaquant demeure confiné avec des droits non privilégiés sur le noyau de l’hyperviseur hôte.

• Chiffrement frontal et transit sécurisé : L’exposition externe est protégée par un certificat TLS d’entreprise avec redirection automatique HTTP vers HTTPS (Force SSL) et protocole HTTP/2 activé sur Nginx Proxy Manager.

• Épinglage de certificat TLS Proxmox : ProxPanel applique le certificate pinning lors de ses échanges avec l’API Proxmox VE 9, mémorisant l’empreinte cryptographique SHA-256 du nœud pour interdire toute attaque de type interception ou rejeu.

• Hachage cryptographique des identifiants locaux : Les mots de passe des comptes locaux ProxPanel sont protégés par la fonction scrypt avec un coût mémoire robuste et un sel cryptographique aléatoire de 16 octets généré à chaque mise à jour.

Dettes techniques

Point technique auditéImpact opérationnel ou sécuritaireÉtat / Arbitrage retenu
Trafic HTTP non chiffré sur le port 8080 entre NPM et ProxPanelLe trafic transite en clair sur le réseau local entre le reverse proxy et le conteneur.Accepté : trafic confiné à l’intérieur du commutateur virtuel interne sur le même VLAN 20.
Cible API Proxmox configurée sur une adresse IP de nœud uniqueSi l’hyperviseur pve1 est arrêté pour maintenance, ProxPanel perd la liaison avec la grappe.Toléré en homelab ; bascule manuelle possible vers pve2 ou pve3. Déploiement d’une VIP Keepalived à planifier.
Certificats auto-signés sur l’API ProxmoxAbsence de chaîne de certification publique sur les interfaces 8006 des hyperviseurs.Compensé par la fonction certificate pinning intégrée de ProxPanel qui valide l’empreinte à chaque requête.

7 Vérifications finales

Exécuter les contrôles ci-dessous pour prononcer la recette fonctionnelle et la mise en service officielle de la solution ProxPanel :

Contrôle opérationnelCritère d’acceptation mesurableStatut
Résolution DNS du serviceResolve-DnsName proxpanel.srv.dozylab.lan retourne l’IP de NPM 10.10.20.12☐
État du conteneur LXC sur Proxmoxpct status 105 retourne status: running sans alerte☐
Santé du service Node.js ProxPanelcurl -fsS http://10.10.20.23:8080/healthz retourne un statut HTTP 200 OK☐
Accès d’administration SSHConnexion interactive root@10.10.20.23 opérationnelle depuis Apache Guacamole☐
Joignabilité de l’API Proxmoxcurl -k -I https://10.10.10.10:8006 depuis le LXC retourne HTTP/1.1 200 OK☐
Test de liaison API dans ProxPanelLe test du serveur PVE1 affiche Connexion OK · PVE 9.x · certificat épinglé☐
Télémétrie de la grappe de nœudsLe tableau de bord affiche les 3 nœuds (pve1, pve2, pve3) avec métriques CPU/RAM actives☐
Terminaison TLS sécurisée NPMAccès web sur https://proxpanel.srv.dozylab.lan avec certificat AD CS valide et cadenas vert☐
Support des flux WebSocketsNavigation fluide dans les graphiques dynamiques et consoles noVNC sans coupure☐

8 Références et historique des révisions

Documentation éditeur

• ProxPanel : Documentation officielle du projet ProxPanel — Guide de déploiement en conteneur LXC natif et intégration API Proxmox VE (2026).

• Proxmox Server Solutions : Proxmox VE 9.0 Administration Guide — Gestion des utilisateurs, des jetons d’API (Tokens) et privilèges VM.GuestAgent.Audit (2026).

• Nginx Proxy Manager : Official Documentation — Configuration des hôtes mandataires, des certificats personnalisés et des flux WebSockets (2026).

• Debian GNU/Linux : Debian 13 (Trixie) Release Notes — Gestion des conteneurs LXC et politique de sécurité OpenSSH PermitRootLogin (2026).

• Microsoft Corporation : Active Directory Certificate Services (AD CS) Documentation — Émission de certificats serveurs web et export de conteneurs PKCS#12 (2026).

Documents associés

• HL-PRC-001 : Mise en service du pare-feu Juniper SRX300.

• HL-PRC-002 : Configuration du commutateur Cisco SF302-08PP.

• HL-PRC-003 : Mise en service de la grappe Proxmox à trois nœuds.

• HL-PRC-004 : Technitium DNS.

• HL-PRC-008 : Configuration des connexions SSH et RDP sur Apache Guacamole.

• HL-PRC-011 : Publication de Proxmox Backup Server via Nginx Proxy Manager.

Historique des révisions

VersionDateAuteurModifications
1.026/10/2026Administrateur système et réseauxCréation du document validé à partir de l’intervention réelle (LXC Debian 13, API PVE 9, publication NPM, résolution réseau et certificats).
Défiler vers le haut