Author’s Archive: thuerter

Home / thuerter
13 Posts

UPDATE Kopano mit Debian 10 

Einleitung:

Die letzten Jahre habe ich Kolab unter Debian Wheezy (7) als Groupware genutzt. Ich hatte mich für Kolab entschieden, da ich eine einfache Lösung wollte welche alle Grundfunktionen einer Groupware vereint. Damals hatte ich diverse Lösungen (SoGo, Tine, ….) getestet . Entweder bestanden die Installationen aus sehr vielen Bestandteilen welche häufig manuell installiert werden mussten und/oder die Konfiguration war sehr umfangreich – neben diversen anderen Nachteilen . Dank der Opensource Vielfalt und vielen fertigen Teillösungen kann man sich auch selbst eine Groupware zusammen konfigurieren, dann lohnt sich auch die investierte Zeit. Eine „Schlüsselfertig“ Groupware sollte daher möglichst einfach installierbar sein, gute Standard-Einstellungen mitbringen und nach Möglichkeit individuell anpassbar sein. Somit fiel die Wahl (damals) auf Kolab, mit etwas Einarbeitung stand auch zügig das System. Über den integrierten LDAP Server als Datenbasis kann man streiten, für mich aber okay. Letztlich muss nun wieder eine Alternative her, für Kolab gibt es nicht wirklich Updates und die Winterfell Version ist meiner Meinung nach mehr eine Beta Version. Das angekündigte Kolab Release war ursprünglich für Q1/2017 angekündigt und wurde mittels Kolab 18 auf Q1/2018 „verschoben“. De facto gibt derzeit kein aktuelles Kolab, lediglich eine ältere Version unter Debian 8. Mal ganz abgesehen von den vielen kleinen Fehlern innerhalb der Installation oder auch danach.

Was ist eine Alternative?

Nach einiger Suche wurde ich auf Kopano aufmerksam.Die Key-Features klingen gut, die Optik passt. Somit stand einer Test-VM nicht mehr im Weg. Leider gibt es derzeit keine fertigen Pakete innerhalb eines Repositories für die Community Variante. Die Pakete sind im Subscription Modell enthalten. Laut einer Ankündigung soll das kommende Debian Buster (10) – Release wohl Sommer 2019 – die Pakete beinhalten. Im Testing-Zweig sind die Pakete zumindest schon mal gelistet. Bis dahin installiere ich es lieber manuell unter einem LTS OS.

Wer wie ich die Komponente(n) manuell installieren möchte, sollte sich den Download Bereich einmal ansehen von Kopano. Hier findet man alle nötigen Pakete innerhalb von Nightly-Build-Archiven.

Die Installation:

Für den Anfang wird eine Debian Grundinstallation vorgenommen. Es gibt auch die Möglichkeit, eine andere Distribution zu nutzen wie bspw. Ubuntu, RHEL, SLES, OpenSuse und Weitere.

1. LAMP & Nützliche Tools

Nach Absenden des folgenden Befehls dem Menü folgen und „Apache2“ im Dialogmenü auswählen. Im Dialog bezüglich des PhpMyAdmin ist die Option „dbconfig-common“ auszuwählen.

root@mail:~#apt-get update && apt-get install -y apache2 mysql-server phpmyadmin postfix

2. Nützliche Tools & Absicherung

root@mail:~# apt-get install -y vim telnet wget w3m apt-transport-https net-tools mlocate vim && updatedb

Absicherung Webserver

Folgende Zeilen innerhalb der /etc/apache2/conf-available/security.conf anpassen.

ServerTokens Prod
ServerSignature Off
Header set X-Content-Type-Options: "nosniff"
Header set X-Frame-Options: "sameorigin"

Dies gibt Angreifern weniger Informationen über den Server und somit erhöht sich der Aufwand für eine erfolgreiche Serverübernahme. Zusätzliche aktiviere ich das Apache Module und starte den Dienst neu, damit die Konfiguration übernommen wird.

root@mail:~# a2enmod headers && systemctl restart apache2

Absicherung MySQL / MariaDB Datenbankserver

