Faire du slack libre et se connecter à IRC sur son téléphone avec matrix.org (console matrix + synapse)

Avant toute chose je tiens à préciser que je suis au courant qu’il existe des solutions plus simple avec slack pour arriver au même résultat. Mais le but ici est de garder le contrôle de ses informations avec une stack complète logiciel libre.

Nous allons utiliser le projet matrix.org (un pendant libre à slack très puissant) afin de nous raccorder à son réseau et nous permettre d’avoir une persistance des messages du canal. Le déploiement de la solution va se passer en quatres étapes.

  1. Installation d’un homeserver de Synape.
  2. Installation et connection à notre noeud avec un client sur smartphone (ici Android).
  3. Installation du plugin de bridge IRC

Installation d’un homeserver de synapse.

Je vais reprendre en grande partie le tutorial du projet synapse très bien écrit.

Il faut comprendre que l’ecosystème matrix est en faite un ensemble de homeserver interconnectés les un avec les autres :

client <----> homeserver <=====================> homeserver <----> client
       https://somewhere.org/_matrix      https://elsewhere.net/_matrix

Les comptes et les canaux de discutions font toujours référence à un serveur. Par exemple mon compte est half sur le serveur jupiter.oopss.org. Mon compte sur le réseau matrix est donc : half:jupiter.oopss.org, je suis joignable donc sur @half:jupiter.oopss.org. De la même façon le cannal #help sur jupiter.oopss.org est accessible par #help:jupiter.oopss.org.

Tout d’abord installons les dépendences :

# sudo apt-get install build-essential python2.7-dev libffi-dev \
                     python-pip python-setuptools sqlite3 \
                     libssl-dev python-virtualenv libjpeg-dev

Ensuite nous allons installer via l’écosysème Python (pip et virtualenv) Synapse :

$ virtualenv -p python2.7 ~/.synapse
$ source ~/.synapse/bin/activate
$ pip install --upgrade setuptools
$ pip install --process-dependency-links https://github.com/matrix-org/synapse/tarball/master

Nous allons ensuite générer notre configuration de server :

$ virtualenv -p python2.7 ~/.synapse
$ cd ~/.synapse python -m synapse.app.homeserver \ 
    --server-name jupiter.oopss.org \ 
    --config-path homeserver.yaml \ 
    --generate-config

Je vous conseille dans un premier temps de ne pas configurer directement le SSL (https) afin de minimiser les erreurs de configuration. Il va nous falloir aussi activer l’enregistrement d’utilisateur. Faisons donc les modifications suivantes dans le fichier de configuration généré homeserver.yaml. (clef => valeur)

  • no_tls => false
  • web_client => true
  • enable_registration_captcha => False
  • enable_registration => True

On peut maintenant démarrer le serveur :

$ cd ~/.synapse
$ source ./bin/activate
$ synctl start

Deux ports (si non changé dans la configuration) sont exposés : 8008 (en HTTP) et 8448 (en HTTPS). Dans notre exemple nous allons continuer sur du HTTP non crypté (donc le 8008).

 

Installation et connexion à notre noeud avec un client sur smartphone (ici Android).

Dans un premier temps je vous conseille de vous créer un compte sur Desktop, c’est moins buggé… Allez donc sur votre server ( ici http://jupiter.oopss.org:8008 ) et faites « Create account » :

Selection_006

Vous étes alors connecté au serveur et au réseau Matrix.org :

Selection_007

Mais le but ici est d’utiliser notre smartphone Android. Allez chercher votre application Matrix :

 

Screenshot_2015-10-15-14-27-24

 

 

Une fois installée, ouvrez l’application et saisissez les informations pour vous connecter. Pour nous ici :

 

 

Screenshot_2015-10-15-14-29-54

 

(notez qu’il n’est pas nécessaire de préciser half:jupiter.oopss.org en identifiant car nous nous connectons directement à http://jupiter.oopss.org:8008).

Nous somme maintenant sur le réseau Matrix.org. En faites, nous pouvons dors et déjà communiquer avec d’autres utilisateurs connectés au réseau et en réalité même déjà nous connecté à IRC.

En effet le serveur matrix.org intégre déjà un plugin du bridge IRC vers le serveur Freenode d’IRC (irc.freenode.org). Pour vous connecter par exemple au cannal #oopss, vous pouvez vous connecter au cannal #freenode_#oopss du serveur matrix.org. Le nom complet du cannal est donc #freenode_#oopss:matrix.org. Le format est donc le suivant :

#freenode_XXXXXXX:matric.org
où XXXX est le nom du cannal IRC (préfixé de # donc).

Mais si qui nous interesse est une indépendance totale, et donc stoquer les discutions (et photos) de nos canaux sur notre serveur (ici jupiter.oopss.org) et non sur le serveur matrix.org.

Installation du plugin de bridge IRC et connexion au cannal IRC depuis notre serveur.

$ sudo apt install nodejs npm
$ sudo npm install -g npm #update npm to last version
$ mkdir -p ~/repository/
$ cd ~/repository/
$ git clone https://github.com/matrix-org/matrix-appservice-irc.git
$ sudo apt install libicu-dev ### pas dans la config mais il m'etait necessaire
$ cd matrix-appservice-irc
$ npm install
$ nodejs -e "console.log(require('crypto').randomBytes(20).toString('hex'));

Copiez la sortie de la dernière ligne (exemple : 76350452e17173b87cd74aaf68945d536bbd8d74) puis copiez le fichier config.sample.yaml en config.yaml. Editez ce dernier et changez les valeurs comme suit :

  • Mettez dans appservice > token votre chaine de caratère précédement copiée.
  • ircService > servers >  (mettez le nom de votre serveur IRC). Ici irc.freenode.org
  • ircService > servers >  irc.freenode.org > port (mettre 6667)
  • ircService > servers >  irc.freenode.org > ssl (mettre False)
  • Changez le nickname du bot si voulu dans ircService > servers >  irc.freenode.org > nick
  • Je vous laisse voir les autres valeurs optionnelles intéressantes qui sont dans le fichiers (comme la whitelist et le !join ou le changement de nom des users mappés ).

Il faut ensuite générer la configuration yaml du service, il sera fournit à synapse  :

$ node app.js --generate-registration
$ cp appservice-registration-irc.yaml ~/.synapse/

Ensuite éditez ~/.synapse/homeserver.yaml pour changer la ligne

app_service_config_files: []

en

app_service_config_files: ["appservice-registration-irc.yaml"]

Et pour finir, lancer le bridge dans un screen :

$ sudo apt install screen
$ screen
$ cd ~/repository/matrix-appservice-irc
$ nodejs app.js

Faire CTRL+A D pour quitter le screen et screen -x pour vous y reconnecter. Enfin relancez synapse :

$ cd ~/.synapse
$ source ./bin/activate
$ synctl start

Vous pouvez vous connecter aux canaux IRC depuis votre serveur Matrix sur mobile maintenant. Pour notre configuration c’est sur #irc_#oopss:jupiter.oopss.org pour le canal IRC #oopss.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *