Mattermost - Instalace, Konfigurace, Údržba
Návod pro instalaci, konfiguraci a údržbu chatovací platformy Mattermost pro Debian GNU/Linux.
Příprava instalace
Systém
- Budeme potřebovat
postgresqldatabázi, nainstalujeme takto:apt -yq update apt install postgresql - Vytvoříme si uživatele
mattermostpod kterým služba poběží:useradd -mrd /opt/mattermost mattermost -s "$(which bash)"
Databáze
-
Přepnout se na uživatele
postgresa spustitpsql:su - postgres psql -
Vytvořit databázi s uživatelem a nastavit oprávnění. Ve druhém řádku kde tvoříme uživatele si nastavíme nějaké normální heslo 😄:
CREATE DATABASE mattermost; CREATE USER mattermost WITH PASSWORD 'DaTaBaSeUsErPaSsWoRd'; GRANT ALL ON DATABASE mattermost TO mattermost; ALTER DATABASE mattermost OWNER TO mattermost; GRANT USAGE, CREATE ON SCHEMA PUBLIC TO mattermost; -
Pryč z
psqli uživatelepostgres, tady máme hotovo.
Mattermost
-
Přepnout se na uživatele
mattermost:su - mattermost💡Budeme instalovat z
TARarchivu. Link na poslední verzi nalezneme zde.
Např.:https://releases.mattermost.com/9.11.7/mattermost-9.11.7-linux-amd64.tar.gz -
Stáhnout archiv s poslední verzí do souboru mattermost.tar.gz:
wget -O mattermost.tar.gz https://releases.mattermost.com/9.11.7/mattermost-9.11.7-linux-amd64.tar.gz -
Rozbalit archiv bez první podsložky:
tar -xzvf mattermost.tar.gz --strip-component 1 -
Zálohovat si orignál konfiguračního souboru (pro jistotu):
cp /opt/mattermost/config/config.json{,.orig} -
Nakonfigurovat připojení k databázi a adresu:port kde má aplikace poslouchat v souboru:
editor /opt/mattermost/config/config.json- Původní config:
"SiteURL": "", "ListenAddress": ":8065", "DataSource": "postgres://mmuser:mostest@localhost/mattermost_test?sslmode=disable\u0026connect_timeout=10\u0026binary_parameters=yes", - Nastavený config (změnili jsme uživatele a jeho heslo + jméno databáze):
"SiteURL": "matternymost.cvut.it", "ListenAddress": ":8080", "DataSource": "postgres://mattermost:DaTaBaSeUsErPaSsWoRd@localhost/mattermost?sslmode=disable\u0026connect_timeout=360\u0026binary_parameters=yes",
- Původní config:
-
Pryč z
mattermostuživatele, tady máme hotovo.
systemd služba
-
Vytvoříme si
systemdslužbu pro běh aplikace:cat > /etc/systemd/system/mattermost.service << EOF [Unit] Description=Mattermost After=network.target [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 EOF -
Nahrajeme znova
systemddémona aby věděl o naší službě.systemctl daemon-reload -
Spustíme
Mattermostslužbu:systemctl enable --now mattermost -
V tuto chvíli, teda pokud služba neselhala při startu půjdeme do webového prohlížeče a otevřeme dříve nakonfigurované
SiteURL:ListenAddresstakže třebahttp://matternymost.cvut.it:8080a nastavíme si kontoAdmina.
Nginx proxy
- Nastavení reverzní proxy:
upstream matternymost.in.cvut.it { server matternymost.in.cvut.it:8080; } server { listen 443 http2 ssl; listen [::]:443 http2 ssl; server_name matternymost.cvut.it; access_log /var/log/nginx/matternymost.cvut.it.access.log; error_log /var/log/nginx/matternymost.cvut.it.error.log warn; ssl_certificate /etc/letsencrypt/live/matternymost.cvut.it/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/matternymost.cvut.it/privkey.pem; client_max_body_size 10G; client_body_timeout 86400; include proxy_params; location / { add_header Strict-Transport-Security "max-age=315360000"; proxy_connect_timeout 900; proxy_send_timeout 900; proxy_read_timeout 900; send_timeout 900; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_pass http://matternymost.in.cvut.it; } }
Údržba
Zálohování
- Databáze:
su - postgres -c 'pg_dump -d mattermost' > /tmp/mattermost.sql - Soubory
tar -cvpf mattermost.tar.gz /opt/mattermost -I 'pigz -8'
Aktualizace
Před aktualizací radši proveď zálohu !
- Zastavit
systemdslužbu:systemctl stop mattermost - Zálohovat !
- Přepnout se na uživatele
mattermost: - Stáhnout nejnovější archiv odtud a rozbalit ALE bez konfiguračního souboru.
tar -xzvf mattermost.tar.gz --strip-component 1 --exclude mattermost/config/config.json - Pryč z
mattermostuživatele. - Spustit
systemdslužbu:systemctl start mattermost
Mattermost po aktualizaci nenastartoval kvůli oprávnění v DB
Přepnout se na uživatele postgres, zapnout paskvil (psql) a odpálit tři příkazy:
su - postgres
psql
GRANT ALL ON DATABASE mattermost TO mattermost;
ALTER DATABASE mattermost OWNER TO mattermost;
GRANT USAGE, CREATE ON SCHEMA PUBLIC TO mattermost;
Automatické čištění starých zpráv a souborů
Pokud nemáš Mattermost enterprise, použij projekt z GitHubu který tohle řeší docela elegantně a jednoduše.
Stačí nakopírovat skript do /etc/cron.daily nebo weekly nebo jak chceš, nastavit jméno a heslo k databázi a cestu k datům /opt/mattermost/data a je to. U nás mažeme zprávy starší 30 dní.
No comments to display
No comments to display