« Organigramme d'installation » : différence entre les versions
| Ligne 53 : | Ligne 53 : | ||
Installer vim-nox (coloration syntaxique), mailutils (pour l'envoi de mails). | 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 : | Au niveau du système hôte, on ajoute le script '''/root/scripts/lxc_auto_update.sh''' avec : | ||
#!/bin/bash | #!/bin/bash | ||
| Ligne 64 : | Ligne 64 : | ||
} | } | ||
# Récupérer la liste des noms de conteneurs Alpine | |||
containers=$(lxc list --format csv | tail -n +2 | cut -d',' -f1) | containers=$(lxc list --format csv | tail -n +2 | cut -d',' -f1) | ||
bavarder "Liste des conteneurs récupérée : '$containers'" | bavarder "Liste des conteneurs récupérée : '$containers'" | ||
# Séparer les noms de conteneurs en un tableau | |||
IFS=$'\n' read -r -d <nowiki>''</nowiki> -a container_array <<< "$containers" | IFS=$'\n' read -r -d <nowiki>''</nowiki> -a container_array <<< "$containers" | ||
# Boucle pour lancer les mises à jour et rediriger toute la sortie de la boucle | |||
{ | { | ||
for container in "${container_array[@]}"; do | for container in "${container_array[@]}"; do | ||
| Ligne 99 : | Ligne 99 : | ||
bavarder "Fin de la tentative de mise à jour des conteneurs." | 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 | 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 | if grep -q "Erreur" "$LOG_FILE"; then | ||
cat "$LOG_FILE" | mail -s 'Rapport de mise à jour LXC - Erreurs détectées' "$EMAIL_DESTINATAIRE" | cat "$LOG_FILE" | mail -s 'Rapport de mise à jour LXC - Erreurs détectées' "$EMAIL_DESTINATAIRE" | ||
| Ligne 126 : | Ligne 126 : | ||
# Where will the mail seem to come from? | # Where will the mail seem to come from? | ||
# rewriteDomain= | # rewriteDomain= | ||
# The full hostname | # The full hostname | ||
hostname=raspberrypi | hostname=raspberrypi | ||
Version du 9 mai 2025 à 07:08
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.sh 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 :
# apt-get install mailutils ssmtp
Configuration de ssmtp :
# vi /etc/ssmtp/ssmtp.conf
# # Config file for sSMTP sendmail # # The person who gets all mail for userids < 1000 # Make this empty to disable rewriting. root=toto@monmail.fr # The place where the mail goes. The actual machine name is required no # MX records are consulted. Commonly mailhosts are named mail.domain.com mailhub=smtp.gmail.com:587 (pour gmail) # Where will the mail seem to come from? # rewriteDomain= # The full hostname hostname=raspberrypi # Are users allowed to set their own From: address? # YES - Allow the user to specify their own From: address # NO - Use the system generated From: address FromLineOverride=YES UseTLS=YES UseSTARTTLS=YES AuthUser=toto@monfournisseur.com AuthPass=MonMotdePasseDeConnection
Remarque : on peut créer un mot de passe d'application dans les paramètre du compte google et l'utiliser ici pour éviter d'avoir à utiliser le mot de passe du compte.
On automatise l'exécution (dimache à 2h du matin) :
# crontab -e 0 2 * * 7 /root/scripts/lxc_auto_update.sh