Mattermost unter Ubuntu 16.04 mit Apache und ISPConfig in Subdomain installieren
Aus znilwiki
Die Anleitung funktioniert auch ohne ISPConfig - oder auch mit anderen Verwaltungstools, dann eben sinngemäß
Voraussetzungen
- Domänenprovider bei dem man Subdomänen anlegen darf
- Und diese Subdomänen kann man per DNS-Eintrag auf unseren Webserver zeigen lassen
- Ubuntu 16.04.x LTS Webserver
- mit Apache2
- mit MySQL oder MariaDB
- mit ISPConfig
Subdomain beim Provider anlegen
In diesem Fall habe ich mich für
https://moin.znil.net entschieden.
Diese IP lasse ich auf die öffentliche IP-Adresse meines Webservers zeigen.
Subdomain in ISPConfig anlegen
Die Subdomain habe ich mit diesen Einstellungen angelegt:
Damit wir auch gleich das passende SSL-Zertifikat von Lets Encrypt amgefordert.
Wir bauen die Seite später um so das der Apache als Reverse Proxy fungiert.
Damit das Zertifikat trotzdem automatisch erneuert wird schaut euch diesen Artikel von mir an:
Datenbank in ISPConfig anlegen
Man kann die Datenbank natürlich auch direkt mit MySQL anlegen, Anleitung siehe hier.
Aber ich nutze nun mal ISPConfig - also mache ich das ganze auch dort:
Zunächst den Datenbank Benutzer anlegen.
Dieser muss zwingend
mmuser
heißen.
Danach legen wir die Datenbank an, diese muss zwingend (in dieser Anleitung)
mattermost
heißen:
Nehmt als "Database charset:" gleich UTF-8, der Mattermost-Server übergibt das beim Verbinden sowieso.
Und unten den Haken bei Remote Access und die IP nicht vergessen, Mattermost kann nur übers Netzwerk.
Bei Quota wird eine "-1" stehen, lasst die einfach drin.
MySQL Zugriff testen
In der Bash einfach folgendes eingeben:
mysql -ummuser -pEuerpasswort -h 127.0.0.1 mattermost
wenn es dann eine Verbindung gibt ist alles ok, mit
exit
kommt ihr wieder raus.
Beispiel:
root@webserver01:~# mysql -ummuser -pEuerPasswort -h 127.0.0.1 mattermost Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 328412 Server version: 10.0.29-MariaDB-0ubuntu0.16.04.1 Ubuntu 16.04 Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [mattermost]> exit Bye root@webserver01:~#
Mattermost herunterladen und installieren
sudo -i cd /usr/src wget https://releases.mattermost.com/3.7.2/mattermost-3.7.2-linux-amd64.tar.gz
Den Download Link der jeweils aktuellen Version findet Ihr unter
https://about.mattermost.com/download/
Entpacken und an den Zielort versch/opt/mattermost/config/config.jsonieben:
tar -xvzf mattermost*.gz mv mattermost /opt
Mattermost Benutzer anlegen:
useradd --system --user-group mattermost
Datenverzeichnis anlegen und Benutzer anpassen:
mkdir /opt/mattermost/data chown -R mattermost:mattermost /opt/mattermost chmod -R g+w /opt/mattermost
In der Konfiguration auf unsere Datenbank verweisen:
nano /opt/mattermost/config/config.json
und folgende Zeile suchen und anpassen:
"SqlSettings": { "DriverName": "mysql", "DataSource": "mmuser:euerpasswort@tcp(127.0.0.1:3306)/mattermost?charset=utf8mb4,utf8", "DataSourceReplicas": [], "MaxIdleConns": 20, "MaxOpenConns": 300, "Trace": false, "AtRestEncryptKey": ""
euerpasswort
müsst ihr entsprechend anpassen, ansonsten sollte die Zeile genau so aussehen wie diese da steht.
Nun die Startdatei erstellen:
nano /lib/systemd/system/mattermost.service
mit folgendem Inhalt:
[Unit] Description=Mattermost After=network.target After=mysql.service Requires=mysql.service [Service] Type=simple ExecStart=/opt/mattermost/bin/platform Restart=always RestartSec=10 WorkingDirectory=/opt/mattermost User=mattermost Group=mattermost [Install] WantedBy=multi-user.target
Nun den Dienst aktivieren:
systemctl enable mattermost.service
und starten:
systemctl start mattermost.service systemctl status mattermost.service
Ab diesen Zeitpunkt ist euere Mattermost-Installation unter
http://IP-Adresse-eures-Servers:8065
erreichbar - und Ihr könntet die Erstkonfiguration im Webinterface vornehmen.
Mattermost über Subdomäne erreichbar machen
Ggf. müssen wir ein paar Voraussetzungen des Apache-Webservers erst noch aktivieren:
a2enmod rewrite a2enmod proxy_http a2enmod ssl a2enmod proxy_wstunnel
Da meine Subdomäne die ich in ISPConfig angelegt habe
moin.znil.net
heißt muss ich die folgende Datei bearbeiten:
nano /etc/apache2/sites-available/moin.znil.net.vhost
Und den Inhalt wie folgt abändern:
- Alles was Gelb hinterlegt ist müsst Ihr an euren Subdämennamen und eure Webserver-Adresse anpassen
- Alles was Blau hinterlegt ist müsst Ihr aus der Originaldatei so stehen lassen
<VirtualHost 192.168.45.10:80> ServerName moin.znil.net ServerAdmin webmaster@moin.znil.net RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] </VirtualHost> <VirtualHost 192.168.45.10:443> ServerName moin.znil.net ServerAdmin webmaster@moin.znil.net SSLEngine on SSLProtocol All -SSLv2 -SSLv3 SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA SSLHonorCipherOrder on SSLCertificateFile /var/www/clients/client0/web39/ssl/moin.znil.net.crt SSLCertificateKeyFile /var/www/clients/client0/web39/ssl/moin.znil.net.key SSLCertificateChainFile /var/www/clients/client0/web39/ssl/moin.znil.net.bundle SSLUseStapling on SSLStaplingResponderTimeout 5 SSLStaplingReturnResponderErrors off ProxyPreserveHost On ProxyRequests Off ProxyPass / http://127.0.0.1:8065/ ProxyPassReverse / http://127.0.0.1:8065/ RewriteEngine on RewriteCond %{REQUEST_URI} ^/api/v1/websocket [NC,OR] RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC,OR] RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC] RewriteRule .* ws://127.0.0.1:8065%{REQUEST_URI} [P,QSA,L] RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteRule .* http://127.0.0.1:8065%{REQUEST_URI} [P,QSA,L] RequestHeader set X-Forwarded-Proto "https" <Location /api/v1/websocket> Require all granted ProxyPassReverse http://127.0.0.1:8065 ProxyPassReverseCookieDomain 127.0.0.1 moin.znil.net </Location> <Location /> Require all granted ProxyPassReverse http://127.0.0.1:8065 ProxyPassReverseCookieDomain 127.0.0.1 moin.znil.net </Location> ErrorLog ${APACHE_LOG_DIR}/error_mattermost.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/access_mattermost.log combine </VirtualHost> <IfModule mod_ssl.c> SSLStaplingCache shmcb:/var/run/ocsp(128000) </IfModule>
und nun den Apache2 neu starten:
systemctl restart apache2.service
Ab nun ist eure Mattermost-Installation über die Subdomäne zu erreichen!
Quellen
- ganz viel https://www.google.de
- http://forum.mattermost.org/t/solved-mattermost-apache-configuration/1455/7
- http://forum.mattermost.org/t/solved-apache2-reverseproxy-with-websocket-https/437/4
- https://docs.mattermost.com/install/install-ubuntu-1604.html#installing-mattermost-server
- https://about.mattermost.com/download/