Organigramme d'installation

De Documentation
Aller à la navigationAller à la recherche

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

Installer vim-nox (coloration syntaxique), mailutils (pour l'envoi de mails).

Au niveau du système hôte, on ajoute le script /root/scripts/lxc_auto_update avec :

 #!/bin/bash

LOG_FILE="/var/log/lxc_update.log"

bavarder() {
  local message="$1"
  echo "$(date '+%Y-%m-%d %H:%M:%S') - $message" >> "$LOG_FILE"
}

# Récupérer la liste des noms de conteneurs Alpine
containers=$(lxc list --format csv | tail -n +2 | cut -d',' -f1)
bavarder "Liste des conteneurs récupérée : '$containers'"

# Séparer les noms de conteneurs en un tableau
IFS=$'\n' read -r -d '' -a container_array <<< "$containers"

# Boucle pour lancer les mises à jour et rediriger toute la sortie de la boucle
{
  for container in "${container_array[@]}"; do
    bavarder "--- Début du traitement du conteneur : '$container' ---"

    config=$(lxc config show "$container")
    if echo "$config" | grep -iq "alpine"; then
      bavarder "Le conteneur '$container' semble être basé sur Alpine."
      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, lancement de la mise à jour..."
        lxc exec "$container" -- sh -c "apk update && apk upgrade --available"
        result=$?
        if [ "$result" -ne 0 ]; then
          bavarder "Erreur lors de la mise à jour de '$container'."
        fi
      else
        bavarder "Le conteneur '$container' n'est pas en cours d'exécution, mise à jour ignorée."
      fi
    else
      bavarder "Le conteneur '$container' ne semble pas être basé sur Alpine, mise à jour ignorée."
    fi
    bavarder "--- Fin du traitement du conteneur : '$container' ---"
  done
} >> "$LOG_FILE" 2>&1

bavarder "Fin de la tentative de mise à jour des conteneurs."

# Définir l'adresse e-mail pour les notifications
EMAIL_DESTINATAIRE="toto@monfournisseur.com" # Remplace par ton adresse e-mail

# 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 LXC - Erreurs détectées' "$EMAIL_DESTINATAIRE"
fi

exit 0

L'envoi des mails nécessite l'installation de mailutils et ssmtp :


On automatise l'exécution (dimache à 2h du matin) :

 # crontab -e
 0 2 * * 7 /root/scripts/lxc_auto_update.sh