# HL-PRC-011 — Proxmox VE — désactivation du message de souscription

- Link: https://dpioch.aristeecampus.org/documents-personnels-du-homelab-docx-et-html/hl-prc-011-proxmox-ve-desactivation-du-message-de-souscription/
- Published: 2026-11-02T19:52:50+01:00
- Author: Admin

| HOMELAB
Infrastructure auto-hébergée |

PROCÉDURE TECHNIQUE

Désactivation du message de souscription Proxmox VE

Neutralisation de la boîte de dialogue « No valid subscription » à l’ouverture de
l’interface web d’administration Proxmox VE sur l’ensemble des nœuds de la grappe.

| Référence
HL-PRC-011 | Version1.0 | Date d’édition24/10/2026 | 
| AuteurAdministrateur système et réseaux | ClassificationInterne | StatutValidé |

Sommaire

Désactivation du message de souscription Proxmox VE — HL-PRC-011

## 1 Objet

Cette procédure formalise la neutralisation définitive de l’avertissement modal «
No valid subscription » apparaissant systématiquement lors de chaque connexion d’un
opérateur à l’interface d’administration web (HTTPS/8006) de Proxmox Virtual Environment
9.x. L’opération consiste à modifier la fonction de vérification dans la bibliothèque
JavaScript partagée de l’interface graphique (/usr/share/javascript/proxmox-widget-
toolkit/proxmoxlib.js) puis à recharger le démon mandataire d’interface pveproxy
sans interruption de service pour les instances virtualisées.

À l’issue de l’intervention sur les trois hyperviseurs physiques de la grappe (pve1,
pve2 et pve3), l’authentification redirige immédiatement vers le tableau de bord
sans exiger l’acquittement manuel de la boîte de dialogue. La principale difficulté
réside dans le caractère volatil du fichier de toolkit JavaScript, celui-ci étant
réécrit à l’identique lors de toute mise à jour du paquet système proxmox-widget-
toolkit via le dépôt communautaire pve-no-subscription. La procédure intègre la 
création d’une copie de sauvegarde horodatée et la méthode de reconduction automatique
ou manuelle.

## 2 Périmètre et prérequis

Périmètre

Couvert : intervention sur l’ensemble des hyperviseurs membres du cluster (pve1,
pve2, pve3), modification chirurgicale in-place du fichier proxmoxlib.js par substitution
d’expression rationnelle multiligne, redémarrage propre de l’unité systemd pveproxy.
service, et validation par rafraîchissement forcé du cache du navigateur client.

Hors périmètre : modification des dépôts de paquets APT (déjà traitée en HL-PRC-
003 pour la désactivation de pve-enterprise et l’activation de pve-no-subscription),
souscription à une licence commerciale payante de support Proxmox Server Solutions
GmbH, modification des composants Proxmox Backup Server (PBS port 8007) ou Proxmox
Mail Gateway.

**Note Version validée et environnement réel. Intervention validée sur Proxmox VE
9.2.21 (cluster dozylab, nœuds pve1, pve2, pve3 sur Debian 13 trixie avec noyau 
Linux 7.0.14-12-pve). La syntaxe de substitution est strictement calibrée pour le
composant proxmox-widget-toolkit de la branche 9.x.**

Prérequis

• Accès privilégié : session interactive root ouverte en local, par console Web 
shell Proxmox ou par clé SSH directe (pas de sudo) sur chacun des nœuds de la grappe.

• Intégrité du paquet : présence du fichier /usr/share/javascript/proxmox-widget-
toolkit/proxmoxlib.js sur le système de fichiers racine.

• Disponibilité des utilitaires : binaire sed supportant les options étendues (-
E, -z) fourni par le paquet standard sed GNU de la base Debian.

• Droit de gestion systemd : autorité sur le service pveproxy.service pour recharger
les processus d’écoute.

## 3 Rôles et responsabilités

| Rôle | Responsabilité | 
| Administrateur | Exécute la substitution sed sur chaque nœud, relance le service proxy, valide l’intégrité du code JS. | 
| Détenteur des secrets | Maintient les clés de chiffrement et accès d’administration de la grappe dans le coffre Vaultwarden. | 
| Exploitant | Effectue les contrôles d’accès web post-modification et signale le retour de la popup après mise à jour système. |

