Ajouter Readme.md
This commit is contained in:
parent
84a120e8eb
commit
e7e3e9a2b4
|
|
@ -0,0 +1,321 @@
|
||||||
|
# 🐳 Gestionnaire LXC Proxmox VE
|
||||||
|
|
||||||
|
[](https://opensource.org/licenses/MIT)
|
||||||
|
[](https://www.gnu.org/software/bash/)
|
||||||
|
[](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.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## ✨ 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
|
||||||
|
|
||||||
|
### 💾 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
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Télécharger le script
|
||||||
|
wget https://raw.githubusercontent.com/votre-repo/proxmox-lxc-manager/main/lxc-manager.sh
|
||||||
|
|
||||||
|
# Rendre le script exécutable
|
||||||
|
chmod +x lxc-manager.sh
|
||||||
|
|
||||||
|
# Lancer le script
|
||||||
|
./lxc-manager.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Installation avec Git
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Cloner le dépôt
|
||||||
|
git clone https://github.com/votre-repo/proxmox-lxc-manager.git
|
||||||
|
|
||||||
|
# Accéder au répertoire
|
||||||
|
cd proxmox-lxc-manager
|
||||||
|
|
||||||
|
# Rendre le script exécutable
|
||||||
|
chmod +x lxc-manager.sh
|
||||||
|
|
||||||
|
# Lancer le script
|
||||||
|
./lxc-manager.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### 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
|
||||||
|
|
||||||
|
### Lancement
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./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
|
||||||
|
|
||||||
|
```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
|
||||||
|
```
|
||||||
|
|
||||||
|
### Erreur "pct: command not found"
|
||||||
|
|
||||||
|
Le script doit être exécuté sur un serveur Proxmox VE, pas sur une machine distante.
|
||||||
|
|
||||||
|
### Erreur lors de la sauvegarde "wrong content type"
|
||||||
|
|
||||||
|
Le stockage sélectionné n'est pas configuré pour accepter les backups. Le script filtre maintenant automatiquement les stockages appropriés.
|
||||||
|
|
||||||
|
### Erreur sendmail lors des sauvegardes
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
### Impossible de cloner un conteneur en cours d'exécution
|
||||||
|
|
||||||
|
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).
|
||||||
|
|
||||||
|
## 🤝 Contribution
|
||||||
|
|
||||||
|
Les contributions sont les bienvenues ! Pour contribuer :
|
||||||
|
|
||||||
|
1. **Fork** le projet
|
||||||
|
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**
|
||||||
|
|
||||||
|
### 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
|
||||||
|
|
||||||
|
Ce projet est sous licence MIT - voir le fichier [LICENSE](LICENSE) pour plus de détails.
|
||||||
|
|
||||||
|
## 👨💻 Auteur
|
||||||
|
|
||||||
|
**Généré par Claude** - Assistant IA d'Anthropic
|
||||||
|
|
||||||
|
## 🙏 Remerciements
|
||||||
|
|
||||||
|
- Proxmox VE pour leur excellent système de virtualisation
|
||||||
|
- La communauté open source pour leurs contributions
|
||||||
|
- Tous les utilisateurs qui testent et améliorent ce script
|
||||||
|
|
||||||
|
## 📞 Support
|
||||||
|
|
||||||
|
- 🐛 **Issues** : [GitHub Issues](https://github.com/votre-repo/proxmox-lxc-manager/issues)
|
||||||
|
- 💬 **Discussions** : [GitHub Discussions](https://github.com/votre-repo/proxmox-lxc-manager/discussions)
|
||||||
|
- 📖 **Wiki** : [Documentation complète](https://github.com/votre-repo/proxmox-lxc-manager/wiki)
|
||||||
|
|
||||||
|
## ⭐ Star History
|
||||||
|
|
||||||
|
Si ce projet vous est utile, n'hésitez pas à lui donner une étoile ! ⭐
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**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.
|
||||||
Loading…
Reference in New Issue