« 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 :


<nowiki>#</nowiki>!/bin/bash
  # !/bin/bash
 
  # Définir le fichier journal
<nowiki>#</nowiki> 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
<nowiki>#</nowiki> Définir l'adresse e-mail pour les notifications
 
 
  bavarder() {
EMAIL_DESTINATAIRE="domi@lesitadom.fr"
    local message="$1"
 
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $message" | tee -a "$LOG_FILE"
<nowiki>#</nowiki> Fonction pour enregistrer et afficher un message
  }
 
 
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
<nowiki>#</nowiki> Lancer la mise à jour du système hôte
    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
<nowiki>#</nowiki> Lancer la mise à jour des paquets DANS chaque conteneur LXC Alpine
  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"
 
<nowiki>#</nowiki> 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 :
 
<nowiki>#</nowiki> crontab -e

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