326 lines
10 KiB
Markdown
326 lines
10 KiB
Markdown
# đł 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://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) |