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 apps/mastodon/backup/etc/systemd/system/mastodon.service
Idem pour apps/mastodon/settings/manifest.toml : il faut le laisser en l’état et actualiser apps/mastodon/settings/settings.yml

Bonjour,
Alors je peut être pas fait ce qu’il fallait, mais la restauration de la sauvegarde à fonctionné.

Je suppose que ce que j’ai fait bloque mon mastodon avec une ancienne version de node.js, ce qui pourrait introduire un problème de sécurité en l’absence de mise à jours ?

Non, je ne crois pas qu’il y aura de problème.
Tu as indiqué dans le manifeste une version précise à télécharger (22.21.0) qui a été répercutée partout pendant la restauration => ok.
Par défaut, version = “22” est plus large et fait installer la dernière version disponible dans la majeure 22.
Un upgrade remettra la version par défaut du manifeste donc tout rentrera dans l’ordre tout seul (normalement…).

J’ai eu le même problème en faisant la mise à jour de mastodon 4.4.8~ynh1 à 4.5.1~ynh1.

Après la restauration, l’application apparaissait bien dans admin/apps mais le site restait en erreur 500.

Ce qui a résolu le problème semble être d’avoir fait une restauration puis une mise à jour de l’application.

J’ai essayé cette manipulation plusieurs fois sans succès. Et ça s’est mis à fonctionner sans que je comprenne pourquoi. Tant mieux, ça m’évite d’avoir à modifier l’archive avant de la restaurer.

Tu as donc eu une restauration semi-fonctionnelle ? Quand le script de restauration rencontre une erreur, généralement, il supprime l’application.

J’ai fait la mise à jour vers mastodon 4.5.1~ynh1, tous c’est bien passé.
Cette mise à jour à bien mis a jour node.js aussi en version 22.21.1.
merci @otm33 pour ton aide.

Si j’ai bien compris ce qui à conduit au blocage de la restauration de la sauvegarde, c’est la disponibilité d’une mise à jour de node.js.
C’est un problème qui peut ce présenter quand même asses souvent. Surtout si la sauvegarde est ancienne.
En cherchant sur le forum, je suis tombé sur des messages qui évoquais le même problème pour ruby.
Ne faudrait-il pas que le manifest.toml de la sauvegarde corresponde à la version exacte installé ?

Oui, on peut parler de restauration semi-fonctionnelle.
Mastodon était visible parmi les applications côté admin mais pas sur le portail sso.

J’ai eu au nouveau le même problème en faisant la mise à jour de Mastodon 4.5.1~ynh1 à 4.5.2~ynh1. Si mes souvenir sont bons : l’application était en erreur 502.

Solution qui a fonctionné après plusieurs tentatives :

  1. Désinstaller Mastondon
  2. Restaurer la sauvegarde de Mastodon (application en erreur 500)
  3. Mettre à jour l’application

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.