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.
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.
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.
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é.
Clique sur le lien dans le mail de vérification pour vérifier ton inscription.
Après vérification, tu seras dirigé vers le tableau de bord 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.
Cliquez sur le lien Paramètres dans la barre latérale gauche.
Sur la page des paramètres, tape Email dans le champ de recherche pour faire apparaître le bouton Email.
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.
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.
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.
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.
Clique sur le lien Envoyer la connexion pour continuer. Tu recevras un mail avec le lien de connexion.
Clique sur le lien de connexion pour terminer le processus. Il te sera demandé d’autoriser ton serveur à se connecter avec le compte Cloud.
Clique sur le bouton Autoriser pour continuer et revenir à la page des services de connectivité. Tu es maintenant connecté au 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.
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.
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.
Appuie sur le bouton Entrée pour envoyer le GIF sur le tableau de messages.
É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.