projet_serveur_krkn/applicatif/zone_interne/rocket_chat.md

6.1 KiB

Installation de Rocket Chat

Sur un container dédié (CT113)

Le proxy

/root/.wgetrc

http_proxy = http://10.0.0.252:3128/
https_proxy = http://10.0.0.252:3128/
use_proxy = on

/etc/apt/apt.conf.d/01proxy

Acquire::http {
 Proxy "http://10.0.0.252:9999";
};

Installation des prérequis

apt-get update
apt-get install -y curl software-properties-common gnupg2

MongoDB

wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | apt-key add -
echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main" | tee /etc/apt/sources.list.d/mongodb-org.list

Node JS

export http_proxy=http://10.0.2.252:3128/
export https_proxy=$http_proxy
curl -sL https://deb.nodesource.com/setup_12.x |bash -

Ajout des packets

apt-get install -y build-essential mongodb-org nodejs graphicsmagick nginx
npm install -g inherits n && n 12.14.0

Configuration des packets

echo -e "replication:\n  replSetName: \"rs01\"" | tee -a /etc/mongod.conf
systemctl enable mongod.service
systemctl start mongod.service

mongo
 > rs.initiate()
 > rs01:SECONDARY> exit
 > rs01:PRIMARY> exit

Mise en place de Rocket Chat

Création d'un utilisateur dédié, installation du programme et création d'un daemon systemd

Installation du programme

useradd -r -m -U -d /srv/rocketchat rocketchat
su - rocketchat
export http_proxy=http://10.0.2.252:3128/
export https_proxy=$http_proxy
npm config set proxy http://10.0.2.252:3128
npm config set https-proxy http://10.0.2.252:3128
curl -L https://releases.rocket.chat/latest/download -o rocket.chat.tgz
tar xvf rocket.chat.tgz
rm rocket.chat.tgz
cd bundle/programs/server && npm install
cd ../../..
mv bundle Rocket.Chat
exit

En root

chown -R rocketchat:rocketchat /srv/rocketchat/Rocket.Chat/

Daemon Systemd

/etc/systemd/system/rocketchat.service

[Unit]
Description=The Rocket.Chat server
After=network.target remote-fs.target nss-lookup.target nginx.target mongod.target

[Service]
ExecStart=/usr/local/bin/node /srv/rocketchat/Rocket.Chat/main.js
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocketchat
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 ROOT_URL=http://localhost:3000/ PORT=3000

[Install]
WantedBy=multi-user.target

Accès à Rocket Chat depuis l'extérieur

Pour ma configuration j'ai un HAProxy puis un reverse global et ensuite un reverse local au container RocketChat. Pour que l'application mobile puisse fonctionner il faut une configuration spéciale des nginx. Le SSL ce fait au niveau de HAProxy.

Pour le reverse global

/etc/nginx/sites-available/rocketchat

server {
    listen 80;
    server_name rocket.sessionkrkn.fr;
    location / {
        proxy_pass http://10.0.2.13:80/;
        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;
    }
}
sh ~/deploy-webhost.sh rocketchat

Pour le reverse local

Pour des raisons de sécurité on va mettre en place un proxy NGINX dans le container pour eviter d'exposer le port 3000 aux autres conteneurs.

/etc/nginx/sites-available/rocketchat

upstream backend {
    server 127.0.0.1:3000;
}

server {
    listen 80;
    server_name rocket.sessionkrkn.fr;
    client_max_body_size 200M;
    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-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forward-Proto http;
        proxy_set_header X-Nginx-Proxy true;
        proxy_redirect off;
    }
}
rm /etc/nginx/{sites-available,sites-enabled}/default
ln -s /etc/nginx/sites-available/rocketchat /etc/nginx/sites-enabled

Configuration du LDAP

Nous allons relier Rocket Chat à l'annuaire LDAP en faisant en sorte que tout le monde est accès à ce service.

Dans l'onglet LDAP du panel d'administration

Cocher / Modifier

  • Activer
  • Login Fallback
  • Rechercher un utilisateur après la connexion
  • Hôte vip.ldap.krhacken.org
  • Port 389
  • Rebranchez
  • Chiffrement StartTLS
  • Mettez le Certificat CA
  • Décocher Rejeter les personnes non autorisées
  • DN de base ou=krhacken,ou=people,dc=krhacken,dc=org
  • Niveau de journal interne Erreur

Sauvegarder et tester la connexion

Authentification

  • Permettre
  • DN utilisateur cn=viewer,ou=system,dc=krhacken,dc=org

Sync / Import

  • Champs du nom d'utilisateur diplayName
  • Champ de l'identifiant unique uid
  • Domaine par défaut sessionkrkn.fr
  • Fusionner les utilisateurs existants
  • Synchronisation des données
  • Liste des champs utilisateur {"cn":"name", "mail":"email"}

Sauvegarder et exécuter la synchronisation

Chercher un utilisateur

  • Filtre (objectclass=*)
  • Champ de recherche uid

Sauvegarder et Exécuter la synchronisation

Normalement les utilisateurs sont disponible dans l'onglet Utilisateurs.

Configuration de l'interface

On interdit ici la modification des champs LDAP (or nom d'affichage qui sera modifié localement) ainsi que la création de comptes.

Aller dans Comptes et cocher uniquement

  • Autoriser la modification de profil
  • Autoriser le changement d'avatar
  • Permettre le changement de nom
  • Autoriser les status personnalisés
  • Autoriser les notifications hors-ligne par e-mail

Enregistrement

  • Mettre Formulaire d'inscription à Désactivé
  • Décocher Réinitialisation du mot de passe

Sauvegarder les modifications

C'est tout pour l'instant.

TDL

  • Solutions de Visio WebRC ou Jitsi
  • Link Mail