Führende Owncloud-Entwickler, darunter der Gründer Frank Karlitschek, überwarfen sich mit dem Kurs des Projekts und haben mit Nextcloud einen Fork gestartet. Der soll ein besseres Gleichgewicht zwischen Unternehmen, Kunden und Nutzern herstellen.
Die freie Cloudspeicher-Software Owncloud mauserte sich in den vergangenen Jahren zu einer ernsthaften Alternative zu kommerziellen Diensten wie Dropbox oder Google Drive. Wer seine Daten für sich behalten möchte, sie aber trotzdem komfortabel zwischen seinen Rechnern und mobilen Geräten abgleichen oder gezielt mit anderen teilen will, greift zur Owncloud-Instanz auf einem kleinen Server. Nutzer von NAS-Geräten finden die Software oft in den offiziellen Paketquellen des jeweiligen Systems.
Doch die Erfolgsgeschichte von Owncloud bekam Ende April 2016 einen herben Dämpfer: Zusammen mit dem Owncloud-Gründer Frank Karlitschek [1] verließen etliche Stammentwickler das Projekt, um mit Nextcloud [2] einen Fork von Owncloud weiterzuführen. Jos Poortvliet, zuvor Ownclouds Community-Manager und jetzt für die Kommunikation bei Nextcloud verantwortlich, bezeichnet das Vorhaben als “Neustart”. Als Grund für die Neugründung geben Karlitschek und Poortvliet “strukturelle Probleme” und einige “wirtschaftliche Entscheidungen” des Owncloud-Unternehmens an, die für große Unzufriedenheit gesorgt hätten.
Nextcloud kooperiert mit dem Unternehmen Spreed.me [3], das einen WebRTC-Server als Videokonferenzlösung mit Owncloud kombiniert und einen damit vorinstallierten Rechner unter dem Namen Spreedbox [4] verkauft. Das neue Unternehmen führen Frank Karlitschek und Niels Mache – Letzterer war bisher für Spreed.me verantwortlich und zählt zu den Mitgründern von Red Hat Deutschland.
Das neue Projekt will die Webanwendung über die Kernfunktionalität hinaus deutlich erweitern und etwa den WebRTC-Server von Spreed sowie die dazugehörige Anwendung in Nextcloud integrieren. Zudem möchte man viel genutzte Owncloud-Anwendungen wie den Kalender oder die Kontaktverwaltung pflegen und offiziell unterstützen. Es existieren auch Pläne, mit LibreOffice zu kooperieren, um Office-Dokumente kollaborativ im Browser zu bearbeiten.
Next- vs. Owncloud
Die derzeit vorliegende Ausgabe von Nextcloud trägt die Versionsnummer 9.0.50 und basiert zu wesentlichen Teilen noch auf Owncloud 9. Unter den Neuerungen des Forks findet sich zum Beispiel eine Write-Only-Funktion. Sie erlaubt anonymen Nutzern das Hochladen von Daten auf den Cloudspeicher, ohne dass sie selbst Zugriff auf vorhandene Dateien und Verzeichnisse erhalten. Ebenfalls neu ist eine Protokollierung von Ereignissen wie etwa Dateifreigaben, Updates oder Logins. Des Weiteren gibt das Entwicklerteam an, die Software gegen Angriffe gehärtet und einige Fehler beseitigt zu haben.
Bei der Installation von Nextcloud können Sie sich in vielen Fällen an Anleitungen zu Owncloud orientieren. Im Rahmen des Tests muss sich Nextcloud auf einem System mit Ubuntu Server 16.04 im Zusammenspiel mit Apache und MariaDB (ehemals MySQL) beweisen. Eine Port-Weiterleitung vom Router erlaubt den Zugriff aus dem Internet auf den Home-Server. Mithilfe eines kostenlosen SSL-Zertifikats von Let’s Encrypt schützen Sie Ihre Daten auf dem Weg durch das Internet vor fremden Blicken.
Installation
Bevor Sie mit der Installation von Nextcloud beginnen, aktualisieren Sie am besten die Paketquellen des Systems und spielen die anstehenden Updates der Distribution ein (Listing 1, Zeile 1 und 2). Anschließend installieren Sie den Apache-Webserver mitsamt MariaDB und allen für den Dienst benötigten Apache- und PHP-Erweiterungen (Zeile 3). Für “lesbare” URLs aktivieren Sie danach das Apache-Modul mod_rewrite sowie für die SSL-Verbindung noch mod_headers; anschließend starten Sie den Webserver neu (Zeile 4 bis 6). Als Datenbank ließe sich zwar auch SQLite einsetzen, für den Zugriff von mehr als zwei, drei Anwendern empfiehlt sich jedoch MySQL/MariaDB.
Listing 1
$ sudo apt update $ sudo apt full-upgrade $ sudo apt 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 $ sudo a2enmod rewrite $ sudo a2enmod headers $ sudo service apache2 restart
Ein wenig Nacharbeit erfordert inzwischen der aus dem MySQL-Projekt hervorgegangene MariaDB-Datenbankserver. Für ihn setzen Sie zunächst ein Root-Passwort (Listing 2). Anschließend sorgt das Skript mysql_secure_installation für eine sichere Umgebung. Es erfordert das Eingeben des aktuellen SQL-Root-Passworts – im Beispiel wäre dies nach dem ersten Kommando geheim. Anschließend können Sie es bequem über das Einrichtungsskript ändern.
Listing 2
$ sudo mysql -u root
MariaDB [(none)]> update mysql.user set password=password('geheim') where user='root';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
$ sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none): geheim
[...]
Change the root password? [Y/n] y
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
Alle anderen Fragen lassen sich in der Regel ebenfalls mit [Y] beantworten. Danach fehlt für Nextcloud nur noch eine Datenbank, die in Zukunft die Daten des Cloudspeichers organisiert. Dazu melden Sie sich erneut beim MariaDB-Server an und erstellen dann die Datenbank samt der entsprechenden Rechte und Einstellungen (Listing 3). Beim Anlegen des Datenbank-Benutzers (CREATE USER [...]) sollten Sie zur Sicherheit ein besseres Passwort als geheim verwenden. Merken Sie es sich, Sie müssen es später nochmals eingeben.
Listing 3
$ sudo mysql -u root -p MariaDB [(none)]> CREATE DATABASE nextcloud; MariaDB [(none)]> CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'geheim'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost'; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> exit;
Let’s Encrypt
Im nächsten Schritt ermöglichen Sie den Zugriff aus dem Internet und sichern die Verbindung zum Server über ein SSL-Zertifikat von Let’s Encrypt [5]. Dazu müssen Sie in einem ersten Schritt die Ports 80 und 443 (HTTP/HTTPS) von Ihrem Router auf den Server weiterleiten. Zudem benötigen Sie eine IP-Adresse, unter der sich Ihr Heimnetz künftig erreichen lässt – in der Regel teilt Ihr Internetanbieter Ihrem Router bei jeder Einwahl eine neue Internet-IP-Adresse zu. Kostenlos und ohne Nervigkeiten (wie etwa ein zwingend erforderliches monatliches Einloggen in die Weboberfläche) übernimmt zum Beispiel der DynDNS-Service [6] diese Aufgabe.
Mit einer Fritzbox loggen Sie sich dafür unter http://fritz.box in die Routeroberfläche ein und öffnen dort das Menü unter Internet | Freigaben | Portfreigaben. Hier starten Sie mit einem Klick auf Neue Portfreigabe den entsprechenden Assistenten. Hier wählen Sie unter Portfreigabe aktiv für den Punkt Andere Anwendungen aus und tragen die entsprechenden Daten ein (Abbildung 1). Wiederholen Sie das Vorgehen nach dem Port 80 für den Port 443. Andere Router bieten zu diesem Vorgehen ähnliche Dialoge.

