« Organigramme d'installation » : différence entre les versions
De Documentation
Aller à la navigationAller à la recherche
| Ligne 53 : | Ligne 53 : | ||
Au niveau du système hôte, on ajoute le script /root/scripts/lxc_auto_update avec : | Au niveau du système hôte, on ajoute le script /root/scripts/lxc_auto_update avec : | ||
# !/bin/bash | |||
# Définir le fichier journal | |||
LOG_FILE="/var/log/lxc_update.log" | |||
# Définir l'adresse e-mail pour les notifications | |||
LOG_FILE="/var/log/lxc_update.log" | EMAIL_DESTINATAIRE="domi@lesitadom.fr" | ||
# Fonction pour enregistrer et afficher un message | |||
bavarder() { | |||
EMAIL_DESTINATAIRE="domi@lesitadom.fr" | local message="$1" | ||
echo "$(date '+%Y-%m-%d %H:%M:%S') - $message" | tee -a "$LOG_FILE" | |||
} | |||
bavarder() { | # Lancer la mise à jour du système hôte | ||
bavarder "Début de la mise à jour du système hôte" | |||
local message="$1" | apt update | tee -a "$LOG_FILE" | ||
if [ $? -ne 0 ]; then | |||
echo "$(date '+%Y-%m-%d %H:%M:%S') - $message" | tee -a "$LOG_FILE" | bavarder "Erreur lors de la commande apt update" | ||
fi | |||
} | apt upgrade -y | tee -a "$LOG_FILE" | ||
if [ $? -ne 0 ]; then | |||
bavarder "Erreur lors de la commande apt upgrade" | |||
fi | |||
bavarder "Début de la mise à jour du système hôte" | bavarder "Fin de la mise à jour du système hôte" | ||
# Lancer la mise à jour des paquets DANS chaque conteneur LXC Alpine | |||
apt update | tee -a "$LOG_FILE" | bavarder "Début de la mise à jour des paquets dans les conteneurs LXC Alpine" | ||
lxc list --format csv | tail -n +2 | cut -d',' -f1 | while IFS= read -r container; do | |||
if [ $? -ne 0 ]; then | bavarder "Vérification si le conteneur $container est en cours d'exécution (via lxc list)" | ||
is_running=$(lxc list --format csv | grep "^${container}," | grep ",RUNNING,") | |||
bavarder "Erreur lors de la commande apt update" | if [ -n "$is_running" ]; then | ||
bavarder "Le conteneur $container est en cours d'exécution, mise à jour des paquets..." | |||
fi | lxc exec "$container" -- apk update | tee -a "$LOG_FILE" | ||
if [ $? -ne 0 ]; then | |||
apt upgrade -y | tee -a "$LOG_FILE" | bavarder "Erreur lors de la commande apk update dans $container" | ||
fi | |||
if [ $? -ne 0 ]; then | lxc exec "$container" -- apk upgrade --available | tee -a "$LOG_FILE" | ||
if [ $? -ne 0 ]; then | |||
bavarder "Erreur lors de la commande apt upgrade" | bavarder "Erreur lors de la commande apk upgrade dans $container" | ||
fi | |||
fi | else | ||
bavarder "Le conteneur $container n'est pas en cours d'exécution (via lxc list), mise à jour des paquets ignorée." | |||
bavarder "Fin de la mise à jour du système hôte" | fi | ||
done | |||
bavarder "Fin de la mise à jour des paquets dans les conteneurs LXC Alpine" | |||
# Vérifier s'il y a eu des erreurs et envoyer un e-mail si c'est le cas | |||
bavarder "Début de la mise à jour des paquets dans les conteneurs LXC Alpine" | if grep -q "Erreur" "$LOG_FILE"; then | ||
cat "$LOG_FILE" | mail -s 'Rapport de mise à jour - Erreurs détectées' "$EMAIL_DESTINATAIRE" | |||
lxc list --format csv | tail -n +2 | cut -d',' -f1 | while IFS= read -r container; do | fi | ||
exit 0 | |||
bavarder "Vérification si le conteneur $container est en cours d'exécution (via lxc list)" | On automatise l'exécution (dimache à 2h du matin) : | ||
# crontab -e | |||
is_running=$(lxc list --format csv | grep "^${container}," | grep ",RUNNING,") | 0 2 * * 7 /root/scripts/lxc_auto_update.sh | ||
if [ -n "$is_running" ]; then | |||
bavarder "Le conteneur $container est en cours d'exécution, mise à jour des paquets..." | |||
lxc exec "$container" -- apk update | tee -a "$LOG_FILE" | |||
if [ $? -ne 0 ]; then | |||
bavarder "Erreur lors de la commande apk update dans $container" | |||
fi | |||
lxc exec "$container" -- apk upgrade --available | tee -a "$LOG_FILE" | |||
if [ $? -ne 0 ]; then | |||
bavarder "Erreur lors de la commande apk upgrade dans $container" | |||
fi | |||
else | |||
bavarder "Le conteneur $container n'est pas en cours d'exécution (via lxc list), mise à jour des paquets ignorée." | |||
fi | |||
done | |||
bavarder "Fin de la mise à jour des paquets dans les conteneurs LXC Alpine" | |||
if grep -q "Erreur" "$LOG_FILE"; then | |||
cat "$LOG_FILE" | mail -s 'Rapport de mise à jour - Erreurs détectées' "$EMAIL_DESTINATAIRE" | |||
fi | |||
exit 0 | |||
On automatise l'exécution : | |||
Version du 7 mai 2025 à 07:17
Les outils
Conteneur proxy : cf nginx sur alpine léger
- Création du conteneur
- Installation et configuration de nginx
- Installation de certbot pour let's encrypt
- Voir pour installer des outils de sécurité (fail2ban,...)
Conteneur Mariadb : cf mariadb sur alpinele
- Création du conteneur
- Installation de mariadb
- Configuration
- Création d'un utilisateur
Conteneur PhpMyadmin : cf phpma sur alpineLe
- Création du conteneur
- Installation d'apache2 et de phpmyadmin
- Configuration d'apache2 et de phpmyadmin
Les applis
Conteneur tables : cf tables sur alpine léger & pmb sur alpine léger pour apache2
Conteneur pmb : cf pmb sur alpine léger (historique dans pmb sur alpine lourd)
Conteneur wiki : Cf wiki (mediawiki) sur alpine léger
- Création d'un utilisateur et d'une base de donnée vide pour le wiki
- Transfert de la base de données
- Création du conteneur
- Installation du serveur web
- Installation de la nouvelle version de mediawiki
- Initialisation de l'application
- Modification de LocalSettings.php
- Récupération du contenu sur l'ancien serveur et transfert des données
- Corrections
Conteneur wp : cf wordpress sur alpine léger
mais sauter à la fin. Mariadb et phpmyadmin dans d'autres conteneurs...
Stockage et sauvegardes
création d'un volume pour les sauvegardes :
# lxc storage volume create default sauvegarde-lxc size=50GB
Montage du volume dans chaque conteneur :
# lxc config device add <nom du conteneur> sauvegarde-mount disk source=sauvegarde-lxc pool=default path=/sauvegardes
Sécurisation
Mises à jour automatiques
Au niveau du système hôte, on ajoute le script /root/scripts/lxc_auto_update avec :
# !/bin/bash
# Définir le fichier journal
LOG_FILE="/var/log/lxc_update.log"
# Définir l'adresse e-mail pour les notifications
EMAIL_DESTINATAIRE="domi@lesitadom.fr"
# Fonction pour enregistrer et afficher un message
bavarder() {
local message="$1"
echo "$(date '+%Y-%m-%d %H:%M:%S') - $message" | tee -a "$LOG_FILE"
}
# Lancer la mise à jour du système hôte
bavarder "Début de la mise à jour du système hôte"
apt update | tee -a "$LOG_FILE"
if [ $? -ne 0 ]; then
bavarder "Erreur lors de la commande apt update"
fi
apt upgrade -y | tee -a "$LOG_FILE"
if [ $? -ne 0 ]; then
bavarder "Erreur lors de la commande apt upgrade"
fi
bavarder "Fin de la mise à jour du système hôte"
# Lancer la mise à jour des paquets DANS chaque conteneur LXC Alpine
bavarder "Début de la mise à jour des paquets dans les conteneurs LXC Alpine"
lxc list --format csv | tail -n +2 | cut -d',' -f1 | while IFS= read -r container; do
bavarder "Vérification si le conteneur $container est en cours d'exécution (via lxc list)"
is_running=$(lxc list --format csv | grep "^${container}," | grep ",RUNNING,")
if [ -n "$is_running" ]; then
bavarder "Le conteneur $container est en cours d'exécution, mise à jour des paquets..."
lxc exec "$container" -- apk update | tee -a "$LOG_FILE"
if [ $? -ne 0 ]; then
bavarder "Erreur lors de la commande apk update dans $container"
fi
lxc exec "$container" -- apk upgrade --available | tee -a "$LOG_FILE"
if [ $? -ne 0 ]; then
bavarder "Erreur lors de la commande apk upgrade dans $container"
fi
else
bavarder "Le conteneur $container n'est pas en cours d'exécution (via lxc list), mise à jour des paquets ignorée."
fi
done
bavarder "Fin de la mise à jour des paquets dans les conteneurs LXC Alpine"
# Vérifier s'il y a eu des erreurs et envoyer un e-mail si c'est le cas
if grep -q "Erreur" "$LOG_FILE"; then
cat "$LOG_FILE" | mail -s 'Rapport de mise à jour - Erreurs détectées' "$EMAIL_DESTINATAIRE"
fi
exit 0
On automatise l'exécution (dimache à 2h du matin) :
# crontab -e 0 2 * * 7 /root/scripts/lxc_auto_update.sh