ausblenden > Anleitungen und FAQ

Nextcloud auf einem Raspberry Pi 3 mit NextCloudPi

(1/6) > >>

MacFlieger:
Zum Abgleich von Adressen und Kalender zwischen mehreren Rechnern und iOS-Geräten möchte ich aus bekannten Gründen keine fremde Cloud (z.B. iCloud oder Google) benutzen.

Ich habe nun schon einige Zeit zunächst ownCloud und später Nextcloud auf einem Raspberry Pi 2 bzw. 3 installiert und es funktionierte als persönliche Cloud vom Prinzip her gut.
Bei Nextcloud hat mir besser gefallen, dass auch Updates für Nextcloud selber und die Apps besser konzipiert und somit mit weniger Arbeit umsetzbar sind.

Nachteilig war bei mir, dass die verwendete SD-Karte in regelmäßigen Abständen (manchmal nach 2 Monaten, manchmal nach 2 Wochen) kaputt ging und dann entweder Nextcloud oder der Raspberry selber nicht mehr starteten. Dann musste ich jedes Mal ein altes Image der SD-Karte neu drauf kopieren und das neueste Backup der Nextcloud-Dateien zurückkopieren. Das ist zwar machbar, aber doch nervig.
Das ganze soll daran liegen, dass SD-Karten nicht für so viele Schreibzyklen geeignet sind und daher schnell kaputt gehen können.
Seit dem Raspberry Pi 3 kann man aber auch von einem USB-Stick oder per USB angeschlossener Platte/SSD booten und benötigt keine SD-Karte mehr. Außerdem ist der Zugriff auf ein USB-Medium schneller als auf die SD-Karte.

Zudem gibt es nun ein Projekt mit einem vorinstallierten System für Nextcloud auf einem Raspberry Pi, welches einem die viele Handarbeit beim Installieren und Konfigurieren abnimmt bzw. erleichtert: NextCloudPi

Daher hier nun eine neue Anleitung zu diesem Thema.

In diesem Thread werde ich zusammenfassen, was ich wie gemacht habe. Da nicht alle Schritte für alle interessant sind, fasse ich jeweils ein Thema in einem Beitrag zusammen und verlinke in diesem ersten Beitrag nur zu diesem Thema.

1. Was will ich mit Nextcloud umsetzen und welche Voraussetzungen bestehen

2. NextCloudPi auf die SD-Karte und USB-Medium kopieren

3. Grundlegende Konfiguration

4. DNS-Eintrag und Router-Weiterleitung konfigurieren

5. Konfiguration von NextCloudPi

6. Nextcloud einrichten

7. Einrichten des Kalenderabgleiches (CalDAV)

8. Einrichten des Kontaktabgleiches (CardDAV)

9. Dateiserver mit Synchronisierung

10. Dateiserver einrichten (NAS)

11. Nützliche Skripte und Backup

12. Ergänzungen und Tipps

13. SSH-Login mit Schlüsselauthentifizierung

MacFlieger:
1. Was will ich mit Nextcloud umsetzen und welche Voraussetzungen bestehen

Was will ich mit Nextcloud erreichen?


* Wichtigster Punkt ist der Abgleich von Adressen und Kalendern zwischen verschiedenen Rechnern und iOS-Geräten.
* Ebenso möchte ich Dateien ablegen können und diese mit den Geräten synchronisieren wie mit Dropbox.
* Die Daten auch über eine Weboberfläche erreichen und bearbeiten zu können ist für mich unwichtig, aber möglich.
* Ich möchte meine Cloud über einen einfachen Namen (z.B. cloud.apfelinsel.de) erreichen können.
* Ich möchte eine SSL-Verschlüsselung bei der Datenübertragung haben.
* Ich möchte keine Warnung vor einem ungültigen SSL-Zertifikat bekommen.
* Ich möchte die Daten verschlüsselt ablegen.
Was benötigt man?

Prinzipiell läuft Nextcloud auf jedem Webserver mit PHP und Datenbank.

Ich habe Nextcloud auf einen Raspberry Pi 3 mit Raspbian Jessie installiert. Man braucht also

