La dernière version de Rocket Chat (1.1.1) est disponible depuis quelques jours et nécessitent un peu de paramétrage pour migrer d’une version antérieure à celle actuelle.
Pour ceux qui n’ont pas entendu parlé de Rocket Chat, il s’agit d’une application de messagerie instantanée Open Source et auto-hébergeable. Vous avez donc le contrôle total sur les données qui y transitent et cela permet de s’affranchir de solutions propriétaires et non-respectueuses de la vie privée de ses utilisateurs.
Techniquement, c’est écrit en NodeJS et repose sur une base NoSQL MongoDB.
Pour commencer
Version actuelle et système d’exploitation
J’utilise la version actuelle 0.71 sortis en Novembre 2018.
Au niveau serveur, je suis sur une Debian 9.9.
Changements avec la nouvelle version
Oplog
La version 1.0 de Rocket Chat nécessite maintenant l’activation du mode oplog de MongoDB. Le paramètre oplog est une collection spécifique à MongoDB permettant de garder un enregistrement continue de toutes les opérations faites sur la base de données. La définition d’un « replica set » sur MongoDB est nécessaire pour son fonctionnement.
Replica
Pour les versions antérieurs, l’activation du mode réplica était facultatif mais conseillé pour une mise en production de l’application, même si il n’y avait qu’un seul node au sein de ce réplica. Avec la nécessité d’avoir la partie oplog d’activée, c’est désormais obligatoire et Rocket Chat ne démarras pas sans la configuration de ce réplica.
Migration
Arrêt des services
On commence par arrêter l’applicatif Rocket Chat et la partie SQL pour ne plus avoir d’écriture :
$ systemctl stop rocketchat.service && systemctl stop mongod
MongoDB
On modifie la configuration pour définir notre réplica :
$ echo -e "replication:\n replSetName: \"rs0\"" | sudo tee -a /etc/mongod.conf
On démarre ensuite MongoDB pour prendre en charge la nouvelle configuration :
$ systemctl start mongod
On utilise ensuite le mongoshell pour initier le réplica :
$ mongo > rs.initiate()
On doit se retrouver avec une sortie similaire à cela :
On saisie ensuite la touche entrée pour passer en PRIMAIRE.
On vérifie le bon fonctionnement du réplica en affichant son statut :
> rs.status() "ok" : 1,
Rocket Chat
Applicatif
Il est nécessaire de récupérer les derniers composants de l’application pour faire la mise à jour.
On sauvegarde l’applicatif au cas où un problème survienne !
$ tar zcvf backup_rocket.tar.gz /opt/Rocket.Chat/ && rm -Rf Rocket.Chat
Pour le reste, c’est du classique, issu de la documentation officielle.
$ curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz && tar -xzf /tmp/rocket.chat.tgz -C /tmp && cd /tmp/bundle/programs/server && npm install && sudo mv /tmp/bundle /opt/Rocket.Chat && sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat
Systemd
Il convient de modifier l’unit Systemd pour démarrer l’application avec une nouvelle « variable d’environnement »
$ vim /lib/systemd/system/rocketchat.service
Et on y rajoute la valeur suivante dans la partie « Environment »
MONGO_OPLOG_URL=mongodb://<hôte>:<port>/local?replSet=<replica_name>
Ce qui dans mon cas, avec une configuration basique (emplacement et port d’écoute par défaut et une BDD sur le même hôte) donne :
[Unit] Description=The Rocket.Chat server After=network.target remote-fs.target nss-lookup.target nginx.target mongod.target [Service] ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js StandardOutput=syslog StandardError=syslog SyslogIdentifier=rocketchat User=rocketchat Environment=MONGO_URL=mongodb://localhost:27017/rocketchat MONGO_OPLOG_URL=mongodb://localhost:27017/local?replSet=rs0 ROOT_URL=http://rocket.xyz:3000/ PORT=3000 [Install] WantedBy=multi-user.target
On reload le daemon systemd pour prendre en charge la nouvelle configuration de l’unit :
$ systemctl daemon-reload
On redémarre ensuite l’applicatif Rocket Chat :
$ systemctl restart rocketchat.service
On vérifie ensuite le bon fonctionnement de l’unit :
$ journalctl -u rocketchat.service | tail -n 15 ➔ System ➔ startup ➔ | SERVER RUNNING | ➔ +------------------------------------------+ ➔ | | ➔ | Rocket.Chat Version: 1.1.1 | ➔ | NodeJS Version: 8.11.4 - x64 | ➔ | MongoDB Version: 4.0.10 | ➔ | MongoDB Engine: wiredTiger | ➔ | Platform: linux | ➔ | Process Port: 3000 | ➔ | Site URL: http://rocket.xyz | ➔ | ReplicaSet OpLog: Enabled | ➔ | Commit Hash: 80341ed12f | ➔ | Commit Branch: HEAD | ➔ | | ➔ +------------------------------------------+
C’est tout bon !
Un tour sur l’interface web nous confirme tout cela 🙂