Organigramme d'installation
De Documentation
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
# 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