Private Cloud aufsetzen

ownCloud 9 unter Ubuntu Server 16.04 LTS installieren

23.02.2017 von Jürgen Donauer
Die ownCloud ist eine private Cloud, die sich am eigenen Standort vollständig unter eigner Kontrolle einsetzen lässt. Somit haben keine Dritten Zugriff auf die Daten. In diesem Workshop zeigen wir Ihnen die Installation der ownCloud 9 auf Ubuntu Server 16.04 Xenial Xerus LTS und geben Tipps zu Performance-Steigerung und Backups.

Vorbereitung und Installation von Ubuntu Server 16.04 LTS

Die aktuellste Version von Ubuntu mit Langzeitunterstützung ist Ubuntu 16.04 LTS. Natürlich wird auch Ubuntu Server 14.04 noch unterstützt und die ownCloud 9 läuft damit. Allerdings ist die ownCloud 9 für PHP 7 bereit und das führt Ubuntu Server 16.04 automatisch mit sich. Sie bekommen für Ubuntu Server 16.04 fünf Jahre lang Aktualisierungen - das Betriebssystem wird offiziell bis 2021 unterstützt. Bei einer produktiven ownCloud-Umgebung wollen Sie mit Sicherheit ein Betriebssystem einsetzen, das Sie so lange wie möglich nicht mehr ändern müssen. Aus diesem Grund würden sich auch die aktuellen Versionen von Red Hat oder SUSE eignen. Die nächste LTS-Version von Ubuntu gibt es laut Zeitplan im April 2018.

Laden Sie sich nun den Ubuntu Server herunter und installieren das Betriebssystem. Auch wenn Sie Deutsch als Sprache wählen, bekommen Sie den Hinweis, dass die gewählte Sprache nicht ganz vollständig implementiert ist. Das ist aber in Ordnung.

Während der Installation können Sie bereits angeben, dass das System als LAMP-Server betrieben werden soll. Weiterhin empfehlen wir die Installation des Pakets OpenSSH-Server. Ubuntu Server betreiben sie in der Regel "headless", also ohne Bildschirm. Mit OpenSSH erleichtern Sie sich später die System-Administration.

Wählen Sie LAMP aus, verlangt das System ebenfalls ein root-Passwort für den MySQL-Server. Weiterhin sollte der Host-Rechner mit dem Internet verbunden sein. Ist die Installation durchgeführt, aktualisieren Sie das System online. Melden Sie sich dafür auf dem System an und führen die für Debian-basierte Systeme übliche Routine aus:

sudo apt updatesudo apt upgrade

Dem Ubuntu Server wurde via DHCP eine IP-Adresse zugewiesen. Das ist für einen Server nicht ganz optimal. Eine feste IP-Adresse eignet sich an dieser Stelle wesentlich besser. Entweder erledigen Sie das über den DHCP-Server oder vergeben eine fixe IP-Adresse im Betriebssystem selbst. Editieren Sie dazu die Datei /etc/network/interfaces. Dort finden Sie zum Beispiel eine Sektion für die primäre Netzwerkkarte, die in unserem Fall enp0s3 ist. Wir haben die Sektion wie folgt geändert:

auto enp0s3iface enp0s3 inet staticaddress 192.168.100.80gateway 192.168.100.3netmask 255.255.255.0dns-nameservers 208.67.222.222, 208.67.220.220

Diese Werte passen Sie natürlich so an, dass sie entsprechend in Ihre Netzwerkumgebung passen. In unserem Beispiel hört der Server nun auf die IP-Adresse 192.168.100.80.

Konfigurieren Sie die IP-Adresse manuell, verlieren Sie allerdings die DNS-Auflösung für das System. Für die DNS-Server ist die letzte Zeile in unserem obigen Beispiel zuständig. Tragen Sie dort gültige DNS-Server getrennt mit einem Leerzeichen ein. Wir haben die Adressen von OpenDNS verwendet.

