[Debian 8] Eine eigene Cloud mit Nextcloud, Apache2, PHP und MySQL

Vorwort zur eigenen Cloud

Mein nächstes Vorhaben ist eine eigene kleine Cloud. Hauptsächlich will ich eine eigene Cloud, um Dateien einfach und schnell zur Verfügung zu stellen. Ob private Dinge für Freunde oder Familie oder auch öffentliche Dateien, die jeder herunterladen darf wie z.B. für mein Bedwars-Plugin (hier).

In diesem Artikel wird die eigene Cloud mithilfe von Nextcloud (einem Fork von OwnCloud) erstellt. Wir installieren dazu einen Apache2-Webserver und PHP. Denn Nextcloud basiert auf PHP. Im Frontend kommt jQuery und ein eigenes kleines Framework von OwnCloud zum Einsatz. Gewisse Daten müssen auch irgendwo gespeichert werden, deshalb brauchen wir noch einen MySQL-Server mit Datenbank.

Detailierte Informationen gibt es auf https://docs.nextcloud.com

Wir werden die aktuellste Version Nextcloud installieren:
Nextcloud 12 (Stand: Juli 2017)

Bitte stelle zuvor sicher, dass deine Pakete auf dem aktuellen Stand sind indem du im Terminal folgenden Kommando ausführst:

Installation Apache2

Bevor wir Nextcloud installieren können, müssen wir zuerst den Apache2 Webserver installieren, der später unsere Cloud ausführt.

Dazu werden wir die erforderlichen Packages mithilfe des Paket-Managers apt installieren:

Dann müssen/sollten noch diverse Apache2-Module aktiviert werden:

Mehr ist bei Apache2 vorerst nicht zu tun, erst später werden wir auf Apache2 zurückgreifen.

Installation MySQL

Dass Nextcloud Daten speichern kann, brauchen wir eine MySQL-Datenbank. Dazu brauchen wir auch erstmal einen MySQL-Server, wen wir wieder mithilfe von apt installieren:

Während der Installation wird man nach einem root-Passwort gefragt. Ein gewünschtes, sicheres Passwort eingeben und bitte notieren. Ansonsten ist das Ändern des Passworts für den root-User später einfach möglich.

Um MySQL zu sichern, bringt MySQL ein Script mit. Dieses führen wir wie folgt aus:

Hier werden wir nach dem root-Passwort gefragt. Dieses bitte  eingeben. Danach werden wir noch gefragt, ob wir das root-Passwort ändern möchten. Hier verneinen wir mit einem N.

Danach werden wir weitere Dinge gefragt. Am besten ist es alle mit Ja (y) zu beantworten. Allerdings kann man natürlich auch selbst entscheiden. Ausgabe:

Für Nextcloud im späteren Verlaufe brauchen wir eine Datenbank. Um diese anlegen zu können müssen wir uns mit dem gerade-installierten MySQL-Server verbinden und mit dem root-Benutzer anmelden:

Hier werden wir wieder nach unserem root-Passwort gefragt, was wir dann selbstverständlich auch eingeben. Dann öffnet es uns die mysql Konsole. Dort führen wir folgenden SQL-Befehl aus:

Mit  quit  beenden wir die MySQL-Konsole wieder. Und damit ist die MySQL-Installation abgeschlossen.

Installation PHP

Wie gesagt basiert Nextcloud auf PHP. Dabei ist mindestens PHP 5.6 benötigt. Da wir aber professionelle Administratoren sind (hehe), greifen wir auf die aktuellere Version PHP 7.0 zurück. Dies installieren wir mithilfe eines Repositorys von Dotdeb. Debian müssen wir dieses Repository zuerst bekannt machen. Dazu öffnen wir die Datei sources.list

und fügen ans Ende dieser Datei folgende zwei Zeilen ein:

Und danach müssen wir noch den Dotdeb GnuPG Schlüssel installieren, um das Herunterladen der Pakete zu ermöglichen:

Und nun installieren wir PHP wieder mit dem Paket-Manager apt:

Dann wird das PHP-Modul in Apache2 aktiviert:

Und schließlich der Apache2 Webserver neu gestartet:

Nun haben wir alle benötigten Pakete installiert (außer Nextcloud selbst). Nun kommen wir zur Konfiguration.

Konfiguration Apache2

Ich persönlich bevorzuge es meine Cloud auf einer Subdomain laufen zu lassen. Deshalb konfigurieren wir Apache2 so, dass Nextcloud auf einer Subdomain namens  cloud.domain.tld läuft. Der Name ist nur ein Beispiel und muss in allen Fällen mit der eigenen Domain ersetzt werden.