**Note Homelab individuel. Dans le cadre d’un homelab individuel, l’ensemble de 
ces rôles est assumé par la même personne physique. La distinction fonctionnelle
est conservée afin d’assurer la traçabilité des opérations de maintenance.**

## 4 Procédure de neutralisation de l’avertissement

Paramètres de la procédure

| Paramètre | Description | Valeur de référence | Contrainte | 
| CLUSTER_NAME | Nom de la grappe Proxmox | dozylab | Immuable | 
| NODES_LIST | Liste des nœuds de la grappe | pve1, pve2, pve3 | Membres actifs | 
| TARGET_FILE | Chemin absolu du toolkit JS | /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js | Fichier existant | 
| SERVICE_NAME | Unité systemd du serveur web PVE | pveproxy.service | Démon de gestion | 
| BACKUP_EXT | Extension de sauvegarde automatique | .bak | Préservé in-place |

**Attention Substitution des paramètres. Les blocs de commandes ci-dessous reprennent
directement les valeurs réelles appliquées sur le lab (nœud pve3 et répliqué sur
pve1 et pve2). Ne jamais coller d’instructions sans avoir confirmé le nœud cible
en cours d’administration.**

Étapes d’exécution

1. Se connecter au nœud cible et vérifier l’intégrité de la bibliothèque

Avant toute altération, il convient de localiser l’appel à la boîte de dialogue 
d’abonnement dans le fichier JavaScript du toolkit Proxmox afin de s’assurer que
le motif attendu est strictement conforme.

grep -n -C 2 "No valid sub" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.
js

Vérification : La commande retourne l’emplacement de la méthode Ext.Msg.show appelant
la chaîne gettext('No valid sub'). Si la chaîne n’apparaît pas, le fichier est soit
déjà neutralisé, soit d’une version non répertoriée.

2. Appliquer la substitution sed et redémarrer pveproxy

