lxc-manager/Readme.md

326 lines
10 KiB
Markdown

# 🐳 Gestionnaire LXC Proxmox VE
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![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.
![Screenshot](https://git.h3campus.fr/Johnny/lxc-manager/raw/branch/main/screenshots/menu-principal.png)
## ✹ 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://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
```
### Installation avec Git
```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
```
### 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 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
## 📄 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.
## đŸ‘šâ€đŸ’» Auteur
**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 ! ⭐
---
**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)