Mattermost è un sistema di messaggistica per la collaborazione tra team aziendali gratuito, open source e self-hosted. È scritto in Golang e React e utilizza MySQL/MariaDB/PostgreSQL come database back-end. Offre client desktop per Windows, macOS e Linux e applicazioni mobili per iOS e Android. È molto simile a Slack e riunisce tutte le comunicazioni del tuo team in un unico posto. Offre funzioni molto utili tra cui messaggistica individuale e di gruppo, condivisione di file, videochiamate, emoji personalizzati, webhook e comandi e molto altro.
In questo tutorial, ti mostreremo come installare Mattermost su CentOS 8.
Prerequisiti
- Un server che esegue CentOS 8.
- Sul tuo server è configurata una password di root.
Installa e configura il database MariaDB
Mattermost utilizza MariaDB/MySQL come backend di database. Quindi MariaDB deve essere installato sul tuo server. Se non è installato, puoi installarlo con il seguente comando:
dnf install mariadb-server -y
Una volta installato, avvia il servizio MariaDB e abilitalo all'avvio dopo il riavvio del sistema con il seguente comando:
systemctl start mariadb
systemctl enable mariadb
Per impostazione predefinita, MariaDB non è protetto e la password di root non è impostata in CentOS 8. Quindi puoi impostarla con il seguente comando:
mysql_secure_installation
Rispondi a tutte le domande come mostrato di seguito:
Enter current password for root (enter for none): Set root password? [Y/n] Y New password: Re-enter new password: Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
Una volta terminato, accedi a MariaDB con l'utente root:
mysql -u root -p
Fornisci la tua password di root, quindi crea un database e un utente per Mattermost con il seguente comando:
MariaDB [(none)]> CREATE DATABASE mattermostdb;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON mattermostdb.* TO [email protected] IDENTIFIED BY 'password';
Quindi, svuota i privilegi ed esci dalla shell MariaDB con il seguente comando:
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
Una volta terminato, puoi procedere al passaggio successivo.
Installa Mattermost
Innanzitutto, dovrai creare un utente separato per eseguire Mattermost. Puoi crearlo con il seguente comando:
useradd -d /opt/mattermost -U -M mattermost
Quindi, scarica l'ultima versione di Mattermost con il seguente comando:
wget https://releases.mattermost.com/5.21.0/mattermost-5.21.0-linux-amd64.tar.gz
Una volta completato il download, estrai il file scaricato con il seguente comando:
tar -xvzf mattermost-5.21.0-linux-amd64.tar.gz
Quindi, sposta la directory estratta in /opt con il seguente comando:
mv mattermost /opt/
Quindi, crea una directory di dati all'interno di mattermost e dai le autorizzazioni appropriate a mattermost con il seguente comando:
mkdir /opt/mattermost/data
chown -R mattermost:mattermost /opt/mattermost
chmod -R g+w /opt/mattermost
Una volta terminato, puoi procedere al passaggio successivo.
Configura Mattermost
Successivamente, dovrai definire il tuo database in Mattermost. Puoi farlo modificando il file config.json:
nano /opt/mattermost/config/config.json
Modifica le seguenti righe in base alle impostazioni del database:
"SqlSettings": { "DriverName": "mysql", "DataSource": "mattermost:[email protected](localhost:3306)/mattermostdb?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s",
Salva e chiudi il file quando hai finito. Quindi, cambia la directory in /opt/mattermost e avvia il server Mattermost con il seguente comando:
cd /opt/mattermost
sudo -u mattermost bin/mattermost
Una volta che il server è stato avviato correttamente, dovresti ottenere il seguente output:
{"level":"info","ts":1585379681.8383002,"caller":"utils/i18n.go:83","msg":"Loaded system translations","for locale":"en","from locale":"/opt/mattermost/i18n/en.json"} {"level":"info","ts":1585379681.83874,"caller":"app/server_app_adapters.go:58","msg":"Server is initializing..."} {"level":"info","ts":1585379681.8470004,"caller":"sqlstore/supplier.go:221","msg":"Pinging SQL","database":"master"} {"level":"info","ts":1585379684.7858346,"caller":"sqlstore/upgrade.go:112","msg":"The database schema version has been set","version":"5.21.0"} {"level":"error","ts":1585379690.8182986,"caller":"app/server_app_adapters.go:129","msg":"SiteURL must be set. Some features will operate incorrectly if the SiteURL is not set. See documentation for details: http://about.mattermost.com/default-site-url"} {"level":"info","ts":1585379690.821083,"caller":"app/license.go:39","msg":"License key from https://mattermost.com required to unlock enterprise features."}
Quindi, premi CTRL + C per arrestare il server Mattermost.
Crea un file di servizio Systemd per Mattermost
Successivamente, dovrai creare un file di servizio systemd per gestire il servizio Mattermost. Puoi crearlo con il seguente comando:
nano /etc/systemd/system/mattermost.service
Aggiungi le seguenti righe:
[Unit] Description=Mattermost After=syslog.target network.target mariadb.service [Service] Type=notify WorkingDirectory=/opt/mattermost User=mattermost ExecStart=/opt/mattermost/bin/mattermost PIDFile=/var/run/mattermost.pid TimeoutStartSec=3600 LimitNOFILE=49152 [Install] WantedBy=multi-user.target
Salva e chiudi il file quando hai finito. Quindi, ricarica il demone systemd con il seguente comando:
systemctl daemon-reload
Quindi, avvia il servizio Mattermost e abilitalo all'avvio dopo il riavvio del sistema con il seguente comando:
systemctl start mattermost
systemctl enable mattermost
Puoi anche verificare lo stato del servizio Mattermost con il seguente comando:
systemctl status mattermost
Dovresti ottenere il seguente output:
? mattermost.service - Mattermost Loaded: loaded (/etc/systemd/system/mattermost.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2020-03-28 03:17:07 EDT; 14s ago Main PID: 15204 (mattermost) Tasks: 21 (limit: 25028) Memory: 120.8M CGroup: /system.slice/mattermost.service ??15204 /opt/mattermost/bin/mattermost ??15214 plugins/com.mattermost.nps/server/dist/plugin-linux-amd64 Mar 28 03:17:07 centos8 mattermost[15204]: {"level":"info","ts":1585379827.1131086,"caller":"app/server.go:247","msg":"Printing current workin> Mar 28 03:17:07 centos8 mattermost[15204]: {"level":"info","ts":1585379827.1131282,"caller":"app/server.go:248","msg":"Loaded config","source">
A questo punto, il server Mattermost è in esecuzione e in ascolto sulla porta 8065. Puoi verificarlo con il seguente comando:
netstat -antup | grep 8065
Dovresti ottenere il seguente output:
tcp6 0 0 :::8065 :::* LISTEN 15204/mattermost
Configura Nginx come proxy inverso per Mattermost
È una buona idea installare e configurare Nginx come proxy inverso per prestazioni e sicurezza migliori.
Innanzitutto, installa il server web Nginx con il seguente comando:
dnf install nginx -y
Dopo aver installato il server web Nginx, avvia il servizio Nginx e abilitalo all'avvio dopo il riavvio del sistema con il seguente comando:
systemctl start nginx
systemctl enable nginx
Quindi, crea un nuovo file host virtuale Nginx per Mattermost con il seguente comando:
nano /etc/nginx/conf.d/mattermost.conf
Aggiungi le seguenti righe:
upstream mattermost { server 127.0.0.1:8065; keepalive 32; } proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mattermost_cache:10m max_size=3g inactive=120m use_temp_path=off; server { listen 80; server_name mattermost.example.com; location ~ /api/v[0-9]+/(users/)?websocket$ { proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; client_max_body_size 50M; 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_buffers 256 16k; proxy_buffer_size 16k; client_body_timeout 60; send_timeout 300; lingering_timeout 5; proxy_connect_timeout 90; proxy_send_timeout 300; proxy_read_timeout 90s; proxy_pass http://mattermost; } location / { client_max_body_size 50M; proxy_set_header Connection ""; 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_buffers 256 16k; proxy_buffer_size 16k; proxy_read_timeout 600s; proxy_cache mattermost_cache; proxy_cache_revalidate on; proxy_cache_min_uses 2; proxy_cache_use_stale timeout; proxy_cache_lock on; proxy_http_version 1.1; proxy_pass http://mattermost; } }
Salva e chiudi il file quando hai finito. Quindi, controlla Nginx per eventuali errori di sintassi con il seguente comando:
nginx -t
Dovresti ottenere il seguente output:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Infine, riavvia il servizio Nginx per applicare le modifiche:
systemctl restart nginx
A questo punto, il server web Nginx è configurato per servire Mattermost. Ora puoi procedere al passaggio successivo.
Configura SELinux e Firewalld
Per impostazione predefinita, SELinux è abilitato in CentOS 8. Si consiglia di disabilitarlo per Mattermost. Puoi disabilitarlo modificando il file /etc/selinux/config:
nano /etc/selinux/config
Trova la riga seguente:
SELINUX=enforcing
E sostituiscilo con la seguente riga:
SELINUX=permissive
Salva e chiudi il file quando hai finito. Quindi, riavvia il sistema per applicare le modifiche.
Successivamente, dovrai consentire la porta 80 tramite firewalld. Puoi consentirlo con il seguente comando:
firewall-cmd --add-service=http --permanent
Quindi, ricarica il firewalld per applicare le modifiche:
firewall-cmd --reload
Accedi all'interfaccia Web di Mattermost
Ora apri il tuo browser web e digita l'URL http://mattermost.example.com. Dovresti vedere la pagina di creazione dell'utente Mattermost:
Fornisci il tuo indirizzo email, nome utente, password e fai clic su Crea Account pulsante. Dovresti vedere la seguente pagina:
Quindi, fai clic su Crea una nuova squadra per creare la tua squadra Dovresti vedere la seguente pagina:
Fornisci il nome della tua squadra e fai clic su Avanti pulsante. Dovresti vedere la seguente pagina:
Fornisci l'URL del tuo team e fai clic su Fine per completare l'installazione. Dovresti vedere la dashboard Mattermost nella pagina seguente:
Conclusione
Congratulazioni! hai installato e configurato con successo Mattermost sul server CentOS 8. Ora puoi creare un team per la tua organizzazione e iniziare a collaborare con il tuo team.