Blog de dada

DevOps, bidouilleur et routard plein de logiciels libres

Mastodon

Masto.host : mettre en place son instance Mastodon facilement

Rédigé par dada / 20 août 2018 / 7 commentaires



Quand mastodon.social reste le point d'accès le plus connu de la Fédiverse, il est bon de rappeler que la nature profonde du fonctionnement de ce réseau social est d'être décentralisé.

Mastodon a ceci de génial qu'il autorise quiconque à créer son bout de réseau.

À chaque vague de nouveaux, le problème est le même : les gens se font majoritairement un compte sur Mastodon.social et, à chaque fois, certains et certaines souhaiteraient que son administrateur coupe les inscriptions et redirige le flux vers d'autres instances. Alors oui, comme le signale le message d'Eugen ci-dessous, il est très difficile de couper les inscriptions de l'instance la plus connue sans gêner l'arrivée des nouveaux.

Traduction rapide de la partie intéressante : Honnêtement, si c'était si simple, je fermerais définitivement les inscriptions. Le souci, c'est que quand je les ferme, les gens ne vont pas s'inscrire ailleurs, ils partent.

La solution !

Pour pallier à ce problème, je suis tombé sur une initiative géniale d'un portugais : masto.host !

Ce service vous permet de monter automatiquement une instance Mastodon moyennant quelques euros par mois. Les options vous permettent de choisir une configuration pouvant accueillir de 100 à un nombre monstrueux d'utilisateurs.

Il n'y a rien de technique dans la procédure de création. C'est vraiment clé en main et ça vous permet :
  • D'avoir votre instance à vous
  • D'ajuster sa taille en fonction de sa fréquentation
  • De pouvoir la modérer comme bon vous semble
  • De ne pas avoir à vous soucier de l'état du serveur qui la fait tourner
  • De profiter de la dernière version stable disponible
Le tout étant hébergé chez OVH, en Europe !

Je suis vraiment admiratif du travail réalisé par Hugo. Malheureusement, contrairement à mes habitudes, je vous parle d'un service que je n'ai pas testé moi-même. Et même que je ne suis pas payé pour lui faire de la pub. Cependant, d'après le compte officiel de Masto.host, il semblerait que ce soit un gars vraiment sérieux et disponible. Enfin, ces derniers temps, il croule sous les demandes : tant mieux !

Bref, si l'envie vous prend de monter une instance Mastodon à travers son service, n'hésitez pas à en parler et à faire des retours !

Un Exporter Prometheus pour Mastodon

Rédigé par dada / 27 juillet 2018 / Aucun commentaire


English ? Run to my Gitlab. Comments are in english.


Mon dernier billet ne laissait pas trop de doute sur mes activités du moment : du python, Prometheus et l'API de Mastodon sont bien les signes avant-coureurs de l'arrivée d'un Exporter ! Dans cette liste, j'ai pris le temps d'ajouter un peu de Grafana et du Docker, histoire de bien faire les choses, avant de vous ouvrir l'accès à mon dépôt Git.

Le poids des mots, le choc des photos

Pour reprendre le slogan de Paris-Match, voici une capture d'écran de la bête dans Grafana :

Ce que vous voyez ci-dessus est un exemple de dashboard Grafana. Un exemple. Vous pouvez faire bien mieux, j'en suis certain, et le partager.

Ce que l'Exporter permet de récupérer

  • Les comptes actifs
  • Le nombre d'instances connues
  • Le nombre total de comptes sur l'instance
  • Le nombre total de toots
  • Le nombre d'inscriptions pour la semaine courante
  • Le nombre de toots par semaine
Alors, oui, ce n'est pas grand chose, mais ça nous permet de récupérer des statistiques publiques et d'en faire des beaux graphiques avec la stack la plus chouette du moment ! J'ai enfin viré Munin :-)

Utilisation sans Docker

Clonez les sources où bon vous semble :
git clone http://git.dadall.info/prometheus/mastodon.git
Installez les dépendances :
pip3 install -r requirements.txt
Lancez la bête en ayant bien défini l'URL de votre instance dans les sources :
python3 instance_exporter.py

