Comment installer le serveur Rocket.Chat sur Rocky Linux 8

Rocket.Chat est un serveur de chat open-source développé en JavaScript à l’aide du framework Meteor.js. Il te permet de communiquer en toute sécurité et en temps réel sur plusieurs appareils. Il permet aux entreprises et aux organisations de construire leur serveur de chat pour les communications internes avec leurs employés. Il s’intègre aux canaux sociaux, aux chatbots, aux médias sociaux et aux apps de productivité. Il permet de surveiller les flux de travail DevOps avec des intégrations via Bitbucket, Jira, GitLab, Confluence, Bamboo, etc. Il est disponible sur plusieurs plateformes de bureau et mobiles. Il existe deux éditions de Rocket.Chat, l’une est une édition communautaire gratuite et l’autre une édition d’entreprise.

Dans ce tutoriel, nous allons installer l’édition communautaire gratuite du serveur Rocket.Chat sur une machine Rocky Linux.

Conditions préalables

  • Un serveur fonctionnant sous Rocky Linux avec un minimum de 1 Go de RAM pour un serveur pouvant accueillir jusqu’à 200 utilisateurs, et jusqu’à 50 utilisateurs actifs simultanément. Si tu veux accueillir plus de 200 utilisateurs, tu dois opter pour un serveur avec un minimum de 2 Go de RAM.

  • Un nom de domaine qui pointe vers le serveur. Pour notre tutoriel, nous utiliserons le domaine rocketchat.example.com.

  • Un utilisateur non-sudo avec des privilèges root.

  • SELinux est désactivé.

  • Tout est mis à jour.

    $ sudo dnf update
    
  • Installe les paquets utilitaires de base. Certains d’entre eux sont peut-être déjà installés.

    $ sudo dnf install wget curl nano unzip yum-utils -y
    

Étape 1 – Configurer le pare-feu

La première étape consiste à configurer le pare-feu. Rocky Linux utilise le pare-feu Firewalld. Vérifie l’état du pare-feu.

$ sudo firewall-cmd --state
running

Le pare-feu fonctionne avec différentes zones, et la zone publique est celle que nous utiliserons par défaut. Fais la liste de tous les services et ports actifs sur le pare-feu.

$ sudo firewall-cmd --permanent --list-services

Il devrait afficher la sortie suivante.

cockpit dhcpv6-client ssh

Moodle a besoin des ports HTTP et HTTPS pour fonctionner. Ouvre-les.

$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --add-service=https --permanent

Recharge le pare-feu pour appliquer les modifications.

$ sudo firewall-cmd --reload

Étape 2 – Installe Docker et Docker Compose

Rocky Linux est livré avec une ancienne version de Docker. Pour installer la dernière version, installe d’abord le dépôt officiel de Docker.

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

Installe la dernière version de Docker.

$ sudo dnf install docker-ce docker-ce-cli containerd.io

Active et exécute le démon Docker.

$ sudo systemctl enable docker --now

Vérifie qu’il fonctionne.

 docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2022-08-20 22:35:19 UTC; 1s ago
     Docs: https://docs.docker.com
 Main PID: 82575 (dockerd)
    Tasks: 7
   Memory: 31.1M
   CGroup: /system.slice/docker.service
           ??82575 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
...

Par défaut, Docker nécessite les privilèges de root. Si tu veux éviter d’utiliser sudo à chaque fois que tu exécutes la commande docker, ajoute ton nom d’utilisateur au groupe docker.

$ sudo usermod -aG docker $(whoami)

Tu devras te déconnecter du serveur et te reconnecter en tant que même utilisateur pour activer cette modification ou utiliser la commande suivante.

$ su - ${USER}

Confirme que ton utilisateur est ajouté au groupe Docker.

$ groups
navjot wheel docker

Étape 3 – Installe Docker Compose

Docker Compose est disponible sous forme de plugin. Vérifie la dernière version de Docker compose disponible sur sa page de versions Github. Au moment de la rédaction de ce tutoriel, la dernière version disponible est 2.10.0.

Crée le répertoire pour les plugins Docker.

$ mkdir ~/.docker/cli-plugins -p

Télécharge le plugin Docker compose dans le répertoire.

$ curl -SL https://github.com/docker/compose/releases/download/v2.10.0/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose

Définis les autorisations pour rendre le plugin exécutable.

$ chmod +x ~/.docker/cli-plugins/docker-compose

Vérifie l’installation.

$ docker compose version

Tu recevras la sortie suivante.

