Come installare Mattermost su Rocky Linux 9
In questa pagina
- Prerequisiti
- Installazione di PostgreSQL e Nginx
- Apertura delle porte HTTP e HTTPS
- Creazione utente e database PostgreSQL
- Scaricamento di Mattermost
- Configurazione di Mattermost con PostgreSQL
- Esecuzione di Mattermost come servizio systemd
- Configurazione di Nginx come proxy inverso
- Creazione del primo spazio di lavoro con Mattermost
- Conclusione
Mattermost è un sistema di messaggistica open source e self-hosted per la tua organizzazione. È un'alternativa a servizi come Slack e Microsoft Teams. Mattermost combina molteplici funzionalità, tra cui condivisione di file, ricerca, automazione e numerose integrazioni di terze parti. È una piattaforma di collaborazione e un sistema di messaggistica per la tua organizzazione interna e le aziende.
Questa guida ti insegna come installare Mattermost sul server Rocky Linux 9. Configurerai Mattermost con PostgreSQL come database e Nginx come proxy inverso, quindi creerai il primo spazio di lavoro in Mattermost.
Prerequisiti
Andando avanti, assicurati di avere i seguenti requisiti:
- Un server Rocky Linux 9
- Un utente non root con privilegi di amministratore
- Un nome di dominio puntava all'indirizzo IP del server
- SELinux con lo stato permissivo
- Firewall abilitato
Installazione di PostgreSQL e Nginx
In questa sezione installerai le dipendenze per Mattermost, che include il server PostgreSQL, il server web Nginx e Certbot. Aggiungerai anche il repository EPEL e abiliterai il modulo repository per PostgreSQL 16.
Innanzitutto, esegui il comando 'dnf' di seguito per aggiungere il repository EPEL al tuo sistema.
sudo dnf install epel-release -y
Quindi abilitare il modulo del repository PostgreSQL 16 con quanto segue.
sudo dnf module enable postgresql:16
Ora installa dipendenze come PostgreSQL, server web Nginx e Certbot come dipendenze per Mattermost. Inserisci 'Y' per confermare l'installazione.
sudo dnf install postgresql-server postgresql-contrib nginx certbot wget curl
Per il server PostgreSQL, per farlo funzionare, eseguire il comando seguente per inizializzare la directory dei dati PostgreSQL.
sudo /usr/bin/postgresql-setup --initdb
Successivamente, esegui il comando 'systemctl' di seguito per avviare e abilitare il servizio 'postgresql'. Quindi, verificalo per assicurarti che PostgreSQL sia in esecuzione.
sudo systemctl enable --now postgresql
sudo systemctl status postgresql
L'output seguente mostra che il server PostgreSQL è abilitato e in esecuzione.
Infine, avvia e abilita il server web Nginx con il comando seguente. E poi, controlla il servizio Nginx.
sudo systemctl enable --now nginx
sudo systemctl status nginx
Come visto di seguito, Nginx è in esecuzione e abilitato.
Apertura delle porte HTTP e HTTPS
Dopo aver installato le dipendenze, devi aprire entrambe le porte HTTP e HTTPS sul tuo sistema. Su Rocky Linux utilizzerai firewalld, gestito tramite l'utilità 'firewall-cmd'.
Apri entrambi i servizi HTTP e HTTPS su firewalld utilizzando il comando "firewall-cmd" di seguito. Una volta aggiunto, vedrai l'output "successo".
sudo firewall-cmd --add-service={http,https} --permanent
Ora ricarica il firewalld con quanto segue per applicare le nuove regole.
sudo firewall-cmd --reload
Infine, controlla le regole sul tuo firewalld utilizzando il comando seguente. Vedrai che sia i servizi HTTP che HTTPS sono abilitati in firewalld.
sudo firewall-cmd --list-all
Creazione utente e database PostgreSQL
In questa sezione imposterai il metodo di autenticazione PostgreSQL su "scram-sha-256", quindi creerai un nuovo database e un nuovo utente che verranno utilizzati da Mattermost tramite "psql" o shell PostgreSQL.
Per modificare il metodo di autenticazione della password predefinito, aprire la configurazione PostgreSQL '/var/lib/pgsql/data/pg_hba.conf' con l'editor 'nano'.
sudo nano /var/lib/pgsql/data/pg_hba.conf
Modifica il metodo di autenticazione predefinito per le connessioni localhost con 'scram-sha-256' come segue:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
# IPv6 local connections:
host all all ::1/128 scram-sha-256
Salvare il file ed uscire dall'editor.
Ora esegui il comando 'systemctl' di seguito per riavviare PostgreSQL e applicare le modifiche.
sudo systemctl restart postgresql
Dopo aver configurato PostgreSQL, creerai un nuovo database e un nuovo utente per Mattermost.
Accedi al server PostgreSQL con il comando 'psql' riportato di seguito.
sudo -u postgres psql
Ora esegui le seguenti query per creare un nuovo database 'mattermost', un nuovo utente 'mmuser' con la password 'password'.
CREATE DATABASE mattermost;
CREATE USER mmuser WITH PASSWORD 'password';
GRANT ALL ON DATABASE mattermost TO mmuser;
ALTER DATABASE mattermost OWNER TO mmuser;
GRANT USAGE, CREATE ON SCHEMA PUBLIC TO mmuser;
Controlla l'elenco dei database e degli utenti nel tuo PostgreSQL con quanto segue: vedrai il database "mattermost" e l'utente "mmuser" creato.
\l
\du
Digita "quit" per uscire dal server PostgreSQL.
Successivamente, esegui il comando "psql" di seguito per accedere al server PostgreSQL con "mmuser" al database "mattermost". Inserisci la tua password quando richiesto.
sudo -u postgres psql --host=localhost --dbname=mattermost --username=mmuser --password
In caso di successo, controlla lo stato della connessione con la seguente query. Vedrai che sei connesso al database "mattermost" utilizzando "mmuser".
\conninfo
Infine, digita "esci" per uscire.
Scaricamento di Mattermost
Ora che hai configurato PostgreSQL, creerai un nuovo utente, scaricherai il codice sorgente di Mattermost e quindi configurerai la directory di installazione di Mattermost.
Prima di scaricare Mattermost, esegui il comando seguente per aggiungere un nuovo utente "mattermost" al tuo sistema.
sudo useradd --system --user-group mattermost
Scarica il codice sorgente di Mattermost con il comando 'wget' ed estrailo utilizzando il comando 'tar' riportato di seguito. Il codice sorgente di Mattermost verrà estratto nella directory "mattermost".
wget https://releases.mattermost.com/10.0.1/mattermost-10.0.1-linux-amd64.tar.gz
tar xf mattermost-10.0.1-linux-amd64.tar.gz
Sposta la directory "mattermost" in "/opt" e crea una nuova directory "data" sopra di essa. In questo caso, Mattermost verrà installato nella directory '/opt/mattermost'.
mv mattermost /opt/
mkdir -p /opt/mattermost/data
Infine, esegui il comando seguente per modificare la proprietà della directory "/opt/mattermost" impostandola sull'utente "mattermost". Inoltre, assicurati che il gruppo "mattermost" disponga dell'accesso in lettura e scrittura.
sudo chown -R mattermost:mattermost /opt/mattermost
sudo chmod g+rw /opt/mattermost
Configurazione di Mattermost con PostgreSQL
In questa sezione configurerai Mattermost con PostgreSQL. Modificherai il file di configurazione di Mattermost '/opt/mattermost/config/config.json', imposterai un nome di dominio per Mattermost e quindi aggiungerai il tuo database PostgreSQL a Mattermost.
Apri la configurazione Mattermost predefinita "/opt/mattermost/config/config.json" utilizzando l'editor "nano".
sudo nano /opt/mattermost/config/config.json
Modifica il valore predefinito "SiteURL" con il nome del tuo dominio Mattermost. In questo caso, utilizzeremo un nome di dominio 'https://space.howtoforge.local'.
"ServiceSettings": {
"SiteURL": "https://mattermost.howtoforge.local",
Passa alla sezione "SqlSettings" e modifica la configurazione del database come segue. Assicurati di modificare il nome del database, l'utente e la password.
"SqlSettings": {
"DriverName": "postgres",
"DataSource": "postgres://mmuser:password@localhost/mattermost?sslmode=disable&connect_timeout=10&binary_parameters=yes",
Al termine, salva il file e esci dall'editor.
Esecuzione di Mattermost come servizio systemd
Ora che hai integrato Mattermost con PostgreSQL, creerai un nuovo file di servizio per Mattermost. Ciò ti consente di eseguire Mattermost in background e gestirlo facilmente tramite la riga di comando "systemctl".
Crea un nuovo file di servizio systemd '/etc/systemd/system/mattermost.service' utilizzando l'editor 'nano'.
sudo nano /etc/systemd/system/mattermost.service
Inserisci la seguente configurazione per eseguire Mattermost come servizio systemd.
[Unit]
Description=Mattermost
After=network.target
After=postgresql.service
BindsTo=postgresql.service
[Service]
Type=notify
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
KillMode=mixed
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
User=mattermost
Group=mattermost
LimitNOFILE=49152
[Install]
WantedBy=multi-user.target
Salvare ed uscire dal file.
Ora esegui il comando 'systemctl' di seguito per ricaricare il gestore systemd e applicare il nuovo servizio 'mattermost'.
sudo systemctl daemon-reload
Una volta ricaricato systemd, esegui il seguente comando 'systemctl' per avviare e abilitare il servizio 'mattermost'. Quindi, verificalo per assicurarti che il servizio sia in esecuzione.
sudo systemctl enable --now mattermost
sudo systemctl status mattermost
Se tutto va bene, vedrai una configurazione in cui il servizio "più importante" è in esecuzione e abilitato come la seguente:
Configurazione di Nginx come proxy inverso
A questo punto, Mattermost è attivo e funzionante sul tuo server Rocky Linux. Per renderlo accessibile, configurerai Nginx come proxy inverso con HTTPS sicuro abilitato.
Prima di configurare il server Web Nginx, esegui il comando seguente per arrestare il servizio Nginx e generare certificati SSL da letsencrypt. Assicurati di modificare il nome di dominio e l'indirizzo email con le tue informazioni.
sudo systemctl stop nginx
sudo certbot --certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email -d space.howtoforge.local
Una volta completato il processo, i tuoi certificati SSL saranno disponibili nella directory '/etc/letsencrypt/live/domain.com'.
Successivamente, crea una nuova configurazione Nginx '/etc/nginx/conf.d/mattermost.conf' utilizzando l'editor 'nano'.
sudo nano /etc/nginx/conf.d/mattermost.conf
Inserisci la seguente configurazione e assicurati di modificare il nome del dominio e il percorso dei certificati SSL con le tue informazioni.
upstream backend {
server 127.0.0.1:8065;
keepalive 32;
}
server {
listen 80;
server_name space.howtoforge.local;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name space.howtoforge.local;
http2_push_preload on; # Enable HTTP/2 Server Push
ssl_certificate /etc/letsencrypt/live/mattermost.howtoforge.local/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mattermost.howtoforge.local/privkey.pem;
ssl_session_timeout 1d;
# Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC).
ssl_protocols TLSv1.2 TLSv1.3;
# Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to
# prevent replay attacks.
#
# @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
ssl_early_data on;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:50m;
# HSTS (ngx_http_headers_module is required) (15768000 seconds = six months)
add_header Strict-Transport-Security max-age=15768000;
# OCSP Stapling ---
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;
add_header X-Early-Data $tls1_3_early_data;
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 $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 60s;
send_timeout 300s;
lingering_timeout 5s;
proxy_connect_timeout 90s;
proxy_send_timeout 300s;
proxy_read_timeout 90s;
proxy_http_version 1.1;
proxy_pass http://backend;
}
location / {
client_max_body_size 100M;
proxy_set_header Connection "";
proxy_set_header Host $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_http_version 1.1;
proxy_pass http://backend;
}
}
# This block is useful for debugging TLS v1.3. Please feel free to remove this
# and use the '$ssl_early_data' variable exposed by NGINX directly should you
# wish to do so.
map $ssl_early_data $tls1_3_early_data {
"~." $ssl_early_data;
default "";
}
Salva il file e esci dall'editor quando hai finito.
Successivamente, esegui il comando 'nginx' di seguito per verificare la sintassi Nginx. Se hai una sintassi corretta, vedrai un output 'la sintassi è ok - il test ha avuto successol'.
sudo nginx -t
Infine, esegui il comando 'systemctl' di seguito per riavviare il servizio Nginx e applicare le modifiche.
sudo systemctl restart nginx
Creazione del primo spazio di lavoro con Mattermost
Apri il tuo browser web e visita la tua installazione Mattermost come "https://space.howtoforge.local". Se l'installazione ha esito positivo, verrà visualizzata la procedura guidata di installazione.
Fai clic sul pulsante "Visualizza nel browser" per configurare Mattermost tramite un browser web.
Inserisci il nuovo utente amministratore, indirizzo email e password, quindi fai clic su "Crea account" per continuare.
Inserisci il nome della tua organizzazione.
Per ora puoi saltare l'integrazione con applicazioni di terze parti.
Ora fai clic su "Termina configurazione" per completare l'installazione di Mattermost.
Una volta terminato, verrai reindirizzato al tuo primo spazio di lavoro Mattermost.
Conclusione
Congratulazioni! Hai completato l'installazione di Mattermost sul server Rocky Linux 9. Hai Mattermost attivo e funzionante in background come servizio systemd con PostgreSQL come database e Nginx come proxy inverso. Hai anche protetto Mattermost con HTTPS e creato il tuo primo spazio di lavoro in Mattermost. Da qui puoi integrare Mattermost con applicazioni di terze parti come GitHub, GitLab e Bitbucket.