Biboumi est une passerelle XMPP ↔ IRC qui s'installe côté serveur XMPP et permet de rejoindre des salons IRC avec un client XMPP standard (donc sans avoir besoin d'installer un client IRC en plus d'un client XMPP déjà installé).
Au démarrage biboumi se connecte à ejabberd sur un port TCP dédié en tant que composant XMPP et ejabberd proposera alors automatiquement aux clients un service supplémentaire de salons IRC. Pour que ça fonctionne ejabberd et biboumi doivent partager un secret.
apt install biboumi
Créer le fichier /etc/biboumi/biboumi.cfg :
hostname=biboumi.parinux.org # le vhost XMPP dédié password=xxxxxxxxxxxx # le secret partagé avec ejabberd xmpp_server_ip=127.0.0.1 # l'IP de ejabberd port=8888 # le port d'écoute côté ejabberd db_name=/var/lib/biboumi/biboumi.sqlite admin=pitchum@parinux.org realname_customization=true realname_from_jid=false log_level=1 log_file=/var/log/biboumi/biboumi.log ca_file=
Puis
mkdir /var/log/biboumi/ chown _biboumi: /var/log/biboumi
Contournement spécifique
Je soupçonne que c'est dû au fait que le noyau est trop vieux (3.16.x) même si j'ai pas trouvé d'info précise confirmant cette hypothèse. Bref, le service biboumi n'arrive pas à se lancer et journalctl affiche :
janv. 03 21:59:32 xmpp-1 systemd[1]: Starting Biboumi, XMPP to IRC gateway... janv. 03 21:59:32 xmpp-1 systemd[7827]: biboumi.service: Failed to apply ambient capabilities (before UID change): Invalid argument janv. 03 21:59:32 xmpp-1 systemd[7827]: biboumi.service: Failed at step CAPABILITIES spawning /usr/bin/biboumi: Invalid argument janv. 03 21:59:32 xmpp-1 systemd[1]: biboumi.service: Main process exited, code=exited, status=218/CAPABILITIES
Voici comment j'ai contourné ce problème :
cp /lib/systemd/system/biboumi.service /etc/systemd/system/
Puis j'ai ajouté ces 2 lignes dans /etc/systemd/system/biboumi.service :
[Service] ... CapabilityBoundingSet=CAP_NET_BIND_SERVICE NoNewPrivileges=true ...
Puis systemctl daemon-reload
et systemctl restart biboumi
.
contournement du contournement
En fait, pour une raison que j'ignore, le contournement précédent n'a pas fonctionné lors du restart de biboumi par la suite. J'ai donc mis en place un autre contournement à l'arrache :
identd_port=1113
dans biboumi.cfg et redirection iptables :113 → :1113 sur troll3.
Activer l'écoute côté ejabberd
Dans /etc/ejabberd/ejabberd.yml :
... - port: 8888 ip: "127.0.0.1" # l'interface sur laquelle ejabberd accepte les connexions de composants XMPP externes tels que biboumi mais pas seulement module: ejabberd_service access: all shaper: fast # je sais pas à quoi ça sert mais c'est dans la doc alors je le laisse hosts: "biboumi.parinux.org": password: "xxxxxxxxxxxx" # le secret partagé avec biboumi ...
sudo -u ejabberd ejabberdctl reload_config
Suite à quoi on doit voir une ligne comme celle-ci dans /var/log/ejabberd/ejabberd.log :
2019-01-03 21:38:59.735 [info] <0.720.0>@ejabberd_listener:init:143 Start accepting TCP connections at 127.0.0.1:8888 for ejabberd_service
Et lorsque le service biboumi sera lancé on verra ceci dans les logs ejabber :
2019-01-03 21:56:45.767 [info] <0.737.0>@ejabberd_service:handle_auth_success:161 (tcp|<0.737.0>) Accepted external component handshake authentication for biboumi.parinux.org from 127.0.0.1