# ------------------------------------
# Aktualisieren des Mattermost-Servers
# ------------------------------------
# How do I install the Extended Support Release (ESR)?
#
# see: https://docs.mattermost.com/upgrade/extended-support-release.html
#
# see:
# # Deploy Mattermost
# - https://docs.mattermost.com/guides/deployment.html
#
# # Extended Support Release
# - https://docs.mattermost.com/upgrade/extended-support-release.html
#
# # Mattermost Releases - Archive
# - https://mattermost.com/blog/category/platform/releases/
#
# # Version Archive
# - https://docs.mattermost.com/upgrade/version-archive.html
#
# # Mattermost changelog
# - https://docs.mattermost.com/deploy/mattermost-changelog.html
#
# # Upgrade Mattermost Server
# - https://docs.mattermost.com/administration/upgrade.html
#
# # Upgrade Mattermost Server
# - https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html#id2
#
# # Upgrade Team Edition to Enterprise Edition
# - https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html#upgrade-team-edition-to-enterprise-edition
# In den meisten Fällen können Sie Mattermost Server in wenigen Minuten aktualisieren.
# Das Upgrade kann jedoch in Abhängigkeit von verschiedenen Faktoren, einschließlich
# der Größe und Komplexität Ihrer Installation und der Version, von der Sie ein Upgrade
# durchführen, länger dauern.
# ===============================
# Upgrade auf die neueste Version
# ===============================
# ---
# Notice:
# Wenn Sie ein Upgrade von Version 3.0 oder höher durchführen, gelten diese Anweisungen für
# Sie. Wenn Sie ein Upgrade von einer früheren Version als 3.0.0 durchführen, müssen Sie
# zuerst ein Upgrade auf Version 3.0.3 durchführen.
# ---
# Bevor Sie beginnen
#
# Lesen Sie diese Anweisungen von Anfang bis Ende sorgfältig durch. Stellen Sie sicher, dass
# Sie jeden Schritt verstanden haben, bevor Sie mit dem Upgrade beginnen. Wenn Sie Fragen
# oder Bedenken haben, können Sie diese im Mattermost-Forum unter https://forum.mattermost.org/
# stellen.
# ---
# Wichtig
#
# Lesen Sie die wichtigen Upgrade-Hinweise, um sicherzustellen, dass Sie über alle Maßnahmen
# informiert sind, die Sie vor oder nach dem Upgrade von Ihrer bestimmten Version ausführen
# müssen.
# ---
# ---
# Wichtig
#
# Wenn Sie ein Upgrade von einer Version vor Version 5.0 durchführen, müssen Sie auch Ihre
# Servicedatei so ändern, dass sie mit den mit 5.0 eingeführten binären Änderungen funktioniert.
# Ihr Ausführungsverzeichnis sollte auf das Basisverzeichnis Mattermost (d. H. /opt/mattermost)
# und Ihre Binärdatei auf die Binärdatei matteratter (d. H. /opt/mattermost/bin/mattermost)
# verweisen.
# ---
# Sie sollten die folgenden Informationen sammeln, bevor Sie mit dem Upgrade beginnen:
#
# Vorhandenes Installationsverzeichnis - {Installationspfad}
#
# Wenn Sie nicht wissen, wo Mattermost Server installiert ist, verwenden Sie den Befehl
# whereis mattermost. Die Ausgabe sollte /opt/mattermost/bin/mattermost ähnlich sein.
# Das Installationsverzeichnis ist alles vor dem ersten Auftreten der Zeichenfolge /mattermost.
# In diesem Beispiel lautet der {Installationspfad} /opt. Wenn dieser Befehl keine Ergebnisse
# liefert, weil Ihre Version älter ist, versuchen Sie stattdessen whereis platform.
#
# Speicherort Ihres lokalen Speicherverzeichnisses
#
# Das lokale Speicherverzeichnis enthält alle Dateien, die Benutzer an ihre Nachrichten angehängt
# haben. Wenn Sie den Speicherort nicht kennen, öffnen Sie die Systemkonsole und gehen Sie zu
# Dateien> Speicher in früheren Versionen oder Umgebung> Dateispeicher in Versionen nach 5.12 und
# lesen Sie den Wert im lokalen Speicherverzeichnis. Relative Pfade sind relativ zum mattermost
# Verzeichnis. Wenn das lokale Speicherverzeichnis beispielsweise ./data/ lautet, lautet der
# absolute Pfad {Installationspfad}/mattermost/data.
# ===========================================
# {Installationspfad} /opt
# local storage directory: /opt/mattermost/data
# ===========================================
MM_NEW_VERSION=9.5.6
MM_BASE_INSTALL_PATH=/opt
MM_DATA_DIR=/opt/mattermost/data
MM_USER=mattermost
MM_GROUP=mattermost
MM_DB_NAME=mattermost
MM_DB_USER=mattermost
MM_DB_PASSWD="C5jzznfvn%%WV6J7-4rgT"
MM_TMP_DIR=/tmp
# So aktualisieren Sie Mattermost Server:
# ---
# Hinweis
#
# Wenn Sie ein HA-Cluster aktualisieren, lesen Sie stattdessen diese Aktualisierungshinweise:
# https://docs.mattermost.com/deployment/cluster.html#upgrade-guide
# ---
# 1.) Lesen Sie die wichtigen Upgrade-Hinweise, um sicherzustellen, dass Sie über alle
# Maßnahmen informiert sind, die Sie vor oder nach dem Upgrade von Ihrer bestimmten
# Version ausführen müssen.
# 2.) Wechseln Sie in einem Terminalfenster auf dem Server, auf dem sich Mattermost Server
# befindet, in Ihr Ausgangsverzeichnis. Löschen Sie gegebenenfalls Dateien und
# Verzeichnisse, die möglicherweise noch von einem vorherigen Download vorhanden sind.
#
# cd / tmp
#
#
# 3.) Laden Sie die neueste Version von Mattermost Server herunter. Ersetzen Sie im folgenden
# Befehl X.X.X durch die Version, die Sie herunterladen möchten:
#
# wget https://releases.mattermost.com/X.X.X/mattermost-X.X.X-linux-amd64.tar.gz
#
# Team Edition
#
# wget https://releases.mattermost.com/X.X.X/mattermost-team-X.X.X-linux-amd64.tar.gz
#
#
wget -P /tmp https://releases.mattermost.com/${MM_NEW_VERSION}/mattermost-${MM_NEW_VERSION}-linux-amd64.tar.gz
#wget -P /tmp https://releases.mattermost.com/${MM_NEW_VERSION}/mattermost-team-${MM_NEW_VERSION}-linux-amd64.tar.gz
# 4.) Extrahieren Sie die Mattermost Server-Dateien.
#
# tar -xf mattermost*.gz --transform='s,^[^/]\+,\0-upgrade,'
#
# Die Transformationsoption fügt dem obersten extrahierten Verzeichnis ein Suffix hinzu,
# damit es nicht mit dem üblichen Installationsverzeichnis in Konflikt steht.
#
tar -xf ${MM_TMP_DIR}/mattermost-${MM_NEW_VERSION}-linux-amd64.tar.gz \
-C ${MM_TMP_DIR} --transform='s,^[^/]\+,\0-upgrade,'
# 5.) Stoppen Sie den Mattermost Server.
#
# Unter Ubuntu 14.04 und RHEL 6:
#
# sudo service mattermost stop
#
# Unter Ubuntu 16.04 und RHEL 7:
#
# sudo systemctl stop mattermost
systemctl stop mattermost
# 6.) Sichern Sie Ihre Daten und Ihre Anwendung.
#
# - Sichern Sie Ihre Datenbank mit den Standardverfahren Ihres Unternehmens zum Sichern
# von MySQL oder PostgreSQL.
#
# - Sichern Sie Ihre Anwendung, indem Sie sie in einen Archivordner kopieren
# (z. B. mattermost-JJJJ-MM-TT-HH-mm).
#
# cd {Installationspfad}
# sudo cp -ra mattermost / mattermost-back - $ (Datum + '% F-% H-% M') /
#
mysqldump --login-path=local --opt $MM_DB_NAME > ${MM_BASE_INSTALL_PATH}/mattermost-$(date +'%F-%H-%M').sql
#mysqldump -u $MM_DB_USER -p$MM_DB_PASSWD --opt $MM_DB_NAME > ${MM_BASE_INSTALL_PATH}/mattermost-$(date +'%F-%H-%M').sql
cp -ra ${MM_BASE_INSTALL_PATH}/mattermost/ ${MM_BASE_INSTALL_PATH}/mattermost-back-$(date +'%F-%H-%M')/
# 7.) Entfernen Sie alle Dateien mit Ausnahme spezieller Verzeichnisse aus dem aktuellen Verzeichnis.
#
# Die speziellen Verzeichnisse innerhalb von mattermost sind config, logs, plugins, client / plugins
# und data (es sei denn, Sie haben einen anderen Wert für den lokalen Speicher konfiguriert, als zuvor
# beschrieben). Der folgende Befehl löscht den Inhalt von mattermost und behält nur diese Verzeichnisse
# und deren Inhalt bei. Sie sollten zuerst den letzten Teil in xargs echo rm -r ändern, um zu überprüfen,
# was ausgeführt wird.
#
# sudo find mattermost/ mattermost/client/ -mindepth 1 -maxdepth 1 \! \( -type d \( -path mattermost/client -o -path mattermost/client/plugins -o -path mattermost/config -o -path mattermost/logs -o -path mattermost/plugins -o -path mattermost/data \) -prune \) | sort | sudo xargs rm -r
#
find ${MM_BASE_INSTALL_PATH}/mattermost/ ${MM_BASE_INSTALL_PATH}/mattermost/client/ -mindepth 1 -maxdepth 1 \
\! \( -type d \( -path ${MM_BASE_INSTALL_PATH}/mattermost/client \
-o -path ${MM_BASE_INSTALL_PATH}/mattermost/client/plugins \
-o -path ${MM_BASE_INSTALL_PATH}/mattermost/config \
-o -path ${MM_BASE_INSTALL_PATH}/mattermost/logs \
-o -path ${MM_BASE_INSTALL_PATH}/mattermost/plugins \
-o -path ${MM_BASE_INSTALL_PATH}/mattermost/data \) -prune \) | sort | sudo xargs rm -r
# 8.) Ändern Sie den Besitz der neuen Dateien, bevor Sie sie kopieren.
#
# sudo chown -hR mattermost:mattermost /tmp/mattermost-upgrade/
#
chown -hR ${MM_USER}:${MM_GROUP} /tmp/mattermost-upgrade/
# ---
# Hinweis
#
# Wenn Sie mattermost nicht als Eigentümer und Gruppe des Installationsverzeichnisses verwendet
# haben, führen Sie
# sudo chown -hR {owner}:{group} tmp/mattermost-upgrade/.
# aus.
#
# Wenn Sie sich nicht sicher sind, welcher Eigentümer oder welche Gruppe definiert wurde,
# verwenden Sie den Befehl
# ls -l {install-path}/mattermost/bin/mattermost
# um sie zu erhalten.
# ---
# 9.) ALT - entfällt (s.u.)
# 10.) Kopieren Sie die neuen Dateien in Ihr Installationsverzeichnis und entfernen Sie die temporären Dateien.
#
# Beachten Sie, dass das n-Flag (kein Clobber) und der abschliessende Punkt '.' an der Quelle sind sehr wichtig.
#
# sudo cp -an /tmp/mattermost-upgrade/. mattermost/
# sudo rm -r /tmp/mattermost-upgrade/
#
cp -an ${MM_TMP_DIR}/mattermost-upgrade/. ${MM_BASE_INSTALL_PATH}/mattermost/
rm -r ${MM_TMP_DIR}/mattermost-upgrade/
# 11.) ALT - entfällt (s.u.)
# 12.) Wenn Sie Port 80 verwenden möchten, um Ihren Server zu bedienen, oder wenn Sie TLS auf
# Ihrem Mattermost-Server eingerichtet haben, müssen Sie die CAP_NET_BIND_SERVICE-Funktion
# aktivieren, damit die neue Mattermost-Binärdatei an niedrige Ports gebunden werden kann.
#
# cd {Installationspfad}/mattermost
# sudo setcap cap_net_bind_service=+ep ./bin/mattermost
#
setcap cap_net_bind_service=+ep ${MM_BASE_INSTALL_PATH}/mattermost/bin/mattermost
# 13.) Starten Sie den Mattermost-Server.
#
systemctl start mattermost
# 14.) Wenn Sie eine Hochverfügbarkeitsbereitstellung verwenden, müssen Sie die obigen
# Schritte auf alle Knoten in Ihrem Cluster anwenden. Nach Abschluss sollten die
# MD5-Spalten für Konfigurationsdateien im Abschnitt Hochverfügbarkeit der
# Systemkonsole grün sein. Wenn sie gelb sind, stellen Sie bitte sicher, dass alle
# Knoten dieselbe Serverversion und dieselbe Konfiguration haben.
#
# Wenn sie immer noch gelb angezeigt werden, müssen Sie eine Konfigurationsweitergabe
# (config propagation) im gesamten Cluster auslösen:
#
# - Öffnen Sie die Systemkonsole, ändern Sie eine Einstellung und setzen Sie sie zurück.
# Dadurch wird die Schaltfläche Speichern für diese Seite aktiviert.
# - Klicken Sie auf Speichern.
#
# Dadurch wird keine Konfiguration geändert, sondern die vorhandene Konfiguration wird an
# alle Knoten im Cluster gesendet.
# ---
# Nach dem Upgrade des Servers müssen Benutzer möglicherweise ihre Browser aktualisieren, um
# neue Funktionen nutzen zu können.
# ---
# --------------------------------------------------------------------------------
# ==========================================================================================
# 9. Benennen Sie die Plugins-Verzeichnisse um, damit sie das Upgrade nicht beeinträchtigen.
# ==========================================================================================
#
# sudo mv mattermost/plugins/ mattermost/plugins~
# sudo mv mattermost/client/plugins/ mattermost/client/plugins~
#
mv ${MM_BASE_INSTALL_PATH}/mattermost/plugins/ ${MM_BASE_INSTALL_PATH}/mattermost/plugins~
mv ${MM_BASE_INSTALL_PATH}/mattermost/client/plugins/ ${MM_BASE_INSTALL_PATH}/mattermost/client/plugins~
# ================================================================================================
# 11.) Stellen Sie die Plugins-Verzeichnisse wieder her und starten Sie den mattermost Dienst neu.
# ================================================================================================
# cd {install-path}/mattermost
# sudo rsync -au plugins~/ plugins
# sudo rm -rf plugins~
# sudo rsync -au client/plugins~/ client/plugins
# sudo rm -rf client/plugins~
#
# Nach dem Upgrade des Servers müssen Benutzer möglicherweise ihre Browser aktualisieren, um neue
# Funktionen nutzen zu können.
# =========================================
# Aktualisieren Sie Ihr config.json-Schema:
# =========================================
# - Öffnen Sie die Systemkonsole, ändern Sie eine Einstellung und setzen Sie sie zurück.
# Dies sollte die Schaltfläche Speichern für diese Seite aktivieren.
#
# - Klicken Sie auf Speichern.
#
# - Lade die Seite neu.
#
# Ihre aktuellen Einstellungen bleiben erhalten und neue Einstellungen werden mit Standardwerten
# hinzugefügt.
# ===================================================
# Upgrade der Team Edition auf die Enterprise Edition
# ===================================================
# Befolgen Sie zum Aktualisieren von der Team Edition auf die Enterprise Edition die oben
# genannten normalen Upgrade-Anweisungen. Stellen Sie jedoch sicher, dass Sie die
# Enterprise Edition in Schritt 3 herunterladen.
# ===================================================
# Lizenzschlüssel hochladen
# ===================================================
# Öffnen Sie nach der Ausführung der Enterprise Edition die Systemkonsole und gehen Sie
# zu OTHER> Edition und Lizenz> Lizenzschlüssel in früheren Versionen oder
# Systemkonsole> Info> Editionen und Lizenz in Versionen nach 5.12 und laden Sie Ihre
# Lizenzschlüsseldatei hoch.