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