« Organigramme d'installation » : différence entre les versions

De Documentation
Aller à la navigationAller à la recherche
Ligne 49 : Ligne 49 :


== Sécurisation ==
== Sécurisation ==
Mises à jour automatiques
Au niveau du système hôte, on ajoute le script /root/scripts/lxc_auto_update avec :
<nowiki>#</nowiki>!/bin/bash
<nowiki>#</nowiki> Définir le fichier journal
LOG_FILE="/var/log/lxc_update.log"
<nowiki>#</nowiki> Définir l'adresse e-mail pour les notifications
EMAIL_DESTINATAIRE="domi@lesitadom.fr"
<nowiki>#</nowiki> Fonction pour enregistrer et afficher un message
bavarder() {
  local message="$1"
  echo "$(date '+%Y-%m-%d %H:%M:%S') - $message" | tee -a "$LOG_FILE"
}
<nowiki>#</nowiki> 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"
<nowiki>#</nowiki> 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"
<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:09

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 :

# crontab -e