Mattermost wiederherstellen

Sollte der Server nicht mehr funktionieren, kann Mattermost aus einem Backup wiederhergestellt werden, welches sich aktuell auf einem Server von Domainfactory befindet und jeden Morgen aktualisiert wird.

Wiederherstellung auf dem vorhandenen Server
    alte Daten bereinigen
    Backup herunterladen, entpacken und an den Zielort verschieben
    Einstellungen setzen
    Datenbank wiederherstellen
    Mattermost starten
Wiederherstellung auf neuem Server
    Backup herunterladen, entpacken und an den Zielort verschieben
    Datenbank wiederherstellen
    Zertifikat installieren
    Mattermost User anlegen
    Binding auf 443 erlauben
    Mattermost testen
    Autostart aktivieren
    Testen, ob die Unit geladen wurde
    Service starten

Wiederherstellung auf dem vorhandenen Server
alte Daten bereinigen

systemctl stop mattermost
rm -r /opt/mattermost
mysql -u root -p
    DROP DATABASE mattermost;
    CREATE DATABASE mattermost;
    quit

Backup herunterladen, entpacken und an den Zielort verschieben

cd /tmp
curl -O ftp://ftphost:<FTP User für Backup von Host/Server auf DF>@host/mattermost.tar.bz2
tar vxf mattermost.tar.bz2
mv opt/mattermost /opt/mattermost

Einstellungen setzen

chown -R mattermost:mattermost /opt/mattermost

setcap CAP_NET_BIND_SERVICE=+eip /opt/mattermost/bin/platform (in Zukunft obsolet)

setcap CAP_NET_BIND_SERVICE=+eip /opt/mattermost/bin/mattermost

Datenbank wiederherstellen

curl -O ftp://host:<FTP User für Backup von host auf DF>@host/mattermost.sql
mysql --defaults-extra-file=/etc/mysql/debian.cnf mattermost < mattermost.sql 
    Das dauert ca. eine Stunde ohne Fortschrittsanzeige

Mattermost starten

systemctl start mattermost

Wiederherstellung auf neuem Server

Grundlage ist ein frisch aufgesetzter aktueller Ubuntu Server.

Backup herunterladen, entpacken und an den Zielort verschieben

cd /tmp
curl -O ftp://host:<FTP User für Backup von host1 auf DF>@host2/mattermost.tar.bz2
tar vxf mattermost.tar.bz2
mv opt/mattermost /opt/mattermost

Datenbank wiederherstellen

apt install mysql-server
mysql_secure_installation 
    Passwort setzen mmuser-SQL-Passwort laut KeePass, alle Sicherheitsmaßnahmen bestätigen
mysql -u root -p
    create user 'mmuser'@'localhost' identified by 'mmuser-SQL-Passwort';
    create database mattermost;
    grant all privileges on mattermost.* to 'mmuser'@'localhost';
    exit
curl -O ftp://host:<FTP User für Backup von host1 auf DF>@host2/mattermost.sql
mysql --defaults-extra-file=/etc/mysql/debian.cnf mattermost < mattermost.sql 
    Das dauert ca. eine Stunde ohne Fortschrittsanzeige

Zertifikat installieren

add-apt-repository ppa:certbot/certbot
apt update
apt install apache2 software-properties-common python-certbot-apache
certbot --apache -d team.domain.de
    automatisch Umleiten auf https auswählen
Danach Apache2 wieder deinstallieren
    apt remove apache2

Mattermost User anlegen

$ useradd --system --user-group mattermost

$ chown -R mattermost:mattermost /opt/mattermost

$ chmod -R g+w /opt/mattermost

Binding auf 443 erlauben

setcap CAP_NET_BIND_SERVICE=+eip /opt/mattermost/bin/mattermost

Mattermost testen

$ cd /opt/mattermost

$ sudo -u mattermost ./bin/mattermost
Es sollten keine Fehler ausgegeben werden. Mit STRG-C beenden.

Autostart aktivieren

$ nano /lib/systemd/system/mattermost.service

    Einfügen:
    [Unit]
    Description=Mattermost
    After=network.target
    After=mysql.service
    Requires=mysql.service

    [Service]
    Type=notify
    ExecStart=/opt/mattermost/bin/mattermost
    TimeoutStartSec=3600
    Restart=always
    RestartSec=10
    WorkingDirectory=/opt/mattermost
    User=mattermost
    Group=mattermost
    LimitNOFILE=49152

    [Install]
    WantedBy=mysql.service
save&quit

$ systemctl daemon-reload

Testen, ob die Unit geladen wurde

$ systemctl status mattermost.service
Ausgabe sollte so aussehen:

    mattermost.service - Mattermost
    Loaded: loaded (/lib/systemd/system/mattermost.service; disabled; vendor preset: enabled)
    Active: inactive (dead)

Service starten

$ systemctl start mattermost.service
$ systemctl enable mattermost.service