* Raspberry Pi 3
* Netzteil mit 2A
* Micro-SD-Karte Class 10 (nur einmalig beim Einrichten)
* USB-Stick oder externe USB-Festplatte/SSD
* Netzwerkkabel
* evtl. Gehäuse für den Raspberry
Für meine Wünsche (s.o.) muss noch folgendes vorhanden sein:

* Internet-Anschluss mit öffentlicher IPv4- oder IPv6-Adresse
* Eigene Domain bei einem Provider mit Zugriff auf die DNS-Einstellungen
Vorgaben in dieser Anleitung
Einige der in dieser Anleitung erwähnten Namen muss man natürlich an die eigenen Gegebenheiten anpassen (diese werde ich jeweils rot färben), z.B.:

* hsdbdhsurf74hb3s.myfritz.net - der von dem Dienst MyFritz vergebene Name der eigenen Fritzbox.
* raspberry.hsdbdhsurf74hb3s.myfritz.net - der von dem Dienst MyFritz vergebene Name für den Raspberry.
* cloud4.apfelinsel.de - Domainnamen unter der Nextcloud später per IPv4 erreichbar sein soll. Die Unterdomain "cloud4" kann völlig frei benannt werden, die Hauptdomain "apfelinsel.de" muss gegen eure eigene ausgetauscht werden.
* cloud6.apfelinsel.de - Domainnamen unter der Nextcloud später per IPv6 erreichbar sein soll. Die Unterdomain "cloud6" kann völlig frei benannt werden, die Hauptdomain "apfelinsel.de" muss gegen eure eigene ausgetauscht werden.
Varianten in dieser Anleitung
Prinzipiell muss der eigene Anschluss von aussen erreichbar sein. Dazu benötigt man eine öffentliche IPv4- oder IPv6-Adresse. Da die IPv4-Adressen mittlerweile ausgegangen sind und der längst überfällige Wechsel auf IPv6 ansteht, vergeben viele Kabelnetzbetreiber und kleinere Provider keine öffentlichen IPv4-Adressen mehr, sondern schalten den Anschluss in der sogenannten "Dual-Stack-Lite"-Variante. Dabei kann man zwar von innen heraus per IPv4 alles erreichen, aber eben nicht von außen, da man keine öffentliche IPv4-Adresse hat und keine Weiterleitung einrichten kann.
In der Fritzbox kann man sehen, welche IPv4-Adresse zugeteilt wurde und ob man eine IPv6-Adresse bekommt (evtl. muss man dazu erst IPv6 in der Fritzbox aktivieren). Auf der Website www.wieistmeineip.de kann man sehen, mit welcher öffentlichen IPv4-Adresse man im Internet sichtbar ist. Ist diese identisch mit der IPv4-Adresse, die die Fritzbox bekommen hat, so hat man eine öffentliche Adresse. Leider ist es aktuell noch nicht vollständig möglich auf IPv6 umzustellen, da es immer noch einige Netzbetreiber (gerade Mobilfunk) gibt, die noch nicht vollständig umgestellt haben. Daher ist es in diesen Fällen noch nicht möglich komplett auf IPv6 zu wechseln.

Es gibt nun drei verschiedene Möglichkeiten:

Variante A: Zugriff nur über IPv4
Diese Variante funktioniert nur, wenn man eine öffentliche IPv4-Adresse bekommt.

Variante B: Zugriff nur über IPv6
Diese Variante funktioniert nur, wenn man eine öffentliche IPv6-Adresse bekommt und überall über einen IPv6-Zugang verfügt.

Variante C: Zugriff über IPv4 und IPv6
Diese Variante funktioniert, wenn man eine öffentliche IPv6-Adresse bekommt. Zusätzlich muss man entweder eine öffentliche IPv4-Adresse bekommen oder einen kostenpflichtigen (aktuell 5€ im Jahr) Portmapper von IPv4 auf IPv6 verwenden. Dann können auch Geräte zugreifen, die nicht über eine IPv6-Verbindung verfügen.