Setzen des Datenbank root Kennwortes sowie entfernen unnötiger Einträge. Im darauf folgenden Dialog können jeweils die Default „Y“ (YES) übernommen werden.

root@mail:~# mysql_secure_installation

Zwischenpprüfung

Bis hierin sollten keine Fehlermeldungen auf der Konsole zu finden sein. Wenn alles richtig gemacht wurde dürften die folgenden Prozesse (apache2 & mysqld) existieren

root@mail:~# pstree
systemd─┬─agetty
        ├─apache2───10*[apache2]
        ├─cron
        ├─dbus-daemon
        ├─mysqld───26*[{mysqld}]
        ├─rsyslogd─┬─{in:imklog}
        │          ├─{in:imuxsock}
        │          └─{rs:main Q:Reg}
        ├─sshd───sshd───bash───pstree
        ├─systemd───(sd-pam)
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-timesyn───{sd-resolve}
        └─systemd-udevd

Zusätzlich muss unter http://%IP-Adresse%/phpmyadmin die GUI von phpMyAdmin erreichbar sein. Beispiel:

Der Login wird jedoch fehlschlagen, da mit der neuen MariaDB Version auf eine weitere Authentifizierung „unix-socket“ zurückgegriffen wird. Hierbei kann man sich mit einem entsprechendem User direkt ohne Passwort innerhalb der Konsole einloggen. Im Folgenden der Befehl um das gewohnte Verhalten zu erzwingen:

root@mail:~# mysql -u root -p -e "update mysql.user set plugin='' where User='root';"

Installation Kopano

Wie bereits erwähnt findet man die Archive unter https://download.kopano.io/community/, hierbei muss man die folgenden Download-URLs entsprechend des derzeit aktuellen Paketes anpassen. Weiterhin muss man diverse Abhängigkeiten während der Installation „nachziehen“, da sonst die Installation nicht möglich ist. Dank Paketmanager aber eine einfach Aufgabe.

root@mail:~# mkdir kopano_temp
root@mail:~# cd kopano_temp/
root@mail:~/kopano_temp# wget https://download.kopano.io/community/core:/core-8.6.80.1248_0%2B176-Debian_9.0-amd64.tar.gz
root@mail:~/kopano_temp# wget https://download.kopano.io/community/files:/files-2.1.4.286-Debian_9.0-all.tar.gz
root@mail:~/kopano_temp# wget https://download.kopano.io/community/mdm:/mdm-2.1.0.102%2B23-Debian_9.0-all.tar.gz
root@mail:~/kopano_temp# wget https://download.kopano.io/community/webapp:/webapp-3.4.17.1630%2B928-Debian_9.0-all.tar.gz

Installation Core-Paket

root@mail:~/kopano_temp# tar xfz core-*.tar.gz
root@mail:~/kopano_temp# cd core-8.6.80.1248_0+176-Debian_9.0-amd64/
root@mail:~/kopano_temp/core-8.6.80.1248_0+176-Debian_9.0-amd64# dpkg -i *.deb
root@mail:~/kopano_temp/core-8.6.80.1248_0+176-Debian_9.0-amd64# apt-get install -f
root@mail:~/kopano_temp/core-8.6.80.1248_0+176-Debian_9.0-amd64# dpkg -i *.deb
root@mail:~/kopano_temp/core-8.6.80.1248_0+176-Debian_9.0-amd64# cd ..

Nun sollten keine Abhängigkeiten mehr fehlen, abgesehen von „libjansson-doc“. Dies vernachlässige ich jedoch, da es sich hierbei lediglich um eine Dokumentation handelt.

Installation Webapp-Paket

root@mail:~/kopano_temp# tar xfz webapp-*.tar.gz
root@mail:~/kopano_temp# cd webapp-3.4.17.1630+928-Debian_9.0-all
root@mail:~/kopano_temp/webapp-3.4.17.1630+928-Debian_9.0-all# dpkg -i *.deb
root@mail:~/kopano_temp/webapp-3.4.17.1630+928-Debian_9.0-all# apt-get -f install
root@mail:~/kopano_temp/webapp-3.4.17.1630+928-Debian_9.0-all# dpkg -i *.deb
root@mail:~/kopano_temp/webapp-3.4.17.1630+928-Debian_9.0-all# cd ..