Die Google-DNS-Server würden 8.8.8.8 und 8.8.4.4 lauten. Diese setzt man ebenfalls gerne ein. Möglicherweise haben Sie auch einen eigenen DNS-Server im Einsatz und würden entsprechend diese Adresse verwenden. An dieser Stelle starten Sie am besten den Server neu. Danach hat er die gewünschte IP-Adresse.

Apache Webserver für https konfigurieren

Auch wenn Sie die ownCloud möglicherweise intern einsetzen, wollen Sie mit Sicherheit verschlüsselt mit dem Apache Webserver kommunizieren. Dazu ist es allerdings notwendig, dass Sie ein Zertifikat für den Ubuntu Server erstellen. Weiterhin muss das Modul ssl für Apache aktiviert sein. Dies sollte nach einer LAMP-Installation bereits der Fall sein. Zur Sicherheit führen Sie aber folgenden Befehl aus:

sudo a2enmod ssl

und starten danach den Apache Webserver neu:

sudo service apache2 restart

Im Anschluss erstellen Sie ein neues Verzeichnis:

sudo mkdir /etc/apache2/ssl

und nachfolgend das selbst unterzeichnete Zertifikat, das Sie in das eben erstellte Verzeichnis legen:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

Führen Sie diesen Befehl aus, fragt die Software nach diversen Angaben. Dazu gehören Land, Stadt, E-Mail-Adresse und so weiter. Hier tragen Sie entsprechend ein, was zu Ihrem Unternehmen passt.

Nun editieren Sie die Datei /etc/apache2/sites-available/default-ssl.conf. Dort finden Sie eine Zeile, die mit SSLEngine on beginnt. Fügen Sie darunter die beiden eben angelegten Zertifikate ein:

SSLCertificateFile /etc/apache2/ssl/apache.crtSSLCertificateKeyFile /etc/apache2/ssl/apache.key

Weiter unten finden Sie noch einmal zwei Zeilen, die mit SSLCertificateFile und SLCertificateKeyFile beginnen. Kommentieren Sie diese mit einem # aus oder löschen Sie diese Zeilen. Ansonsten führt das beim Apache-Neustart zu einem Fehler. Speichern Sie die Datei und aktivieren diesen mit SSL versehenen virtuellen Host:

sudo a2ensite default-ssl.conf

Für den weiteren Verlauf dieses Artikels ändern Sie außerdem die Zeile

DocumentRoot /var/www/html

in

DocumentRoot /var/www

Um später eine Security-Warnung zu vermeiden, aktivieren Sie noch mod_headers:

sudo a2enmod headers

Editieren Sie die Datei /etc/apache2/sites-available/default-ssl.conf abermals und fügen zum Beispiel unter der Zeile mit ServerAdmin diese Sektion ein:

<IfModule mod_headers.c>Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"</IfModule>

Im Anschluss starten Sie den Apache Webserver neu:

sudo service apache2 restart

Besuchen Sie nun die Seite https://192.168.100.80, dann bekommen Sie zwar eine Warnung wegen eines nicht vertrauenswürdigen Zertifikats, aber die Seite ist verschlüsselt. Die Warnung ist normal, da das Zertifikat von Ihnen selbst und nicht von einer autorisierten Zertifizierungsstelle ausgestellt wurde. Fügen Sie eine Ausnahme hinzu und vertrauen Sie dem Zertifikat. Ab sofort ist Ihr Apache Webserver https-fähig.

Wollen Sie die Warnung umgehen, könnten Sie alternativ auch auf Let's Encrypt setzen. Darüber bekommen Sie ein vertrauenswürdiges, kostenloses Zertifikat. Bei Let‘S Encrypt geben Sie während der Einrichtung eine Domäne an. Unser interner Server hat aber keine, deswegen setzen wir auf das selbst signierte Zertifikat.

Vorbereitungen für die ownCloud

Die ownCloud in Version 9 kann mit PHP 7 umgehen. Das ist bei Ubuntu Server 16.04 per Standard installiert. Ebenso benötigen Sie eine Datenbank, wobei hierfür SQLite, MySQL/MariaDB oder PostgreSQL infrage kommen. Zu den Minimalanforderungen von ownCloud 9 gehören PHP 5.4 und Apache 2 mit mod_php, sowie 128 MByte RAM. Empfohlen sind aber Apache 2.4 mit mod_php und mindestens 512 MByte Arbeitsspeicher.