Abbildung 1: Für einen verschlüsselten Zugang zu Nextcloud müssen Sie die Ports 80 und 443 von Ihrem Router auf den zukünftigen Cloudserver weiterleiten.
Ebenfalls unter den Freigaben finden Sie in den Fritzbox-Settings den Reiter Dynamic DNS. Im zugehörigen Dialog übernehmen Sie die von Ihrem DynDNS-Anbieter genannten Einstellungen (Abbildung 2). Der im Beispiel genutzte Dienst Ddnss.de gibt konkrete Anweisungen für Fritzbox-Router von AVM. Üblicherweise lassen sich diese auch für andere Router in ähnlicher Form übernehmen. Für einen ersten Test rufen Sie anschließend die Testseite des frisch eingerichteten Webservers über die DynDNS-Adresse auf.

Abbildung 2: DynDNS-Anbieter wie der kostenlose DynDNS-Service verbinden eine statische Internet-Adresse mit der dynamischen Internet-IP Ihres Netzzugangs.
Funktioniert das, ergänzen Sie den Webserver um das Let’s-Encrypt-Zertifikat. Installieren Sie dazu das noch fehlende Paket python-letsencrypt-apache, und erstellen Sie dann das Zertifikat (Listing 4). Die URL entspricht der zuvor erstellten DynDNS-Adresse. Die Frage nach dem Modus bewirkt, dass der Webserver automatisch alle Anfragen über das verschlüsselte HTTPS-Protokoll leitet (Secure) oder der Nutzer explizit die https://-Adresse aufrufen müsste (Easy). Zur eigenen Sicherheit sollten Sie sich für die Secure-Methode entscheiden (Abbildung 3). Mit dem Schalter renew --dry-run --agree-tos überprüfen Sie dann, ob sich das nur 30 Tage gültige Zertifikat ordentlich aktualisieren lässt.
Listing 4
$ sudo apt install python-letsencrypt-apache $ sudo letsencrypt --apache $ sudo letsencrypt renew --dry-run --agree-tos

