Guideline OwnCloud für Raspberry PI sicher einrichten

Im August 2019 wollte ich meine Daten durch eine sichere Cloud Lösung schützen und habe eine solche auf einem Raspberry eingerichtet. Ich wollte folgende Funktionen:

Im Folgenden möchte ich dir meinen Anleitung sowie meine Teilliste zur Verfügung stellen, damit du diese nachbauen kannst.

Technisches Konzept der Cloud



Foto der Hardware

Zusammenfassung

Ziel ist eine eigene Cloud für Zuhause mithilfe eines Raspberry PI und zwei externen Festplatten für insgesamt ungefähr 150 Euro zu bauen. Die Cloud ist abgesichert durch die Tatsache, dass es zwei redduante Festplatten gibt. So kann eine ausfallen. Mithilfe der Software OwnCloud sind meine Daten auch vor Zugriffen von außen geschützt.

Liste der Teile

1. Vorbereitung

Als erstes solltest die oben genannten Hardware bei Amazon bestellen. Du solltest ungefähr bei 150 Euro landen. Ich möchte dir nun zeigen, wie du die Hardware verbinden und die Cloud nutzbar machen kannst.

1.1 Raspberry aufsetzen

Als erstes baust du den Raspberry in die dafür vorgesehene Hülle. Du hast außerdem zu deinem Raspberry eine Speicherkarte bekommen. Nimm diese Speicherkarte und setze Sie in deinem PC ein. Lade dir nun die Software Etcher und die aktuelle Raspberry Strech Version. Nimm die Variante: Raspbian Stretch with desktop and recommended software. Starte nun die Sofware Etcher und klicke auf:
  • Select Image (Raspberry Stretch wählen)
  • Select Drive (SD Karte wählen)
  • Flash klicken
  • Lege eine Datei an mit dem Namen ssh (ohne Endung) auf der SD Karte. Der Inhalt ist leer.

Suche nun die Speicherkarte und Explorer und lege eine leere Datei an. Diese heißt ssh (ohne Dateiendung). Nun mache noch folgendes:
  • SD in Raspberry einsetzen
  • Raspberry mit Strom verbinden
  • Raspberry per LAN mit dem Rooter verbinden

Starte nun den Raspberry indem du das Terminal (MAC) oder Putty bei Windows nutzt und gib folgendes ein:
  • Tippe ein: ssh pi@raspberrypi.local (Passwort ist raspberry)
  • Tippe ein: sudo raspi-config
  • Wähle “Change User Password”
  • Setze ein neues Passwort
  • Starte neu und tippe ein: sudo reboot

1.2 Raspberry im Router freischalten

Nun musst du dich in Ihren Router einloggen. SchaltePort 22 frei und leite diesem auf dem Raspberry um. Bei der Fritzbox musst du dazu einfach die IP (bei Kabel die MAC-Adresse) des Raspberry eingeben und Port 22 TCP einstellen.

Nun musst du eine dynamische IP schalten. Mache dir dazu einen Account bei einem kostenlosen Anbieter wie SPDNS (deutscher Anbieter). Gehe nun in den Raspberry und mache folgendes:


  • Legen sich bei SPDNS einen Host mit Url an
  • sudo apt-get install ddclient
  • Wähle Other
  • dyndns2
  • eth0
  • update.spdyn.de
  • Username und Passwort
  • Hostname ist die URL, welch du vergeben hast bei der Anmeldung z.b. Domain.spdns.de
  • Öffene die Datei mit sudo nano /etc/ddclient.conf
  • Ändere die Zeilen mit use=if, if=eth0 zu use=web, web=checkip.spdyn.de
  • STRG + X, Y und Enter
  • Du erreichst den Raspberry nun unter ssh pi@domain.spdns.de
  • Für weitere Informationen geht es hier zur Doku

1.3 Raspberry kühlen

Nun setze die Kühlpads auf die Platinen (direkt auf die zwei schwarzen Chips kleben, mehr siehst du auf dem Bild bei Amazon). Mein Tipp wäre auch noch: Bohre ein Loch in das Seitenteil der Raspberry Hülle dann kann Luft rausströmen. Checke die Temperatur mit dem Befehl: vcgencmd measure_temp. Falls du ch wunderst warum bei mir Kabel zu sehen sind: Ich habe noch eine Alarmanlage auf den Raspberry installiert.