Utilisation avec Docker

Il va vous falloir créer l'image Docker :
docker build -t mastodon-exporter .
Et vous pourrez lancer un conteneur en ajoutant l'URL de votre instance en paramètre :
docker run -d -e MASTODON_HOST="https://instance.url/" -p 9410:9410 mastodon-exporter
Vous trouverez un exemple de dashbord pour Grafana, histoire de tout mettre en couleur, dans le dépôt.

Vous pouvez maintenant suivre l'activité de votre instance : foncez mettre ça en place avant le prochain afflux d'utilisateurs pour voir les courbes réagir : les données qui transitent sur Mastodon sont tellement nombreuses qu'il faut vraiment qu'il y ait une vague de nouveaux pour faire visiblement bouger les lignes !

Voilà

Si vous avez des retours, n'hésitez pas à passer par les commentaires ou Mastodon, à lâcher des pouces bleus et partager la vidéo.

Des bisous,

Comment prendre un peu de Python pour faire un Exporter Prometheus

Rédigé par dada / 20 juillet 2018 / 4 commentaires



Faire un Exporter Prometheus, c'était un défi qui traînait dans ma longue-liste-des-choses-à-faire depuis longtemps. J'ai enfin mis les mains dedans. C'est moins terrifiant qu'on le croit, à condition de vouloir faire des choses simples. Voici donc quelques lignes pour vous expliquer comment s'en sortir.

Du Python 3

Il est possible de faire des Exporters dans un nombre dingue de langages. Pour des questions de curiosité et d'envie, j'ai choisi de le faire en Python, version 3. En plus, Prometheus fournit une bibliothèque qui va bien.

Une API

Un Exporter est capable d'interroger, entre autre, des API. Pour l'exemple et parce ce que j'avais envie de mieux connaître mon instance Mastodon, c'est l'API de l'alternative à Twitter que vous allez croiser ci-dessous.

La logique globale

Un Exporter, pour faire très simple, c'est un bout de code coincé dans une boucle infinie.
Oui, très simple.
Il va récupérer de l'information et la transmettre à Prometheus, puis récupérer de l'information et la transmettre à Prometheus, puis récupérer de l'information...

Exemple

Ici, on va pondre un bout de code qui va aller récupérer le nombre de comptes que je follow sur Mastodon :
r = requests.get("https://diaspodon.fr/api/v1/accounts/1")
data = json.loads(r.content.decode())
metric = Metric('following_count', 'Number of following account', 'gauge')
metric.add_sample('following_count', value=data["following_count"], labels={})
yield metric
Ce qu'il faut comprendre :
- La variable r contient le retour de l'appel à l'API Mastodon.
- La variable data contient en utilisable le JSON contenu dans r.
- La variable metric contient les données exploitables par Prometheus.

C'est la ligne qui est vraiment cruciale :
metric.add_sample('following_count', value=data["following_count"], labels={})
Les choses importantes :

- following_count sera le nom que vous pourrez retrouver dans Prometheus pour afficher la donnée
- value sera la valeur retournée quand vous appelez following_count

Lancer la boucle infinie

On va coincer ce bout de code dans une boucle :
class JsonCollector(object):
    def __init__(self):
        pass

    def collect(self):

        url = mastodon_host + 'api/v1/accounts/1'
        r = requests.get(url)
        data = json.loads(r.content.decode())
        metric = Metric('following_count', 'Number of following account', 'gauge')
        metric.add_sample('following_count', value=data["following_count"], labels={})
        yield metric

if __name__ == "__main__":
    start_http_server(9400)
    REGISTRY.register(JsonCollector())
    while True: time.sleep(1)
Et c'est tout quant à la création d'un Exporter ! Retrouvez le lien vers le code complet en fin de ce billet. Ou . Pour plus de visibilité, j'ai volontairement caché les modules à inclure.

Comment valider que ça fonctionne ?

