Actualiser Readme.md
This commit is contained in:
parent
00dbd3eb28
commit
2022a9fd4e
437
Readme.md
437
Readme.md
|
|
@ -4,323 +4,202 @@
|
|||
[](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.
|
||||
## 📋 Description
|
||||
|
||||

|
||||
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)
|
||||
Loading…
Reference in New Issue