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.