Installation Files-Paket

root@mail:~/kopano_temp# tar xfz files-*.tar.gz
root@mail:~/kopano_temp# cd files-2.1.4.286-Debian_9.0-all/
root@mail:~/kopano_temp/files-2.1.4.286-Debian_9.0-all# dpkg -i *.deb
root@mail:~/kopano_temp/files-2.1.4.286-Debian_9.0-all# apt-get install -f
root@mail:~/kopano_temp/files-2.1.4.286-Debian_9.0-all# dpkg -i *.deb
root@mail:~/kopano_temp/files-2.1.4.286-Debian_9.0-all# cd ..

Installation MDM-Paket

root@mail:~/kopano_temp# tar xfz mdm-*.tar.gz
root@mail:~/kopano_temp# cd mdm-2.1.0.102+23-Debian_9.0-all/
root@mail:~/kopano_temp/mdm-2.1.0.102+23-Debian_9.0-all# dpkg -i *.deb
root@mail:~/kopano_temp/mdm-2.1.0.102+23-Debian_9.0-all# apt-get install -f
root@mail:~/kopano_temp/mdm-2.1.0.102+23-Debian_9.0-all# dpkg -i *.deb
root@mail:~/kopano_temp/mdm-2.1.0.102+23-Debian_9.0-all# cd ..

Installation Z-Push:

Für Kopano ist Z-Push eine Voraussetzung.

root@mail:~/kopano_temp# wget -qO - http://repo.z-hub.io/z-push:/final/Debian_9.0/Release.key | apt-key add -
OK
root@mail:~/kopano_temp# echo "deb http://repo.z-hub.io/z-push:/final/Debian_9.0/ /" | tee /etc/apt/sources.list.d/z-push.list
deb http://repo.z-hub.io/z-push:/final/Debian_9.0/ /
root@mail:~/kopano_temp# apt-get update
root@mail:~/kopano_temp# apt-get install z-push-kopano z-push-config-apache -y
root@mail:~/kopano_temp# z-push-admin -a fixstates

Nun wird noch das SSL Modul aktiviert, der https vHost aktiviert und die php.ini bearbeitet. Hierbei sollte man den Wert von „session.cookie_httponly“ (bei mir Zeile 1386) auf den Bool-Wert „true“ setzen, optional kann man noch „date.timezone = „Europe/Berlin“ hinterlegen. Wie gehabt im Anschluss den Dienst neustarten.

root@mail:~/kopano_temp# a2enmod ssl
root@mail:~/kopano_temp# a2ensite default-ssl.conf
root@mail:~/kopano_temp# vim /etc/php/7.0/apache2/php.ini
root@mail:~/kopano_temp# systemctl restart apache2

Optional: LetsEncrypt Zertifkat

Dank Letsencrypt kann jeder kostenfreie öffentliche Zertifikate nutzen. Innerhalb der Webserver-Konfig wird noch der FQDN gesetzt im Parameter „ServerName, ansonsten erkennt der Certbot den vHost nicht korrekt.

root@mail:~/kopano_temp# echo "deb http://ftp.debian.org/debian stretch-backports main" >> /etc/apt/sources.list
root@mail:~/kopano_temp# apt-get update
root@mail:~/kopano_temp# apt-get install python-certbot-apache -t stretch-backports -y
root@mail:~/kopano_temp# vim /etc/apache2/sites-enabled/000-default.conf
root@mail:~/kopano_temp# systemctl restart apache2
root@mail:~/kopano_temp# certbot --apache

 

Anschließend ist die Webseite bzw. GUI unter https://%IP-Adresse%/webapp erreichbar. Beispiel?

Der Screenshot wurde vor LetsEncrypt erstellt, daher ist auch das Zertifikat nicht vertrauenswürdig.

