Aktionen

Mattermost unter Ubuntu 16.04 mit Apache und ISPConfig in Subdomain installieren

Aus znilwiki

ACHTUNG-BAUSTELLE.png

Dieses Thema ist noch nicht vollständig! Es wird noch daran gearbeitet!


Die Anleitung funktioniert auch ohne ISPConfig - oder auch mit anderen Verwaltungstools, dann eben sinngemäß



1 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




2 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.



3 Subdomain in ISPConfig anlegen

Die Subdomain habe ich mit diesen Einstellungen angelegt:
ClipCapIt-170318-193726.PNG
ClipCapIt-170318-193753.PNG

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:




4 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.
ClipCapIt-170318-194704.PNG

Danach legen wir die Datenbank an, diese muss zwingend (in dieser Anleitung)

mattermost

heißen:
ClipCapIt-170318-200611.PNG
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.



5 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:~#




6 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.



7 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!



8 Quellen


Kommentar hinzufügen
znilwiki freut sich über alle Kommentare. Sofern du nicht anonym bleiben möchtest, trage deinen Namen oder deine Email-Adresse ein oder melde dich an. Du kannst das Feld auch einfach leer lassen.