Errance fediversienne : passer de misskey à mastodon

Pourquoi ??

Je n'ai plus de facebook ni de twitter depuis belle lurette, jamais eu X ni insta, et ceci grâce à Framasoft et son instance mastodon “Framapiaf”. Puis j'ai suivi le mouvement de deframasoftisation en montant ma propre instance Misskey il y a 4 ans (à 5 jours près).

Après ces quelques années de présence sur le fedivers grâce à ce serveur de microblogging, mon bilan est le suivant : * trop de gadgets pour l'utilisation que j'en ai, * un bug à la connexion m'oblige à ouvrir l'outil de developpement du navigateur pour changer le “disabled” sur le bouton, * le “Drive” intégré ne fonctionne plus : je ne peux plus uploader des fichiers, * l'erreur du Drive est différente selon l'origine de l'upload (client web ou android) ! * la doc et les tickets github n'aide pas, * le maintien du dépôt Yunohost n'est pas assuré (et je n'ai pas le temps ni les compétences de prendre des initiatives à ce propos).

J'ai donc sauté le pas, installé Mastodon sur mon serveur Yunohost, et migré mes abonnements/abonné⋅es sur cette nouvelle instance!

Parlons technique...

Première étape : récupérer mes abonnements

Autant du côté de misskey que mastodon, il est dit que la migration est supportée, et c'est documenté. Tant mieux ! Et ça parait simple : un système d'alias sur les 2 instances permet de récupérer automatiquement les abonnée⋅es. Par contre, pour les abonnements, ça doit se faire manuellement : export côté misskey, import côté mastodon.

Problème : le CSV créé au moment de l'export est forcément dépose sur le Drive ! Oui, celui-là même qui ne marche plus ! Il a donc fallu que je trifouille dans la base de donnée de Misskey.

  1. connexion à la BDD misskey :
    • chercher les infos de base de donnée dans var/www/misskey/.config/default.yml. On y récupère un password, un misskey user et un misskey db
    • dans le terminal : PGPASSWORD='<password>' psql -h localhost -p 5432 -U <misskey user> <misskey db>
    • ce qui ouvre un prompt postgresql à partir duquel on peut executer des requêtes
  2. Requêtes : select id,username from "user" where host IS NULL; permet de récupérer l'id de l'utilisateur misskey à migrer. select "user".username,following."followeeHost" from "user",following where "user".id = following."followeeId" and following."followerId" = '<id à migrer>'; Ceci affichera l'ensemble des abonnements sous la forme "nom", "serveur". Pour enregistrer le résultat de cette requête dans un fichier, il faut l'orner de la commande \\copy(...) to fichier.csv with csv header : \\copy (select "user".username,following."followeeHost" from "user",following where "user".id = following."followeeId" and following."followerId" = '<id à migrer>';) to /…/following.csv with csv header
  3. Récupérer le csv localement scp -P <port> …@<serveur>:/…/misskey_following.csv following.csv
  4. Formater le csv pour mastodon D’apres un export sur un vieux compte mastodon, l'en-tête du CSV doit ressembler à ça : Account address, Show boosts, Notify on new posts, Languages, avec
    • Account address : username@followeeHost (construit à partir des deux colonnes du csv extrait de la bdd misskey)
    • Show boosts : true,
    • Notify on new posts : false,
    • Languages : vide.

Ce qui peut se faire en 2 sed (mais il y a certainement plus élégant) :

sed -i 's/,/@/g' misskey_following.csv
sed -i 's/$/,true,false,/g' misskey_following.csv

J'ai donc un fichier qui contient mes abonnements misskey comme si je l'avais exporté depuis mon profil.

Deuxième étape : configurer les alias

Côté mastodon pas de soucis. Il suffit de naviguer dans les paramètres du profil. Côté misskey, j'ai une erreur : “cannot migrate root account“. Et effectivement, le seul compte existant est “root” au sens de misskey. J'ai suivi ce post : https://korhonen.cc/posts/migrate_misskey_root_account/, et surtout le commentaire qui apporte une mise à jour fort utile : dans la base de donnée misskey, il suffit d'executer la commande suivante :

UPDATE meta SET "rootUserId" = '<l'id d'un autre utilisateur>';

Il faudra peut-être créer un autre utilisateur pour l'occasion. C'était déjà le cas chez moi, pour des tests, donc je l'ai mis en root pour “libérer” le compte à migrer.

Et voilà ! J'ai pu alors définir l'alias vers mastodon dans misskey (rappel, l'inverse avait été fait de l'autre côté aussi ! Et oui, ça veut dire que l'instance mastodon était installée avant tout se bazar).

Final

Import du CSV des abonnements dans mastodon, constatation que les abonné⋅es se réabonnent automatiquement – sauf pour les comptes avec autorisation : il faut que j'attende que celleux-là me ré-acceptent !