Mattermost mit PostgreSQL & Nginx auf Ubuntu 16.04 installieren

Installieren Sie Mattermost auf einem Ubuntu 16.04-Server mit PostgreSQL als Datenbank und Nginx als Reverse Proxy. Die Anleitung führt Schritt für Schritt durch Datenbankerstellung, Mattermost-Setup, systemd-Service, Nginx-SSL-Proxy und Tests. Enthalten: Sicherheits-Tipps, Alternativen (Docker, MySQL) und Rollout-Checklisten.
Wichtig: Diese Anleitung nutzt Ubuntu 16.04 und ein selbstsigniertes Zertifikat als Beispiel. Für Produktion empfehlen wir ein gültiges Zertifikat und aktuelle TLS-Einstellungen.
Überblick
Mattermost ist ein Open-Source-Messaging-System, geschrieben in Golang und React. Es ist eine selbst gehostete Alternative zu Slack oder HipChat. Mattermost bündelt Teamkommunikation an einem Ort und ist von Desktop, Android und iPhone erreichbar.
Diese Anleitung zeigt, wie Sie einen Mattermost-Server mit PostgreSQL als Datenbank und Nginx als Reverse Proxy auf Ubuntu 16.04 betreiben.
Wichtige Begriffe (1 Zeile):
- Reverse Proxy: Ein Dienst (z. B. Nginx), der Anfragen entgegennimmt und intern an Mattermost weiterleitet.
- systemd-Service: Ein Prozess, der Mattermost beim Booten startet und überwacht.
Voraussetzungen
- Ubuntu 16.04 (64 Bit)
- Root-Rechte oder sudo-Zugriff
- Eigene Domain (empfohlen) oder Server-IP
Schritt 1 - PostgreSQL installieren und konfigurieren
Mattermost unterstützt MySQL und PostgreSQL. Hier verwenden wir PostgreSQL.
Verbinden Sie sich per SSH und aktualisieren Sie die Paketliste:
ssh [email protected]
sudo apt-get update
Als Root/mit sudo installieren Sie PostgreSQL:
sudo apt-get install postgresql postgresql-contrib
Nach der Installation wechseln Sie zum postgres-Benutzer und starten die psql-Shell:
su - postgres
psql
Ändern Sie das Passwort des postgres-Benutzers:
\password postgres
Enter new password:
Erstellen Sie die Mattermost-Datenbank und den Datenbanknutzer (ersetzen Sie matterpassword durch ein sicheres Passwort):
CREATE DATABASE mattermostdb;
CREATE USER matteruser WITH PASSWORD 'matterpassword';
Geben Sie dem Benutzer Rechte auf die Datenbank und beenden Sie psql:
GRANT ALL PRIVILEGES ON DATABASE mattermostdb TO matteruser;
\q
Hinweis: Bewahren Sie Passwörter sicher auf und verwenden Sie in Produktion möglichst ein Credential-Management.
Schritt 2 - Mattermost installieren und konfigurieren
Führen Sie Mattermost als normaler Linux-Benutzer aus. Wir erstellen einen Benutzer namens matter
.
useradd -m -s /bin/bash matter
passwd matter
Wechseln Sie zum Nutzer und laden Sie das Release herunter (Beispiel-Version 3.4.0 im Original):
su - matter
wget https://releases.mattermost.com/3.4.0/mattermost-3.4.0-linux-amd64.tar.gz
Entpacken Sie das Archiv und wechseln Sie in das Verzeichnis:
tar -xzvf mattermost-3.4.0-linux-amd64.tar.gz
cd mattermost/
Erstellen Sie das Verzeichnis für Benutzerdateien und öffnen Sie die Konfiguration:
mkdir data/
vim config/config.json
Passen Sie die ServiceSettings an, damit Mattermost nur lokal lauscht. Im Abschnitt ServiceSettings setzen Sie:
"ListenAddress": "127.0.0.1:8065",
Im Abschnitt SqlSettings ändern Sie DriverName und DataSource auf PostgreSQL:
"DriverName": "postgres",
"DataSource": "postgres://matteruser:[email protected]:5432/mattermostdb?sslmode=disable&connect_timeout=10",
Hinweis: Ersetzen Sie matterpassword
durch Ihr echtes Passwort und matteruser
/mattermostdb
durch die in Ihrer Umgebung verwendeten Namen.
Starten Sie Mattermost manuell zur Kontrolle:
cd bin/
./platform
Mattermost sollte jetzt auf 127.0.0.1:8065 laufen. Mit Ctrl+C beenden.
Wichtig: In der Originalbeschreibung tauchte einmal die Portnummer 8056 auf. Der Standardport ist 8065 — prüfen Sie Ihre config.json.
Schritt 3 - systemd-Service für Mattermost anlegen
Erstellen Sie eine systemd-Unit, damit Mattermost automatisch startet und neu gestartet wird:
cd /etc/systemd/system/
vim mattermost.service
Fügen Sie diese Unit ein:
[Unit]
Description=Mattermost is an open source, self-hosted Slack-alternative
After=syslog.target network.target
[Service]
Type=simple
User=matter
Group=matter
ExecStart=/home/matter/mattermost/bin/platform
PrivateTmp=yes
WorkingDirectory=/home/matter/mattermost
Restart=always
RestartSec=30
LimitNOFILE=49152
[Install]
WantedBy=multi-user.target
Speichern, anschließend systemd neu laden und starten:
systemctl daemon-reload
systemctl start mattermost
Prüfen Sie Status und offene Ports:
netstat -plntu
systemctl status mattermost
Schritt 4 - Nginx installieren und als Reverse Proxy konfigurieren
Installieren Sie Nginx:
sudo apt-get install nginx
Erstellen Sie das SSL-Verzeichnis und erzeugen Sie ein selbstsigniertes Zertifikat (Beispiel 365 Tage):
cd /etc/nginx/
mkdir ssl/; cd ssl/
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/mattermost.crt -keyout /etc/nginx/ssl/mattermost.key
chmod 400 mattermost.key
Wichtig: Für Produktivbetrieb verwenden Sie ein von einer CA ausgestelltes Zertifikat (z. B. Let’s Encrypt).
Erstellen Sie eine virtuelle Host-Datei:
cd /etc/nginx/sites-available/
vim mattermost
Beispiel-Config (passen Sie server_name an):
server {
listen 80;
server_name mattermost.mydomain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name mattermost.mydomain.com;
ssl on;
ssl_certificate /etc/nginx/ssl/mattermost.crt;
ssl_certificate_key /etc/nginx/ssl/mattermost.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
location / {
gzip off;
proxy_set_header X-Forwarded-Ssl on;
client_max_body_size 50M;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_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_pass http://127.0.0.1:8065;
}
}
Aktivieren Sie die Site und testen Sie Nginx:
ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx
Hinweis zur TLS-Sicherheit: Die oben gezeigten ssl_protocols und Cipher-Suites sind veraltet. Verwenden Sie in modernen Installationen mindestens TLSv1.2+ und aktuelle Cipher-Empfehlungen. Beispiele und Automatisierung: Let’s Encrypt + Certbot.
Schritt 5 - Testen
Öffnen Sie im Browser https://mattermost.mydomain.com (ersetzen Sie die Domain). Sie sollten auf HTTPS weitergeleitet werden.
Erstellen Sie ein Konto: klicken Sie auf Konto erstellen.
Erstellen Sie ein Team oder öffnen Sie die Systemkonsole über “Zum Systemkonsole”.
Wenn alles funktioniert, ist Mattermost mit PostgreSQL und Nginx auf Ubuntu 16.04 einsatzbereit.
Sicherheits- und Produktionshinweise
Wichtig:
- Verwenden Sie in Produktion ein Zertifikat von einer vertrauenswürdigen CA (z. B. Let’s Encrypt). Selbstsignierte Zertifikate sind nur für Tests geeignet.
- Verwenden Sie aktuelle TLS-Protokolle (min. TLSv1.2) und sichere Cipher-Suites.
- Schränken Sie Datenbank-Zugänge per Firewall oder IP-Whitelist ein.
- Setzen Sie Dateisystemberechtigungen korrekt und betreiben Sie Mattermost als dedizierten Benutzer.
- Regelmäßige Backups der PostgreSQL-Datenbank und des Verzeichnisses
mattermost/data/
sind essenziell.
Empfehlungen:
- Automatisieren Sie Zertifikatserneuerung mit Certbot.
- Monitoring: Überwachen Sie Prozesse, freie Festplattenkapazität und Latenzen.
- Sichern Sie Logins mit 2FA (Mattermost unterstützt 2FA in neueren Versionen).
Alternative Ansätze
- Docker / Docker Compose: Verpacken Sie Mattermost + PostgreSQL + Nginx in Containern. Vorteil: Portabilität, einfachere Updates. Nachteil: zusätzliche Komplexität bei persistenten Volumes.
- Kubernetes: Für große Installationen mit hoher Verfügbarkeit.
- MySQL als Datenbank: Mattermost unterstützt MySQL; wählen Sie MySQL, wenn Ihr Betriebsteam damit vertrauter ist.
Wann es fehlschlägt (Counterexamples)
- Firewall blockiert Port 443 oder 8065: Nginx kann keine Verbindung zu Mattermost herstellen oder Clients erreichen den Server nicht.
- Falsche DataSource-URI: Login in config.json ist fehlerhaft -> DB-Verbindungsfehler.
- Port-Konflikt: Ein anderer Dienst nutzt Port 8065.
- Veraltete TLS-Konfiguration: Browser oder Clients lehnen Verbindung ab.
Mental Models und Heuristiken
- 1 Dienst = 1 Benutzer: Führen Sie Mattermost als eigenen Linux-Benutzer.
- Prinzip der kleinsten Rechte: Datenbanknutzer nur mit den nötigen Rechten versehen.
- Isolierte Layer: Anwendung (Mattermost), Daten (PostgreSQL) und Gateway (Nginx) trennen.
Faktenbox: Wichtige Werte
- Standard-HTTP-Port (Nginx): 80
- Standard-HTTPS-Port (Nginx): 443
- Mattermost interner Listen-Port: 8065
- Beispiel DB-Namen: mattermostdb
- Beispiel DB-Benutzer: matteruser
- Beispiel SSL-Gültigkeit im Tutorial: 365 Tage (selbstsigniert)
Mini-Methodologie: Rollout-Checkliste (kurz)
- System vorbereiten: Updates, Firewall-Regeln, Hostname/Domain.
- PostgreSQL installieren, DB + User anlegen.
- Mattermost herunterladen, config.json anpassen.
- systemd-Unit anlegen und Service starten.
- Nginx konfigurieren, SSL einrichten, Site aktivieren.
- Funktionstest über Browser, Team erstellen, Backups planen.
Rollen-Checklisten
Systemadministrator:
- Ubuntu updaten und absichern
- systemd-Unit anlegen
- Firewall-Regeln setzen
Datenbank-Administrator:
- PostgreSQL installieren
- DB-Backups einrichten
- DB-Berechtigungen prüfen
Security Engineer:
- TLS-Konfiguration prüfen
- Härtung der Nginx-Config
- 2FA & Audit-Logging aktivieren
GDPR / Datenschutz-Hinweise
Wenn Sie personenbezogene Daten hosten (z. B. in der EU), sorgen Sie für:
- klare Verantwortlichkeiten und Datenverarbeitungsverträge
- sichere Speicherung und Zugriffskontrolle
- transparente Lösch- und Backup-Richtlinien
Zusätzliche Tests und Akzeptanzkriterien
- Browser verbindet sich per HTTPS ohne Zertifikatsfehler (bei validem Zertifikat).
- Mattermost-Service bleibt nach einem Reboot aktiv.
- Benutzer können Nachrichten senden und Dateien hochladen (max. 50 MB gemäß Nginx-Config).
- Backups lassen sich wiederherstellen.
Zusammenfassung
Sie haben Mattermost auf Ubuntu 16.04 mit PostgreSQL und Nginx installiert. Folgen Sie den Sicherheits-Tipps, verwenden Sie in Produktion gültige Zertifikate, automatisieren Sie Backups und Monitoring. Für produktive Umgebungen prüfen Sie aktuelle Mattermost-Versionen und moderne TLS-Konfigurationen.
Quellen
Ähnliche Materialien

iPhone: Charging On Hold schnell beheben

Apple‑Siri‑Vergleich: Berechtigung & Anspruch stellen

Facebook-Profilbild als GIF einstellen

Destiny 2 Fehlercode Centipede: Vollständige Lösung

Bilder aus Google Docs herunterladen – 6 Methoden