Zuerst erstellen wir einen neuen vHost in Apache2. Dafür erstellen wir zuerst einen Ordner, auf den die Subdomain verweist:

Dann erstellen wir die vHost-Datei im Ordner /etc/apache2/sites-available  folgendermaßen:

Mit folgenden Inhalt:

Wenn wir alles richtig gemacht haben, können wir die Seite aktivieren und erhalten keine Fehlermeldung:

Damit hätten wir Apache2 konfiguriert und wir kommen zur Nextcloud-Konfiguration

Installation Nextcloud

Endlich kommen wir zur Installation von Nextcloud. Wir sind unserer eigenen Cloud schon etwas näher. Zuerst gehen wir in unser erstellten Ordner, in dem Nextcloud nun installiert werden soll:

In diesen Ordner laden wir die aktuelle Nextcloud-Installation herunter:

Zur Sicherheit verifizieren wir nun, ob die heruntergeladene Datei nicht beschädigt und/oder manipuliert wurde. Dies prüfen wir anhand der SHA256-Prüfsumme und dem PGP-Signatur-Schlüssel:

Die Ausgabe sollte folgende sein:

Ist dies nicht der Fall, sollte man die Datei erneut Herunterladen oder evtl. manuell auf den Server hochladen o.ä. Auf jeden Fall sollte man diese Datei nicht installieren, da die Sicherheit im Vordergrund stehen sollte. Um ganz sicher zu gehen, können wir nun noch die PGP-Signatur prüfen:

Die Ausgabe sollte dann diese sein:

Ist dies nicht der Fall, bitte wie oben beschrieben handhaben.

Nun haben wir die .tar.bz2-Datei in unserem Ordner vorliegen. Die müssen wir nun wie folgt entpacken:

Wir haben nun alle Dateien in einen neuen Ordner  nextcloud entpackt. Zuerst können wir die heruntergeladenen Dateien wieder löschen:

Und alle Dateien aus dem  nextcloud -Ordner in das Hauptverzeichnis verschieben:

Nun sind alle Dateien im korrekten Ordner. Jetzt müssen wir noch die Berechtigungen korrekt setzen. Der HTTP-Benutzer (Apache2) sollte als Besitzer des Ordners eingetragen werden:

Nun können wir die grafische Installation starten in dem wir im Browser die URL  http://cloud.domain.tld öffnen. Es sollte nun folgendes erscheinen:

Nextcloud Cloud Setup

Wie im Bild veranschaulicht bitte die Felder mit den passenden Daten befüllen. Zuerst wird ein Administratorenkonto definiert und dann die Verbindungsdaten zur Datenbank angegeben. Mit Klick auf Installation abschließen.

Dies kann einige Sekunden dauern und man wird danach auf die Cloud weitergeleitet. Damit haben wir also unsere eigene Cloud 🙂

Etwas Spaß zum Schluss:No Cloud exists

Optional: Aktivieren von SSL

Damit die Verbindungen und vor allem die User-Logins etc. verschlüsselt sind, ist es empfohlen SSL zu aktivieren. Will man die Cloud nach außen veröffentlichen wäre es am besten ein von einer externen Stelle signiertes Zertifikat zu erwerben. Ansonsten kann man auch ein selbst-signiertes Zertifikat mithilfe von openssl erstellen:

Damit wurde ein selbst-signiertes SSL-Zertifikat erstellt. Zuerst werden wir die Berechtigung des privaten Schlüssels auf ein Minimum setzen. Dann das öffentliche Zertifikat und den privaten Schlüssel in die dafür vorgesehenen Ordner verschieben:

Nun müssen wir dem Apache2-Server noch mitteilen, dass die Webseite unter  cloud.domain.tld mit SSL geladen werden soll. Dafür deaktivieren wir die Seite zuerst, um sie dann danach wieder zu aktivieren zu können:

Dann müssen wir die vHost-Datei unter  /etc/apache2/sites-available/cloud.domain.tld.conf  wie folgt anpassen:

Mit  SSLEngine on  aktivieren wir SSL für diese Webseite. Die eine vHost-Datei besteht nun eigentlich aus 2 vHosts. Der VirtualHost für den Port 80 (Http-Port), wird nun jeden Benutzer aber automatisch auf die SSL-Webseite (Port 443) weiterleiten. Mit  SSLCertificateFile und  SSLCertificateKeyFile definieren wir das zu verwendende Zertifikat und die zu verwendende Schlüsseldatei.

Jetzt brauchen wir nur noch die Seite wieder zu aktivieren und den Apache2-Dienst neu zu laden:

Damit sollte nun SSL für eure Cloud aktiviert sein 🙂

Eine Antwort auf „[Debian 8] Eine eigene Cloud mit Nextcloud, Apache2, PHP und MySQL“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.