Abbildung 3: Für optimale Sicherheit lassen Sie Let’s Encrypt den Webserver so konfigurieren, dass er sämtliche Verbindungen über HTTPS leitet.
Damit Let’s Encrypt das Zertifikat automatisch erneuert, richten Sie nun noch einen Systemd-Timer ein. Im Verzeichnis /etc/systemd/system erstellen Sie dazu entsprechend der ersten zwei Kommandos aus Listing 5 die Dateien letsencrypt.service und letsencrypt.timer, deren Inhalte Sie aus Listing 6 und Listing 7 übernehmen. Den Editor Nano beenden Sie mit [Strg]+[O],[Eingabe] und [Strg]+[X]. Der Dienst übernimmt die Aufgabe, das Zertifikat zu erneuern. Danach veranlasst er den Webserver, seine Einstellungen neu zu laden und damit ein gegebenenfalls erneuertes Zertifikat zu übernehmen. Die Timer-Unit führt den Let’s-Encrypt-Dienst dann einmal am Tag automatisch aus.
Listing 5
$ sudo nano /etc/systemd/system/letsencrypt.service $ sudo nano /etc/systemd/system/letsencrypt.timer $ sudo systemctl enable letsencrypt.timer $ systemctl list-timers --all | grep letsencrypt Mi 2016-06-22 00:00:00 CEST 12h left n/a n/a letsencrypt.timer letsencrypt.service
Listing 6
[Unit] Description=Let's Encrypt renewal service [Service] Type=oneshot ExecStart=/usr/bin/letsencrypt renew ExecStartPost=/bin/systemctl reload apache2
Listing 7
[Unit] Description=Daily renewal timer of Let's Encrypt's certificates [Timer] OnCalendar=daily Persistent=true [Install] WantedBy=timers.target
Nextcloud
Nextcloud erhalten Sie nun in Form eines Tarballs [7] oder ZIP-Archivs. Entpacken Sie die Datei ins Wurzelverzeichnis des Webservers (/var/www/), und übertragen Sie dem System-User www-data die Rechte an den Daten unter /var/www/nextcloud/ (Listing 8).
Listing 8
$ wget https://download.nextcloud.com/server/releases/nextcloud-Version.tar.bz2 $ sudo tar xf nextcloud*.bz2 -C /var/www $ sudo chown -R www-data.www-data /var/www/nextcloud
Damit der Apache-Webserver die Daten nutzt, richten Sie danach einen virtuellen Host ein. Erstellen Sie dazu im Verzeichnis /etc/apache2/sites-available/ die Konfigurationsdatei nextcloud.conf (Listing 9) und übertragen den Inhalt von Listing 10 in diese. Die Änderung speichern Sie wieder über [Strg]+[O],[Eingabe] ab und verlassen Nano über [Strg]+[X]. Danach aktivieren Sie den V-Host und laden abermals die Konfiguration des Webservers neu. Sie müssten nun Ihre Nextcloud-Installation unter http://<i>Beispiel<i>.ddnss.de/nextcloud im Browser erreichen (Abbildung 4).
Listing 9
$ sudo nano /etc/apache2/sites-available/nextcloud.conf $ sudo a2ensite nextcloud $ sudo service apache2 reload @KE
Listing 10
Alias /nextcloud "/var/www/nextcloud/" <Directory /var/www/nextcloud/> Options +FollowSymlinks AllowOverride All <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME /var/www/nextcloud SetEnv HTTP_HOME /var/www/nextcloud </Directory>

