Impossible de restaurer une sauvegarde de Mastodon

What app is this about, and its version: mastodon 4.4.8~ynh1
What YunoHost version are you running: 12.1.35
What type of hardware are you using: Raspberry Pi 3, 4+

Describe your issue

Français

Bonjour,
Lors d’une mise à jour, l’installation à eu un problème (log) et la restauration de la sauvegarde n’a pas marché.
Depuis, mes tentatives de restauration de la sauvegarde ont toute échouées.

J’ai essayé la solution de fflorent pour Peertube avec la version de node.js 22.21.0

N_PREFIX=/opt/node_n/ /usr/share/yunohost/helpers.v2.1.d/vendor/n/n install 22.21.0

celle-ci c’est bien installé:

ls /opt/node_n/n/versions/node/22.21.0/bin/node
/opt/node_n/n/versions/node/22.21.0/bin/node

mais la restauration de la sauvegarde lance l’installation de la version 22 qui installe la dernière version 22.21.1

Voir le log complet

Mes pistes à explorer:

  • empêcher la suppression de la bonne version de node.js
  • modifier la version de node.js est indiqué dans la sauvegarde

English

Hello,
During an update, the installation encountered a problem (log) and restoring the backup did not work.
Since then, all my attempts to restore the backup have failed.

I tried the solution from fflorent for Peertube with node.js version 22.21.0

N_PREFIX=/opt/node_n/ /usr/share/yunohost/helpers.v2.1.d/vendor/n/n install 22.21.0

This one installed correctly:

ls /opt/node_n/n/versions/node/22.21.0/bin/node
/opt/node_n/n/versions/node/22.21.0/bin/node

but restoring the backup launches the installation of version 22, which installs the latest version 22.21.1.

See the full log

My ideas to explore:

  • prevent the correct version of node.js from being deleted
  • change the version of node.js specified in the backup

Share relevant logs or error messages

2025-11-18 02:37:49,386: DEBUG - + /usr/share/yunohost/helpers.v2.1.d/vendor/n/n install 22 --arch=arm64
2025-11-18 02:37:49,680: DEBUG - installing : node-v22.21.1
2025-11-18 02:37:50,032: DEBUG - mkdir : /opt/node_n/n/versions/node/22.21.1
2025-11-18 02:37:50,043: DEBUG - fetch : https://nodejs.org/dist/v22.21.1/node-v22.21.1-linux-arm64.tar.xz
2025-11-18 02:37:55,647: DEBUG - copying : node/22.21.1
2025-11-18 02:38:01,435: DEBUG - installed : v22.21.1 to /opt/node_n/bin/node
2025-11-18 02:38:02,129: DEBUG - active : v22.21.0 at /opt/node_n/n/versions/node/22.21.0/bin/node
2025-11-18 02:38:02,131: DEBUG - + ynh_exit_properly
[…]
2025-11-18 03:32:23,723: WARNING - Nov 18 03:27:23 systemd[1]: Started mastodon-streaming.service - mastodon-streaming on port 4000.
2025-11-18 03:32:23,724: WARNING - Nov 18 03:27:23 (node)[652976]: mastodon-streaming.service: Failed to locate executable /opt/node_n/n/versions/node/22.21.0/bin/node: No such file or directory
2025-11-18 03:32:23,725: WARNING - Nov 18 03:27:23 (node)[652976]: mastodon-streaming.service: Failed at step EXEC spawning /opt/node_n/n/versions/node/22.21.0/bin/node: No such file or directory
2025-11-18 03:32:23,726: WARNING - Nov 18 03:27:23 systemd[1]: mastodon-streaming.service: Main process exited, code=exited, status=203/EXEC

Bonjour @Europrimus

Oui, le problème n’est pas rare. La restauration installe la dernière version mineure disponible et parfois le fichier de service réclame une version antérieure. Il me semble qu’un patch existe mais pas sûr (et si oui, il y a donc un bug).
Une des solutions transitoires est de modifier directement le fichier service de l’archive (voir ici). Ou bien d’ajouter une condition au script de restauration pour réinstaller la version de node appelée dans le fichier de service de l’archive.

Bonsoir,
merci pour ton aide.

Voilà ce que j’ai trouvé dans mon archive:
Dans /apps/mastodon/settings/settings.yml

nodejs_version: 22.21.0

Dans /apps/mastodon/settings/mastodon-streaming.service

Environment="NODE_ENV=production"
Environment="PORT=__PORT_STREAM__"
Environment="STREAMING_CLUSTER_NUM=1"
Environment="PATH=__PATH_WITH_NODEJS__"
ExecStart=__NODEJS_DIR__/node ./streaming

Il y a d’autre service, mais ils ne font pas de référence à node.js.

Dans /apps/mastodon/settings/manifest.toml

[resources.nodejs]
version = "22"

Je l’ai changé en version = "22.21.0"

Je suis entrain de copier ma sauvegarde modifié vers mon RaspberryPi et je lance la restauration…

Attention, tu te trompes de fichier : ce n’est pas /apps/mastodon/settings/mastodon-streaming.service qui doit être modifié mais apps/mastodon/backup/etc/systemd/system/peertube.service
Idem pour apps/mastodon/settings/manifest.toml : il faut le laisser en l’état et actualiser apps/mastodon/settings/settings.yml