Der Raspberry bleibt damit immer unter 60 Grad auch im Sommer (zumindest bei mir). Das ist vollkommen ok. Falls du gerne noch extra kühlen möchtest, dann musst du einen Lüfter einbauen. Ich habe einen Lüfter von Noctua , der zwar etwas mehr kostet (12 Euro) aber flüsterleise ist. Du kannst auch für etwas weniger Geld (6 Euro) einen anderen Lüfter von GeeekPi einbauen. Mache dazu ein paar Löcher in den Deckel und das Seitenteil (damit die Luft ausströmen kann) und befestige den Lüfter. Nimm 2 Jumper Kabel und verbinde die Kabel mit folgenden 2 Anschlüssen:

  • Schwarzes Kabel (Ground): 7. Steckplatz Rechts
  • Rotes Kabel (Strom 3,3V): 9. Steckplatz Links

Die Temperatur ist nun unter 40 Grad. Mein Tipp: Es reicht, wenn du den Lüfter nur mit 3,3V versorgst. Er ist dann auch leiser.




2. Festplatten und Raid-1 installieren

Nun schließe mit dem USB Hub die beiden Festplatten an. Ohne eine aktive Stromversorgung durch den Hub ist der Raspberry zu schwach beide Festplatten mit Strom zu versorgen. Zusätzlich wollen wir uns gegen Datenverlust schützen. Dazu richten wir ein Raid-1 System ein, welche die Inhalte unserer OwnCloud auf Festplatte 1 auf Festplatte 2 spiegelt, sodass wir beim Ausfall einer Festplatte noch eine zweite haben. Das geht wie folgt:

  • Überblick bekommen: sudo fdisk -l
  • NTFS installieren: sudo apt-get install ntfs-3g
  • Software installieren: sudo apt-get install mdadm
  • Neustarten: sudo reboot
  • Festplatten trennen: umount /media/pi/<FESTPLATTENNAME>
  • Raid 1 bauen: sudo mdadm -Cv /dev/md0 -l1 -n2 /dev/sd[ab]1
  • Formatierung der Festplatten: sudo mkfs /dev/md0 -t ext4 Status anschauen: sudo mdadm --detail /dev/md0
  • Ordner für die Daten anlegen: sudo mkdir /media/pi/cloud
  • Das Raid-Array einbinden: sudo mount /dev/md0 /media/pi/cloud
  • Die Einstellungen anpassen: sudo nano /etc/fstab
  • Am Ende der Datei Einfügen: /dev/md0 /media/cloud ext4 4,nofail 0 0
  • STRG + X, Y und Enter
  • Beim Systemstart die Festplatten mounten: sudo nano /etc/default/mdadm
  • An das Ende der Datei schreiben: AUTOSTART=true
  • STRG + X, Y und Enter
  • Checke deine Festplatten: sudo mdadm --detail /dev/md0


Nun sehen wir bei Eingabe das oben gezeigt Bild. Wir sehen, dass beide Festplatten funktionieren. Nun möchten wir noch eine Information haben, wenn eine Festplatte kaputt geht. Das geht sehr einfach:

  • Rufe auf: sudo nano /etc/mdadm/mdadm.conf
  • Passe die Zeile mit MAILADDR an: MAILADDR deine@mail.de
  • Drücke STRG + X, Y und Enter
  • Wir prüfen alle 60 Minuten ob es einen Fehler gibt: sudo mdadm --monitor --mail=root@localhost --syslog --delay=3600 /dev/md0 --daemonise
  • Falls du also eine Mail bekommst, dann prüfe mit sudo mdadm --detail /dev/md0
  • Bei Ausfall kannst du dir einfach eine neue Festplatte kaufen und diese anschließen


3. OwnCloud installieren

In diesem Kapitel werden wir OwnCloud installieren. Bevor wir das tun können müssen wir noch PHP und NGINX sowie SSL installieren. Die OwnCloud ist eine kostenlose Open Source Software für das Speichern von Daten auf einem eigenen Server (Own). Von diesem Server kann der Datenbastand von überall abgerufen werden (Cloud).




3.1 PHP installieren

  • sudo nano /etc/apt/sources.list.d/10-buster.list
  • Füge ein: deb http://mirrordirector.raspbian.org/raspbian/ buster main contrib non-free rpi
  • STRG X + Y + Enter
  • sudo nano /etc/apt/preferences.d/10-buster
  • Füge ein: Package: * Pin: release n=stretch Pin-Priority: 900 Package: * Pin: release n=buster Pin-Priority: 750
  • sudo apt update
  • PHP installieren: sudo apt install -y -t buster php7.3-fpm php7.3-curl php7.3-gd php7.3-intl php7.3-mbstring php7.3-mysql php7.3-imap php7.3-opcache php7.3-sqlite3 php7.3-xml php7.3-xmlrpc php7.3-zip php7.3-bcmath php-apcu
  • Prüfe die Installation: php -v
  • Leistung erhöhen: sudo nano /etc/php/7.3/fpm/conf.d/90-pi-custom.ini
  • Füge ein: cgi.fix_pathinfo=0 upload_max_filesize=64m post_max_size=64m max_execution_time=600
  • sudo nano /etc/php/7.3/fpm/php.ini
  • Füge ein: upload_max_filesize = 2000M post_max_size = 2000M sudo nano /etc/php/7.3/fpm/pool.d/www.conf listen = 127.0.0.1:9000 sudo nano /etc/dphys-swapfile CONF_SWAPSIZE = 512
  • Starte PHP neu: sudo service php7.3-fpm reload