Docker Compose version v2.10.0

Étape 4 – Installe RocketChat

Crée un répertoire pour stocker les fichiers Docker.

$ mkdir ~/rocketchat

Passe dans le répertoire.

$ cd ~/rocketchat

Crée et ouvre le fichier Docker compose de Rocketchat pour le modifier.

$ nano docker-compose.yml

Colle le code suivant dans ce fichier.

volumes:
  mongodb_data:
  rocketchat-uploads:

services:
  rocketchat:
    image: registry.rocket.chat/rocketchat/rocket.chat:5.0.4
    restart: on-failure
    volumes:
      - rocketchat-uploads:/app/uploads
    environment:
      MONGO_URL: mongodb://mongodb:27017/rocketchat?replicaSet=rs0
      MONGO_OPLOG_URL: mongodb://mongodb:27017/local?replicaSet=rs0
      ROOT_URL: https://rocketchat.example.com
      PORT: 3000
      DEPLOY_METHOD: docker
      Accounts_UseDNSDomainCheck: 'false'
      MAIL_URL: 'smtps://AmazonSESuser:[email protected]:587'
    depends_on:
      - mongodb
    expose:
      - 3000
    ports:
      - 3000:3000
    healthcheck:
      test: >
         /usr/local/bin/node -e '
         const http = require("http");
         const options = {
           host: "localhost",
           port: 3000,
           path: "/api/info",
           timeout: 2000
         };
         const healthCheck = http.request(options, (res) => {
           console.log(`HEALTHCHECK STATUS: $${res.statusCode}`);
           if (res.statusCode == 200) {
             process.exit(0);
           } else {
             process.exit(1);
           }
         });
         healthCheck.on("error", function (err) {
           console.error("ERROR");
           process.exit(1);
         });
         healthCheck.end();'
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 60s

  mongodb:
    image: bitnami/mongodb:4.4
    restart: on-failure
    volumes:
      - mongodb_data:/bitnami/mongodb
    environment:
      MONGODB_REPLICA_SET_MODE: primary
      MONGODB_REPLICA_SET_NAME: rs0
      MONGODB_PORT_NUMBER: 27017
      MONGODB_INITIAL_PRIMARY_HOST: mongodb
      MONGODB_INITIAL_PRIMARY_PORT_NUMBER: 27017
      MONGODB_ADVERTISED_HOSTNAME: mongodb
      MONGODB_ENABLE_JOURNAL: 'true'
      ALLOW_EMPTY_PASSWORD: 'yes'
    healthcheck:
      test: echo 'db.runCommand("ping").ok' | mongo mongodb:27017/test --quiet
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 60s

Enregistre le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque tu y es invité.

Lance le conteneur Docker.

$ docker compose up -d

Vérifie l’état des conteneurs pour t’assurer qu’ils fonctionnent correctement.

CONTAINER ID   IMAGE                                               COMMAND                  CREATED         STATUS                   PORTS                                       NAMES
59cd748e684f   registry.rocket.chat/rocketchat/rocket.chat:5.0.4   "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes (healthy)   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp   rocketchat-rocketchat-1
1fdabedf8681   bitnami/mongodb:4.4                                 "/opt/bitnami/script…"   2 minutes ago   Up 2 minutes (healthy)   27017/tcp                                   rocketchat-mongodb-1

Tu peux aussi utiliser la commande suivante pour vérifier le statut.

$ docker compose ps
NAME                      COMMAND                  SERVICE             STATUS              PORTS
rocketchat-mongodb-1      "/opt/bitnami/script…"   mongodb             running (healthy)   27017/tcp
rocketchat-rocketchat-1   "docker-entrypoint.s…"   rocketchat          running (healthy)   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp

À ce stade, tu peux vérifier ton installation en lançant l’URL http://rocketchat.example.com:3000 ou http://<serverIPaddress>:3000 dans le navigateur. L’étape suivante consiste à configurer SSL et à placer l’installation derrière un serveur proxy.

Étape 5 – Installer SSL

Pour installer un certificat SSL à l’aide de Let’s Encrypt, nous devons installer l’outil Certbot.

Tout d’abord, tu dois télécharger et installer le référentiel EPEL.

$ sudo dnf install epel-release

Exécute les commandes suivantes pour installer Certbot.

$ sudo dnf install certbot

Génère le certificat SSL.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d rocketchat.example.com

La commande ci-dessus téléchargera un certificat dans le répertoire /etc/letsencrypt/live/rocketchat.example.com de ton serveur.

