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

- Link: https://dpioch.aristeecampus.org/documents-personnels-du-homelab-docx-et-html/hl-prc-018-proxpanel-mise-en-service-lxc-et-publication-npm/
- Published: 2026-11-02T19:53:43+01:00
- Author: Admin

| 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 | Version1.0 | Date d’édition26/10/2026 | 
| AuteurAdministrateur système et réseaux | ClassificationInterne | StatutValidé |

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 105Sortie 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 20pct set 105 -net0 name=eth0,bridge=vmbr0,tag=20,ip=10.10.20.23/24,gw=10.10.20.254pct set 105 -nameserver 10.10.20.11 -searchdomain dozylab.lanpct 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 dynamiquepct enter 105ip addr del 10.10.10.103/24 dev eth0dhclient -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@pvepveum user token add proxpanel@pve proxpanel -privsep 1pveum acl modify / -user proxpanel@pve -role ProxPanelUserpveum 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 ProxPanelecho -e "PermitRootLogin yes\nPasswordAuthentication yes" > /etc/ssh/sshd_config.d/guacamole.confpasswd rootsystemctl 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 ciblecd /opt/npm/certsopenssl pkcs12 -in proxpanel.pfx -nocerts -nodes -out proxpanel.keyopenssl 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). |