Abbildung 4: Nach der Installation müssen Sie im Konfigurationsassistenten von Nextcloud noch den Zugang zum Datenbankserver einrichten.
Im Assistenten geben Sie nun die Zugangsdaten für den ersten administrativen Nutzer ein und weiter unten die (während der Installation des LAMP-Stacks vergebenen) Daten des MariaDB-Servers. In der Beispielkonfiguration wäre dies nextcloud als Datenbankbenutzer und Datenbankname, localhost für den Datenbank-Host sowie das bei der Konfiguration festgelegte Password für den Nextcloud-User der Datenbank.
Mit einem Klick auf Installation abschließen übertragen Sie diese Einstellungen in die Konfiguration. Der Browser leitet Sie danach automatisch auf den Startbildschirm von Nextcloud weiter (Abbildung 5). Für den Einstieg sollten Sie aus dem Ausklappmenü unter dem Benutzernamen die Einstellung Administrator öffnen. So sehen Sie auch etwaige Probleme in der aktuellen Konfiguration des Webservers.

Abbildung 5: Noch unterscheidet sich die Weboberfläche des Owncloud-Forks kaum vom “Original”. Das System ist sofort nach der Installation einsatzbereit.
Optimieren
Owncloud empfiehlt, einen PHP-Cache einzurichten, sodass diverse leistungshungrige Anweisungen des Programms nicht immer wieder neu ausgeführt werden müssen [11]. Dieser Hinweis gilt auch für Nextcloud: Installieren Sie für den Cache das Paket php-apcu aus der Paketverwaltung, und tragen Sie dann in die Konfigurationsdatei config.php unter /var/www/nextcloud/config/ die Anweisung 'memcache.local' => '\OC\Memcache\APC', als neue Zeile vor dem abschließenden ); ein (Listing 11). Nextcloud übernimmt die Änderung an der Konfiguration automatisch beim nächsten Aufruf der Seite.
Listing 11
$ sudo apt install php-apcu $ sudo nano /var/www/nextcloud/config/config.php $ sudo cat /var/www/nextcloud/config/config.php [...] 'installed' => true, 'memcache.local' => '\OC\Memcache\APCu', );
Clients
Um auf Ihre Nextcloud-Installation zuzugreifen, müssen Sie nicht unbedingt einen Webbrowser öffnen. Netzwerkfähige Dateimanager wie Files (ehemals Nautilus) aus Gnome oder das KDE-Pendant Dolphin können über WebDAV die Cloud-Speicher ohne weitere Programme öffnen. Dazu geben Sie etwa in Files davs://beispiel.ddnss.de/nextcloud/remote.php/webdav als URL in die per [Strg]+[L] geöffnete Adresszeile ein. In Dolphin ersetzen Sie die Angabe des Protokolls am Anfang der URL mit webbdavs://[...].
Anschließend arbeiten Sie dann mit den entfernt gespeicherten Daten genauso wie mit lokalen Files. Um ähnlich wie bei Dropbox Dateien und Ordner zwischen den angebundenen Rechnern abzugleichen, benötigen Sie jedoch ein Client-Programm. Bisher gibt es nur für Android eine eigene Nextcloud-App, auf dem PC müssen Sie noch auf den Owncloud-Client zurückgreifen. Den finden Sie inzwischen in den Paketquellen diverser Distributionen (Debian/Ubuntu: owncloud-client).
Als Serveradresse geben Sie beim Einrichten des Clients die URL https://Beispiel.ddnss.de/nextcloud an. Danach folgen Sie den Anweisungen des Einrichtungsassistenten. Um Verwirrungen zu vermeiden, sollten Sie als Speicherort das Verzeichnis ~/Nextcloud/ anstatt ~/ownCloud vorgeben. Im Anschluss kopiert der Client die bislang auf dem Server gespeicherten Daten ins ausgewählte Verzeichnis. Kopieren Sie weitere Dateien dorthin, landen diese automatisch auf dem Nextcloud-Server.
Die Installation der Nextcloud-App für Android gelingt über den Google Play Store [8]. Bis auf eine leicht andere Farbgebung unterscheidet sich die Smartphone-App kaum vom Owncloud-Pendant (Abbildung 6), anders als das “Original” kostet sie jedoch nichts. Die Owncloud-App müssten Sie entweder für 0,79 Euro kaufen oder über den Open-Source-Market F-Droid einspielen [9]. Eine Nextcloud-App für iOS gibt es derzeit noch nicht, die Owncloud-App für Apple-Geräte [10] funktioniert jedoch auch mit einer Nextcloud-Installation – ähnlich wie die Desktop-App.

