Installa Mattermost con PostgreSQL su Ubuntu 16.04
introduzione
Mattermost è un sistema di messaggistica sul posto di lavoro per web, PC e telefoni. È un'alternativa open source a Slack.
Un'installazione completa di Mattermost è composta da tre componenti: il server Mattermost, un server proxy e un server di database. Ogni componente può essere installato sulla stessa macchina o su tre macchine diverse nella rete locale.
Questo tutorial spiega come installare Mattermost Team Edition su Ubuntu 16.04 con Nginx come server proxy e PostgreSQL come database.
Installa PostgreSQL
Sul server che ospiterà il database, eseguire il seguente comando:
apt install postgresql postgresql-contrib
Durante il processo di installazione verrà creato un nuovo utente, “postgres”. Quindi, alla fine, accedi con il comando:
sudo --login --user postgres
Avvia la shell PostgreSQL:
psql
Crea un nuovo database:
postgres=# CREATE DATABASE mattermost_db;
postgres=# CREATE USER mmuser WITH PASSWORD 'my_strong_password';
postgres=# GRANT ALL PRIVILEGES ON DATABASE mattermost_db to mmuser;
postgres=# \q
Esci da questo account e consenti a PostgresSQL di ascoltare su tutti gli IP assegnati, modificando il file
/etc/postgresql/9.3/main/postgresql.conf
Ecco, trova la linea
#listen_addresses = 'localhost'
decommentalo e cambia "localhost" in "*"; quindi, dopo aver modificato:
listen_addresses = *
Ricaricare il database con:
systemctl reload postgresql
Ora che il database è installato, è il momento di installare Mattermost Server.
Installa Mattermost Server
Scarica l'ultima versione di Mattermost Server con wget. In questo momento, questa è la 3.6.2:
wget https://releases.mattermost.com/3.6.2/mattermost-3.6.2-linux-amd64.tar.gz
Estrai l'archivio e spostalo in una cartella diversa; ad esempio, in questo esempio verrà archiviato Mattermost
/opt
:
mv mattermost /opt
Crea una directory di archiviazione, denominata "data", in questa cartella:
mkdir /opt/mattermost/data
La directory di archiviazione conterrà tutti i file e le immagini che gli utenti pubblicano su Mattermost, quindi è necessario che l'unità che la contiene sia sufficientemente grande.
Successivamente, crea un nuovo utente e un nuovo gruppo con entrambi i nomi
mattermost
:
useradd --system --user-group mattermost
Imposta l'utente e il gruppo Mattermost come proprietario dei file Mattermost con il comando:
sudo chown -R mattermost:mattermost /opt/mattermost
Dai i permessi al gruppo Mattermost:
sudo chmod -R g+w /opt/mattermost
Successivamente, configura il driver del database:
$EDITOR /opt/mattermost/config/config.json
In quel file, nella sezione "SqlSettings", modifica le righe "DriverName" e "DataSource" come segue:
"DriverName": "postgres"
"DataSource": "postgres://mmuser:[email :5432/mattermost_db?sslmode=disable&connect_timeout=10",
Salva ed esci. Testare la configurazione, utilizzando l'utente "mattermost":
sudo -u mattermost /opt/mattermost/bin/platform
Vedrai che Mattermost è in esecuzione su 127.0.0.1:8065. Smettila con
CTRL+c
Successivamente, crea un nuovo file di servizio più importante per systemd:
$EDITOR /etc/systemd/system/mattermost.service
E incolla in questo file il seguente testo:
[Unit]
Description=Mattermost, an open source alternative to Slack
After=network.target
After=postgresql.service
Requires=postgresql.service
[Service]
Type=simple
ExecStart=/opt/mattermost/bin/platform
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
User=mattermost
Group=mattermost
[Install]
WantedBy=multi-user.target
Salva ed esci. Poi:
systemd daemon-reload
Ora avvia il servizio:
systemctl start mattermost
Installa Nginx
Installa Nginx e configura Nginx come proxy inverso per Mattermost. Primo:
apt install nginx
Prossimo :
mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
Genera un nuovo file di certificato SSL autofirmato:
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/mattermost.crt -keyout /etc/nginx/ssl/mattermost.key
chmod 400 mattermost.key
Ciò creerà un nuovo certificato e ne modificherà le autorizzazioni.
Successivamente, crea un nuovo file di configurazione per la maggior parte dei casi
/etc/nginx/sites-available
:
$EDITOR /etc/nginx/sites-available/mattermost
e incollalo:
server {
listen 80;
server_name mattermost.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name mattermost.example.com;
ssl on;
ssl_certificate /etc/nginx/ssl/mattermost.crt;
ssl_certificate_key /etc/nginx/ssl/mattermost.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
location / {
gzip off;
proxy_set_header X-Forwarded-Ssl on;
client_max_body_size 50M;
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-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_pass http://127.0.0.1:8065;
}
}
Assicurati di personalizzare i valori per l'indirizzo IP del server Mattermost e l'FQDN per
server_name
Salva, esci e attiva l'host virtuale:
ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/
Testare la configurazione con:
nginx -t
e poi riavviarlo, in questo modo:
systemctl restart nginx
Prova e conclusione
L'ultima cosa da fare è una configurazione “grafica”. Con un browser web, vai all'URL Mattermost.example.com.
Lì, crea un nuovo account. Apparirà una dashboard in cui è possibile creare nuovi team e/o accedere alla console di amministrazione/sistema.
Questo è tutto ciò che serve per installare l'infrastruttura di messaggistica per Mattermost.