Featured image of post Rocket.Chat : Installation standalone

Rocket.Chat : Installation standalone

Installation du service Rocket. Chat avec MongoDB 5. Le tout en standalone ! Attention aux jeux d’instructions AVX du CPU pour MongoDB 5 🙂

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.