Génère un certificat de groupe Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Crée un répertoire racine web de défi pour le renouvellement automatique de Let’s Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Crée une tâche Cron pour renouveler le SSL. Elle s’exécutera tous les jours pour vérifier le certificat et le renouveler si nécessaire. Pour cela, commence par créer le fichier /etc/cron.daily/certbot-renew et ouvre-le pour le modifier.

$ sudo nano /etc/cron.daily/certbot-renew

Colle le code suivant.

#!/bin/sh
certbot renew --cert-name rocketchat.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Enregistre le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque tu y es invité.

Change les autorisations sur le fichier de tâches pour le rendre exécutable.

$ sudo chmod +x /etc/cron.daily/certbot-renew

Étape 6 – Installe et configure Nginx

Nous allons installer la dernière version de Nginx. Crée et ouvre le fichier /etc/yum.repos.d/nginx.repo pour le modifier.

$ sudo nano /etc/yum.repos.d/nginx.repo

Colle les lignes suivantes dans ce fichier.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Enregistre le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque tu y es invité.

Installe Nginx.

$ sudo dnf install nginx

Vérifie l’installation.

$ nginx -v
nginx version: nginx/1.22.0

Active et démarre le service Nginx.

$ sudo systemctl enable nginx --now

Crée et ouvre le fichier /etc/nginx/conf.d/rocket.conf pour le modifier.

$ sudo nano /etc/nginx/conf.d/rocket.conf

Colle le code suivant dans ce fichier.

# Redirect all non-encrypted to encrypted
    server {
        listen 80;
        listen [::]:80;
        server_name rocketchat.example.com;
        return 301 https://$host$request_uri;
    }

# HTTPS Server
    server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name rocketchat.example.com;

        access_log /var/log/nginx/rocketchat_access.log main;
        error_log /var/log/nginx/rocketchat_error.log;

        ssl_certificate /etc/letsencrypt/live/rocketchat.example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/rocketchat.example.com/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/rocketchat.example.com/chain.pem;
        ssl_dhparam /etc/ssl/certs/dhparam.pem;
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:20m;
        ssl_session_tickets off;
        ssl_session_timeout 180m;
        ssl_stapling on;
        ssl_stapling_verify on;

        location / {
            proxy_pass http://rocketchat.example.com: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;
        }
    }

Une fois terminé, enregistre le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque tu y es invité. La configuration ci-dessus permet à Nginx d’agir comme un serveur proxy et de se lier au port 3000 sur localhost.

Ouvre le fichier /etc/nginx/nginx.conf pour le modifier.

$ sudo nano /etc/nginx/nginx.conf

Ajoute la ligne suivante avant la ligne include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Enregistre le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque tu y es invité.

Vérifie la syntaxe du fichier de configuration de Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Redémarre le service Nginx pour activer la nouvelle configuration.

$ sudo systemctl restart nginx

Étape 7 – Accéder à RocketChat et le configurer

Lance l’URL https://rocketchat.example.com dans ton navigateur et tu seras accueilli par l’écran de configuration suivant.

Écran de configuration de Rocket Chat

Remplis tes coordonnées d’administrateur et clique sur le bouton Suivant pour continuer. Ensuite, il te sera demandé de remplir les détails de ton organisation.

Configuration de l'organisation de Rocket Chat

Remplis les détails de ton organisation et clique sur le bouton Suivant pour continuer. Il te sera demandé d’enregistrer ton serveur de chat auprès de Rocket Cloud si tu veux avoir accès aux applications de la place de marché et à d’autres fonctions.

Inscription à Rocket Chat Cloud

Remplis les détails et clique sur Enregistrer si tu es intéressé. Sinon, clique sur le lien Continue as standalone pour continuer. Si tu t’es inscrit à Cloud, un mail de vérification sera envoyé.

Écran de vérification de Rocket Chat

Clique sur le lien dans le mail de vérification pour vérifier ton inscription.

Mail de vérification de Rocket Chat

Après vérification, tu seras dirigé vers le tableau de bord Rocket Chat.

Tableau de bord de Rocket Chat

Configurer les paramètres SMTP

Visite la page d’administration en cliquant sur ton image de profil en cliquant en haut à gauche de la page et en cliquant sur le lien Administration.

Menu du profil de Rocket Chat

Cliquez sur le lien Paramètres dans la barre latérale gauche.

Menu des paramètres de Rocket Chat

Sur la page des paramètres, tape Email dans le champ de recherche pour faire apparaître le bouton Email.

