Billets : Une instance Pleroma pour se connecter au Fédivers
Une instance Pleroma pour se connecter au Fédivers
Pour se connecter au service de micro blogging du Fédivers il n'y a pas que Mastodon. Si vous n'avez pas l'envie de rejoindre une instance Mastodon déjà établie, Pleroma en auto-hébergement est une bonne alternative.
J'ai longtemps traîné à rejoindre le Fédivers. Par flemme d'utiliser autre chose que Twitter sur lequel je suis établi depuis 2009.
Mais en analysant ma timeline de Twitter, plusieurs éléments m'ont fait prendre conscience que c'était le moment de franchir le pas :
- Beaucoup d'autopromo
- Tweets systématiquement entrecoupés de "sponsorisé"
- Environ 60% de mes abonné(e)s semblent inactifs (depuis 14 ans il y eut du mouvement)
- Beaucoup me suivent historiquement pour Magento mais je ne communique plus beaucoup sur ce thème
- Un grand nombre de personnes et de comptes que j'apprécie sont sur le Fédivers
- Elon Musk est... bruyant
Auto-hébergement
J'ai hésité entre héberger Mastodon et Pleroma. De ce que j'ai lu, Mastodon est assez lourd. Un article de Lord m'a finalement convaincu de partir sur Pleroma : Pleroma : L'alternative à Mastodon.
Pourquoi auto-héberger ? C'est typiquement le genre d'application que l'on peut facilement poser sur un serveur à la maison.
Je ne vais y accueillir personne d'autre que moi. Une déconnexion n'aura pas beaucoup d'impact, hormis que je ne recevrai pas les nouveaux statuts le temps de la coupure.
J'ai constaté que Mastodon était davantage utilisé pour des grosses instances avec beaucoup de monde, Pleroma pour des petites communautés ou des instances personnelles.
ActivyPub
Avec ActivyPub (le protocole utilisé par le Fédivers) je reçois une requête de type POST dès lors qu'une personne ajoute un nouveau statut.
"POST /inbox HTTP/1.1" 200 5996 "-" "http.rb/5.1.0 (Mastodon/4.0.2; +https://framapiaf.org/)"
"POST /inbox HTTP/1.1" 200 5553 "-" "http.rb/5.1.0 (Mastodon/4.0.2; +https://mamot.fr/)"
C'est donc principalement du Push, si quelqu'un a quelque chose à dire, c'est envoyé à tout le monde par le biais d'une requête HTTP de type POST. L'instance doit être en mesure de stocker le message.
Si mon serveur est injoignable, le message ne sera pas ajouté dans mon "inbox".
La majorité des clients du Fédivers ont un système de "retry", dont la fréquence et le nombre de tentatives peuvent varier selon les instances. Suite à une coupure électrique de 2 heures sur mon installation, j'ai pu récupérer sans problème la totalité des statuts. Mais si le serveur reste trop longtemps injoignable, il finit généralement par être ignoré.
Avec ce système de Push, il n'est pas possible de visionner l'historique des messages des personnes auxquelles je m'abonne. La collecte commence dès lors que ma demande d'abonnement a été transmise.
Sur Pleroma tout est stocké dans une base de données PostgreSQL, qui grossira au rythme des messages reçus. Il existe des systèmes de purge pour effectuer un nettoyage de temps en temps. Un nettoyage manuel est aussi envisageable, par exemple : Purge des données Pleroma (Tetsumaki Blog).
Avec mes 30 abonnements actuels, le fichier dump de la base de données grossit d'environ 25mo tous les 10 jours.
Installation
Il y a 2 façons d'installer Pleroma : compiler depuis la source (nécessite Erlang + Elixir), ou récupérer la version OTP. J'ai choisi d'installer la dernière release OTP, c'est un peu plus simple et rapide. J'ai suivi la documentation officielle, mais en utilisant Apache et non nginx.
Si vous optez pour Apache, plusieurs modules sont nécessaires (mon serveur est sur Debian) :
a2enmod mod_proxy
a2enmod proxy
a2enmod proxy_http
a2enmod proxy_wstunnel
a2enmod rewrite
a2enmod ssl
a2enmod cache
a2enmod cache_disk
Le vhost Apache utilisé comme Proxy :
# /etc/apache2/sites-available/pleroma.example.com-le-ssl.conf
ServerTokens Prod
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName pleroma.example.com
ErrorLog ${APACHE_LOG_DIR}/pleroma-error.log
CustomLog ${APACHE_LOG_DIR}/pleroma-access.log combined
LogLevel warn
SSLCertificateFile /etc/letsencrypt/live/pleroma.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/pleroma.example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
RewriteEngine On
RewriteCond %{HTTP:Connection} Upgrade [NC]
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteRule /(.*) ws://127.0.0.1:4000/$1 [P,L]
ProxyRequests off
ProxyPass / http://127.0.0.1:4000/
ProxyPassReverse / http://127.0.0.1:4000/
ProxyPreserveHost On
</VirtualHost>
</IfModule>
Interface
Je suis resté sur le thème "Pleroma Dark" de l'interface utilisateur par défaut (PleromaFE). L'interface a un petit côté old school que j'apprécie.
Configuration
Il y a quelques configurations que j'ai souhaité modifier :
- Désactiver l'inscription
- Désactiver la "shoutbox"
- Rediriger un utilisateur non connecté sur la page "/about"
Le fichier de configuration est un fichier de config Elixir. La syntaxe est assez particulière et, je trouve, assez peu pratique... J'ai édité le fichier /etc/pleroma/config.exs
avec les paramètres souhaités :
sudo nano /etc/pleroma/config.exs
config :pleroma, :instance,
name: "Example",
email: "admin@example.com",
notify_email: "admin@example.com",
limit: 5000,
registrations_open: false,
public: true,
allow_relay: true
config :pleroma, :frontend_configurations,
pleroma_fe: %{
redirectRootNoLogin: "/about"
}
config :pleroma, :shout,
enabled: false
Toutes les configurations sont détaillées dans la documentation officielle : Pleroma Configuration Cheat Sheet.
Personnalisation
Il est assez facile d'ajouter un peu de CSS pour apporter une touche personnelle.
Pleroma charge un fichier index.html
que l'on peut copier dans un dossier spécifique. Si le fichier existe il est utilisé à la place du fichier natif. Cela permet de surcharger sans risque de tout écraser lors d'une mise à jour.
cp /opt/pleroma/lib/pleroma-2.4.4/priv/static/index.html /var/lib/pleroma/static/
Note: le "static-dir" a été définie à l'installation, il peut être modifié dans le fichier de configuration (/etc/pleroma/config.exs
).
J'y ai simplement ajouté une balise de style "en ligne" pour apporter quelques modifications. Par exemple, la zone de saisie d'un nouveau statut affiche un placeholder avec le texte "Je viens d'atterrir en Tchéquie". Il n'est pas très utile. Ensuite PleromaFE applique un fond d'écran que je ne souhaite pas imposer aux visiteurs. Au final l'élément style
ressemble à :
<style>
.post-status-form .form-post-body::placeholder{color:transparent}
.app-bg-wrapper{background-image:none !important}
</style>
J'ai également ajouté au dossier static
le favicon, le logo et les "Terms of service" :
/var/lib/pleroma/static/favicon.png
/var/lib/pleroma/static/index.html
/var/lib/pleroma/static/static/terms-of-service.html
/var/lib/pleroma/static/static/logo.svg
Application mobile
Pour l'application mobile Android j'utilise Husky, qui ressemble énormément à l'interface mobile de Twitter :
Une question ? Rejoignez-moi sur le Fédivers :
@magentix@magentix.space