Rocket.Chat

Updated 4 Août 2020

Rocket.Chat

Introduction

Rocket.Chat est un logiciel de messagerie libre qui prend en charge les discussions de groupe, l'échange de données, la vidéoconférence, les bots et bien plus encore.

Préparer un conteneur LXC

Nous conseillons d'installer Rocket.Chat dans un conteneur dédié, à configurer conformément au manuel.

Installer et configurer MongoDB

Installez MongoDB :

emerge -a dev-db/mongodb

Configurez MongoDB pour qu'il puisse prendre en charge Rocket.Chat :

/etc/mongodb.conf
storage:
  dbPath: "/var/lib/mongodb"
  engine: mmapv1

replication:
  replSetName: rs01

Maintenant lancez MongoDB :

/etc/init.d/mongodb start

Puis ajoutez-le au démarrage automatique.

rc-update add mongodb

Initialiser la base de données

mongo --eval "printjson(rs.initiate())"

Obtenir le certificat Let's Encrypt

Procurez-vous le certificat de domaine Nginx pour rocketchat.example.org, comme expliqué dans le manuel.

Installer et configurer Nginx

Installez et configurez le serveur Web Nginx en tant que mandataire inverse, comme expliqué dans le manuel. Ajoutez le paramètre suivant pour rocketchat.example.org :

/etc/nginx/sites-enabled/rocketchat.conf
server {
    listen 443 ssl;
    server_name rocketchat.example.org;

    include ssl.conf;
    ssl_certificate /etc/nginx/ssl/rocketchat.example.org/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/rocketchat.example.org/privkey.pem;
    client_max_body_size 200M;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Nginx-Proxy true;

        proxy_redirect off;
    }
}

Installer et configurer Rocket.Chat

Commencez par installer le logiciel complémentaire :

emerge -a dev-python/nodeenv media-gfx/graphicsmagick

Créez un utilisateur système nommé rocketchat :

useradd -m -d /var/calculate/www/rocketchat -s /bin/bash rocketchat

Installez Node.js dans le répertoire utilisateur :

su - rocketchat

nodeenv --node=12.18.0 .node-12

ln -sfT .node-12 .node-live

source .node-live/bin/activate

echo 'source ~/.node-live/bin/activate' >> ~/.bash_profile

Mettre en place le serveur

Utiliser le serveur de validation

Téléchargez et décompressez Rocket.Chat :

curl -L https://releases.rocket.chat/latest/download -o Rocket.Chat.tar.gz

tar xf Rocket.Chat.tar.gz

Installez toutes les bibliothèques nécessaires pour NodeJS, puis abandonnez en tant que rocketchat :

cd ~/bundle/programs/server

npm install && exit

Créer un serveur à partir du code source

Installez la plateforme Meteor pour l'utilisateur "web" :

curl https://install.meteor.com/ | sh

echo 'PATH="${PATH}:${HOME}/.meteor"' >>.bash_profile

PATH="${PATH}:${HOME}/.meteor"

Récupérez le code source de votre futur serveur Rocket.Chat :

git clone https://github.com/RocketChat/Rocket.Chat.git Rocket.Chat.Source

Compilez l'archive dans le répertoire source :

cd Rocket.Chat.Source

meteor npm install

meteor build --directory ~

Installez toutes les bibliothèques nécessaires pour NodeJS, puis abandonnez en tant que rocketchat :

cd ~/bundle/programs/server

npm install && exit

Lancer Rocket.Chat

Le répertoire Rocket.Chat obtenu précédemment doit devenir le répertoire courant :

mv /var/calculate/www/rocketchat/{bundle,Rocket.Chat}

Créez un script OpenRC pour contrôler Rocket.Chat en indiquant https://rocketchat.example.org comme ROOT_URL :

/etc/init.d/rocketchat
#!/sbin/openrc-run
# Copyright 2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

name="Rocketchat daemon"
description=""
pidfile=/run/rocketchat.pid
command_user=rocketchat
output_log=/var/log/rocketchat.log
error_log=/var/log/rocketchat.log
directory=/var/calculate/www/rocketchat/Rocket.Chat
ROOT_URL="https://rocketchat.example.org"
start_stop_daemon_args="-e ROOT_URL=$ROOT_URL -e MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 -e PORT=3000 -e MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 -e PATH=/var/calculate/www/rocketchat/.node-live/lib/node_modules/.bin:/var/calculate/www/rocketchat/.node-live/bin:\"$PATH\""
command="/var/calculate/www/rocketchat/.node-live/bin/node"
command_args="main.js"
command_background=true

depend() {
        need nginx mongodb
}

start_pre() {
    checkpath -f -o rocketchat -m 0600 /var/log/rocketchat.log
}

Définissez les droits d'accès :

chmod 755 /etc/init.d/rocketchat

Lancez le démon Rocket.Chat :

/etc/init.d/rocketchat start

Ajoutez Rocket.Chat à la liste de démarrage automatique :

rc-update add rocketchat

Finaliser la configuration de Rocket.Chat à la page https://rocketchat.example.org, sur votre navigateur Web.

Mise à jour de Rocket.Chat

Identifiez-vous en tant que rocketchat :

su - rocketchat

Obtenez le répertoire bundle pour Rocket.Chat. Plusieurs façons d'y parvenir sont décrites ci-dessus dans la rubrique Installation du serveur.

Arrêtez l'ancien serveur Rocket.Chat :

/etc/init.d/rocketchat stop

Remplacez l'ancien serveur par le nouveau :

mv /var/calculate/www/rocketchat/Rocket.Chat{,.$(date +%Y%m%d%H%M)}

mv /var/calculate/www/rocketchat/{bundle,Rocket.Chat}

Démarrez le nouveau serveur Rocket.Chat :

/etc/init.d/rocketchat start