Bouton de réglage des e-mails de Rocket Chat

Clique sur le bouton Ouvrir sous la section Email pour ouvrir la page des paramètres de l’email. Sur la page suivante, développe la section SMTP de la page.

Paramètres SMTP de Rocket Chat

Renseigne les détails SMTP et clique sur le bouton Enregistrer les modifications en haut à droite pour activer le bouton Envoyer un mail de test à mon utilisateur. Tu seras invité à saisir ton mot de passe pour enregistrer les paramètres SMTP.

Pour notre tutoriel, nous utilisons Amazon SES comme expéditeur de courrier avec 587 comme port. Décoche le bouton au-dessus du bouton Pool. La fonction de ce bouton est d’ignorer TLS mais il n’est pas étiqueté correctement.

Tu devrais avoir reçu un mail de test similaire si tout a été configuré correctement.

Email de test de Rocket Chat

Connexion à Rocket.Chat Cloud

Pour utiliser les fonctions de Rocket.Chat Cloud, tu dois te connecter. Visite le menu Administration >> Services de connectivité et tu verras la page suivante.

Services de connectivité Rocket Chat

Clique sur le bouton Connexion à Rocket.Chat Cloud pour commencer le processus. Tu seras dirigé vers la page de connexion où il te sera demandé de renseigner l’identifiant de messagerie avec lequel tu t’es inscrit pendant le processus d’installation.

Connexion à Rocket.Chat Cloud

Clique sur le lien Envoyer la connexion pour continuer. Tu recevras un mail avec le lien de connexion.

Lien de connexion à Rocket.Chat

Clique sur le lien de connexion pour terminer le processus. Il te sera demandé d’autoriser ton serveur à se connecter avec le compte Cloud.

Autorisation du Cloud Rocket.Chat

Clique sur le bouton Autoriser pour continuer et revenir à la page des services de connectivité. Tu es maintenant connecté au cloud.

Connexion réussie à Rocket Chat Cloud

Installer et utiliser les applications Cloud de Rocket.Chat

Tu peux maintenant installer des applications Cloud via la page Administration >> Apps. Nous installons l’application GIPHY sur notre serveur. Clique sur le bouton Obtenir pour procéder à l’installation.

Installation de Rocket Chat Apps

Pour configurer l’application, clique sur le nom de l’application à partir de la page Apps et tu obtiendras la page de détails de l’application. De là, tu peux configurer les paramètres et commencer à utiliser l’application.

Paramètres de l'application Rocket Chat Giphy

Remplis les paramètres et clique sur le bouton Enregistrer les modifications pour terminer la configuration de l’application.

Retourne sur le tableau de bord de Rocket Chat et visite le tableau de messages. Pour utiliser l’application GIPHY, tape /giphy <search term> et tu verras de nombreux GIFs liés à ta requête.

Rocket Chat Recherche GIPHY

Appuie sur le bouton Entrée pour envoyer le GIF sur le tableau de messages.

Rocket Chat Message GIF

Étape 8 – Sauvegarde et restauration de Rocket Chat

Pour sauvegarder Rocket Chat, tu dois sauvegarder la base de données MongoDB.

Arrête le conteneur Docker.

$ docker compose down

Exécute la commande suivante pour répertorier le label de l’image docker MongoDB.

$ docker ps -a

Pour notre tutoriel, le label de l’image MongoDB est rocketchat_mongo_1. Exécute la commande suivante pour exporter la base de données dans un fichier.

$ docker exec rocketchat_mongo_1 sh -c 'mongodump --archive' > db.dump

Pour restaurer la base de données, utilise la commande suivante.

$ docker exec -i <database_name> sh -c 'mongorestore --archive' < db.dump

Étape 9 – Mettre à niveau Rocket Chat

La mise à niveau de Rocket Chat nécessite que tu suives certaines commandes. Les données ne sont pas affectées par le processus de mise à niveau. Tire la dernière version de l’image Rocket Chat.

$ docker pull registry.rocket.chat/rocketchat/rocket.chat:latest

Arrête le conteneur existant.

$ docker compose stop rocketchat

Supprime le conteneur existant.

$ docker compose rm rocketchat

Démarre Rocket Chat en créant un nouveau conteneur.

$ docker compose up -d rocketchat

Conclusion

Ceci conclut notre tutoriel sur l’installation du serveur Rocket.Chat sur une machine Rocky Linux 8. Si tu as des questions, poste-les dans les commentaires ci-dessous.

Vous aimerez aussi...