J’ai eu un problème similaire avec une autre application (sharkey) récemment. Par chance, l’appli pouvait être restaurée malgré le bug et j’ai pu changer de version de nodeJS dans le fichier .service. J’ai bêtement choisi une version présente dans le dossier /opt/node_n/n/versions/node/
Je ne sais pas si il est possible d’éditer un fichier dans le backup pour régler ce soucis ou si il y a un autre endroit où forcer l’usage d’une autre version de nodeJS.
J’avais encore des versions présentes dans le dossiers /opt/node_n/n/versions/node, du coup, je sais pas trop comment régler le soucis si le dossier est complètement vide. Désolé.
Alors pour info, j’ai essayé quelque chose de non conventionnel.
J’ai upgrade avec la testing branch, comme j’ai vu qu’il y avait des correctifs sur le script d’installation qui semblait relatif à mon problème.
Et ça a fonctionné. Donc je ne sais pas si c’est bien ou mal… Mais en attendant, j’ai une instance fonctionnelle ^^’
Salut @Sushi
Essaie de voir si tu as encore un répertoire peertube dans /var/www/. Souvent c’est ce qui bloque la réinstallation. Tu peux le renommer dans un premier temps puis le supprimer une fois la nouvelle installation effectuée.
Pour node, en général, l’app installe la version dont elle a besoin. En cas de problème, changer la version dans le fichier de service comme décrit par @KodeIn suffit.
Il me semble que les données (vidéos, etc) sont plutôt stockées dans /home/yunohost.app/peertube/
Ceci dit, ça n’explique pas pourquoi yarn config set semble mal interprétée: que renvoient which yarn et yarn -v ?
Plus loin, le service systemd est récupéré de l’extraction de l’archive pour être placé à l’emplacement voulu, sans transformation (le templating ne s’applique pas):
On voit plus loin qu’au moment du redémarrage, le service systemd cherche à accéder à la version 22.18.0 de nodejs, qui était celle installée au moment de la sauvegarde (comme dit plus tôt, le service est restauré tel quel). Pas de bol, elle n’est plus disponible (on a installé la version 22.19.0):
2025-09-11 22:41:48,125: DEBUG - + journalctl --quiet --no-hostname --no-pager --lines=20 --unit=peertube
2025-09-11 22:41:49,974: WARNING - Sep 11 22:40:48 systemd[1]: peertube.service: Failed with result 'exit-code'.
2025-09-11 22:41:49,975: WARNING - Sep 11 22:40:48 systemd[1]: peertube.service: Scheduled restart job, restart counter is at 3.
2025-09-11 22:41:49,976: WARNING - Sep 11 22:40:48 systemd[1]: Stopped peertube.service - PeerTube: video streaming platform.
2025-09-11 22:41:49,977: WARNING - Sep 11 22:40:48 systemd[1]: Started peertube.service - PeerTube: video streaming platform.
2025-09-11 22:41:49,978: WARNING - Sep 11 22:40:48 (node)[82779]: peertube.service: Failed to locate executable /opt/node_n/n/versions/node/22.18.0/bin/node: No such file or directory
2025-09-11 22:41:49,979: WARNING - Sep 11 22:40:48 (node)[82779]: peertube.service: Failed at step EXEC spawning /opt/node_n/n/versions/node/22.18.0/bin/node: No such file or directory
Cause possible
Je pense avoir une petite idée de ce qui survient. Durant l’étape de restoration, il semble[1] que Yunohost réapplique l’installation des dépendances en s’appuyant sur le manifest :
Le problème, c’est qu’il peut choisir pour une ressource comme NodeJS une version différente de celle attendue par la backup (le manifeste indique comme contrainte d’avoir NodeJS en version 22, peu importe la mineure ou la patch)
Je m’arrête là sur l’analyse. Si elle est bonne, je pense avoir une solution de contournement et des pistes de solution qu’on peut discuter.
J’insiste sur le semble. Pour étayer mon point, il faudrait que je regarde exactement le détail des opérations effectuées. ↩︎
Et que renvoie sudo -u peertube env PATH=/opt/node_n/n/versions/node/22.19.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin which yarn && yarn -v ?
@Sushi@otm33 Vous êtes certain·es de vouloir réinstaller PeerTube? Vous aurez peut-être toujours les vidéos mais ça reste là (sans la base de données, il y aura une perte des comptes des utilisateur·rices, des fédérations, les abonnements, le nombre de vue, etc. et les vidéos devront être réimportées).
J’attendrais plutôt de trouver une solution pour restaurer proprement la backup si elle existe toujours.
Je peux attendre en effet avant de réinstaller. Et si je peux aider / beta-tester je suis dispo !
Idéalement j’aimerai juste ne rien perdre
Par contre je pense que c’est important de retirer, si ce n’est pas déjà le cas, la dernière mise à jour pour éviter à d’autres utilisateurs d’avoir les mêmes problèmes.
Mon premier conseil serait de conserver une copie de la backup avant l’upgrade qui a échoué. En particulier s’il n’y a pas de sauvegardes régulières (genre avec borg ou restic) qui soit faite avec une bonne rétention.
Il est possible de lister et de télécharger la sauvegarde par le biais de l’interface d’administration de Yunohost :
La sauvegarde devrait s’appeler peertube-pre-upgrade1 ou peertube-pre-upgrade2
La solution de contournement
Cette solution de contournement n’a pas été testée. Je veux bien des retours sur la réussite ou non de cette procédure.
Cette solution s’applique si, comme pour @parleur, la restauration échoue avec cette log (où XX et YY sont des sous-versions de nodejs) :
peertube.service: Failed at step EXEC spawning /opt/node_n/n/versions/node/22.XX.YY/bin/node: No such file or directory
Vous pouvez vérifier avoir ce genre d’erreur dans les logs pendant votre précédente tentative de restauration (directement après la tentative de mise à jour) ou en tentant une restauration de l’archive.
Si c’est bien l’erreur, je pense qu’une solution de contournement consiste à installer avant la restauration la version attendue de nodejs par la backup.
Pour ce faire, il est possible d’extraire la version en utilisant cette commande (qui va extraire la valeur de nodejs_version des settings depuis l’archive)
tar -xOf /home/yunohost.backup/archives/peertube-pre-upgrade*.tar apps/peertube/settings/settings.yml | grep -Po 'nodejs_version: \K.*'
Le résultat de cette commande devrait être la version de nodejs (exemple : 22.18.0).
Avec ce résultat, on peut pré-installer la version de nodejs (remplacer VERSION par la version obtenue plus tôt) :
N_PREFIX=/opt/node_n/ /usr/share/yunohost/helpers.v2.1.d/vendor/n/n install VERSION
Si tout va bien, une tentative de restauration devrait fonctionner (remplacer X par 1 ou par 2 en fonction du nom de votre sauvegarde)