Installer Rocket.chat sur Ubuntu 18.04 LTS

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

licence creative common

L’ensemble des articles publiés sur jesuisadmin.fr sont mis à disposition
selon les termes de la licence CC BY-NC-SA 4.0.

Article précédent Article suivant