SwordArMor

Installer son instance mastodon sous Gentoo

Suite à l’annonce de Valère d’arrêter les services hostux, et donc l’instance mastodon, j’ai décidé de monter la mienne. La principale raison est que je n’ai pas trouvé d’autre instance en Europe avec un TLSA. Je ne vais pas ici expliquer toute l’installation, mais seulement ce que j’ai dû adapter de la doc officielle pour Gentoo. À l’heure actuelle, la dernière version stable est la v3.3.0, il y aura donc sûrement de nouvelles modifications à apporter dans le futur pour les versions suivantes.

Ruby

Mastodon est principalement codé en ruby, la doc demande de créer un rbenv en version 2.7.2. J’ai rapidement testé en gardant la version ruby des dépôts (actuellement 2.6.6-r2) et ça semble quand même fonctionner, mais après réflexion j’ai tout de même préféré garder le rbenv, au cas où il y ait un besoin strict d’une version pas encore stable chez gentoo ou que l’upgrade quotidienne demande de recompiler tous les assets de mastodon.

PostgreSQL

La doc parle de version 9.6, bien qu’elle soit présente dans les dépôts, les upgrades de PostgreSQL ne sont pas complètement automatiques (il faut jouer avec pg_upgrade à la main). J’ai donc décidé de prendre la version stable la plus récente (donc la 13) afin de remettre à plusieurs années le moment où il faudra changer de version majeure de PostgreSQL.

Conversion des scripts systemd en open-rc

Comme j’utilise Gentoo avant tout pour éviter d’avoir à subir systemd, et que les auteurs de la doc de mastodon partent du postulat que tout le monde utilise systemd, j’ai dû adapter les scripts d’init de mastodon.
Si vous utilisez le ruby des dépôts, il faut changer le chemin absolu pour bundle afin de laisser openrc-rc se baser sur votre $PATH.
Les logs seront dans /var/log/user.log. Si cela ne vous convient pas, adaptez les options de logger.

bulbizarre ~ # cat /etc/init.d/mastodon-sidekiq
#!/sbin/openrc-run
# Copyright 2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

name="mastodon-sidekiq daemon"
description="mastodon-sidekiq"

command_user="mastodon"
HOME="/opt/mastodon"
directory="$HOME/live"

output_logger="logger -t ${description}"
error_logger="logger -t ${description}"

source "$HOME/.bashrc"
export RAILS_ENV=production
export DB_POOL=25
export MALLOC_ARENA_MAX=2
command="$HOME/.rbenv/shims/bundle exec sidekiq"
command_args="-c 25"

pidfile="/run/${description}.pid"
command_background=true

depend() {
	use net
}


bulbizarre ~ # cat /etc/init.d/mastodon-streaming
#!/sbin/openrc-run
# Copyright 2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

name="mastodon-streaming daemon"
description="mastodon-streaming"

command_user="mastodon"
HOME="/opt/mastodon"
directory="$HOME/live"

output_logger="logger -t ${description}"
error_logger="logger -t ${description}"

source "$HOME/.bashrc"
export NODE_ENV=production
export PORT=4000
export STREAMING_CLUSTER_NUM=1
command="/usr/bin/node ./streaming"

pidfile="/run/${description}.pid"
command_background=true

depend() {
	use net
}


bulbizarre ~ # cat /etc/init.d/mastodon-web
#!/sbin/openrc-run
# Copyright 2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

name="mastodon-web daemon"
description="mastodon-web"

command_user="mastodon"
HOME="/opt/mastodon"
directory="$HOME/live"

output_logger="logger -t ${description}"
error_logger="logger -t ${description}"

source "$HOME/.bashrc"
export RAILS_ENV=production
export PORT=3000
command="$HOME/.rbenv/shims/bundle exec puma"
command_args="-C ${directory}/config/puma.rb"

pidfile="/run/${description}.pid"
command_background=true

depend() {
	use net
}

NodeJS

La version stable actuelle est la 14 et la doc demande la 12. Il se trouve que si vous tentez de lancer le streaming avec un node 14 vous aurez des erreurs 503 dans les logs de nginx et rien dans les logs de node. Il faut le lancer avec un node 12. J’ai donc masqué les versions supérieures à 13.

