Nextcloud c'est bien. Mais concernant les fichiers, c'est resté, malgré des
améliorations, assez mou à répercuter les changements sur un dossier de fichers
synchronisés.
Ce tuto montre la mise en œuvre (relativement simple) de
notify-push sur un serveur
nextcloud, qui rend les détections de changements instantannées et réduit la
charge serveur.
NB : Ce tuto n'est intéressant que pour un serveur avec des utilisateur·ices faisant usage de Nextcloud Desktop.
Un peu de contexte…
J'avais entendu parler il y a un an d'un protocole Nextcloud sync v2 annoncé comme révolutionnaire et promis avec la version 23 de Nextcloud. J'avais hâte !
Niveau marketing le terme « sync v2 » a semble-t-il été délaissé. Mais cette « révolution » est arrivée il y a un an sous un autre nom : HPB / High-Performance back-end / notify-push (oui oui, on s'y perd dans les termes). Hélas, elle est optionelle et désactivée par défaut !
Heureusement ce composant facultatif, nommé notify_push est simple à installer.
Comment ça marche ?
L'idée générale est d'installer un programme serveur complémentaire, dédié à la
synchronisation de fichiers. Il établira des connexions permanentes
(websocket) avec les clients de synchronisation (interface web ou Nextcloud
desktop). Il faudra ensuite utilise un client suffisament récent pour en
profiter.
Installation côté serveur
Pour ma part, j'utilise le serveur Nextcloud en version 22 ; ça n'est pas la
dernière, c'est en revanche la dernière packagée pour
YunoHost à cette date. La
procédure devrait néanmoins être la même sur une installation n'utilisant pas
YunoHost.
Via l'interface web Nextcloud…
Sur l'interface web d'administration du serveur NextCloud, chercher
l'application nommée Client Push et l'installer.
… Puis via la ligne de commande du serveur (en SSH)
Lancer la commande occ notify_push:setup
(pour être plus précis, pour ma part, la commande complète sur mon installation yunohost est :
su -s /bin/bash nextcloud
cd /var/www/nextcloud
php7.3 ./occ notify_push:setup
Puis se laisser guider par l'assistant. En gros les étapes ont été pour moi (dans un second terminal SSH afin de garder l'assistant ouvert) :
- Copier coller le contenu proposé dans un fichier /etc/systemd/system/notify_push.service ;
- activer ce service
sudo systemctl enable notify_push
- insérer la configuration nginx (pour ma part ça a consisté en créer un nouveau fichier /etc/nginx/conf.d/nuage.example.net.d/00-nextcloud-notify-push.conf avec le contenu proposé par l'assistant ;
- relancer nginx
sudo systemctl reload nginx
Et c'est tout :-).
Vérifier
On peut vérifier que c'est bien actif, tout simplement dans le navigateur:
- Activer les Outils de développement web (touche F12 sous Chrome ou Firefox) ;
- dans le panneau qui s'ouvre, choisir l'onglet ;
- dans le menu en-dessous, sélectionnez uniquement WS) ;
- rafraîchir la page (par ex avec F5) ;
- si tout va bien vous devriez voir une ligne avec
101
dans la colone « État »
- glop :
- pas glop :
Si pas glop, vérifier les étape d'avant, et/ou tenter sans
l'assistant. Sinon, il
est possible d'obtenir de l'aide sur le forum
nextcloud (anglophone).
Sinon, bravo 🥳.
Utiliser (avec un client)
Aucune configuration du client n'est nécessaire, il faut juste s'assurer d'utiliser une version de Nextcloud Desktop supérieure à la version 3.2.
Pour ma part, j'ai du passer à la version .AppImage de Nextcloud Desktop proposée depuis le site officiel, et désinstaller celle de ma distribution (Debian), trop ancienne (3.1). Ça fonctionne très bien ♥
Ouverture : interrogation
L'interface web utilise bien un websocket pour être notifié les changements, mais ne semble pas réagir en conséquence (ex : un fichier créé par quelqu'un d'autre n'apparaît pas en live). C'est surprenant 🤔. Une idée ?
ANNEXE : concernant l'installation avec YunoHost :
- L'ajout décrit dans ce tuto ne devrait pas entrer en conflit avec les mises à jour de Nextcloud ; à condition de bien créer un fichier distinct pour le bout de configuration nginx notify_push, comme je le propose ;
- le support de notify_push est envisagé par les mainteneurs de l'app nextcloud pour YunoHost, mais pour l'instant, non.
commentaires