Abbildung 6: Für Android gibt es bereits eine offizielle Nextcloud-App. Diese lässt sich im Gegensatz zum Owncloud-Pendant kostenlos aus dem Play Store installieren.
Fazit
Noch unterscheidet sich Nextcloud kaum von Owncloud – Einsteiger ist es daher im Moment noch egal, ob sie mit dem Original oder dem Fork loslegen. Da das Gros der Entwickler nun aber bei Nextcloud arbeitet, dürften Neuerungen vermutlich künftig eher dort auftauchen. Zu den ersten Features dürften Audio- und Video-Chats über die Spreed.me-Software zählen. Ob Owncloud ähnlich wie OpenOffice.org oder MySQL in die zweite Riege abrutscht, bleibt abzuwarten (cla).
Infos
[1] “I am leaving ownCloud, Inc. today”: http://karlitschek.de/2016/04/big-changes-i-am-leaving-owncloud-inc-today/
[2] Nextcloud: https://nextcloud.com/
[3] Spreed.me: https://www.spreed.me
[4] Spreedbox: https://www.spreed.me/spreedbox/
[5] Let’s Encrypt: https://letsencrypt.org
[6] DynDNS-Service: https://ddnss.de
[7] Nextcloud herunterladen: https://nextcloud.com/install/#instructions-server
[8] Nextcloud-App für Android: https://play.google.com/store/apps/details?id=com.nextcloud.client
[9] Owncloud-App bei F-Droid: https://f-droid.org/repository/browse/?fdid=com.owncloud.android
[10] Owncloud-App für iOS: https://itunes.apple.com/us/app/owncloud/id543672169?ls=1&mt=8
[11] “Making ownCloud Faster Through Caching”: https://owncloud.org/blog/making-owncloud-faster-through-caching/