Wir empfehlen, von SQLite komplett die Finger zu lassen. In der Datenbanksektion der Dokumentation raten die Entwickler ebenfalls davon ab, außer es handelt sich um Einzelanwender. Haben Sie aber sehr viele Dateien, ist SQLite auch für einzelne nicht geeignet. Die Performance ist sehr unbefriedigend - vielleicht für ein Testszenario geeignet, aber für eine produktive Umgebung auf keinen Fall.

Weitere Pakete: Für optimale Funktionalität sind noch ein paar zusätzliche Programme notwendig.
Foto: Jürgen Donauer

Haben Sie LAMP bei der Ubuntu-Installation ausgewählt, befindet sich MySQL bereits auf dem Server installiert. In unserem Beispiel haben wir MySQL verwendet. Sollte der Datenbankserver noch nicht installiert sein, holen Sie das nach:

sudo apt-get install mysql-server

Weiterhin benötigen Sie diverse zusätzliche Pakete, wobei einige davon optional sind. Wir raten dennoch zur Installation aller Pakete, da sonst einige Funktionen möglicherweise nicht verfügbar sind. Sie finden die Liste mit den notwendigen Softwarekomponenten im Administrations-Handbuch. Im ersten Befehl befindet sich Apache2, falls Sie diesen noch nicht eingespielt und wie oben beschrieben konfiguriert haben. Sollte das der Fall sein, ignoriert das System das Paket einfach. Wollen Sie SQLite gar nicht verwenden, können Sie im zweiten Befehl php-sqlite außen vor lassen:

sudo apt-get install apache2 mariadb-server libapache2-mod-php php-gd php-json php-mysql php-curl php-intl php-mcrypt php-imagick php-dom php-zip php-mbstring php-gettext

Hinweis: Der Befehl ist möglicherweise nicht zwingend notwendig, wenn Sie die ownCloud nicht über das offizielle Repository installieren, sondern sich die Quellen direkt holen. Schaden kann der Befehl aber auch nicht, denn die damit installierten Komponenten brauchen Sie ohnehin.

Installation von ownCloud 9

Die ownCloud befindet sich nicht in den Repositories von Ubuntu 16.04 LTS. Sie können aber ein Repository für Ubuntu 16.04 hinzufügen und bekommen auf diese Weise immer die neueste Version direkt von den Entwicklern. Über die entsprechende Download-Seite finden Sie übrigens nicht nur Repositories für Ubuntu. Es gibt auch Versionen für Debian, openSUSE, RHEL (Red Hat Enteprise Linux), SLE (SUSE Linux Enterprise) und CentOS. Alternativ könnten Sie das Paket direkt herunterladen und manuell installieren. Das Update über die Repositories ist allerdings angenehmer.

Wir raten deshalb, dass Sie die ownCloud über das offizielle Repository der ownCloud-Entwickler verwenden. Für Ubuntu 16.04 LTS geht das so:

sudo sh -c "echo 'deb http://download.owncloud.org/download/repositories/stable/Ubuntu_16.04/ /' >> /etc/apt/sources.list.d/owncloud.list"wget -nv https://download.owncloud.org/download/repositories/stable/Ubuntu_16.04/Release.key -O Release.keysudo apt-key add - < Release.keysudo apt updatesudo apt install owncloud

Sind Sie dem bisherigen Verlauf dieses Artikels gefolgt, erreichen Sie die ownCloud nun via https://192.168.100.80/owncloud/. Die Dateien der privaten Cloud haben sich im Verzeichnis /var/www/owncloud installiert.

Wollen Sie lieber die Quellen der ownCloud verwenden, packen Sie die Dateien aus und kopieren sie einfach in das Verzeichnis /var/www/owncloud. Die ownCloud wird über den Apache Webserver ausgeliefert und verwendet die Standard-Ports. Das sind für http Port 80 und für https Port 443.

