Actualiser Readme.md

This commit is contained in:
Johnny 2025-12-31 09:33:20 +00:00
parent 00dbd3eb28
commit 2022a9fd4e
1 changed files with 158 additions and 279 deletions

437
Readme.md
View File

@ -4,323 +4,202 @@
[![Bash](https://img.shields.io/badge/Bash-5.0+-green.svg)](https://www.gnu.org/software/bash/) [![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/) [![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 ## ✨ Fonctionnalités
### 🚀 Gestion des conteneurs - ✅ **Gestion complète des conteneurs** : création, démarrage, arrêt, redémarrage, suppression
- ✅ **Création** de conteneurs avec configuration complète (CPU, RAM, disque, réseau) - 🔒 **Système de protection** : double confirmation pour les opérations critiques
- ▶️ **Démarrage** / ⏹️ **Arrêt** (normal ou forcé) - 💾 **Gestion des sauvegardes** : sauvegarde, restauration, suppression
- 🔄 **Redémarrage** de conteneurs - 🐑 **Clonage de conteneurs** : avec options de snapshot
- 🗑️ **Suppression** avec confirmation de sécurité - ⚙️ **Configuration avancée** : nesting, FUSE, NFS, CIFS
- 🔓 **Déverrouillage** de conteneurs bloqués - 📊 **Visualisation** : affichage coloré des informations
- 📊 **Affichage** des informations détaillées - 🔧 **Modification en temps réel** : options de conteneurs sans redémarrage
- 🖥️ **Connexion** directe au shell du conteneur - 🛡️ **Validation stricte** : vérification des entrées utilisateur
- 📋 **Clonage** avec gestion des conteneurs actifs
### 💾 Sauvegarde et restauration ## 🚀 Installation
- 💿 **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
1. Copiez le script sur votre serveur Proxmox VE :
```bash ```bash
# Télécharger le script curl -o /usr/local/bin/lxc-manager.sh https://raw.githubusercontent.com/votre-repo/lxc-manager/main/script.sh
wget https://git.h3campus.fr/Johnny/lxc-manager/raw/branch/main/lxc-manager.sh chmod +x /usr/local/bin/lxc-manager.sh
# Rendre le script exécutable
chmod +x lxc-manager.sh
# Lancer le script
./lxc-manager.sh
``` ```
### Installation avec Git 2. Créez un alias pour une utilisation facile :
```bash ```bash
# Cloner le dépôt echo 'alias lxc-manager="/usr/local/bin/lxc-manager.sh"' >> ~/.bashrc
git clone https://git.h3campus.fr/Johnny/lxc-manager.git source ~/.bashrc
# Accéder au répertoire
cd lxc-manager
# Rendre le script exécutable
chmod +x lxc-manager.sh
# Lancer le script
./lxc-manager.sh
``` ```
### Installation système (optionnel) ## 📖 Utilisation
```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
### Lancement ### Lancement
```bash ```bash
./lxc-manager.sh sudo lxc-manager.sh
``` ```
Le script doit être exécuté en tant que **root** ou avec **sudo**. Ou via l'alias (si configuré) :
### 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
```bash ```bash
# Vérifier que vous êtes root sudo lxc-manager
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
``` ```
### 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 ## 🤝 Contribution
Les contributions sont les bienvenues ! Pour contribuer : Les contributions sont les bienvenues ! Veuillez :
1. Fork le projet
1. **Fork** le projet sur Gitea 2. Créer une branche pour votre fonctionnalité
2. Créez une **branche** pour votre fonctionnalité (`git checkout -b feature/AmazingFeature`) 3. Tester vos modifications
3. **Commit** vos changements (`git commit -m 'Add some AmazingFeature'`) 4. Soumettre une pull request
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
## 📄 Licence ## 📄 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) - [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)
Développé avec l'assistance de **Claude** - Assistant IA d'Anthropic - [Forum Proxmox](https://forum.proxmox.com/)
## 🙏 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 ! ⭐
--- ---
**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. **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) **Hébergé sur** : [git.h3campus.fr](https://git.h3campus.fr/Johnny/lxc-manager)