MacFlieger:
2. NextCloudPi auf die SD-Karte und USB-Medium kopieren

Als erstes lädt man das aktuelleste NextCloudPi-Image herunter und entpackt es. Ich habe das "NextCloudPi_03-17-18" genommen.

Um die Datei nun auf die SD-Karte und USB-Medium zu bekommen, benötigt man das Terminal oder ein Hilfsprogramm (z.B. ApplePi-Baker)

Variante mit ApplePi-Baker:

Nach Start des Programmes und Einlegen der SD-Karte bzw. USB-Medium wählt man links in der Mitte unter "Pi-Crust" die gewünschte SD-Karte aus.
Zum Installieren des Images klickt man rechts in der Mitte unter "Pi-Ingredients" auf "Restore Backup" und wählt die Image-Datei aus. Danach werden alle notwendigen Schritte automatisch durchgeführt.
Das Programm kann auch zum einfachen Erstellen von Backups der SD-Karte benutzt werden.

Variante mit dem Terminal:

Zunächst ruft man einmal den folgenden Befehl auf:

--- Code: ---df -h
--- Ende Code ---
Dann die SD-Karte bzw. USB-Medium mit dem Mac verbinden.
Wieder den Befehl im Terminal aufrufen:

--- Code: ---df -h
--- Ende Code ---
Nun müsste ein weiteres Gerät in der Ausgabe zu sehen sein. Für die weiteren Schritte muss man sich den Volumenamen, z.B. /dev/disk8s1, merken und die folgenden Befehle entsprechend ändern!
Das Volume muss deaktiviert (unmount), das Gerät aber nicht ausgeworfen (eject) werden. Daher:

--- Code: ---sudo diskutil unmount /dev/disk8s1
--- Ende Code ---
Nun benötigt man zusätzlich den Gerätenamen. Man erhält ihn, indem man bei dem Volumenamen das "s1" am Ende weglässt und "disk" gegen "rdisk" austauscht. D.h. in meinem Beispiel gehört zum Volumennamen /dev/disk8s1 der Gerätename /dev/rdisk8. Es ist sehr wichtig, hier den korrekten Namen zu verwenden, da das entsprechende Gerät in den weiteren Schritten komplett überschrieben wird.
Nun kann man die Imagedatei auf die SD-Karte bzw. USB-Medium kopieren. Bitte bei der Eingabe alles genau überprüfen. Hinter "if" muss die Imagedatei (evtl. inklusive Pfad angegeben werden. Hinter of dann den Gerätename der SD-Karte:

--- Code: ---sudo dd bs=1m if=2015-11-21-raspbian-jessie.img of=/dev/rdisk8
--- Ende Code ---
Das Programm dd liefert gar keine Rückmeldung darüber, dass es läuft. Solange nichts ausgegeben wird, muss man warten. Wird wieder die Eingabeaufforderung ohne Fehlermeldung ausgegeben, hat das Übertragen funktioniert.
Nun nur noch die SD-Karte bzw. USB-Medium auswerfen (eject) und danach aus dem Mac entfernen:

--- Code: ---sudo diskutil eject /dev/rdisk8
--- Ende Code ---

Quellen:
https://www.raspberrypi.org/documentation/installation/installing-images/mac.md
http://www.tweaking4all.com/hardware/raspberry-pi/macosx-apple-pi-baker/

MacFlieger:
3. Grundlegende Konfiguration

Raspberry zusammenbauen/anschliessen

Nun wird die Micro-SD-Karte in den Raspberry eingelegt, eine USB-Tastatur, das Netzwerkkabel und ein Monitor/Fernseher über HDMI angeschlossen.
Danach das Netzteil an den Micro-USB-Anschluss anschliessen und der Raspberry sollte booten und nach einiger Zeit eine Login-Aufforderung anzeigen.

Umschalten auf Booten von USB-Medium

Man kann sich mit den Standarddaten am Raspberry anmelden (Benutzer: pi, Kennwort: raspberry). Hierbei ist allerdings zu beachten, dass momentan eine englische Tastatur eingestellt ist und man daher das y durch die Z-Taste eingeben muss.
Dann wird der USB-Boot-Modus aktiviert und neu gestartet.
Wegen der englischen Tastatur gelten folgende Regeln:
_ bekommt man mit ?
= bekommt man mit ´
| bekommt man mit >
- bekommt man mit ß
/ bekommt man mit -
: bekommt man mit Ö

--- Code: ---echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt
sudo reboot
--- Ende Code ---
Nach dem Neustart überprüfen, ob der Parameter richtig gesetzt wurde. Es muss 17:3020000a ausgegeben werden:

--- Code: ---vcgencmd otp_dump | grep 17:
--- Ende Code ---

Danach kann der Raspberry abgeschaltet, und die SD-Karte entfernt werden.

Konfiguration

Nach Anschliessen des USB-Medium und Starten des Raspberry kann man sich mit den Standarddaten am Raspberry anmelden (Benutzer: pi, Kennwort: raspberry). Hierbei ist allerdings zu beachten, dass momentan eine englische Tastatur eingestellt ist und man daher das y durch die Z-Taste eingeben muss.
Im Anschluss wird das Konfigurationsprogramm gestartet. Auch hier muss man wegen der englischen Tastatur das Minuszeichen durch die ß-Taste eingeben:

--- Code: ---sudo raspi-config
--- Ende Code ---
Innerhalb des Konfigurationsprogrammes wird mit den Cursor- und der Return-Taste navigiert.

Folgendes wird eingestellt:

* Punkt "Localisation Options":

* Bei "Change Locale": "de_DE.UTF-8" mit der Leertaste auswählen, das vorselektierte "en_GB.UTF-8" mit der Leertaste deselektieren und mit RETURN bestätigen. Danach die Option "de_DE-utf-8" auswählen und mit RETURN bestätigen.
* Bei "Change Timezone": Als Area "Europe" und als Location "Berlin" wählen.
* Bei "Change Keyboard": Als Tastatur entweder "Generic 105-key (Intel) PC" oder "Macintosh" wählen, je nachdem, was man angeschlossen hat. Wird bei der folgenden Auswahl des Layout nicht "German" angezeigt, dann erst mit der Option "Other" "German" auswählen. Als Layout "German" oder "German (Macintosh)" auswählen. Bei den zwei folgenden Fragen einfach die vorausgewählten Felder "The default for the keyboard layout" bzw. "No compose key" auswählen. (Achtung, nur die rechte Alt-Taste funktioniert wie vom Mac gewohnt zur Erzeugung von Sonderzeichen wie €, [, @ etc.
* Bei "Change Wifi-Country": Als Country "DE Germany" wählen.Das Programm mit "Finish" beenden. Sollte der Raspberry nicht automatisch neu starten wollen, dann mit "sudo reboot" neu starten.
Ab jetzt ist die deutsche Tastaturbelegung aktiv.
Wieder einloggen und das Konfigurationsprogramm erneut starten

* Punkt "Advanced Options":

* Bei "A3 Memory Split": den Wert "16" eingeben.Das Programm mit "Finish" beenden. Sollte der Raspberry nicht automatisch neu starten wollen, dann mit "sudo reboot" neu starten.

Evtl. das Dateisystem vergrößern

Es kann sein, dass das Vergrößern des Dateisystems von der Imagegröße auf die des USB-Mediums nicht funktioniert hat. Dies erkennt man durch die Fehlermeldung "[FAILED] Failed to start LSB: Resize the root filesystem to fill partition." beim Booten oder daran, dass nach der Eingabe von "df -h" eine zu kleine Größe ausgegeben wird. Auch bei sehr großen Festplatten funktioniert die automatische Änderung nicht.
Zunächst muss die Partition vergößert werden. Dazu startet man parted, stellt auf die Anzeige von Sektoren um und lässt sich das aktuelle Schema anzeigen:

--- Code: ---sudo parted
(parted) unit s
(parted) print free
--- Ende Code ---
Dabei werden die 2 Partitionen und freier Platz dahinter angezeigt. Bei dem freien Platz ist die Sektornummer bei "Ende" wichtig, da dass der neue Endsektor für die zweite Partition werden soll. Die Partition wird nun vergrößert. Bei der Frage nach dem "Ende" den Endsektor des freien Bereiches eingeben:

--- Code: ---(parted) resizepart
Partitionsnummer? 2
Ende [165473s]?
--- Ende Code ---
Das Ergebnis lässt sich anzeigen:

--- Code: ---(parted) unit MiB
(parted) printfree
(parted) exit
--- Ende Code ---
Danach muss noch das Dateisystem an die größere Partition angepasst werden. Das kann einige Zeit dauern:

--- Code: ---sudo partprobe
sudo resize2fs -p /dev/sda2
sudo partprobe
--- Ende Code ---

IPv6 Privacy Extensions deaktivieren
nur bei Variante B und C

Standardmässig sind die IPv6 Privacy Extensions aktiviert und der Raspberry wechselt daher nach einer gewissen Zeit von alleine seine IPv6-Adresse. Leider merkt die Fritzbox das nicht richtig und gibt diese Änderung nicht an den Dienst MyFritz weiter. Daher muss diese Änderung deaktiviert werden:

Die entsprechende Konfigurationsdatei wird im Editor geöffnet:

--- Code: ---sudo nano /etc/dhcpcd.conf
--- Ende Code ---
Dann wird die Zeile

--- Code: ---slaac private
--- Ende Code ---
in

--- Code: ---slaac hwaddr
--- Ende Code ---
Den Editor mit Ctrl-X, J und Return verlassen und den raspberry neu starten:

--- Code: ---sudo reboot
--- Ende Code ---


Auf aktuellen Stand updaten

Im Terminal bringt man das System mit den beiden folgenden Befehlen auf den aktuellen Stand und entfernt nicht mehr benötigte Pakete:

--- Code: ---sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get clean
sudo apt-get autoremove --purge
--- Ende Code ---

Quellen:
https://raspberry.tips/raspberrypi-tutorials/raspberry-pi-von-ssd-festplatte-booten/
https://www.edvnet-uk.com/partition-online-mit-parted-vergroessern/
https://forum-raspberrypi.de/forum/thread/37027-partion-vergroeßern/
https://wiki.ubuntuusers.de/Dateisystemgröße_ändern/

MacFlieger:
4. DNS-Eintrag und Router-Weiterleitung konfigurieren

Damit die eigene Nextcloud auch von überall erreicht werden kann, muss dafür gesorgt werden, dass die aktuelle IP des eigenen Routers unter einem festen Domainnamen erreichbar ist (dynamisches DNS), dass entsprechende Anfragen von aussen an den Raspberry weitergeleitet werden und das der öffentliche name auch "schön" ist.

Einrichten eines dynamischen DNS

Da man an einem üblichen DSL-Anschluss keine feste IP-Adresse hat, muss man mit einem Dienst arbeiten, der diese IP entsprechend veröffentlicht. Am einfachsten ist die Nutzung von MyFritz.

Zunächst muss man sich für den kostenlosen Dienst MyFritz anmelden:
Anleitung zur Anmeldung bei AVM, siehe Punkt "Wie registriere ich mich bei MyFRITZ!?"
Man erhält dann einen recht kryptischen Namen, z.B. "hsdbdhsurf74hb3s.myfritz.net", der in der Fritzbox unter "Internet/Online-Monitor" angezeigt wird. Nach der Einrichtung kann man die eigene Fritzbox immer unter diesem Namen erreichen. Unter "Internet/MyFritz" muss der FRITZ!Box-Internetzugriff deaktiviert werden.

Einrichten einer Weiterleitung zum Raspberry

Im Router muss nun eine Weiterleitung für einkommenden Datenverkehr zum Raspberry eingerichtet werden.
Der Port 80 und 443 müssen dazu an die IP des Raspberry weitergeleitet werden. Hierzu richtet man zwei MyFritz!-Freigaben (HTTP-Server und HTTPS-Server) unter "Internet/Freigaben" für das Gerät "Nextcloudpi" ein.

Variante B und C:
Bei der eingerichteten Freigabe wird auch der entsprechende Name angegeben, z.B. nextcloudpi.hsdbdhsurf74hb3s.myfritz.net

Konfiguration des Portmappers
nur Variante C

Zur Weiterleitung von IPv4-Zugriffen auf die IPv6-Adresse des Raspberry wird eine öffentliche IPv4-Adresse ("Dedizierte Portmapper-IPv4") und ein Portmapper ("Dedizierte Portmapper") benötigt. Diesen kann man z.B. bei Feste-IP.net für aktuell 35€/Jahr buchen.

* Hierzu registriert man sich zunächst unter http://www.feste-ip.net. Man erhält 50 Credits als Guthaben, wobei der Portmapper 1 Credit pro Tag kostet. D.h. man kann den Dienst 50 Tage kostenlos testen. Danach muss man jeweils 365 Credits (=1 Jahr) für 5€ kaufen.
* Dann legt man eine "Dedizierte Portmapper-IPv4" an. Unter "Mein Account"/"Credits&Addons" kann man nach Klick auf Addonbuchung diesen bestellen. Dieser ist 2 Tage kostenlos zum Testen. Innerhalb dieser Zeit sollte man bei "Mein Account"/"Credits&Addons" auf den Kreispfeil hinter der angegebenen Portmapper-IPv4 klicken, eine Bezahlbare auswählen und bei der Vorbereitung der Zahlung die gewünschten Credits und die Verlängerung der Portmapper-IPv4 auswählen und bezahlen.

* Dann legt man einen "universellen Portmapper" an. Dabei muss man eine Mobilfunknummer angeben, da ein Freischaltcode per SMS verschickt wird.
* Bei der Einrichtung des Portmapper wählt man als Mapping-Server die dedizierte Portmapper-IPv4 aus. Dann werden zwei Weiterleitungen eingerichtet. In die erste Zeile trägt man bei den Ports beides mal 80 ein, bei der zweiten Zeile beides mal 443. In beiden Zeilen wird als IPv6-Ziel der MyFritz-Namen des Raspberry eingetragen (z.B. nextcloudpi.hsdbdhsurf74hb3s.myfritz.net)
* Nach Einrichtung des Portmappers wird angezeigt unter welcher IP der Raspberry per IPv4 erreichbar ist. Diese IP muss man sich notieren
Anlegen eines "schönen" Namen

Falls man irgendwo eine eigene Domain und Zugriff auf die DNS-Einstellungen hat, kann man den recht kryptischen Namen mit einer eigenen Subdomain verbandeln. Dazu wird in den DNS-Einstellungen ein entsprechender Eintrag gemacht. Für dieses Beispiel nehmen wir den Namen cloud.apfelinsel.de. Wie das genau funktioniert, hängt vom jeweiligen Provider ab. Der Eintrag sollte nachher so aussehen:

Variante A (Umleitung auf Fritzbox):

--- Code: ---[color=red]cloud4.apfelinsel.de[/color]. IN CNAME [color=red]hsdbdhsurf74hb3s.myfritz.net[/color]
--- Ende Code ---

Variante B (Umleitung direkt auf Raspberry):

--- Code: ---[color=red]cloud4.apfelinsel.de[/color]. IN CNAME [color=red]raspberry.hsdbdhsurf74hb3s.myfritz.net[/color]
--- Ende Code ---

Variante C: (Umleitung über Portmapper, statt 0.0.0.0 muss die IP der dedizierten Portmapper-IPv4 eingetragen werden)

--- Code: ---cloud4.apfelinsel.de A [color=red]0.0.0.0[/color]

Bei HostEurope findet man die Einstellung unter "Domainservices/AutoDNS Domains bearbeiten" und dann dort bei der gewünschten Domain auf den Button "Editieren" klicken und einen neuen passenden Eintrag machen.
--- Ende Code ---

Navigation

[0] Themen-Index

[#] Nächste Seite

Antwort

Zur normalen Ansicht wechseln