Installation de MatterMost sur CentOS 7

mattermost

Mattermost est un serveur de discussion Open Source sous licence MIT. Il est très similaires à d'autres outils de groupware tel que Slack ou HipChat.
Nous allons nous intéresser à son installation sur un serveur CentOS 7.

Préambule

Nous allons partir d'une installation minimale de CentOS 7 afin de garantir le succès de la procédure. Nous allons également commencer par nous assurer que notre serveur CentOS est à jour. Pour celà, nous allons lancer la commande suivante : 

sudo yum -y update

Nous aurons besoin de la commande wget pour la suite des opérations, nous allons donc l'installer :

sudo yum -y install wget

Ajout de son utilisateur aux sudoers (si ce n'est pas déjà fait), ce sera plus pratique pour la suite des opérations :

sudo usermod -aG wheel <utilisateur>

Installation de PostgreSQL

Mattermost supporte MySQL (MariaDB) et PostgreSQL. Pour ce tutoriel, nous allons utiliser PostgreSQL, mais vous pouvez très bien décider d'installer MySQL à la place si tel est votre choix.

On commence par configurer le dépôt officiel de PostgreSQL. Pour cette installation, nous allons utiliser la version 9.4 de PostgreSQL.

sudo wget https://download.postgresql.org/pub/repos/yum/9.4/redhat/rhel-7-x86_64/pgdg-redhat94-9.4-3.noarch.rpm
sudo yum localinstall pgdg-redhat94-9.4-3.noarch.rpm

Afin de ne pas poser de problèmes de compatibilité entre les dépôts lors des mises à jour ultérieures, nous allons exclure postgresql des dépôts officiels de CentOS.
Pour ce faire, nous allons devoir modifier le fichier /etc/yum.repos.d/CentOS-Base.repo afin d'ajouter exclude=postgresql* dans les sections [base] et [updates].

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
exclude=postgresql*

#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
exclude=postgresql*

Nous pouvons maintenant procéder à l'installation :

sudo yum -y install postgresql94-server postgresql94-contrib

Il faut ensuite procéder à l'initialisation de la base de données :

sudo /usr/pgsql-9.4/bin/postgresql94-setup initdb

Si tout c'est bien passé, vous devriez voir le message suivant :

Initializing database ... OK

Par défaut, PostgreSQL n'accepte pas l'authentification à l'aide de mot de passe. Nous allons changer cela en modifiant le fichier de configuration /var/lib/pgsql/9.4/data/pg_hba.conf. Intéressons-nous aux lignes suivantes qui doivent se trouver à la fin du fichier :

# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

Nous devons remplacer ident par md5 pour obtenir ceci :

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

Nous devons maintenant nous assurer que PostgreSQL sera lancé à chaque démarrage du serveur, nous en profitions pour le lancer également :

sudo systemctl enable postgresql-9.4.service
sudo systemctl start postgresql-9.4.service

Configuration de la base de données

On commence par ouvrir une session avec l'utilisateur créé lors de l'installation.

sudo su - postgres
sudo psql

Ensuite on crée la base de donnée

postgres=# CREATE DATABASE mattermost;

Puis l'utilisateur auquel on accorde les droits sur la nouvelle base de donnée

postgres=# CREATE USER mmuser WITH PASSWORD 'mm_password';
postgres=# GRANT ALL PRIVILEGES ON DATABASE mattermost to mmuser;

On peut ensuite quitter PostgreSQL et le shell ouvert avec le compte postgres

postgre=# \q
exit

Il faut maintenant modifier le fichier /var/lib/pgsql/9.4/data/postgresql.conf afin d'autoriser PostgreSQL à écouter sur toutes les adresses IP.
Il faut décommenter la ligne suivante et remplacer 'localhost' par '*'.

#listen_addresses = 'localhost'

A la fin de l'opération, vous devriez avoir :

listen_addresses = '*'

On redémarre ensuite le serveur de base de données afin de prendre en compte la nouvelle configuration.

sudo systemctl restart postgresql-9.4.service

On vérifie que l'on peut se connecter à la base de donnée :

sudo psql --host=localhost --dbname=mattermost --username=mmuser --password

Installation de Mattermost

On télécharge la dernière version serveur de Mattermost. Remplacez dans la commande suivante les X.X.X avec le numéro de la version que vous souhaitez télécharger :

wget https://releases.mattermost.com/X.X.X/mattermost-X.X.X-linux-amd64.tar.gz

On extrait ensuite les fichiers d'installations de l'archive nouvellement téléchargée.

tar -xvzf *.gz

Puis on déplace le répertoire résultant dans le dossier /opt.

sudo mv mattermost /opt

On crée ensuite un utilisateur et un groupe qui serviront à exécuter le service Mattermost :

sudo useradd --system --user-group mattermost
sudo chown -R mattermost:mattermost /opt/mattermost
sudo chmod -R g+w /opt/mattermost

Fichier de configuration de Mattermost

Nous devons configurer Mattermost afin qu'il puisse se connecter à la base de données. Pour cela, nous allons modifier le fichier /opt/mattermost/config/config.json. Recherchez la section SqlSettings, qui doit se présenter de la manière suivante :

"SqlSettings": {
        "DriverName": "mysql",
        "DataSource": "mmuser:mostest@tcp(dockerhost:3306)/mattermost_test?charset=utf8mb4,utf8",
        "DataSourceReplicas": [],
        "MaxIdleConns": 20,
        "MaxOpenConns": 300,
        "Trace": false,
        "AtRestEncryptKey": ""
    },

Nous allons changer le DriverName pour indiquer que nous utilisons PostgreSQL :

"DriverName": "postgres",

Puis nous allons modifier la ligne DataSource avec la chaine de connexion nécessaire pour notre base de données PostgreSQL :

"postgres://mmuser:mm_password@localhost:5432/mattermost?sslmode=disable&connect_timeout=10",

On teste maintenant que tout fonctionne :

cd /opt/mattermost/bin
sudo -u mattermost ./platform

Si tout va bien, vous devriez avoir une sortie comme celle-ci :

[2017/06/08 00:01:36 CEST] [INFO] Loaded system translations for 'en' from '/opt/mattermost/i18n/en.json'
[2017/06/08 00:01:36 CEST] [INFO] Current version is 3.6.0 (3.6.7/Thu Apr 27 08:19:06 UTC 2017/584146b9b9b5df2/none)
[2017/06/08 00:01:36 CEST] [INFO] Enterprise Enabled: false
[2017/06/08 00:01:36 CEST] [INFO] Current working directory is /opt/mattermost/bin
[2017/06/08 00:01:36 CEST] [INFO] Loaded config file from /opt/mattermost/config/config.json
[2017/06/08 00:01:36 CEST] [INFO] Server is initializing...
[2017/06/08 00:01:36 CEST] [INFO] Pinging SQL master database
[2017/06/08 00:01:37 CEST] [INFO] The database schema has been set to version 3.6.0
[2017/06/08 00:01:37 CEST] [INFO] Starting 4 websocket hubs
[2017/06/08 00:01:37 CEST] [INFO] Starting Server...
[2017/06/08 00:01:37 CEST] [INFO] Server is listening on :8065

Si tout va bien, vous pouvez arrêter le serveur en appuyant sur [CTRL] + [C].

Configuration du service

Pour que Mattermost se lance automatiquement, nous devons créer un service.

Il faut d'abord créer le fichier de configuration du service :

sudo touch /etc/systemd/system/mattermost.service

Le contenu doit être le suivant :

[Unit]
Description=Mattermost
After=syslog.target network.target postgresql-9.4.service

[Service]
Type=simple
WorkingDirectory=/opt/mattermost/bin
User=mattermost
ExecStart=/opt/mattermost/bin/platform
PIDFile=/var/spool/mattermost/pid/master.pid
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target

Nous devons rendre ce fichier exécutable :

sudo chmod 664 /etc/systemd/system/mattermost.service

Il faut ensuite recharger systemd afin qu'il s'apperçoive qu'un nouveau service est disponible :

sudo systemctl daemon-reload

On peut ensuite configurer le démarrage du service et le lancer :

sudo systemctl enable mattermost.service
sudo systemctl start mattermost.service

Configuration du Pare-Feu

Il nous reste à ouvrir le port 8065 afin que notre serveur Mattermost soit accessible de l'extérieur :

sudo firewall-cmd --permanent --zone=public --add-port=8065/tcp
sudo firewall-cmd --reload

Aucun commentaire

No module Published on Offcanvas position