Impossible de restaurer une sauvegarde de Peertube

What type of hardware are you using: Other(?)
What YunoHost version are you running: 12.1.22
What app is this about: Yunohost

Describe your issue

Cet après-midi, j’ai tenté de mettre à jour vers la nouvelle version de Peertube.

L’installation a échoué. Bon, c’est pas grave.

Ce qui m’embête plus, c’est que la restauration de la sauvegarde ne fonctionne pas non plus, et que je ne sais où donner de la tête.

Les logs sont joints ci-dessous.

Share relevant logs or error messages

https://paste.yunohost.org/raw/qoqakulita

Bonjour, j’ai aussi eu le même problème dans les mêmes conditions, avec un yunohost à jour.

Impossible de restaurer ou d’installer de nouveau depuis le catalogue d’apps.

https://paste.yunohost.org/raw/anexuwecom

1 Like

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.

1 Like

Bonjour,

J’ai exactement le même problème avec un service que je ne peux lancer.

mon problème est ici, c’est aussi en lien avec node.

Je n’ai d’ailleurs rien dans le dossier

/opt/node_n/n/versions/node

J’ai essayé de réinstaller nodejs. Rien à y faire.

1 Like

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é.

1 Like

J’ai trouvé ça.. peut-être que ça serait la solution :slight_smile:

1 Like

C’est moi qui avait déjà ouvert ce ticket. :smiley:

C’est pas le même problème, cette fois.

1 Like

Ah okay !

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 ^^’

Toujours impossible d’avoir PeerTube sur mon instance 12.1.24
Ni en stable, ni en testing, ni en upgrade, ni en reinstall, ni en webGUI, ni en cli.

https://paste.yunohost.org/raw/ivuhezunar

Hello !

Alors je suis noobie, mais j’avais node 20.xxxx tu es avec la 22. Tu es sûre que c’est compatible ?
Faut voir si le probleme ne viendrais pas de là !

Tu as une erreur : peertube ERROR: [Errno 21] Is a directory: ‘config’

j’ai trouvé ça… [Errno 21] Is a directory: '/config/config.yml' (other solutions haven't worked) · blakeblackshear/frigate · Discussion #3310 · GitHub

Voilà l’aide que je peux fournir ! Il faut fouiller l’internet maintenant !

la bise !

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.

Je n’ai pas de dossier perturbe dans /var/www/
Cela veut-il dire que j’ai tout perdu ? :anxious_face_with_sweat:

J’ai juste essayé de faire la mise a jour stable proposée à la base…

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 ?

j’ai effectivement encore un dossier /home/yunohost.app/peertube/ mais je ne saurai y trouver mes videos.

Sinon pour Yarn :

sushi@miniyuno:~$ which yarn
sushi@miniyuno:~$ yarn -v
-bash: yarn: command not found
sushi@miniyuno:~$

Je crois que je comprends le souci, et je pense que ça vient de Yunohost.

Je m’attarde sur les causes ici en m’appuyant sur les logs de @Parleur : https://paste.yunohost.org/raw/qoqakulita.

Étude des logs

  1. On voit que l’étape de restoration va installer Node en version 22.19.0:
2025-09-11 22:40:19,405: DEBUG - + ynh_nodejs_install
2025-09-11 22:40:19,405: DEBUG - + [[ -n 22 ]]
2025-09-11 22:40:19,406: DEBUG - + mkdir --parents /opt/node_n
2025-09-11 22:40:19,473: DEBUG - + [[ amd64 == \a\r\m\6\4 ]]
2025-09-11 22:40:19,473: DEBUG - + /usr/share/yunohost/helpers.v2.1.d/vendor/n/n install 22
2025-09-11 22:40:19,890: DEBUG -   installing : node-v22.19.0
2025-09-11 22:40:20,105: DEBUG -        mkdir : /opt/node_n/n/versions/node/22.19.0
2025-09-11 22:40:20,123: DEBUG -        fetch : https://nodejs.org/dist/v22.19.0/node-v22.19.0-linux-x64.tar.xz
2025-09-11 22:40:25,477: DEBUG -      copying : node/22.19.0
2025-09-11 22:40:45,129: DEBUG -    installed : v22.19.0 to /opt/node_n/bin/node
2025-09-11 22:40:46,136: DEBUG -       active : v18.20.4 at /usr/bin/node
  1. 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):
2025-09-11 22:40:46,387: DEBUG - + ynh_restore /etc/systemd/system/peertube.service
[...]
2025-09-11 22:40:46,389: DEBUG - + mkdir --parents /etc/systemd/system
2025-09-11 22:40:46,391: DEBUG - + mountpoint --quiet /home/yunohost.backup/tmp/peertube-pre-upgrade2
2025-09-11 22:40:46,393: DEBUG - + mv /home/yunohost.backup/tmp/peertube-pre-upgrade2/apps/peertube/backup/etc/systemd/system/peertube.service /etc/systemd/system/peertube.service
2025-09-11 22:40:46,395: DEBUG - + _ynh_apply_default_permissions /etc/systemd/system/peertube.service
  1. 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.


  1. 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 ?

La commande est sur une seule ligne ? si c’est le cas alors :

sushi@miniyuno:~/media$ 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
sudo: unknown user peertube
sudo: error initializing audit plugin sudoers_audit
sushi@miniyuno:~/media$

@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 :slightly_smiling_face:

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.

Solution de contournement

Récupération de la sauvegarde par sécurité

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)

yunohost backup restore peertube-pre-upgradeX
1 Like