| 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ôle | Responsabilité |
| Administrateur système et réseaux | Exé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 secrets | Gé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’infrastructure | Assure 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ètre | Description | Valeur de référence | Contrainte |
| CTID_PROXPANEL | Identifiant numérique du conteneur LXC ProxPanel | 105 | Entier > 100 unique |
| HOST_NODE | Hyperviseur Proxmox accueillant le conteneur | pve3 | Nœud actif du cluster |
| IPV4_PROXPANEL | Adresse IPv4 statique du conteneur ProxPanel | 10.10.20.23/24 | VLAN 20 (zone srv) |
| GW_PROXPANEL | Passerelle par défaut du sous-réseau serveurs | 10.10.20.254 | Interface SRX300 |
| DNS_PROXPANEL | Serveur DNS autoritaire interne | 10.10.20.11 | Technitium DNS |
| FQDN_PROXPANEL | Nom de domaine complet publié via reverse proxy | proxpanel.srv.dozylab.lan | Zone dozylab.lan |
| IP_NPM | Adresse du mandataire inverse Nginx Proxy Manager | 10.10.20.12 | VLAN 20 (zone srv) |
| PVE_API_HOST | Nœud Proxmox cible pour l’interconnexion API | 10.10.10.10 | VLAN 10 (zone adm) |
| PVE_USER | Compte de service Proxmox dédié à ProxPanel | proxpanel@pve | Realm pve natif |
| PVE_TOKEN_ID | Identifiant du jeton API (sans préfixe utilisateur) | proxpanel | Alphanumérique |
| PVE_TOKEN_SECRET | Clé 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éristique | Spécification technique validée |
| Type de conteneurisation | LXC 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 calcul | 2 vCPU (cœurs partagés), priorité CPU 1024 |
| Mémoire vive et pagination | 2048 Mo de RAM allouée, 512 Mo d’espace swap |
| Stockage disque racine | 8 Go au format ext4 sur le pool LVM-Thin local-lvm |
| Moteur d’exécution applicatif | Node.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 interne | TCP 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’échec | Action corrective et restauration |
| Échec d’exécution du script lxc.sh | Supprimer 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 conteneur | Ré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.json | Supprimer /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 NPM | Dé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’erreur | Cause technique identifiée | Procé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 TLS | Le 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.srv | Omission 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 directory | Exé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 eth0 | Bail 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’interconnexion | Valeur 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 virtuelle | eth0 (raccordée au pont virtuel vmbr0 de Proxmox) |
| Tag VLAN appliqué | VLAN 20 (zone de sécurité srv — Serveurs) |
| Adresse IPv4 et masque | 10.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
| Source | Destination | Port | Proto. | Application / Usage | Statut |
| Postes clients (LAN) | NPM (10.10.20.12) | 443 | TCP | junos-https (Frontal TLS) | Autorisé |
| NPM (10.10.20.12) | ProxPanel (10.10.20.23) | 8080 | TCP | HTTP applicatif interne | Autorisé |
| ProxPanel (10.10.20.23) | Nœuds PVE (10.10.10.0/24) | 8006 | TCP | API Proxmox VE (PVE-8006) | Autorisé |
| ProxPanel (10.10.20.23) | Technitium (10.10.20.11) | 53 | UDP/TCP | junos-dns (Résolution DNS) | Autorisé |
| Guacamole (10.10.10.20) | ProxPanel (10.10.20.23) | 22 | TCP | junos-ssh (Administration) | Autorisé |
Dépendances et points de défaillance
| Élément d’infrastructure | Impact 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 SRX300 | Rupture du routage inter-VLAN entre le conteneur ProxPanel (VLAN 20) et les hyperviseurs Proxmox VE (VLAN 10). |
| Serveur Technitium DNS | Impossibilité 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 ProxPanel | Le 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 unique | Si 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 Proxmox | Absence 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érationnel | Critère d’acceptation mesurable | Statut |
| Résolution DNS du service | Resolve-DnsName proxpanel.srv.dozylab.lan retourne l’IP de NPM 10.10.20.12 | ☐ |
| État du conteneur LXC sur Proxmox | pct status 105 retourne status: running sans alerte | ☐ |
| Santé du service Node.js ProxPanel | curl -fsS http://10.10.20.23:8080/healthz retourne un statut HTTP 200 OK | ☐ |
| Accès d’administration SSH | Connexion interactive root@10.10.20.23 opérationnelle depuis Apache Guacamole | ☐ |
| Joignabilité de l’API Proxmox | curl -k -I https://10.10.10.10:8006 depuis le LXC retourne HTTP/1.1 200 OK | ☐ |
| Test de liaison API dans ProxPanel | Le test du serveur PVE1 affiche Connexion OK · PVE 9.x · certificat épinglé | ☐ |
| Télémétrie de la grappe de nœuds | Le tableau de bord affiche les 3 nœuds (pve1, pve2, pve3) avec métriques CPU/RAM actives | ☐ |
| Terminaison TLS sécurisée NPM | Accès web sur https://proxpanel.srv.dozylab.lan avec certificat AD CS valide et cadenas vert | ☐ |
| Support des flux WebSockets | Navigation 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
| Version | Date | Auteur | Modifications |
| 1.0 | 26/10/2026 | Administrateur système et réseaux | Création du document validé à partir de l’intervention réelle (LXC Debian 13, API PVE 9, publication NPM, résolution réseau et certificats). |