Un curl et tout va :
root@server ~ # curl localhost:9400
# HELP following_count Number of following account
# TYPE following_count gauge
following_count 552.0

Brancher l'exporter à Prometheus

Tout va se faire, comme d'habitude, dans le prometheus.yml.

  - job_name: 'mastodon'
    static_configs:
      - targets: ['localhost:9400']
On ajoute le job, la target avec son port et on reload la bête.

Notez que j'ai utilisé le port 9400 dans mon exemple. C'est un choix personnel : vous pouvez le changer s'il est déjà utilisé par un de vos services.

Enfin, si tout s'est bien passé, vous devriez pouvoir appeler la variable following_count dans Prometheus !


Vous trouverez un snippet avec l'intégralité du code par ici.

Je retourne à mon code. Vous vous doutez bien qu'avez tout ça, il y a moyen de faire un bel Exporter complet pour Mastodon !

Des bisous,

Et si on parlait Fédiverse ?

Rédigé par dada / 14 juillet 2018 / 11 commentaires


De mon point de vue, ces derniers mois est apparue une dynamique incroyable dans le monde libriste. Le point de départ de cette dynamique ? Mastodon, le Twitter dont on peut se servir les yeux fermés. Le détail qui fait que ça tient dans la durée ? La langue utilisée : ActivityPub.

Au départ, nous n'avions que Mastodon, rejoint ensuite par Peertube, puis PixelfFed, puis Plume et enfin Prismo. Ces noms ne vous disent rien ? C'est normal, tout est encore en cours de développement et seuls les courageux font tourner ces applications. Patience.

Pourquoi je trouve que c'est une dynamique incroyable ? Quand Facebook parle le Facebook et Twitter le Twitter, les applications dont je vous parle se sont mises d'accord pour parler l'ActivityPub. Elles ont ceci de génial qu'elles parlent le même langage.

Une vidéo vous plaît ? Remerciez son créateur depuis votre Mastodon. Le résultat ?

Sur Framatube :


Sur Mindpalace :


Ce qu'il faut comprendre ?

- Les deux captures d'écran proviennent de deux instances Peertube différentes (Framatube / Mindepalace)
- Les commentaires proviennent de 3 instances Mastodon différentes ( Framapiaf / Mamot / Diaspodon )
- Ces commentaires sont visibles sur ces 5 bouts d'internet différents !

Et ça, c'est tout simplement incroyable. Le pire, c'est qu'il s'agit d'un exemple limité. Seulement 5 bouts d'Internet entrent en jeu. Seulement.

D'ici quelques jours, Pixelfed sortira de son autarcie pour rejoindre la Fédiverse. Même s'il est actuellement possible de s'en servir (depuis mon instance, par exemple, ou celle de Valère), l'application n'est pas bavarde sur la Fédiverse.
Lorsqu'un de vos amis postera une photo sur cet Instagram honnête, vous en serez averti sur Mastodon et vous pourrez interagir avec, toujours parce que ces deux choses parlent l'ActivityPub.

Que dire de Plume ? Ce moteur de blog vous permettra de partagez vos écrits sur la Fédiverse, de citer directement des gens dans vos billets et de laisser les gens publier des commentaires depuis Mastodon. Le tout en toute transparence.

Prismo devrait aussi entrer dans ce grand capharnaüm : un Reddit dans la Fédiverse ! Vous voulez partager mon article (parce qu'il est franchement génial, n'est-ce pas ?) sur Prismo, les utilisateurs de Mastodon seront au courant et pourrons interagir !

Ce qui se profile devant nous est tout simplement génial.

Partagez vos réseaux !

Rédigé par dada / 08 avril 2018 / 1 commentaire


L'émulation autour de la Fédiverse, Mastodon (mon mien) et PeerTube en tête, nous donne une opportunité qu'il ne faudrait pas rater. En ce dimanche d'avril, je sors mon clavier pour vous rappeler quelques petites choses qui feront du bien à notre joli monde.

