Administrative Notizen
Diese Seite enthält meine Installationsnotizen. Der Dienst läuft in einer virtuellen Maschine, die wir auf Projektrechnern im externen Rechenzentrum bei Hetzner eingerichtet haben. Für Backup ist gesorgt. Bei Bedarf können wir der Installation auch mehr Ressourcen zur Verfügung stellen.
Generelles Setup von Webdiensten
## DNS-Setup (10 Min)
A und CNAME auf IP gesetzt, Reverse Record bei Hetzner angepasst
## SSH (10 Min)
Passwort neu gesetzt.
TOTP via Google Authenticator (http://www.howtogeek.com/121650/how-to-secure-ssh-with-google-authenticators-two-factor-authentication/)
## Mail (15 Min inkl. Firewallgefrickel)
SSMTP-Installation, Mailversand über mysmartgrid-Infrastruktur.
## Cron-APT (5 Min)
Installieren, Updates automatisiert einspielen
## Webserver / Nginx (20 Min)
Nginx installiert
Acmetool via PPA installiert (https://github.com/hlandau/acme)
$ acmetool quickstart
-> Stateless configuration
# acmetool account-thumbprint
Den Thumbprint in der NGINX-Config eintragen (1x pro vhost)
# acmetool want koordinierungs.ninja www.koordinierungs.ninja
# ls -l /var/lib/acme/live/ # certs sollten da liegen
Konfiguration des vhosts auf basis von https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=nginx-1.10.0&openssl=1.0.2g&hsts=yes&profile=modern
-> A+ bei SSLLabs: https://www.ssllabs.com/ssltest/analyze.html?d=koordinierungs.ninja&hideResults=on
Mattermost-Installation (ca. 60 Minuten)
Siehe http://docs.mattermost.com/install/prod-ubuntu.html
Datgenbank "mattermost", user "mmuser", pass <PASSWORT>
# useradd -r mattermost
Daten:
# mkdir -p /var/local/mattermost && chown -R mattermost /var/local/mattermost
Software:
# mkdir -p /usr/local/mattermost && chown -R mattermost /usr/local/mattermost
config/config.json - DB-Verbindunng eintragen:
"DriverName": "postgres",
"DataSource": "postgres://mmuser:<PASSWORT>@127.0.0.1:5432/mattermost?sslmode=disable&connect_timeout=10",
Nginx-Snippet aus Deployment-Anleitung übertragen und anpassen
-> Einloggen, noch ein paar Konfigurationen vor allem für den Email-Versand eintragen
## Systemd: Unit erstellen
# vi /etc/systemd/system/mattermost.service
[Unit]
Description=Mattermost is an open source, self-hosted Slack-alternative
After=syslog.target network.target
[Service]
Type=simple
User=mattermost
Group=mattermost
ExecStart=/opt/mattermost/bin/platform
PrivateTmp=yes
WorkingDirectory=/opt/mattermost
Restart=always
RestartSec=30
LimitNOFILE=49152
[Install]
WantedBy=multi-user.target
# systemctl daemon-reload && systemctl enable mattermost && systemctl start mattermost
## Backup (20 min)
Die VM wird über den Host weggesichert, nur die Datenbank muss zusätzlich täglich konsistent gesichert werden.
# mkdir /var/local/mattermost_backup
# chown -R mattermost:mattermost mattermost_backup/
# usermod -a -G mattermost postgres
# chmod g+w mattermost_backup/
# sudo -i -u postgres
Testen des Dumps: $ pg_dumpall > /var/local/mattermost_backup/dbdump.sql
Dieses Kommando dann in die Crontab des users postgres eintragen
Upgrade von mattermost
Das Upgrade ist auf https://docs.mattermost.com/administration/upgrade.html beschrieben.
ver=3.9.0
cd /usr/local/
sudo wget https://releases.mattermost.com/${ver}/mattermost-${ver}-linux-amd64.tar.gz
sudo systemctl stop mattermost
d=`date +%Y%m%d`
sudo tar jcf old_files/mattermost-backup-${d}.tar mattermost
sudo -u postgres pg_dump mattermost > /tmp/mattermost-pgdump-${d}.sql
sudo mv -i /tmp/mattermost-pgdump-${d}.sql old_files/
sudo rm -rf mattermost-previous
sudo mv -i mattermost mattermost-previous
sudo tar xf mattermost-${ver}-linux-amd64.tar.gz
sudo cp mattermost-previous/config/config.json mattermost/config/config.json
sudo chown -R mattermost.mattermost mattermost
sudo systemctl start mattermost
sudo systemctl status mattermost
Installation von OwnCloud (ca. 60 Minuten)
Die Installation folgt recht genau dieser Anleitung, fast identisch auch für Linux gültig.
# apt-get install mariadb-client mariadb-server
# service mysql start
# mysql_secure_installation
# mysql -p -e "create database owncloud;"
# mysql -p -e "grant all on owncloud.* to 'owncloud'@'localhost' identified by 'CHANGE_THIS_PASSWORD'; flush privileges;"
Backup der Datenbank als cronjob von root:
# crontab -e
33 1 * * * /usr/bin/mysqldump owncloud > /var/owncloud/backup/owncloud-database.sql
# apt-get install php-mysql php-bcmath php-gmp php-gd php-curl php-ldap
# php-exif php-fileinfo php-mbstring php-bz2 php-zip php-mcrypt php-fpm
# php-pear
# vim /etc/php/7.0/fpm/pool.d/owncloud.conf
Hinzufügen:
; MD: Owncloud settings
[owncloud]
listen=/var/run/php-fpm.socket
listen.owner=www-data
listen.group=www-data
listen.mode=0666
listen.backlog=-1
listen.allowed_clients=127.0.0.1
user=www-data
group=www-data
pm=dynamic
pm.max_children=4
pm.start_servers=1
pm.min_spare_servers = 1
pm.max_spare_servers = 2
pm.max_requests = 500
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
Der Pool "WWW" kann gelöscht werden.
# vim /etc/php/7.0/{fpm|cli}/php.ini
-> Sicherstellen, dass cgi.fix_pathinfo=0 eingestellt ist.
# service php7.0-fpm start
# mkdir -p /var/owncloud/data /var/owncloud/software
# cd !$
# wget https://download.owncloud.org/community/owncloud-9.1.1.tar.bz2
# tar xf owncloud-9.1.1.tar.bz2
# rm owncloud-9.1.1.tar.bz2
# find owncloud -type d -exec chmod 751 {} \;
# find owncloud -type f -exec chmod 444 {} \;
-> Mit dem Webbrowser die URL besuchen und Administrator einrichten.
Dabei /var/owncloud/data als Verzeichnis für die Datenspeicherung
angeben.
Cronjob anlegen:
# crontab -u www-data -e
*/15 * * * * php -f /var/owncloud/software/owncloud/cron.php
Redis Cache einrichten:
# apt-get install redis-server php-redis
-> in /etc/redis/redis.conf den Unix Socket aktivieren, Permission 777
In /var/owncloud/software/owncloud Redis als Cache eintragen:
'memcache.local' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
'host' => '/var/run/redis/redis.sock',
'port' => 0,
),
Danach FPM neu starten:
# /etc/init.d/php7.0-fpm restart
Dokumentationswebseite (40 min)
Benutzt Hugo mit dem Theme Material Docs
Separater vhost dafür eingerichtet und mit lets encrypt-Setup versehen.
Status-Update
Falls Probleme mit Mattermost oder Owncloud auftreten, die Status-Seite (content/article/status.md) updaten, indem das grüne Viereck durch ein rotes ersetzt (src=“/img/green.png” -> src=“/img/red.png”) und eine Begründung geschrieben wird.