Au boulot, on utilise un chan IRC pour papoter, mais aussi pour recevoir diverses notifications telles que les commits réalisés, les fails de jenkins, les déploiements capistrano, etc. Plutôt pratique, ça me rappel mes études où je trainais un peu sur #mandrakefr.

Quoi qu'il en soit, il m'a fallu me remettre à tout ça, et je pense que j'ai trouvé un combo plutôt pas mal :

  • ZNC comme proxy irc
  • BitlBee pour parler sur twitter / gtalk / msn / facebook avec irc
  • irssi ou xchat comme client irc

Explications

Proxy IRC ?

Comment ça un proxy IRC ? Et d'abord ça sert à quoi ?

La solution la plus simple avec IRC, c'est d'avoir un client quelconque, de se connecter au serveur et voilà. Le problème, c'est que parfois il faut arrêter le logiciel, redémarrer sa session, etc. Et là, hop, déconnecté. C'est pas super gênant mais c'est pas toujours très pratique... surtout lorsqu'on peut faire autrement.

La première étape en général est de passer par screen ou un équivalent. Evidemment ça ne fonctionne que pour des outils en ligne de commande (il y a des équivalent pour X mais je n'ai pas essayé). Et qui dit IRC en ligne de commande dit irssi. Ok, cool, irssi dans un screen. Ha mince, une mise à jour noyau. Hop, reboot ... et là irssi n'y peut pas grand chose...

L'étape d'après est donc de passer sur un serveur distant via ssh sur lequel on utilise screen avec irssi. C'est pas mal, mais parfois ça lag. Et surtout, ça lag lorsqu'on tape du texte... et ça c'est vraiment vraiment désagréable.

La solution est alors d'avoir le client sur son poste. Il ne peut alors plus avoir de lag puisqu'on tape en local.

Ha oui, mais je comprend plus rien, il faut être en distant pour ne pas avoir de problème et là on a un client local ?!

Et oui, c'est là qu'intervient le proxy IRC. Sur mon serveur distant, j'ai un proxy IRC qui se connecte à freenode et bitlbee. Il me permet d'être toujours connecté, de ne pas perdre les messages si je ne suis pas présent, etc. Et agit comme un proxy, c'est à dire qu'il me repousse le tout en utilisant le protocole IRC.

Et à l'autre bout, côté client, je ne me connecte pas à freenode mais à mon proxy. De cette manière j'ai une très bonne interactivité avec mon client puisqu'il est local, et je passe simplement par un proxy pour parler / lire. Et finalement il n'y a pas grande différence à être connecté directement à un serveur freenode ou à mon proxy. Donc ça c'est supair !

Initialement, comme je parlais d'irssi, j'utilisais la fonctionnalité proxy d'irrsi. Vous trouverez d'ailleurs pas mal de tuto sur le net à ce sujet. Mais ce n'est pas parfait. Entre autre, la config n'est, je trouve, pas toujours simple, et les fonctionnalités de type backlog ne sont pas géniales. Le backlog permet de recevoir sur le client les messages postés sur le serveur (où l'on est toujours connecté) pendant que le client est déconnecté.

Et c'est là que j'ai découvert ZNC qui est plutôt pas mal :

  • configuration très simple et très claire, il suffit de faire un znc --makeconf et ça roule
  • backlog intégré
  • un module permettant de passer en away dès que le dernier client quitte
  • une interface web (sur le même port en fait) qui permet de tout configurer simplement et agréablement

BitlBee ?

Maintenant que j'ai un proxy IRC qui tourne et que j'ai un client (irssi) je peux gérer ma présence sur IRC très facilement et agréablement. Imaginez, vous êtes en train de discuter avec quelqu'un sur un pc, vous voulez sortir. Hop, fermeture du client, ouverture d'un nouveau client sur le téléphone. Aucun lag, aucune perte, c'est parfait.

Et finalement ça serait encore mieux si les autres services étaient gérés de la même manière. Par autres services j'entend surtout msn (bouh), jabber (et gtalk), twitter, facebook. Et c'est là qu'intervient BitlBee. Il s'agit d'une passerelle (un peu un proxy encore une fois) vers ces réseaux. C'est en fait un client twitter, un client jabber, un client msn, ... mais qui, au lieu de vous afficher une fenêtre, vous "parle" et écoute via IRC.

Votre client IRC permet donc de se connecter à cette passerelle et vous l'utilisez pour papoter avec tous vos réseaux. L'avantage est d'une part qu'on peut le coller derrière le proxy IRC (donc pas de déconnexion par exemple) mais aussi que vous n'avez plus qu'un logiciel pour gérer tous vos comptes. Et ça c'est réellement parfait !

Client

Maintenant, il ne reste plus qu'à avoir un client IRC de dispo. Sous la plupart des systèmes, un simple irssi devrait suffire. Entre autres choses très très agréables, vous pouvez découper votre écran en plusieurs fenêtres. Très pratiques si vous êtes sur un chan en permanence et que vous voulez en même temps discuter via jabber. Ou pour avoir votre flux twitter toujours visible.

Si vous ne vous sentez pas trop d'utiliser irssi (en mode "texte") alors un xchat fera l'affaire sans trop de problème.

Mise en oeuvre

Ce qui suit est valable pour une mageia 2, mais ça devrait être sensiblement la même chose sur n'importe quelle distrib.

Installation

Il faut d'abord installer bitblee et znc. Rien de plus facile :

# urpmi znc bitlbee

Et voilà !

Bitlbee tourne en service (via xinetd) par défaut sur le port 6667. Vous pouvez, dans le fichier /etc/bitlbee/bitlbee.conf changer ceci, ajouter un mot de passe, etc.

Maintenant, il faut configurer le tout.

Le plus simple est de lancer ZNC qui a un mode permettant d'initialiser la configuration. Faites le avec un utilisateur classique, et pourquoi pas dans un screen si vous ne le détachez pas (ce qu'il peut faire tout seul).

$ znc -c

Il va alors passer dans un mode interactif et vous pouvez le configurer. Pour ma part j'ai ajouté deux utilisateurs, l'un qui s'appelle freenode et qui se connecte à ... freenode (irc.freenode.org/6667) et un autre, bitlbee qui se connecte à mon bitlbee local, soit localhost/6667.

Ce qui est bien avec de système d'utilisateurs, c'est que le proxy IRC ne tourne que sur un seul port, et suivant l'utilisateur il me redirige vers l'un ou l'autre.

Ha oui, j'ai oublié de dire : et voilà, c'est terminé !

Vous pouvez ajouter certains modules si vous le souhaitez, mais le mieux est de simplement suivre le script de configuration, il vous demandera tout ce qu'il faut.

Côté client, il suffit d'ajouter vos deux (ou plus) configurations, par exemple :

  • /connect <votre serveur>/<port znc> freenode:<mdp> et vous accéderez à freenode
  • /connect <votre serveur>/<port znc> bitlbee:<mdp> et vous serez sur bitlbee

Pour freenode je pense qu'il n'y a pas grand chose de spécial à dire, pour bitlbee le mieux est d'aller voir les configurations possibles sur leur wiki. C'est simple et plutôt clair, je ne vais pas faire de la redite ici.

Lorsque vous quitterez votre client IRC... au mieux vous serez marqué away, au pire il ne se passera rien, et vous pourrez reprendre votre session en ouvrant un nouveau client. Et vous serez resté en ligne pendant ce temps !