From 2022a9fd4ec2c0f6c679752edc334f949eb4e4e6 Mon Sep 17 00:00:00 2001 From: Johnny Date: Wed, 31 Dec 2025 09:33:20 +0000 Subject: [PATCH] Actualiser Readme.md --- Readme.md | 437 ++++++++++++++++++++---------------------------------- 1 file changed, 158 insertions(+), 279 deletions(-) diff --git a/Readme.md b/Readme.md index c901d36..c492ace 100644 --- a/Readme.md +++ b/Readme.md @@ -4,323 +4,202 @@ [![Bash](https://img.shields.io/badge/Bash-5.0+-green.svg)](https://www.gnu.org/software/bash/) [![Proxmox](https://img.shields.io/badge/Proxmox-VE%207%2B-orange.svg)](https://www.proxmox.com/) -Script Bash professionnel et sécurisé pour gérer les conteneurs LXC sur Proxmox VE via l'interface en ligne de commande. +## 📋 Description -![Screenshot](https://git.h3campus.fr/Johnny/lxc-manager/raw/branch/main/screenshots/menu-principal.png) +Script bash interactif pour la gestion complète des conteneurs LXC sur Proxmox VE. Cette interface en ligne de commande offre une alternative conviviale aux commandes natives `pct` avec des fonctionnalités de sécurité avancées. ## ✨ Fonctionnalités -### 🚀 Gestion des conteneurs -- ✅ **Création** de conteneurs avec configuration complète (CPU, RAM, disque, réseau) -- ▶️ **Démarrage** / ⏹️ **Arrêt** (normal ou forcé) -- 🔄 **Redémarrage** de conteneurs -- 🗑️ **Suppression** avec confirmation de sécurité -- 🔓 **Déverrouillage** de conteneurs bloqués -- 📊 **Affichage** des informations détaillées -- 🖥️ **Connexion** directe au shell du conteneur -- 📋 **Clonage** avec gestion des conteneurs actifs +- ✅ **Gestion complète des conteneurs** : création, démarrage, arrêt, redémarrage, suppression +- 🔒 **Système de protection** : double confirmation pour les opérations critiques +- 💾 **Gestion des sauvegardes** : sauvegarde, restauration, suppression +- 🐑 **Clonage de conteneurs** : avec options de snapshot +- ⚙️ **Configuration avancée** : nesting, FUSE, NFS, CIFS +- 📊 **Visualisation** : affichage coloré des informations +- 🔧 **Modification en temps réel** : options de conteneurs sans redémarrage +- 🛡️ **Validation stricte** : vérification des entrées utilisateur -### 💾 Sauvegarde et restauration -- 💿 **Sauvegarde** avec choix de compression (gzip, lzo, zstd) -- 🔄 **Modes de backup** : snapshot, stop, suspend -- 📂 **Sélection** du stockage de destination -- 🔙 **Restauration** avec sélection numérotée des sauvegardes -- 🗄️ **Support** de tous les stockages connectés (NFS, CIFS, local, etc.) - -### 🔒 Sécurité et protection -- 🛡️ **Protection par conteneur** (activation/désactivation) -- 🔐 **Mode protection global** (confirmations renforcées) -- ✅ **Validation stricte** de toutes les entrées utilisateur -- 🚨 **Détection automatique** de la protection lors de la suppression -- 📝 **Confirmations** pour toutes les opérations critiques - -### 🎨 Interface utilisateur -- 🌈 **Interface colorée** et intuitive -- 📋 **Sélection numérotée** pour tous les choix -- 📊 **Affichage clair** des informations -- ⚡ **Navigation rapide** dans les menus - -## 📋 Prérequis - -- **Proxmox VE** 7.0 ou supérieur -- **Bash** 5.0 ou supérieur -- Accès **root** au serveur Proxmox -- Commande `pct` disponible (installée par défaut sur Proxmox) - -## 📥 Installation - -### Installation rapide +## 🚀 Installation +1. Copiez le script sur votre serveur Proxmox VE : ```bash -# Télécharger le script -wget https://git.h3campus.fr/Johnny/lxc-manager/raw/branch/main/lxc-manager.sh - -# Rendre le script exécutable -chmod +x lxc-manager.sh - -# Lancer le script -./lxc-manager.sh +curl -o /usr/local/bin/lxc-manager.sh https://raw.githubusercontent.com/votre-repo/lxc-manager/main/script.sh +chmod +x /usr/local/bin/lxc-manager.sh ``` -### Installation avec Git - +2. Créez un alias pour une utilisation facile : ```bash -# Cloner le dépôt -git clone https://git.h3campus.fr/Johnny/lxc-manager.git - -# Accéder au répertoire -cd lxc-manager - -# Rendre le script exécutable -chmod +x lxc-manager.sh - -# Lancer le script -./lxc-manager.sh +echo 'alias lxc-manager="/usr/local/bin/lxc-manager.sh"' >> ~/.bashrc +source ~/.bashrc ``` -### Installation système (optionnel) - -```bash -# Copier dans /usr/local/bin -sudo cp lxc-manager.sh /usr/local/bin/lxc-manager - -# Rendre exécutable -sudo chmod +x /usr/local/bin/lxc-manager - -# Lancer de n'importe où -lxc-manager -``` - -## 🎮 Utilisation +## 📖 Utilisation ### Lancement - ```bash -./lxc-manager.sh +sudo lxc-manager.sh ``` -Le script doit être exécuté en tant que **root** ou avec **sudo**. - -### Menu principal - -``` -╔═══════════════════════════════════════════════╗ -║ GESTIONNAIRE LXC PROXMOX VE ║ -║ Version 2.1 - Sécurisé ║ -╚═══════════════════════════════════════════════╝ - -🔒 Mode protection: ACTIVÉ - -Menu Principal: - -1) Lister les conteneurs -2) Créer un conteneur -3) Démarrer un conteneur -4) Arrêter un conteneur -5) Redémarrer un conteneur -6) Supprimer un conteneur -7) Déverrouiller un conteneur -8) Sauvegarder un conteneur -9) Restaurer une sauvegarde -10) Afficher les informations -11) Entrer dans un conteneur -12) Cloner un conteneur -13) Gérer la protection d'un conteneur -14) Mode protection global (ACTIVÉ) -0) Quitter -``` - -## 📖 Guide des fonctionnalités - -### 🆕 Création d'un conteneur - -Le script vous guide à travers toutes les étapes : - -1. **VMID** : Numéro unique du conteneur (100-999999999) -2. **Nom d'hôte** : Nom du conteneur (lettres, chiffres, tirets) -3. **Mot de passe root** : Minimum 8 caractères avec confirmation -4. **Stockage** : Sélection numérotée du stockage -5. **Template** : Choix du système d'exploitation -6. **Ressources** : RAM, Swap, Disque, CPU -7. **Réseau** : Configuration DHCP ou IP statique -8. **Options** : Démarrage automatique, protection - -### 💾 Sauvegarde d'un conteneur - -Choix disponibles : - -**Compression :** -- `gzip` : Rapide, compression moyenne (recommandé) -- `lzo` : Très rapide, faible compression -- `zstd` : Bon compromis vitesse/compression - -**Mode de sauvegarde :** -- `snapshot` : Plus rapide, nécessite ZFS/LVM (recommandé) -- `stop` : Arrêt complet du conteneur -- `suspend` : Suspension temporaire - -### 🔙 Restauration d'une sauvegarde - -Le script vous permet de : - -1. Sélectionner le **stockage source** contenant les sauvegardes -2. Choisir la **sauvegarde** à partir d'une liste numérotée avec VMID et date -3. Définir le **nouveau VMID** pour le conteneur restauré -4. Sélectionner le **stockage de destination** - -### 📋 Clonage d'un conteneur - -Pour les conteneurs en cours d'exécution, 3 options : - -1. **Arrêter** le conteneur avant le clonage (recommandé) -2. **Créer un snapshot** et cloner (plus rapide, nécessite ZFS/LVM) -3. **Annuler** l'opération - -Le conteneur source est automatiquement redémarré après le clonage si nécessaire. - -### 🔒 Protection des conteneurs - -**Protection par conteneur :** -- Empêche la suppression accidentelle -- Peut être activée/désactivée individuellement -- Détectée automatiquement lors de la suppression - -**Mode protection global :** -- 🔒 **ACTIVÉ** : Confirmations renforcées (taper "SUPPRIMER") -- 🔓 **DÉSACTIVÉ** : Confirmations simples (o/n) - -## 🔧 Configuration avancée - -### Validation des entrées - -Le script valide strictement : - -- **VMID** : Format numérique (100-999999999) -- **Nom d'hôte** : RFC 952/1123 (lettres, chiffres, tirets) -- **Adresses IP** : Format CIDR (ex: 192.168.1.100/24) -- **Nombres** : Valeurs positives pour RAM, CPU, disque - -### Mode strict Bash - -Le script utilise `set -euo pipefail` pour : - -- `-e` : Arrêter en cas d'erreur -- `-u` : Détecter les variables non définies -- `-o pipefail` : Détecter les erreurs dans les pipes - -## 🐛 Dépannage - -### Le script ne démarre pas - +Ou via l'alias (si configuré) : ```bash -# Vérifier que vous êtes root -whoami - -# Si non root, utiliser sudo -sudo ./lxc-manager.sh - -# Vérifier que le script est exécutable -ls -l lxc-manager.sh -chmod +x lxc-manager.sh +sudo lxc-manager ``` -### Erreur "pct: command not found" +### Menu Principal +Le script présente un menu interactif avec les options suivantes : -Le script doit être exécuté sur un serveur Proxmox VE, pas sur une machine distante. +| Option | Description | Commande équivalente | +|--------|-------------|---------------------| +| 1 | Lister les conteneurs | `pct list` | +| 2 | Créer un conteneur | `pct create` | +| 3 | Démarrer un conteneur | `pct start` | +| 4 | Arrêter un conteneur | `pct stop` / `pct shutdown` | +| 5 | Redémarrer un conteneur | `pct reboot` | +| 6 | Supprimer un conteneur | `pct destroy` | +| 7 | Déverrouiller un conteneur | `pct unlock` | +| 8 | Sauvegarder un conteneur | `vzdump` | +| 9 | Restaurer une sauvegarde | `pct restore` | +| 10 | Supprimer des sauvegardes | `pvesm free` | +| 11 | Afficher les informations | `pct config` + `pct status` | +| 12 | Entrer dans un conteneur | `pct enter` | +| 13 | Cloner un conteneur | `pct clone` | +| 14 | Modifier les options | `pct set --features` | +| 15 | Gérer la protection | `pct set --protection` | +| 16 | Mode protection global | Configuration interne | +| 0 | Quitter | Exit | -### Erreur lors de la sauvegarde "wrong content type" +## 🔧 Configuration -Le stockage sélectionné n'est pas configuré pour accepter les backups. Le script filtre maintenant automatiquement les stockages appropriés. +### Options avancées +Le script permet de configurer les fonctionnalités LXC suivantes : -### Erreur sendmail lors des sauvegardes +- **Nesting** : Permet l'exécution de Docker dans LXC +- **FUSE** : Support des systèmes de fichiers utilisateur +- **NFS** : Montage de partages NFS +- **CIFS/SMB** : Montage de partages Windows -C'est une erreur de notification email qui n'empêche pas la sauvegarde de fonctionner. Pour la corriger, configurez `msmtp` sur votre serveur Proxmox. +### Mode Protection +Le système de protection offre deux niveaux : -### Impossible de cloner un conteneur en cours d'exécution +1. **Protection globale** : Requiert des confirmations spécifiques pour les opérations critiques +2. **Protection par conteneur** : Empêche la suppression accidentelle (équivalent à `--protection 1`) -Utilisez l'option 1 du menu de clonage pour arrêter le conteneur avant le clonage, ou l'option 2 si votre stockage supporte les snapshots (ZFS/LVM). +## 🛠️ Fonctions détaillées + +### Création de conteneur +- Validation des VMID (100-999999999) +- Validation des noms d'hôte +- Validation des adresses IP +- Sélection de template interactif +- Configuration des ressources (RAM, CPU, stockage) +- Options réseau (DHCP/Statique) +- Mode privilégié/non-privilégié + +### Sauvegarde +- Support de multiples algorithmes de compression (gzip, lzo, zstd) +- Différents modes de sauvegarde (snapshot, stop, suspend) +- Sélection de stockage dédié + +### Clonage +- Clonage de conteneurs en cours d'exécution +- Options de snapshot pour plus de rapidité +- Attribution automatique de nouveau VMID + +## 🔐 Sécurité + +### Validations +- VMID : format numérique, plage valide, unicité +- Noms d'hôte : conformité RFC 1123 +- Adresses IP : format CIDR valide +- Mots de passe : minimum 8 caractères + +### Protections +- Contrôle des privilèges root +- Vérification de l'environnement Proxmox +- Confirmations pour les opérations destructives +- Protection contre la suppression accidentelle + +## 🎨 Interface + +### Couleurs +- 🔴 Rouge : erreurs, avertissements critiques +- 🟢 Vert : succès, confirmations +- 🟡 Jaune : avertissements, informations +- 🔵 Bleu : menus, informations générales +- 🟣 Magenta : options spéciales + +### Logo +Affichage d'un en-tête stylisé avec : +- Nom du gestionnaire +- Version du script +- État de la protection + +## ⚠️ Limitations + +- Nécessite un serveur Proxmox VE +- Doit être exécuté en tant que root +- Dépend des commandes `pct`, `pvesm`, `vzdump` +- Certaines fonctionnalités nécessitent ZFS/LVM + +## 🔄 Dépendances + +- **Proxmox VE** 6.x ou supérieur +- **Bash** 4.4 ou supérieur +- **Outils Proxmox** : `pct`, `pvesm`, `vzdump` + +## 📝 Journalisation + +Le script n'implémente pas de journalisation interne mais utilise les logs système de Proxmox. Toutes les opérations sont tracées dans : +- `/var/log/syslog` +- `/var/log/pve/tasks/` + +## 🚨 Dépannage + +### Erreurs courantes + +1. **"Ce script doit être exécuté sur un serveur Proxmox VE"** + - Vérifiez que les commandes `pct` et `pvesm` sont disponibles + - Assurez-vous d'être sur un nœud Proxmox + +2. **"VMID invalide"** + - Utilisez un nombre entre 100 et 999999999 + - Vérifiez que le VMID n'existe pas déjà + +3. **Échec de sauvegarde** + - Vérifiez les permissions sur le stockage + - Assurez-vous que le stockage accepte les backups + - Vérifiez l'espace disponible + +### Mode debug +Ajoutez `set -x` au début du script pour activer le mode debug : +```bash +#!/bin/bash +set -x # Ajoutez cette ligne +# ... reste du script +``` ## 🤝 Contribution -Les contributions sont les bienvenues ! Pour contribuer : - -1. **Fork** le projet sur Gitea -2. Créez une **branche** pour votre fonctionnalité (`git checkout -b feature/AmazingFeature`) -3. **Commit** vos changements (`git commit -m 'Add some AmazingFeature'`) -4. **Push** vers la branche (`git push origin feature/AmazingFeature`) -5. Ouvrez une **Pull Request** sur https://git.h3campus.fr/Johnny/lxc-manager - -### Standards de code - -- Utiliser `shellcheck` pour valider le code -- Suivre les conventions de nommage existantes -- Commenter les fonctions complexes -- Tester sur Proxmox VE 7 et 8 - -## 📝 Changelog - -### Version 2.1 (2025-01-30) - -#### Ajouté -- Protection par conteneur (activation/désactivation) -- Mode protection global avec confirmations renforcées -- Sélection numérotée pour tous les stockages -- Filtrage intelligent des stockages pour backups -- Gestion des conteneurs actifs lors du clonage -- Extraction automatique du VMID et date pour les sauvegardes - -#### Amélioré -- Validation stricte de toutes les entrées -- Gestion d'erreurs avec mode strict Bash -- Interface utilisateur plus intuitive -- Messages d'erreur plus clairs - -#### Corrigé -- Affichage des codes couleur dans tous les menus -- Gestion des stockages incompatibles avec les backups -- Clonage des conteneurs en cours d'exécution - -### Version 2.0 (2025-01-29) - -#### Ajouté -- Sécurité renforcée avec `set -euo pipefail` -- Validation de toutes les entrées utilisateur -- Fonctions de validation (VMID, hostname, IP, nombres) -- Gestion centralisée des erreurs - -### Version 1.0 (2025-01-28) - -- Version initiale avec fonctionnalités de base +Les contributions sont les bienvenues ! Veuillez : +1. Fork le projet +2. Créer une branche pour votre fonctionnalité +3. Tester vos modifications +4. Soumettre une pull request ## 📄 Licence -Ce projet est sous licence MIT - voir le fichier [LICENSE](https://git.h3campus.fr/Johnny/lxc-manager/src/branch/main/LICENSE) pour plus de détails. +Ce script est distribué sous licence MIT. Voir le fichier `LICENSE` pour plus de détails. -## 👨‍💻 Auteur +## 🔗 Ressources -**Johnny** - [Profil Gitea](https://git.h3campus.fr/Johnny) - -Développé avec l'assistance de **Claude** - Assistant IA d'Anthropic - -## 🙏 Remerciements - -- Proxmox VE pour leur excellent système de virtualisation -- La communauté H3 Campus pour leur soutien -- La communauté open source pour leurs contributions -- Tous les utilisateurs qui testent et améliorent ce script - -## 📞 Support - -- 🐛 **Issues** : [Signaler un bug](https://git.h3campus.fr/Johnny/lxc-manager/issues) -- 💬 **Discussions** : Contactez-moi sur H3 Campus -- 📖 **Wiki** : [Documentation complète](https://git.h3campus.fr/Johnny/lxc-manager/wiki) - -## ⭐ Star le projet - -Si ce projet vous est utile, n'hésitez pas à lui donner une étoile sur Gitea ! ⭐ +- [Documentation officielle Proxmox](https://pve.proxmox.com/wiki/Linux_Container) +- [Guide LXC de Proxmox](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#pct_lxc) +- [Forum Proxmox](https://forum.proxmox.com/) --- +**Note** : Ce script est un outil de gestion et ne remplace pas une bonne compréhension de l'administration Proxmox. Toujours tester les opérations critiques dans un environnement de développement avant la production. + **Note** : Ce script est fourni "tel quel", sans garantie d'aucune sorte. Testez toujours sur un environnement de test avant de l'utiliser en production. **Hébergé sur** : [git.h3campus.fr](https://git.h3campus.fr/Johnny/lxc-manager) \ No newline at end of file