Prosody : mise à jour automatique des modules communautaires
Pour mettre à jour automatique les modules communautaires que j'utilise sur mon serveur de messagerie instantanée (XMPP) Prosody, j'ai écrit un service
systemd ainsi qu'un timer
le lançant toutes les nuits.
D'abord, il faut évidemment copier le dépôt des modules communautaires quelque part sur le serveur où tourne prosody
(par exemple /usr/local/lib/prosody/modules
).
sudo apt update
sudo apt install mercurial
sudo hg clone https://hg.prosody.im/prosody-modules/ /usr/local/lib/prosody/modules
Ensuite, éditer le fichier de configuration sudo -e /etc/prosody/prosody.cfg.lua
et y ajouter le chemin vers ce répertoire.
-- These paths are searched in the order specified, and before the default path
plugin_paths = { "/usr/local/lib/prosody/modules" }
Sauvegarder, relancer prosody
et vérifier que le chemin est bien pris en compte.
sudo service prosody restart
sudo prosodyctl about
Exemple :
Le répertoire de modules complémentaires étant correctement pris en compte, on peut maintenant créer un service
dont la tâche sera de mettre à jour le répertoire cloné.
sudo -e /etc/systemd/system/prosody-up.service
Copier et sauvegarder :
[Service]
Type=oneshot
ExecStart=/usr/bin/hg pull --update --cwd /usr/local/lib/prosody/modules
ExecStartPost=/usr/sbin/service prosody reload
Ensuite un timer
invoquant le service
ci-dessus à intervalle régulier (toutes les nuits à 2h du matin).
sudo -e /etc/systemd/system/prosody-up.timer
Copier et sauvegarder :
[Unit]
Description=Prosody Modules Updater
After=network-online.target
Wants=network-online.target prosody.service
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
Pour finir, il suffit de recharger les services de systemd
(par mesure de sécurité), activer le timer
et lancer le service
.
sudo systemctl daemon-reload
sudo systemctl enable prosody-up.timer
sudo systemctl start prosody-up.service
sudo systemctl status prosody-up.service -l