Rocket.Chat : Installation standalone

modifié le : 5 octobre 2022,
par Julien Louis
 

Installation d'un Rocket.Chat en mode standalone sur Debian 11.

Très important ! MongoDB 5.0 demande que le jeu d'instruction AVX soit géré par le CPU du serveur.

  • Vérifier que AVX soit traité par le CPU :
cat /proc/cpuinfo | grep avx

Si rien ne s'affiche, cela ne sert à rien d'aller plus loin.

Pour mes essais, j'utilise un serveur Proxmox pour la virtualisation. J'ai dû passer le CPU de la machine virtuelle sur host.

MongoDB Community Edition

Installation

Le paquet mongodb fournit par les dépôts Debian n'est pas maintenue par MongoDB Inc. Celui-ci rentre en conflit avec le paquet officiel mongodb-org. Si le paquet mongodb provenant des dépôts Debian est installé, il faudra au préalable le désinstaller.

  • Installer les pré-requis :
sudo apt install dirmngr gnupg apt-transport-https software-properties-common ca-certificates curl
  • Importer la clef publique PGP nécessaire :
sudo wget -O- https://www.mongodb.org/static/pgp/server-5.0.asc | gpg --dearmor | sudo tee /usr/share/keyrings/mongodb.gpg
  • Ajouter le dépôt de MongoDB Inc. pour Debian 11 :
echo 'deb [signed-by=/usr/share/keyrings/mongodb.gpg] http://repo.mongodb.org/apt/debian buster/mongodb-org/5.0 main' | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list

Actuellement, Rocket.Chat demande une version 5.0 de MongoDB. Il est indiqué Buster mais c'est bon aussi pour Bullseye.

  • Mettre à jour le cache des paquets :
sudo apt update
  • Installer la version 5.0.13 de MongoDB :
sudo apt install mongodb-org

(Optionnel) Afin de prévenir une mise à jour non désirée de MongoDB par apt :

echo "mongodb-org hold" | sudo dpkg --set-selections
echo "mongodb-org-database hold" | sudo dpkg --set-selections
echo "mongodb-org-server hold" | sudo dpkg --set-selections
echo "mongodb-mongosh hold" | sudo dpkg --set-selections
echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
echo "mongodb-org-tools hold" | sudo dpkg --set-selections

Configuration

  • Editer le fichier de configuration /etc/mongod.conf :
sudo vi /etc/mongod.conf

Attention, c'est un format YAML.

Définir le type de stockage sur wiredTiger :

storage:
  engine: wiredTiger

Activer et nommer la réplication :

replication:
  replSetName: rs01

Le fichier de configuration doit ressembler à quelques choses de similaire à ça :

storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true
  engine: wiredTiger

systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

net:
  port: 27017
  bindIp: 127.0.0.1

processManagement:
  fork: true
  timeZoneInfo: /usr/share/zoneinfo

replication:
  replSetName: rs01

Exécution

Par défaut, MongoDB stocke les données dans /var/lib/mongodb et les logs dans /var/log/mongodb.

  • Démarrer MongoDB :
sudo systemctl start mongod

Si une erreur indique que mongod.service est introuvable :

sudo systemctl daemon-reload
  • Vérifier que le service est bien démarré :
sudo systemctl status mongod
  • Activer le démarrage du service au boot du système :
sudo systemctl enable mongod
  • Créer le replicaset :
mongo --eval "printjson(rs.initiate())"

Node.js

Installation

  • Passer root :
sudo -i
  • Récupérer et exécuter le script suivant :
curl -fsSL https://deb.nodesource.com/setup_14.x | bash -
  • Installer Node.js v14 :
apt install nodejs

Actuellement, Rocket.Chat demande une version 14 pour Node.js.

  • Se déconnecter de root.

Rocket.Chat

Installation

  • Mettre à jour le système :
sudo apt update
sudo apt upgrade
  • Installer les pré-requis :
sudo apt install curl build-essential graphicsmagick
  • Télécharger la dernière version de Rocket.Chat :
curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz
  • Extraire l'archive :
tar xzf /tmp/rocket.chat.tgz -C /tmp
  • Installer toutes les dépendances :
(cd /tmp/bundle/programs/server; npm i)
  • Déplacer le bundle pour Rocket.Chat dans opt :
sudo mv /tmp/bundle /opt/Rocket.Chat

Configuration

  • Ajout de l'utilisateur rocketchat :
sudo useradd -M rocketchat && sudo usermod -L rocketchat
  • Modification des permissions sur le dossier de Rocket.Chat :
sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat
  • Sauvegarde le chemin vers le binaire de Node.js dans une variable :
NODE_PATH=$(which node)
  • Créer le fichier du service systemd :
cat << EOF |sudo tee -a /lib/systemd/system/rocketchat.service
[Unit]
Description=The Rocket.Chat server
After=network.target remote-fs.target nss-lookup.target nginx.service mongod.service
[Service]
ExecStart=$NODE_PATH /opt/Rocket.Chat/main.js
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocketchat
[Install]
WantedBy=multi-user.target
EOF
  • Editer le service rocketchat :
sudo systemctl edit rocketchat
  • Définir les variables d'environnement :
[Service]
Environment=ROOT_URL=http://localhost:3000
Environment=PORT=3000
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01
Environment=MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01
  • Sauvegarder et enregistrer.

Exécution

  • Activer le démarrage du service au boot du système :
sudo systemctl enable rocketchat
  • Démarrer le service rocketchat :
sudo systemctl start rocketchat

Accès Web

  • Ouvrir un navigateur web.
  • Accéder à l'adresse du service Rocket.Chat définit avec la variable d'environnement ROOT_URL.
  • Suivre les instructions pour définir un compte admin et les informations du serveur Rocket.Chat.