Skip to main content

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 postgresql databázi, nainstalujeme takto:
    apt -yq update
    apt install postgresql
    
  • Vytvoříme si uživatele mattermost pod kterým služba poběží:
    useradd -mrd /opt/mattermost mattermost -s "$(which bash)"
    

Databáze

  • Přepnout se na uživatele postgres a spustit psql:

    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 psql i uživatele postgres, tady máme hotovo.

Mattermost

  • Přepnout se na uživatele mattermost:

    su - mattermost
    

    💡Budeme instalovat z TAR archivu. 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",
      
  • Pryč z mattermost uživatele, tady máme hotovo.

systemd služba

  • Vytvoříme si systemd služ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 systemd démona aby věděl o naší službě.

    systemctl daemon-reload
    
  • Spustíme Mattermost služ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:ListenAddress takže třeba http://matternymost.cvut.it:8080 a nastavíme si konto Admina.

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 systemd služ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 mattermost uživatele.
  • Spustit systemd služ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í.