La substitution neutralise l’affichage de la boîte modale en remplaçant l’appel 
d’affichage Ext.Msg.show({ title: gettext('No valid sub') par une fonction vide 
void({ //…. L’option -z traite le flux avec des séparateurs nuls pour autoriser 
les correspondances multilignes, et -i.bak génère immédiatement le fichier de secours
proxmoxlib.js.bak.

    ```
    Exécution de la substitution avec sauvegarde automatique et redémarrage du proxy :sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service
    ```

Vérification : Le code de retour doit être 0 (commande silencieuse en cas de succès).
Vérifier la présence du fichier de sauvegarde .bak et le statut de fonctionnement
du démon pveproxy :

    ```
    ls -l /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js*systemctl status pveproxy.service --no-pager
    ```

3. Répéter l’opération sur l’ensemble des nœuds de la grappe

Chaque serveur de la grappe servant sa propre interface web lors de la navigation
sur son adresse IP ou son FQDN d’administration, la commande doit être exécutée 
à l’identique sur pve1, pve2 et pve3.

    ```
    Sur le nœud pve1 :sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.serviceSur le nœud pve2 :sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service
    ```

4. Purger le cache du navigateur client

Le fichier JavaScript étant agressivement mis en cache par les navigateurs modernes(
Chrome, Firefox, Edge), l’interface peut continuer à afficher la popup tant que 
la ressource locale n’est pas renouvelée.

• Action opérateur : Depuis le navigateur web connecté sur https://<IP_PVE>:8006,
exécuter un rechargement forcé en ignorant le cache (raccourci clavier Ctrl + F5
ou Shift + F5).

• Résultat attendu : Après saisie des identifiants root@pam, la console de gestion
s’ouvre directement sur le sommaire ou la vue serveur sans qu’aucun encadré « No
valid subscription » ne s’interpose.

Retour arrière

En cas d’erreur de syntaxe, d’affichage altéré de l’interface web ou de régression
suite à une fausse manipulation, restaurer immédiatement le fichier d’origine depuis
la copie de sauvegarde .bak créée à l’étape 2 :

| Situation | Action | 
| Interface web inaccessible ou erreur JavaScript | cp -a /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js.bak /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service | 
| Fichier de sauvegarde .bak manquant ou altéré | apt-get install –reinstall proxmox-widget-toolkit && systemctl restart pveproxy.service |

Pièges connus

| Symptôme | Cause | Résolution | 
| La boîte de dialogue persiste après exécution de la commande | Le navigateur utilise la version mise en mémoire cache du fichier proxmoxlib.js. | Forcer le rafraîchissement complet par Ctrl + F5 ou vider le cache du navigateur. | 
| Le message réapparaît quelques semaines plus tard | Une mise à niveau système (apt upgrade) a remplacé le paquet proxmox-widget-toolkit. | Réexécuter la commande sed ou placer un script de déclenchement APT post-invoke. | 
| Erreur HTTP 500 ou console blanche au chargement de l’interface | Corruption accidentelle de la syntaxe JS lors d’une édition manuelle hors expression sed testée. | Restaurer immédiatement le fichier .bak ou réinstaller le paquet avec apt-get install –reinstall. |

## 5 Intégration réseau

L’intervention est purement locale à chaque hyperviseur et n’altère aucun paramétrage
réseau, table de routage, ni segmentation VLAN (VLAN d’administration 10 / lien 
d’isolation Corosync 99 établis en HL-PRC-003). Le service pveproxy réouvre instantanément
son port d’écoute TCP 8006 sur les adresses du nœud.

| Nœud | Rôle dans la grappe | Adresse d’administration (VLAN 10) | Port d’écoute HTTPS | 
| pve1 | Nœud cluster PVE 1 | 10.10.10.10 (indicatif lab) | TCP 8006 | 
| pve2 | Nœud cluster PVE 2 | 10.10.10.11 (indicatif lab) | TCP 8006 | 
| pve3 | Nœud cluster PVE 3 (hôte PBS) | 10.10.10.12 | TCP 8006 |

## 6 Durcissement et sécurité

• Non-altération du chiffrement TLS : Le démon pveproxy continue d’utiliser les 
certificats et clés privées internes situés sous /etc/pve/local/pve-ssl.pem sans
aucune modification des contextes de sécurité SSL.

• Gestion stricte des permissions : Le fichier proxmoxlib.js conserve son propriétaire
root:root et ses droits de lecture publique (mode 0644), réduisant le risque que
le code exécuté par les navigateurs tiers soit altéré.

• Intégrité du code : Aucun binaire externe ou script tiers non audité (style script
bash en curl/wget non vérifié) n’est injecté sur l’hyperviseur de production. La
substitution est strictement circonscrite à la méthode d’affichage de la souscription.

Dettes techniques

| Point | Impact | État | 
| Écrasement lors des mises à jour système | Toute nouvelle version de proxmox-widget-toolkit rétablit la popup d’origine. | Accepté. Reconduction manuelle ou hook APT /etc/apt/apt.conf.d/99pve-subscription à qualifier. | 
| Support éditeur Proxmox officiel | Environnement sans souscription commerciale, utilisant les dépôts pve-no-subscription. | Conforme aux choix du Homelab documentés dans HL-PRC-003. |

## 7 Vérifications finales

| Contrôle | Critère d’acceptation | Statut | 
| Vérification syntaxique dans proxmoxlib.js | grep "void({ //Ext.Msg.show" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js retourne 1 résultat | ☐ | 
| Sauvegarde locale préservée | test -f /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js.bak retourne 0 (fichier présent) avec taille cohérente | ☐ | 
| Statut opérationnel du service web | systemctl is-active pveproxy.service retourne "active" | ☐ | 
| Test d’accès interface web pve3 | Connexion sur https://10.10.10.12:8006 : aucune popup affichée après login | ☐ | 
| Test d’accès interface web pve1 & pve2 | Connexion sur les nœuds 1 et 2 : aucune popup affichée après login | ☐ | 
| Fonctionnement des conteneurs et VM | LXC 8010 (hermes) et autres instances restent en état running | ☐ |

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

Documentation éditeur

• Proxmox Server Solutions GmbH : Documentation officielle Proxmox VE Administration
Guide 9.x — Package Repositories and Subscriptions.

• Debian Project : Manuel GNU sed(1) — Édition de flux en place et drapeaux de compatibilité
POSIX/GNU.

Documents associés

• HL-PRC-003 : Mise en service d’une grappe de virtualisation à trois nœuds (gestion
des dépôts pve-no-subscription).

• HL-PRC-009 : Proxmox Backup Server sur hôte Proxmox VE (contexte stockage pve3).

Historique des révisions

| Version | Date | Auteur | Modifications | 
| 1.0 | 24/10/2026 | Administrateur système et réseaux | Création du document à partir de l’intervention réelle sur le cluster. |