Eine wirkliche Funktion ist bis hierhin nicht gegeben, da das komplette Backend, die Datenbank fehlt. Hierzu werden wir einen Benutzer „kopano-user“ mit dem zugehörigen Kennwort „GEHEIM“ erstellen samt Datenbank „kopano“.

root@mail:~/kopano_temp# mysql -u root -p -e "CREATE USER 'kopano-user'@'localhost' IDENTIFIED BY 'GEHEIM';GRANT USAGE ON *.* TO 'kopano-user'@'localhost'; CREATE DATABASE kopano;GRANT ALL PRIVILEGES ON kopano.* TO 'kopano-user'@'localhost';flush privileges;"

Im nächsten Schritt werden die soeben erstellten Daten genutzt indem die Konfigurationsdatei angepasst wird

root@mail:~/kopano_temp# gunzip -c /usr/share/doc/kopano/example-config/server.cfg.gz > /etc/kopano/server.cfg
root@mail:~/kopano_temp# vim /etc/kopano/server.cfg

Meine Konfiguration sieht wie folgt aus:

Damit Kopano die Änderung auch erfasst und die Tabellenstruktur erstellt ist ein Neustart des Dienstes notwendig. Anschließend wird noch der erste Benutzer für Kopano selbst erzeugt.

root@mail:~/kopano_temp# systemctl restart kopano-server.service
root@mail:~/kopano_temp# kopano-admin -c thuerter -p 123456 -e noreply@huerter.me -f "Tim Hürter" -a1
User created.

Bug in der aktuellen Version: Der Mail-Store muss manuell erstellt werden, dieser sollte in wenigen Tagen (Stand: 15.07.2018) behoben werden.

 

Konfiguration Mobile Device Management (MDM)

root@mail:~/kopano_temp# hostname -f
mail.genx-dev.de
root@mail:~/kopano_temp# vim /etc/kopano/webapp/config-mdm.php

Die aufgerufene config-mdm.php sollte wie folgt bearbeitet werden. Hierbei ist der FQDN (hostname -f) entsprechend zu setzen

<?php
define('PLUGIN_MDM_USER_DEFAULT_ENABLE_MDM', false);
define('PLUGIN_MDM_SERVER', 'mail.genx-dev.de');
define('PLUGIN_MDM_SERVER_SSL', false);
?>

Kopano dagent & Postfix:

Kopano hat einen eigenen MTA Agent. Hierbei wird der Agent im MTA (bspw. Postfix) integriert mittels LMTP.

root@mail:~/kopano_temp# gunzip -c /usr/share/doc/kopano/example-config/dagent.cfg.gz > /etc/kopano/dagent.cfg

Hinweis, möglicherweise ist folgende Anpassung notwendig, sofern der Dienst nicht gestartet wird, Zeile ~75 der dagent.cfg. Mit der Default-Konfig wurde der Dienst nicht gestartet und entsprechend war der Port nicht verfügbar. Bug Link

lmtp_listen = [::1]:2003 127.0.0.1:2003
lmtp_port = 2004
root@mail:~# systemctl status kopano-dagent.service
● kopano-dagent.service - Kopano Core Delivery Agent
   Loaded: loaded (/lib/systemd/system/kopano-dagent.service; disabled; vendor preset: enabled)
   Active: active (running) since Wed 2018-07-11 22:33:21 CEST; 3min 4s ago
     Docs: man:kopano-dagent(8)
           man:kopano-dagent.cfg(5)
 Main PID: 1166 (kopano-dagent)
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/kopano-dagent.service
           └─1166 /usr/sbin/kopano-dagent -l

Jul 11 22:33:21 mail systemd[1]: Started Kopano Core Delivery Agent.
Jul 11 22:33:21 mail kopano-dagent[1166]: Starting kopano-dagent version 8.6.80 (pid 1166) (LMTP mode)
root@mail:~# netstat -tulpen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      107        12170      860/mysqld
tcp        0      0 127.0.0.1:2003          0.0.0.0:*               LISTEN      0          15527      1166/kopano-dagent
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      0          12015      736/sshd
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          12798      963/master
tcp6       0      0 :::80                   :::*                    LISTEN      0          12052      862/apache2
tcp6       0      0 ::1:2003                :::*                    LISTEN      0          15528      1166/kopano-dagent
tcp6       0      0 :::22                   :::*                    LISTEN      0          12017      736/sshd
tcp6       0      0 :::25                   :::*                    LISTEN      0          12799      963/master
tcp6       0      0 :::443                  :::*                    LISTEN      0          12056      862/apache2

