Rocket.Chat est une plateforme de chat open-source et particulièrement complète. Vous pouvez aussi bien l’utiliser pour créer une chat-room, avec une gestion des utilisateurs et des permissions, que pour proposer un live chat via un widget sur votre site web.
Cette plateforme est d’autant plus intéressante que vous pouvez la déployer en utilisant les “snaps” sur Ubuntu. Ainsi vous n’aurez pas besoin d’installer/configurer NodeJS ou MongoDB.
Installer Rocket.chat avec un snap
L’installation se fait via une seule ligne de commande :
sudo snap install rocketchat-server
Votre instance Rocket.Chat sera alors accessible à l’adresse : http://IP-de-VOTRE-SERVEUR:3000
.
Mettre en place un reverse-proxy avec Nginx
Il est préférable de mettre en place un reverse-proxy pour accéder à l'interface de Rocket.Chat via un port standard et d'utiliser un certificat SSL pour sécuriser les échanges. Nous allons pour cela installer Nginx et générer un certificat SSL via Let’s Encrypt.
Commençons par installer Nginx :
apt update && apt install nginx
On créer ensuite notre vhost dans /etc/nginx/sites-available/ :
nano /etc/nginx/sites-available/chat.votredomaine.tld
Dont voici le contenu :
# redirection http vers https
server {
listen 80;
listen [::]:80;
server_name chat.votredomaine.tld;
return 301 https://chat.votredomaine.tld;
}
# Upstream
upstream backend {
server 127.0.0.1:3000;
}
# HTTPS Server
server {
server_name chat.votredomaine.tld;
error_log /var/log/nginx/rocketchat.access.log;
location / {
proxy_pass http://backend/;
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-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forward-Proto http;
proxy_set_header X-Nginx-Proxy true;
proxy_redirect off;
}
# permet de stocker la configuration ssl dans le répertoire du site
include /var/www/votredomaine.tld/conf/nginx/*conf;
}
Pour activer ce vhost, on créer un lien symbolique vers le répertoire /etc/nginx/sites-enabled
avec la commande :
ln -s /etc/nginx/sites-available/chat.votredomaine.tld /etc/nginx/sites-enabled/
Puis on relance Nginx :
service nginx reload
Obtenir un certificat SSL Let's Encrypt avec acme.sh
Il ne nous reste plus qu’à générer le certificat via Let’s Encrypt, on installe donc acme.sh :
wget -O - https://get.acme.sh | sh
sudo source ~/.bashrc
Puis on génère le certificat pour notre sous-domaine.
acme.sh --issue -d chat.votredomaine.tld --pre-hook "systemctl stop nginx" --standalone --post-hook "systemctl start nginx" --ecc -k ec-384
On créer un répertoire pour stocker notre certificat :
mkdir -p /etc/letsencrypt/live/chat.votredomaine.tld
Puis on installe le certificat dans ce répertoire :
acme.sh --install-cert -d chat.votredomaine.tld --ecc \
--cert-file /etc/letsencrypt/live/chat.votredomaine.tld/cert.pem \
--key-file /etc/letsencrypt/live/chat.votredomaine.tld/key.pem \
--fullchain-file /etc/letsencrypt/live/chat.votredomaine.tld/fullchain.pem \
--ca-file /etc/letsencrypt/live/chat.votredomaine.tld/ca.pem \
--reloadcmd "systemctl restart nginx.service"
On termine en ajoutant le certificat SSL à notre configuration Nginx, pour cela nous allons créer le fichier /var/www/chat.votredomaine.tld/conf/nginx/ssl.conf
qui sera automatiquement ajouté dans notre vhost grâce à la directive include /var/www/chat.votredomaine.tld/conf/nginx/*conf;
. Voici son contenu:
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /etc/letsencrypt/live/chat.votredomaine.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/chat.votredomaine.tld/key.pem;
ssl_trusted_certificate /etc/letsencrypt/live/chat.votredomaine.tld/ca.pem;
La dernière étape pour pouvoir accéder à l'instance Rocket.Chat est d'appliquer la configuration avec la commande :
service nginx reload
Vous pourrez alors accéder à votre instance via l'adresse https://chat.votredomaine.tld. Pour accéder au panel d'administration de Rocket.chat, il vous faudra créer un premier compte utilisateur qui sera automatiquement définit en tant qu'administrateur.
Commentaires