Ersteinrichtung und Konfiguration der Datenbank

Beim Erstaufruf der ownCloud-WebGUI fordert Sie das System auf, ein Administrator-Konto einzurichten. Weiterhin konfigurieren Sie an dieser Stelle, welche Datenbank Sie verwenden möchten. Klicken Sie hierfür auf Speicher & Datenbank. Wir wollen für unser Beispiel die Option MySQL/MariaDB einsetzen und nicht das per Standard ausgewählte SQLite.

Die MySQL-Konfiguration verlangt unter anderem einen Datenbanknamen und einen Anwendernamen für die Datenbank. Als Anwender könnten Sie root verwenden, obwohl das eher unschön ist. Dafür hätten wir allerdings ein Passwort, das während der LAMP-Installation festgelegt wurde. Der Datenbankname ist hingegen noch nicht erschaffen. Entweder verwenden Sie die Kommandozeile dafür oder installieren phpMyAdmin auf dem Server. Haben Sie wenig mit Datenbanken zu tun, raten wir zu Letzterem:

sudo apt install phpmyadmin

Während der Installation fragt phpMyAdmin, welchen Webserver Sie verwenden wollen. In unserem Fall ist das apache2. Weiterhin brauchen Sie das Passwort für den administrativen Benutzer von MySQL. Sie können die Datenbankkonfiguration so aufrufen: https://192.168.100.80/phpmyadmin.

Das GUI lässt sich auf Deutsch umstellen, und hier dürfen Sie nun eine Datenbank einrichten. Klicken Sie dazu auf Datenbanken und wählen am besten einen sprechenden Namen. Wir haben unsere Datenbank owncloud9 genannt. Sind Sie mit dem Benutzer root als Datenbankbenutzer nicht glücklich, können Sie das an dieser Stelle ebenfalls ändern.

Nun haben wir alle Informationen, die zur Ersteinrichtung der ownCloud notwendig sind. Verwenden Sie die entsprechenden Parameter. Der Datenbankname ist in unserem Fall owncloud9 und der Host ist localhost, weil der MySQL-Server auf dem gleichen Host wie die ownCloud selbst läuft. Haben Sie alles eingetragen, klicken Sie auf Installation abschließen.

Die Oberfläche der ownCloud erkunden

Haben Sie die erste Einrichtung überstanden, können Sie sich nun als Administrator unter https://192.168.100.80/owncloud/ anmelden, was nach der ursprünglichen Konfiguration automatisch geschieht. Ein Begrüßungsbildschirm weist Sie darauf hin, wo Sie die Desktop-Clients und die Mobile-Apps finden. Weiterhin gibt es Hinweise, wie Sie sich mit Kalender (CalDAV), Kontakten (CardDAV) und WebDAV verbinden können.

Der Administrator beziehungsweise die Admin-Gruppe hat die komplette Kontrolle über die ownCloud. Nur Anwender mit diesen Sonderrechten dürfen neue Benutzer anlegen, Apps hinzufügen und so weiter.

Sollte die ownCloud nicht Deutsch sprechen, dann stellen wir aber zunächst die Sprache um. Klicken Sie dafür rechts oben auf Ihren Anwendernamen, in unserem Fall admin. Im sich aufklappenden Menü klicken Sie dann auf Personal oder Persönlich. In dieser Maske finden Sie alle persönlichen Einstellungen. Dazu gehören auch Profilbild, E-Mail-Adresse und so weiter.

Klicken Sie oben rechts auf den Benutzernamen, in unserem Fall admin und danach Benutzer, dann dürfen Sie neue Anwender und Gruppen hinzufügen. Selbst wenn Sie Anwender und Administrator sind, sollten Sie sich einen normalen Nutzer anlegen. Es gilt wie überall, dass Administration und Nutzung aus Gründen der Security getrennt sein sollten. In der Benutzermaske legen Sie auch die Quotas für die Anwender fest und können Administratoren für Gruppen bestimmen.