Feinschliff & Abschluss

Sofern alle Dienste laufen, sollte man unbedingt den Autostart aktivieren.Zu guter Letzt wird noch der Installationsordner entfernt.

root@mail:~/kopano_temp# systemctl enable kopano-dagent kopano-gateway kopano-ical kopano-monitor kopano-presence kopano-search kopano-server kopano-spooler
root@mail:~/kopano_temp# cd ..
root@mail:~# rm -rf kopano_temp

Wenn Kolab es mal geschafft hat Version 18 zu veröffentlichen, welches übrigens schon seit Q1/2018 released sein soll, wäre es evtl. einen Blick wert. Vermutlich wird dann aber Kopano Mitte 2019 dank Debian 10 und besseren Updates durch das Repository die bessere Wahl sein.ABER, erstmal in Ruhe alle Kopano Funktionen testen.

 

Viel Erfolg beim eigenen Setup.

Für meine Datensicherung nutze ich „tar„, eines der meist genutzten Programme zum erstellen von Archiven. Dank der weiten Verbreitung ist das Tool zumeist mit den meisten Distributionen vorinstalliert.Per Default ist es aber recht langsam und nutzt nicht wirklich die Leistung des Systems. Grund hierfür ist die fehlende Multithreading Unterstützung.

 

Im konkreten möchte ich einen Samba Share innerhalb einer KVM-VM sichern. In diesem sind alle möglichen Arten von Dateien (Programme, Datenbanken, Scripte, PDFs, TXTs, Videos, …) vorhanden.

Die vorhandenen 22 GB Daten verteilen sich auf rund 90.000 Dateien. Für die Erstellung des Archivs stehen innerhalb der VM 1GB RAM sowie 2 virtuelle CPU Cores zur Verfügung vom KVM Hostsystem (Intel Xeon CPU E3-1240L v5 @ 2.10GHz, 16 GB DDR4 ECC 2133MHz, RAID1 über WD20EFRX-68EUZN0) bereit.

Top 15 Dateitypen zur Veranschaulichung:

root@catelyn:/storage_data/folder# find . -type f | sed -n 's/..*\.//p' | sort | uniq -c | sort -nr | head -n 15
  27511 jpg
  11864 php
  11345 png
  10867 html
   4623 gif
   4472 js
   2321 pdf
   1697 css
   1382 bmp
   1337 ini
   1307 JPG
   1278 xml
   1258 txt
    855 docx
    771 htm

Die Tools können alle mittels des jeweiligen Paketmanagers (yum, apt etc.) installiert werden.

 

Typ Befehl Zeit Größe in MB Kompression
null Reine Ordner/Dateigröße 0 21949 0
tar tar cf backup_plain.tar ../folder 7m22.590s 21736 0,97%
tar compress tar czf backup_compress.tar.gz ../folder/ 16m8.776s 18387 16,23%
pigz tar -I pigz -cf backup_pigz.tar.gz ../folder/ 9m43.084s 18392 16,21%
pbzip2 tar -I pbzip2 -cf backup_pbzip2.tar.bz2 ../folder/ 28m33.028s 17898 18,46%
pxz tar -I pxz -cf backup_pxz.tar.xz ../folder/ 82m30.024s 17325 21,07%
zip zip -r backup ../folder/* 17m16.504s 18464 15,88%

Meine persönliche Wahl fällt auf pigz, da hier Kompression und Rechenzeit in einem guten Verhältnis stehen.

 

Wenn reine Dokumente gesichert werden, würde ich den Test nochmals wiederholen. Der durchgeführte Test bezieht sich auf viele verschiedene Dateitypen welche teilweise bereits komprimiert waren.

Welcome to WordPress. This is your first post. Edit or delete it, then start writing!