Comment installer, configurer et déployer Rocket.Chat sur Ubuntu 14.04

introduction

http://rocket.chat [Rocket.Chat] est une application de messagerie open source construite avec Meteor. Il prend en charge les vidéoconférences, le partage de fichiers, les messages vocaux, possède une API complète, etc. Rocket.Chat est idéal pour ceux qui préfèrent avoir le plein contrôle de leurs communications.

Dans ce tutoriel, nous allons installer et configurer Rocket.Chat sur un nouveau serveur Ubuntu, ainsi que configurer un proxy inverse via Nginx pour renforcer la sécurité et faciliter l’accès à Rocket.Chat. Une fois que nous aurons terminé, vous aurez une instance fonctionnelle de Rocket.Chat accessible de pratiquement n’importe où.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de:

  • Un serveur Ubuntu 14.04 avec un minimum recommandé de 1 Go de RAM

  • Un utilisateur non root avec des privilèges sudo (Initial Initial Server Setup avec Ubuntu 14.04 explique comment configurer cela. )

  • Un domaine entièrement enregistré. Vous pouvez en acheter un sur https://namecheap.com [Namecheap] ou en obtenir un gratuitement sur Freenom.

  • Assurez-vous que votre nom de domaine est configuré pour pointer vers votre serveur. Consultez his tutorial si vous avez besoin d’aide.

  • Un certificat SSL. Générer un certificat auto-signé, https: // www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04[obtenez-en un gratuit de Let’s Encrypt] ou achetez-en un auprès d’un autre fournisseur.

Étape 1 - Installation des dépendances

Dans cette section, nous allons installer certaines dépendances de Rocket.Chat telles que MongoDB et NodeJS.

Commençons par obtenir MongoDB opérationnel. Premièrement, nous devons ajouter un serveur de clés pour pouvoir accéder aux packages.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10

Ensuite, nous devons définir le repo à utiliser.

echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list

Maintenant, mettez à jour les listes de paquets.

sudo apt-get update

Cela fait, nous pouvons installer «+ npm », « mongodb-org », « curl » et « graphicsmagick +», qui sont toutes des dépendances de Rocket.Chat:

sudo apt-get install npm mongodb-org curl graphicsmagick

Nous devons installer un package à l’aide de NPM pour nous permettre de changer la version du noeud:

sudo npm install -g n

Utilisez ce package pour changer la version du noeud en «+ 0.10.40 +».

sudo n 0.10.40

Nous allons ensuite installer Rocket.Chat lui-même et faire un peu de configuration.

Étape 2 - Installation de Rocket.Chat

Pour commencer, téléchargez la dernière version stable de Rocket.Chat en utilisant + curl +.

curl -L https://rocket.chat/releases/latest/download -o rocket.chat.tgz

Développez l’archive que nous venons de télécharger à l’aide de la commande + tar +.

tar zxvf rocket.chat.tgz

Cela développe toute l’archive dans un répertoire nommé + bundle +. Déplaçons le contenu du répertoire + bundle + dans quelque chose de plus facile à mémoriser.

mv bundle Rocket.Chat

Allez dans le répertoire où nous allons installer Rocket.Chat en utilisant NPM.

cd Rocket.Chat/programs/server

Installez Rocket.Chat.

npm install

Revenez dans le répertoire parent + Rocket.Chat +.

cd ../..

Nous devons configurer certaines variables d’environnement pour aider Rocket.Chat à garder trace d’éléments tels que les URL, les ports, etc.

Tout d’abord, définissez la variable + ROOT_URL + sur votre nom de domaine. Cela doit être sous la forme d’une URL.

export ROOT_URL=https:///

Définissez l’URL de MongoDB sous la variable + MONGO_URL +.

export MONGO_URL=mongodb://localhost:27017/rocketchat

Définissez la variable + PORT + sur + 3000 +.

export PORT=3000

Maintenant, vous pouvez exécuter Rocket.Chat en utilisant la commande suivante:

node main.js

S’il n’y a pas d’erreurs, cela fonctionne! Pour l’instant, arrêtez Rocket.Chat en utilisant + CTRL + C +. Maintenant que Rocket.Chat est installé, nous devons configurer Nginx pour qu’il utilise un proxy inversé pour tout son trafic, ce qui facilite l’accès à Rocket.Chat et le cryptage de toutes vos communications avec votre certificat SSL.

Étape 3 - Configuration d’un proxy inverse avec Nginx

Pour commencer, installez Nginx.

sudo apt-get install -y nginx

Déplacez la clé privée de votre certificat vers + / etc / nginx / certificate.key.

sudo cp  /etc/nginx/certificate.key

