Ich gehe davon aus, dass der Raspi bereits läuft. Bei mir aktuell mit Raspbian Stretch. Bevor ich loslege, wird dass System noch geupdatet:
pi@raspberrypi:~ $ sudo apt-get update
pi@raspberrypi:~ $ sudo apt-get dist-upgrade
pi@raspberrypi:~ $ sudo reboot
pi@raspberrypi:~ $ sudo apt-get dist-upgrade
pi@raspberrypi:~ $ sudo reboot
Nun können alle notwendigen Pakete für Nextcloud installiert werden
pi@raspberrypi:~ $ sudo aptitude install apache2 php7.0 php7.0-gd php7.0-curl php7.0-common php7.0-intl php-pear php-apcu php7.0-xml libapache2-mod-php7.0 php7.0-mbstring php7.0-zip curl libcurl3 libcurl3-dev php7.0-mysql mariadb-server-10.1 smbclient
Nach der Installation der Pakete wird geprüft, ob der Apache2-Webserver funktioniert:
pi@raspberrypi:~ $ sudo service apache2 restart
pi@raspberrypi:~ $ sudo service apache2 status
pi@raspberrypi:~ $ sudo service apache2 status
In einem Internet-Browser kann nun über http://IP-Adresse des Raspberry die lokale Erreichbarkeit (im eigenen Heimnetz) des Web-Servers überprüft werden. SQL-Datenbank erstellen und Benutzer konfigurieren (über die Konsole):
pi@raspberrypi:~ $ sudo mysql_secure_installation
pi@raspberrypi:~ $ sudo mariadb
Im MariaDB-Monitor folgende SQL-Statements eingeben (Datenbank und Benutzer mit Passwort anlegen):
pi@raspberrypi:~ $ sudo mariadb
MariaDB [(none)]> CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
MariaDB [(none)]> CREATE USER nextcloud@localhost identified by 'password';
MariaDB [(none)]> GRANT ALL PRIVILEGES on nextcloud.* to nextcloud@localhost;
MariaDB [(none)]> FLUSH privileges;
MariaDB [(none)]> quit;
Der Datenbankname (hier: nextcloud) sowie der Benutzer (hier: nextcloud) und das Passwort (hier: password) werden später noch zur Einrichtung von NextCloud benötigt.MariaDB [(none)]> CREATE USER nextcloud@localhost identified by 'password';
MariaDB [(none)]> GRANT ALL PRIVILEGES on nextcloud.* to nextcloud@localhost;
MariaDB [(none)]> FLUSH privileges;
MariaDB [(none)]> quit;
Nun wird NextCloud heruntergeladen und in das Web-Verzeichnis des Apache2-Servers entpackt:
pi@raspberrypi:~ $ cd /var/www/html
pi@raspberrypi:/var/www/html $ curl https://download.nextcloud.com/server/releases/nextcloud-15.0.5.tar.bz2 | sudo tar -jxv
Danach wird noch ein Daten-Verzeichnis angelegt und ein paar Berechtigungen angepasst. Wer jetzt schon weiß, dass ein externer Datenträger (z.B. USB-Stick) zum Speichern genutzt werden soll, wartet mit dem Ausprobieren noch ein wenig ...pi@raspberrypi:/var/www/html $ curl https://download.nextcloud.com/server/releases/nextcloud-15.0.5.tar.bz2 | sudo tar -jxv
pi@raspberrypi:~ $ cd /var/www/html/nextcloud
pi@raspberrypi:/var/www/html/nextcloud $ sudo mkdir -p /var/www/html/nextcloud/data
pi@raspberrypi:/var/www/html/nextcloud $ sudo chown www-data:www-data /var/www/html/nextcloud/data
pi@raspberrypi:/var/www/html/nextcloud $ sudo chmod 750 /var/www/html/nextcloud/data
pi@raspberrypi:/var/www/html/nextcloud $ sudo chown www-data:www-data config apps
pi@raspberrypi:/var/www/html/nextcloud $ sudo service apache2 restart
Besitzer und Gruppe vom Datenverzeichnis /var/www/html/nextcloud/data ist nun jeweils www-data. Bevor ich das Ganze nun einrichte und teste, möchte ich das Datenverzeichnis auf einem externen Datenträger speichern. Dazu lege ich fest, dass der Datenträger mit seiner eindeutigen UUID immer automatisch im selben Ordner gemountet wird. Nach dem Anstecken des Datenträgers überprüfen wir die UUID und das Dateisystem (TYPE):
pi@raspberrypi:/var/www/html/nextcloud $ sudo mkdir -p /var/www/html/nextcloud/data
pi@raspberrypi:/var/www/html/nextcloud $ sudo chown www-data:www-data /var/www/html/nextcloud/data
pi@raspberrypi:/var/www/html/nextcloud $ sudo chmod 750 /var/www/html/nextcloud/data
pi@raspberrypi:/var/www/html/nextcloud $ sudo chown www-data:www-data config apps
pi@raspberrypi:/var/www/html/nextcloud $ sudo service apache2 restart
pi@raspberrypi:~ $ sudo blkid
Unter /dev/sd?? sollte der Eintrag zu finden sein. Mit
pi@raspberrypi:~ $ sudo nano /etc/fstab
wird die fstab-Datei im nano-Texteditor geöffnet und folgende Zeile hinzugefügt (UUID, Mount-Point, Dateisystem und Berechtigungen festlegen):
UUID=A0B1C3EF5D /mnt/nextcloud vfat utf8,dmask=007,fmask=007,umask=007,uid=www-data,gid=www-data,noatime 0
Durch die Berechtigungen war es mir nur sehr umständlich möglich in den Ordner /mnt/nextcloud hineinzuschauen. Wer Datenträger mit NTFS-Dateisystem vollständig nutzen möchte, führt noch folgendes aus:
pi@raspberrypi:~ $ sudo aptitude install ntfs-3g
pi@raspberrypi:~ $ sudo reboot
Nun verschiebe ich noch das NextCloud-Daten-Verzeichnis auf den externen Datenträger (bitte nicht wundern, wenn man das dann nicht mehr sieht):
pi@raspberrypi:~ $ sudo reboot
pi@raspberrypi:~ $ sudo mv -v /var/www/html/nextcloud/data /mnt/nextcloud/data
Die NextCloud-Installation ist über http://IP-Adresse des Raspberry/nextcloud erreichbar und kann fertig eingerichtet werden. Mich hat aber die zusätzliche Angabe /nextcloud gestört und habe die Konfigurationsdateien des Apache2-Servers angepasst bzw. neu angelegt. Dazu gibt es in der Dokumentation von NextCloud einen Abschnitt. Im Ordner /etc/apache2/sites-available/ habe ich die Datei nextcloud.conf angelegt und folgendes eingetragen:
Alias /nextcloud "/var/www/html/nextcloud/"
<Directory /var/www/html/nextcloud/>
Options +FollowSymlinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/html/nextcloud
SetEnv HTTP_HOME /var/www/html/nextcloud
</Directory>
<VirtualHost *:80>
ServerName domain.mydyndns.org
ServerAlias domain.mydyndns.org
DocumentRoot /var/www/html/nextcloud/
# uncomment next lines if you want force client redirection (browser only, not bot) of 80 to 443
# RewriteEngine On
# RewriteCond %{HTTPS} off
# RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
Im gleichen Verzeichnis befindet sich die Datei 000-default.conf. Auch hier habe ich den Eintrag DocumentRoot entsprechend angepasst (/var/www/html/nextcloud). Im Zusammenhang mit den .conf-Dateien abe ich auch gleich die Domain von meinem DynDNS-Provider eingetragen, damit NextCloud später auch über das Internet erreichbar ist. Dazu müssen übrigens im Router Port 80 (http://) und Port 443 (https://) auf den Raspbery Pi weitergeleitet werden.
Beim Browser-Aufruf der Raspberry-IP-Adresse sollte jetzt der Startbildschirm von NextCloud erscheinen (index.php). Hier kann ich nun einige Einstellungen vornehmen:<Directory /var/www/html/nextcloud/>
Options +FollowSymlinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/html/nextcloud
SetEnv HTTP_HOME /var/www/html/nextcloud
</Directory>
<VirtualHost *:80>
ServerName domain.mydyndns.org
ServerAlias domain.mydyndns.org
DocumentRoot /var/www/html/nextcloud/
# uncomment next lines if you want force client redirection (browser only, not bot) of 80 to 443
# RewriteEngine On
# RewriteCond %{HTTPS} off
# RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
1. Administrator-Benutzer und Passwort festlegen
2. Datenverzeichnis festlegen: /mnt/nextcloud/data
3. Datenbank-Name (nextcloud), -Benutzer (nextcloud) und -Passwort angeben
Nach Bestätigung der Angaben landet man direkt als Admin auf der NextCloud-Oberfläche. Hier können verschiedene Einstellungen vorgenommen werden, Benutzer verwaltet und zusätzliche Apps konfiguriert werden. All das funktioniert aktuell nur lokal über die IP-Adresse des Raspberry. Will man aus dem Internet auf die eigene Cloud zugreifen, muss die öffentliche IP-Adresse des Routers bekannt sein. Da diese sich aber mindestens täglich ändert, muss sie kontinuierlich mit einer bekannten Domain verknüpft werden. Diese Aufgabe übernehmen Dyn-DNS-Anbieter wie z.B. no-ip.com, dyndnss.net usw. Meinen ersten Versuch habe ich mit dyndnss.net unternommen. Dieser Anbieter hat (für mich) aber nicht funktioniert, da die Weiterleitung wohl in einem Frame vorgenommen wurde und die Browser alle (Firefox, Edge, Opera) nichts anzeigten oder rummeckerten. Nächster Versuch mit MyFritz!-Konto: Hier wurde immer nur die Anmeldeseite der FritzBox angezeigt (egal ob http oder https). Ich habe dann einer anderen Anleitung von Stefan Strobel folgend, twodns.de verwendet, was auf Anhieb funktioniert hat. Die tägliche Aktualisierung nimmt der Router selbstständig vor, wenn man die entsprechenden Daten des Dyn-DNS-Providers eingetragen hat. Das Problem dabei ist nur, dass man aktuell nur über http://domain.mydyndns.org (also unverschlüsselt) auf NextCloud zugreifen kann. Aus Sicherheitsgründen ist das strikt zu unterlassen. Damit ich verschlüsselt mittels https:// zugreifen kann, muss ein SSL-Zertifikat vorhanden sein, welches wir uns regelmäßig mit Let's Encrypt ausstellen lassen:
pi@raspberrypi:~ $ sudo a2enmod ssl
pi@raspberrypi:~ $ sudo a2enmod headers
pi@raspberrypi:~ $ sudo service apache2 restart
pi@raspberrypi:~ $ sudo apt install git -y
pi@raspberrypi:~ $ cd /etc
pi@raspberrypi:/etc $ sudo git clone https://github.com/letsencrypt/letsencrypt
pi@raspberrypi:/etc $ cd letsencrypt
pi@raspberrypi:/etc/letsencrypt $ sudo ./letsencrypt-auto
Zum Abschluss der LetsEncrypt-Installation muss man eine E-Mail-Adresse angeben und einige Fragen beantworten. Dabei wird das erste Zertifikat ausgestellt. Wenn gewünscht konfiguriert LetsEncrypt den Apache-Server so, dass alle http-Anfragen auf https umgeleitet werden (Auswahlpunkt 2). Das Zertifikat ist 3 Monate gültig und muss immer wieder erneuert werden. Diese Aufgabe übernimmt ein CRON-Job:
pi@raspberrypi:~ $ sudo a2enmod headers
pi@raspberrypi:~ $ sudo service apache2 restart
pi@raspberrypi:~ $ sudo apt install git -y
pi@raspberrypi:~ $ cd /etc
pi@raspberrypi:/etc $ sudo git clone https://github.com/letsencrypt/letsencrypt
pi@raspberrypi:/etc $ cd letsencrypt
pi@raspberrypi:/etc/letsencrypt $ sudo ./letsencrypt-auto
pi@raspberrypi:/etc/letsencrypt $ sudo nano cli.ini
Neue Datei cli.ini mit folgendem Inhalt:
rsa-key-size = 4096
text = True
redirect = True
renew-by-default = True
agree-tos = True
email = mail@domain.de
pi@raspberrypi:~ $ sudo /etc/letsencrypt/letsencrypt-auto certonly --agree-tos --renew-by-default --webroot-path /var/www/html/ -d domain.mydyndns.org
Wenn alles funktioniert, kann der CRON-Job angelegt werden:
pi@raspberrypi:~ $ sudo crontab -e
...mit dem Inhalt:
@weekly root /etc/letsencrypt/letsencrypt-auto certonly --agree-tos --renew-by-default --webroot-path /var/www/html/ -d domain.mydyndns.org
Bei den ersten "Gehversuchen" die eigene Cloud aus dem Internet zu erreichen, werden wahrscheinlich Probleme mit "nichtvertrauenswürdigem Zugriff" auftreten. Deshalb sind die vertrauenswürdigen Domains bzw. IP-Adressen in die config.php im Verzeichnis /var/www/html/nextcloud/config einzutragen:
'trusted_domains' =>
array (
0 => '192.168.xxx.xxx',
1 => 'domain.mydyndns.org',
),
Keine Kommentare:
Kommentar veröffentlichen