nginx

Il manque quelques modules par défault pour faire fonctionner mastodon. Il faut ajouter dav dav_ext xslt à NGINX_MODULES_HTTP.

imagemagick et ffmpeg

Les options de compilation des libs « multimédia » sont très limitées sur un profile serveur (car il n’y a pas tous les USE poussés par les profiles desktop). Comme je ne peux pas deviner quels types d’images et vidéos seront utilisés, j’ai vu assez large sur les options. On peut sûrement en retirer, mais dans le doute…
Donc j’ai ajouté hdri heif jbig jpeg jpeg2k lcms pango png raw svg tiff truetype webp xml à media-gfx/imagemagick et mp3 sdl svg theora truetype vorbis vpx x264 x265 xvid à media-video/ffmpeg.

Désactivation de la souris pour urxvt et terminator (et autres terminaux basés sur VTE)

Depuis quelques temps, le support de la souris est activé par défaut sur certaines applications CLI, notamment vim. Ceci empêche d’utiliser le presse-papier « clic milieu » et ne sert en outre à rien, c’est donc fort ennuyeux.

J’ai un peu cherché comment désactiver le support de la souris …

Lire la suite

Vérification RPKI avec routinator, bird et IOS-XE

Quand on fait partie de la DFZ, on peut en gros annoncer n’importe quel préfixe tant que ça passe les filtres de nos pairs, et on est censé leur faire plus ou moins confiance. Sauf que croire encore à ce système de la confiance en 2020, c’est aussi …

Lire la suite

Remplir la table SNMP ifAlias sous Linux

Il m’arrive encore de jouer avec des routeurs soft, et comme à chaque fois il faut bricoler pour avoir ce que l’on veut, ici avoir une table ifAlias correcte. À une époque je le faisais avec FreeBSD, et j’avais trouvé la parade en utilisant un proxy vers …

Lire la suite

Afficher correctement les AS 32 bits avec mtr

mtr est un outil très pratique qui permet de faire un traceroute, mais en mieux. La sortie est beaucoup plus lisible, et ça utilise de l’ICMP par défaut (au lieu de l’UDP sous Linux/*BSD). Seulement, dans les anciennes versions, les AS 32 bits sont mal gérés : ils …

Lire la suite

Sauvegarder la configuration de ses switches et routeurs avec expect

Si vous ne connaissez pas expect, c’est un outil qui permet d’écrire des scripts en TCL qui iront interagir avec telnet/ssh et d’autres trucs du genre, sans que vous ayez à le faire vous même. C’est donc très pratique pour écrire des scripts qui seront …

Lire la suite

Utiliser socat pour contourner les limiations SSL d’un navigateur moderne

Depuis quelque temps, les navigateurs bloquent les requêtes SSL/TLS utilisant des versions de protocoles et suites cryptographiques jugées trop faibles.

Cependant, on peut avoir besoin de se connecter à de vieux équipements qui eux ne supportent que ces vielles versions ; en l’occurrence, un PDU. En théorie, ils supportent …

Lire la suite

Proxy SNMP pour une table précise (ifAlias)

État des lieux

Sous FreeBSD nous avons le choix entre deux implémentations SNMP : bsnmp et le classique net-snmp. Le premier a des soucis sur les modèles de CPU et ne remonte pas les IPv6 des interfaces, alors que le second ne remonte pas la description des interfaces.
En clair, on …

Lire la suite

Ebuild pour la suite de tests blaeu pour les sondes RIPE Atlas

Blaeu

Blaeu permet de créer des tests en utilisant l’API d’Atlas puis d’afficher le résultat de manière lisible pour un humain ou une machine.
Une description complète est disponible dans le README du répertoire git .

L’installation sous gentoo

L’ebuild est dans mon overlay personnel, il …

Lire la suite

Le nœud AS112 chez grifon et Breizh-IX

Le rôle de l’AS112

Cet AS est assez spécial, il sert de trou noir du DNS. C’est aussi l’une des premières utilisations de l’anycast.

En regardant la charge des serveurs racines du DNS, les administrateurs se sont rendu compte qu’une quantité non négligeable de requêtes …

Lire la suite

Page 1 / 5 »