Par exemple, si vous créez un certificat Let’s Encrypt, vous utiliserez + sudo cp /etc/letsencrypt/live//privkey.pem / etc / nginx / certificate.key +.

Modifiez les autorisations de la clé afin que les voleurs non autorisés ne puissent pas y accéder.

sudo chmod 400 /etc/nginx/certificate.key

Copiez le certificat lui-même dans + / etc / nginx / certificate.crt +.

sudo cp  /etc/nginx/certificate.crt

Si vous avez créé un certificat Let’s Encrypt, la commande serait similaire à + ​​sudo cp /etc/letsencrypt/live//cert.pem / etc / nginx / certificate.crt +.

Nous allons créer une toute nouvelle configuration pour Rocket.Chat. Vous pouvez donc supprimer la configuration par défaut pour la rendre un peu plus facile.

sudo rm /etc/nginx/sites-enabled/default

Si vous avez besoin de récupérer ce fichier pour quelque raison que ce soit, il est toujours disponible à l’adresse + / etc / nginx / sites-available / default +

Créez un nouveau + / etc / nginx / sites-enabled / default + avec + nano + ou votre éditeur de texte préféré.

sudo nano /etc/nginx/sites-enabled/default

Premièrement, nous allons ajouter un bloc + amont +:

/ etc / nginx / sites-enabled / default

# Upstreams
upstream backend {
   server 127.0.0.1:3000;
}

Sous cela, créons un bloc + serveur +. La première partie indique à Nginx sur quel port écouter les connexions, dans ce cas +: 443 +. Cela permet également de savoir en quoi consiste notre nom d’hôte. N’oubliez pas de remplacer "++" par votre nom de domaine.

/ etc / nginx / sites-enabled / default

server {
   listen 443;
   server_name ;

En dessous, nous indiquons à Nginx où stocker les journaux d’accès de Rocket.Chat et le pointons sur le certificat SSL et la clé que nous avons placés dans + / etc / nginx / certificate.key + et + / etc / nginx / certificate.crt + respectivement.

/ etc / nginx / sites-enabled / default

   error_log /var/log/nginx/rocketchat.access.log;

   ssl on;
   ssl_certificate /etc/nginx/certificate.crt;
   ssl_certificate_key /etc/nginx/certificate.key;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # don’t use SSLv3 ref: POODLE

Et maintenant, nous finissons la configuration avec un bloc + location +:

   location / {
       proxy_pass http://: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-Forward-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forward-Proto http;
       proxy_set_header X-Nginx-Proxy true;

       proxy_redirect off;
   }
}

Voici le fichier complet pour référence:

/ etc / nginx / sites-enabled / default

server {
   listen 443;
   server_name ;
   error_log /var/log/nginx/rocketchat.access.log;

   ssl on;
   ssl_certificate /etc/nginx/certificate.crt;
   ssl_certificate_key /etc/nginx/certificate.key;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # don’t use SSLv3 ref: POODLE

   location / {
       proxy_pass http://: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-Forward-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forward-Proto http;
       proxy_set_header X-Nginx-Proxy true;

       proxy_redirect off;
   }
}

Enregistrez et quittez le fichier. Enfin, redémarrez Nginx pour terminer le travail.

sudo service nginx restart

Vérifiez si Nginx est en cours d’exécution.

sudo service nginx status

Si vous voyez le message suivant, Nginx est opérationnel:

* nginx is running

Si vous voyez un message d’erreur, consultez les journaux sur + / var / log / nginx / rocketchat.access.log + et + / var / log / nginx / access.log + ou les journaux des erreurs sur + / var / log / nginx / error.log + `. Vous pouvez également exécuter `+ nginx -t + pour vérifier votre fichier de configuration Nginx, où se trouvent la plupart des erreurs.

Assurez-vous que vous êtes toujours dans le dossier + Rocket.Chat +.

cd ~/Rocket.Chat

Ensuite, exécutez la commande suivante pour relancer Rocket.Chat.

node main.js

Rocket.Chat devrait maintenant être live à + ​​https: // +. Vous pouvez le vérifier en visitant cette adresse dans votre navigateur préféré.

Dans la section suivante, nous allons configurer Rocket.Chat pour qu’il s’exécute automatiquement au démarrage à l’aide d’un module de noeud appelé + forever-service +.

Étape 4 - Configuration de Rocket.Chat en tant que service

