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!