Les informations circulent à une vitesse incroyable entre nous : les libristes et les simples utilisateurs. Cela fait un an qu'une grosse partie d'entre nous est allée poser le baluchon de sa vie sociale numérique sur le dos du mammouth. Loin de s'essouffler, le réseau continue d'accueillir de nouveaux utilisateurs. Malgré ce joli constat, il nous faut garder le rythme pour ne pas finir comme mon premier amour : diaspora* (mon mien).

Attention, diaspora* tient toujours la route. Il y a un noyau d'utilisateurs actifs et des nouveaux arrivants qui en font un réseau très intéressant, mais on est loin du nombre d'utilisateurs actifs de Mastodon. J'ajoute aussi que l'origine de la source du semi-échec de diaspora* est difficile à déterminer : le mauvais timing ? Une équipe qui n'a malheureusement pas tenue la charge ? La communauté qui n'a pas réussi à s'organiser ? Bref, compliqué.

Pour continuer le mouvement, pour faire venir toujours plus de gens, je vous propose une hygiène de vie : lorsque vous avez envie de partager quelque chose comme un billet de blog (coucou !), un article de presse, une vidéo, etc, forcez-vous à balancer un lien vers un toot. Nous avons besoin de visibilité. La masse a en tête Facebook, Twitter et Youtube parce que c'est là qu'est le contenu partagé. Le contenu en lui même n'y est pas. Mastodon peut devenir un vecteur important de partage d'information, de culture, si les internautes y passent régulièrement et deviennent familier avec la Fédiverse.

Les utilisateurs déjà dans la place n'hésitent pas à partager des articles de presse ou de blog avec un rapide commentaire. Vous voulez partager cet article avec vos amis ? Envoyez le lien vers le toot ! Les vieux de la vielle diront que c'est une étape inutile pour atteindre le contenu, mais la visibilité qu'il apporte à la Fédiverse est très important.

Utilisateurs assidus de Mastodon ? Partagez ! L’activité y est déjà difficile à suivre, ça défile vraiment dans tous les sens aux heures de pointes, mais c'est insuffisant. Partagez dans tous les domaines. Dire que la majorité de la Fédiverse est composée de libristes, c'est vrai mais on y trouve aussi des photographes, des gens engagés politiquement, des designers, TV5 Monde, Reflets et même des fans de Rugby ! Vous avez des centres d'intérêts ? Faites nous l'honneur de les partager avec nous !
Plus vous serez actifs, plus nous aurons de liens à partager avec l'extérieur de la Fédiverse, plus la Fédiverse sera connue, plus les gens viendront nous rejoindre et plus nous aurons d'actifs, et donc de liens à partager. Une histoire de boule de neige.

Le cas de Peertube est unique : cette beauté commence à être utilisée par des grands comptes : DataGueule, LQDN, Thinkerview et j'en passe.
Ces comptes publient autant sur Youtube que sur PeerTube. C'est à nous de choisir quel lien sera envoyé à nos potos. Simplement, choisissez celui de l'alternative libre. C'est simple, efficace, et ça me permet de rêver du jour où la vidéo sur Peertube aura plus de vue que celle qui traîne sur la plateforme de Google/Alphabet.

En exemple, pour ce qu'il vaut, allez voir mon précédent billet : je partage une vidéo et une citation. Les deux viennent de PeerTube et de Mastodon. Simple.

Tout ce que je raconte ne fera pas venir les grands comptes qui traînent sur Facebook et Twitter pour ne faire que du Personal Branding, comme disent nos amis anglophones. Ne viendrons peut-être jamais non plus les marques qui paient des espaces publicitaires cachés en posts ou tweets. Dommage ? Posez-vous cette question : est-ce vraiment un mal ?

Bref, viendez ! Mon instance Mastodon et mon nœud diaspora* sont ouverts aux inscriptions !

PS : pour les utilisateurs de Twitter et de Mastodon. Faites vous violence et arrêtez de poster de l'oiseau bleu vers le Mammouth : c'est rageant. Faites l'inverse !