+ forever-service + génère automatiquement des scripts d’initialisation pour les applications de noeud telles que Rocket.Chat. Pour commencer, nous devons installer + forever + lui-même, ce dont dépend `` forever-service + `.

sudo npm install -g forever

Ensuite, installez + forever-service.

sudo npm install -g forever-service

Créez un service en utilisant + forever-service +:

sudo forever-service install -s main.js -e "ROOT_URL=https:/// MONGO_URL=mongodb://localhost:27017/rocketchat PORT=3000" rocketchat
  • Le drapeau + -s + suivi de + main.js + indique à jamais que notre script s’appelle + main.js +, et non + app.js +, qui est la valeur par défaut.

  • Le drapeau + -e + suivi de " ROOT_URL = https: /// MONGO_URL = mongodb: // localhost: 27017 / rocketchat PORT = 3000 " transmet nos variables d’environnement à toujours.

  • Enfin, + rocketchat + indique à forever-service comment nommer le service.

Pour plus d’informations sur la syntaxe de forever-service, exécutez + forever-service --help +.

Nous pouvons maintenant lancer Rocket.Chat. Cela initialisera le service + rocketchat + créé par + forever-service +.

sudo start rocketchat

Rocket.Chat devrait maintenant être en direct à l’URL que vous avez définie à l’étape 2. Assurez-vous que vous utilisez HTTPS ici.

Rocket.Chat devrait être est prêt à partir. Dans la section suivante, nous allons ajouter notre premier utilisateur administrateur à Rocket.Chat et faire le tour de l’interface.

Étape 5 - Configuration et utilisation de Rocket.Chat

Visitez l’URL que nous avons définie précédemment pour Rocket.Chat. Vous devriez voir quelque chose comme ça:

image: https: //assets.digitalocean.com/articles/rocket_chat/klJmqMA.png [page de connexion de Rocket.Chat]

Cliquez sur * Enregistrer un nouveau compte *, puis entrez les informations d’utilisateur pour votre premier administrateur.

image: https: //assets.digitalocean.com/articles/rocket_chat/DYO7MES.png [Enregistrement de Rocket.Chat]

Cliquez sur * Soumettre *, puis choisissez un nom d’utilisateur pour votre nouvel utilisateur:

image: https: //assets.digitalocean.com/articles/rocket_chat/sjw3Anc.png [Définir un nom d’utilisateur pour votre nouvel utilisateur]

Après avoir cliqué sur * Utiliser ce nom d’utilisateur *, vous serez redirigé vers la page d’accueil:

image: https: //assets.digitalocean.com/articles/rocket_chat/Ek3gIlH.png [page d’accueil de Rocket.Chat]

C’est tout! Vous verrez à droite, un canal * # général * a déjà été créé pour vous. Si vous cliquez dessus, vous serez dirigé vers la salle de discussion. N’hésitez pas à jouer un peu.

image: https: //assets.digitalocean.com/articles/rocket_chat/JHXi3Au.png [La salle de discussion #general par défaut]

Voyons maintenant l’interface. Commençons par créer une nouvelle chaîne en cliquant sur le petit bouton plus situé à côté de * Chaînes *:

image: https: //assets.digitalocean.com/articles/rocket_chat/2eCYawM.png [Créer un nouveau canal]

Nommez-le comme vous le souhaitez:

image: https: //assets.digitalocean.com/articles/rocket_chat/bLTOD84.png [entrez la description de l’image ici]

Maintenant, cliquez sur * Enregistrer * et vous serez redirigé vers votre nouveau canal.

Pour accéder à l’interface d’administration, cliquez sur la petite flèche en regard de votre nom d’utilisateur. Il va dérouler un menu:

image: https: //assets.digitalocean.com/articles/rocket_chat/54LxGdj.png [En utilisant ce menu, vous pouvez définir votre statut et accéder à des éléments tels que le menu Administration.]

Cliquez sur * Administration *. Il fera apparaître un deuxième menu:

image: https: //assets.digitalocean.com/articles/rocket_chat/LPrzgYZ.png [Ceci est le menu Administration.]

En utilisant ce menu, nous pouvons configurer et gérer tous les aspects de notre installation Rocket.Chat. Dans la section * Utilisateurs *, nous pouvons gérer les autorisations d’utilisateurs individuels et même en inviter de nouvelles. Nous pouvons également ajouter d’autres fonctionnalités à notre installation à l’aide de la vue * Intégrations *.

Conclusion

Toutes nos félicitations! Vous avez maintenant votre propre solution de chat pour vous et votre équipe: Rocket.Chat, fonctionnant sur un serveur Ubuntu 14.04. Il est configuré pour se lancer automatiquement au démarrage en utilisant + forever-service + et est entièrement équipé de SSL en utilisant un proxy inverse Nginx. Vous pouvez maintenant ajouter d’autres membres, créer plus de canaux ou peut-être consulter la section Intégrations du menu Administration. S’amuser!