3.2 NGINX installieren
  • NGINX installieren: sudo apt install -y -t buster nginx nginx -v
  • User-Gruppe anlegen: sudo usermod -a -G www-data www-data

3.3 SSL installlieren und NGINX Config
  • SSL installieren: sudo openssl req $@ -new -x509 -days 730 -nodes -out /etc/nginx/cert.pem -keyout /etc/nginx/cert.key
  • SSL Verschlüsseln: sudo openssl dhparam -out /etc/nginx/dh4096.pem -dsaparam 4096
  • Rechte anpassen: sudo chmod 600 /etc/nginx/cert.pem
  • Rechte anpassen: sudo chmod 600 /etc/nginx/cert.key
  • Rechte anpassen: sudo chmod 600 /etc/nginx/dh4096.pem
  • Konfig anlegen: sudo sh -c "echo '' > /etc/nginx/sites-available/default"
  • Konfig anpassen: sudo nano /etc/nginx/sites-available/default
  • Kopiere diese Zeilen in die Datei und ersetze die IP durch die DYNDNS Adresse (2 Mal bei Server Name)
  • STRG X + Y + Enter
  • Neustart: sudo systemctl restart nginx 
  • Checke den Status: sudo systemctl status ngnix 


3.4 OwnCloud installieren
  • Lege einen Ordner an: sudo mkdir -p /var/www/owncloud
  • Lade OwnCloud: sudo wget https://download.owncloud.org/community/owncloud-10.0.9.tar.bz2
  • Entpacke OwnCloud: sudo tar xvf owncloud-10.0.9.tar.bz2
  • Verschiebe OwnCloud: sudo mv owncloud/ /var/www/
  • Passe die Rechte an: sudo chown -R www-data:www-data /var/www rm -rf owncloud owncloud-10.0.9.tar.bz2
  • Passe die Konfig an: sudo nano /var/www/owncloud/.user.ini
  • Füge ein: upload_max_filesize=2000M post_max_size=2000M memory_limit=2000M
  • Installiere den OwnCloud Client auf deinem PC und richte deine OwnCloud ein!


3.5 Festplatte einbinden
  • Schreibe dir auf: id -g www-data
  • Schreibe dir auf: id -u www-data
  • Srcheibe dir auf: ls -l /dev/disk/by-uuid
  • Passe die Konfig an: sudo nano /etc/fstab
  • UUID=XXXXXX-XXXXX /media/cloud auto nofail,uid=XX,gid=XX,umask=0027,dmask=0027,noatime 0 0
  • Starte neu: sudo reboot

4. Raspberry sichern

Es ist noch wichtig ein Backup der SD Karte des Raspberry zu machen. SD Karten gehen oft nach 1-2 Jahren kaputt. Dazu schließt man einen USB Stick (mind. 8GB und ext4) an den Raspberry an und nutzt den folgenden Befehle. Danach muss man ca. 5-30 Minuten warten. Wichtig ist: Formatiere den Stick am PC auf EXFAT, da normalerweise die Sticks keine Dateien über 4GB unterstützen.
  • EXFAT installieren: sudo apt-get install exfat-fuse
  • EXFAT installieren: sudo apt-get install exfat-utils
  • sudo dd if=/dev/mmcblk0 of=/media/pi/{NAMEUSBSTICK}/rp-sicherung.img bs=1MB


5. Limitierung und Haftung

Diese Anleitung ist eine Guideline und ich übernehme keinen Anspruch auf Vollständigkeit oder komme für Schäden auf. Ich übernehme auch keine Garantie, dass es immer funktioniert.


Dominic Lindner (cloud@projektify.de)

Ich bin ein Typ aus Nürnberg, der gerne bastelt. Ich habe Wirtschaftsinformatik studiert und auch promoviert. Ich bin Vorstand des Projektify e.V. und blogge auf agile-unternehmen.de.



Hauptseite - Impressum - Datenschutz - Besuche: 1682