Mit einem Klick auf admin und danach Administration können Sie gewisse Systemeinstellungen vornehmen. Weiterhin konfigurieren Sie dort, wie Cron gehandhabt werden soll. Haben Sie die ownCloud auf einem eigenen Server, der sich ebenfalls in Ihrer Kontrolle befindet, sollten Sie den Cron des Linux-Rechners verwenden. Öffnen Sie dazu auf dem Linux-Server als root die Crontab des Webserver-Anwenders:

crontab -u www-data -e

und fügen dann diese Zeile ein:

*/15 * * * * php -f /var/www/owncloud/cron.php

Im Administrationsfenster finden Sie auch das Log, falls Sie auf Fehlersuche gehen müssen. Hier aktivieren Sie außerdem die serverseitige Verschlüsselung, was natürlich der Security sehr zu Gute kommt. Allerdings müssen Sie damit rechnen, dass die Dateien dann zirka 35 Prozent größer sind. Vor einer Aktivierung der Verschlüsselung sollten Sie sich die entsprechende Sektion im Anwenderhandbuch gründlich durchlesen.

Weitere Apps aktivieren

Links oben neben der Wolke finden Sie in einem Dropdown-Menü ein Pluszeichen und das Wort Apps. In dieser Maske bestimmt der Administrator, welche Apps aktiviert sein sollen und welche nicht. Interessant ist zum Beispiel die App External Storage Support. Damit können Anwender externe Storage-Quellen einbinden. Möglich sind unter anderem Amazon S3, Dropbox, OpenStack Object Storage, FTP, SFTP oder SMB / CIFS. Es funktionieren allerdings nicht Quellen alle gleich gut. Aktivieren Sie eine App, finden Sie die Einstellungen dafür normalerweise im bereits erwähnten Administrationsbereich.

Früher waren Kalender und Kontakte per Standard aktiviert. Diese Komponenten werden aber nun wie andere Dritt-Apps behandelt. Wollen Sie diese verwenden, müssen Sie sie zunächst aktivieren. Beachten Sie, dass bei einem Update alle Dritt-Apps deaktiviert werden. Nach der Aktualisierung muss der Administrator diese manuell wieder aktivieren.

Seit ownCloud Version 7 hat der Administrator die Möglichkeit, Apps nur für bestimmte Gruppen zu aktivieren. Das ist sehr angenehm, da sich vor der kompletten Freischaltung bestimmter Erweiterungen diese erst in einem ausgewählten Kreis testen lassen. Weiterhin ist sogenanntes Server-zu-Server-Sharing möglich. Das muss der Administrator bei den externen Storage-Optionen aktivieren. Nun kann ein Nutzer einem Anwender einer anderen ownCloud-Instanz einen Link schicken oder eine Freigabe erteilen. Nimmt dieser die Freigabe an, bindet sie sich in die ownCloud-Instanz der zweiten Partei ein. Nehmen Sie zur Kenntnis, dass die andere Partei dabei kein Nutzerkonto auf der ersten ownCloud-Instanz haben muss. Es handelt sich tatsächlich um serverübergreifendes Sharing und gibt der ownCloud die Charakteristik einer Public Cloud. Wie das genau funktioniert, finden Sie in dieser Schritt-für-Schritt-Anleitung.

Upload-Limits konfigurieren

Neben dem Quota der Anwender gibt es noch eine weitere Komponente, die das Limit der Uploads bestimmt. Dafür ist der Webserver beziehungsweise die PHP-Einstellung zuständig. Sind Sie unserer Anleitung gefolgt, können Sie per Standard Dateien hochladen, die maximal 513 MByte groß sind.

Maximaler Upload: Sie konfigurieren in der Datei .htaccess die maximal akzeptable Größe für hochzuladende Dateien.
Foto: Jürgen Donauer

Die Einstellungen werden an dieser Stelle nicht über eine Konfigurationsdatei php.ini festgelegt. Sie befinden sich in der Datei .htaccess im ownCloud-Ordner oder in unserem Fall /var/www/owncloud/.htaccess in der Sektion <IfModule mod_php5.c>.

Vollständiges Backup der ownCloud

Haben Sie eine funktionierende ownCloud im Einsatz, ist natürlich ein Backup zwingend notwendig. Sprechen wir von der Datensicherung, müssen wir an zwei Komponenten denken: die Dateien der Anwender und die Datenbank. Bei der Verwendung von SQLite liegt die Datenbank im ownCloud-Ordner. Sie müssen daher lediglich das komplette Verzeichnis sichern. In unserem Fall befindet sich dieses Verzeichnis unter /var/www/owncloud.

Datensicherung: Komprimierte Backups dauern länger, können aber enorm Platz sparen.
Foto: Jürgen Donauer

Verwenden Sie MySQL, MariaDB oder PostgreSQL, ist neben dem ownCloud-Ordner ebenfalls eine Sicherung der Datenbank notwendig. MySQL könnten Sie auch über phpMyAdmin sichern. Allerdings lässt sich das nicht automatisieren und verlangt umständliche Handarbeit.

Geschickter ist es, diesen Prozess zu automatisieren. Sie können das auf der Kommandozeile mithilfe des Tools mysqldump erledigen. Am besten fügen Sie der Datei noch einen Zeitstempel an. Die Syntax dafür sieht so aus:

mysqldump -u<Benutzer> -p<Passwort> <Datenbank> > backup$(date +%Y-%m-%d-%H.%M.%S).sql

oder in unserem Fall:

mysqldump -uroot -pStrengGeheim owncloud9 > backup$(date +%Y-%m-%d-%H.%M.%S).sql

Noch besser ist es, wenn Sie das Backup der Datenbank gleich komprimieren lassen. Selbst nach der anfänglichen Installation lässt sich der Platz von 347 KByte auf 211 KByte schrumpfen.

mysqldump -uroot -pStrengGeheim owncloud9 | bzip2 -c > backup$(date +%Y-%m-%d-%H.%M.%S).sql.bz2

Das Ganze können Sie nun noch in einem "Cronjob" packen und je nach Wunsch ausführen lassen. Ob das einmal in der Stunde, einmal pro Tag und in einem anderen Rhythmus stattfindet, müssen Sie selbst entscheiden.

Nextcloud - ein Fork der ownCloud

Wer sich für die ownCloud interessiert, sollte auch die Nextcloud im Auge behalten. Es handelt sich dabei um einen sogenannten Fork der ownCloud. Einige der Top-Entwickler der ownCloud haben das Projekt Nextcloud ins Leben gerufen. Sie sind der Meinung, dass sich die ownCloud zu weit von der Community entfernt hat.

Für die Nextcloud soll es auch keine Premium-Funktionen mehr geben, die nur in einer Enterprise-Version vorhanden sind. Anwender sollen immer das ganze Paket bekommen. Darüber hinaus haben die Entwickler der Nextcloud versprochen, die Apps Kalender und Kontakte wieder offiziell unterstützen und nicht als Dritt-Apps behandeln wollen.

Nextcloud: Den Fork der ownCloud sollten Sie auf jeden Fall im Auge behalten. Er bietet per Standard mehr Funktionen.
Foto: Jürgen Donauer

Die Installation von Nextcloud 9 ist derzeit noch fast äquivalent zu ownCloud 9. Der Unterschied ist, dass es noch kein Repository gibt. Da das Projekt aber sehr jung ist, muss man den Entwickler einfach etwas Zeit geben. Der Code an sich ist aber sehr ähnlich, was derzeit auch nicht verwunderlich ist. Das Projekt wurde erst vor ein paar Wochen "geforkt".

Für die Zukunft wird es auf jeden Fall spannend, ob sich ein ähnlicher Effekt wie damals bei LibreOffice und OpenOffice.org einstellt. Es sind durchaus Parallelen zu beobachten. LibreOffice hat sich unterm Strich durch die Nähe zur Community durchgesetzt. Ob das im Fall Nextcloud und ownCloud auch so ist, werden die nächsten Monate zeigen. (hal)