Raspberry Pi als Synology NAS Backup

Aus Laub-Home Wiki

Es gibt mittlerweile die Dritte Generation des kleinen Mini Rechners. Ich habe mir diesen bei Amazon samt Gehäuse, Passiven Kühlrippen und Netzteil bestellt. Als Beigabe gab es eine MicroSD Card mit dem neuen von der Raspberry Foundation entwickelten OS Noobs.

Als erstes habe ich natürlich alles zusammengebaut und angeschlossen. Noobs Bootete sehr schnell und bietet echt eine Elegante schmale Desktop Lösung. WLAN, Bluetooth und so weiter kann bequem über die GUI eingerichtet werden. Mir ist das OS nur zu voll für meinen Einsatzzweck. Deshalb habe ich mich für RASPBIAN STRETCH LITE entschieden:

Die Installation nach der Anleitung von raspberrypi.org mit dem Tool etcher, was es auch glücklicherweise für den MAC gab, war kinderleicht und hat ca. 5 Minuten gedauert.

  • Download des IMG Files
  • Download ETCHER
  • Installation ETCHER
  • Starten des Tools ETCHER
  • Auswahl des IMG Files und der SD-Card
  • GO

SSH beim Booten Aktivieren

Hat man wie ich nicht vor an den PI Tastatur, Maus und Monitor zu hängen, muss man den SSH Daemon beim Booten aktivieren. Hierfür gibt es zum Glück eine ganz einfache Lösung. Es muss lediglich auf der SD-Card im /boot eine leere Datei Namens ssh angelegt werden. Bei mir auf dem MAC ging das im Terminal wie folgt:

cd /Volumes/boot/
touch ssh

Dann die SD Card mittels CMD+E Ejecten/auswerfen und in den PI stecken. Dann einfach booten. Da ich einen DHCP/DNS Server habe, konnte ich mich einfach mit dem Namen des PI via SSH verbinden:

ssh pi@raspberrypi

Das Standard Passwort ist übrigens "raspberry"

Root User freischalten

Als erstes sollten wir das Passwort ändern und dann noch den Root User freischalten:

passwd

dann noch das Root Passwort festlegen:

sudo passwd

Zuguter Letzt müssen wir dem Root User noch erlauben via SSH auf das System zugreifen zu dürfen:

Dafür der Datei /etc/ssh/sshd_config, welche wir am besten so aufrufen:

sudo nano /etc/ssh/sshd_config
PermitRootLogin yes

hinzufügen, dann den Dienst Neustarten:

sudo systemctl restart ssh

nun am besten mit einer neuen SSH Verbindung den Root Account Zugang testen:

ssh root@raspberrypi

Updates installieren

apt-get update && apt-get upgrade
rpi-update

Konfiguration

die wichtigsten Dinge kann man bequem mit dem raspi-config Tool erledigen:

raspi-config

Ich habe hier den Hostnamen des Systems geändert und die regional settings. Ich habe das System aber auf Englisch gelassen nur die Timezone geändert.

Synology NAS Backup einrichten

Es gibt auch hier viele Wege die zum Ziel führen, ich habe mich für den RSYNC Server entschieden. Als Backup Medium habe ich mir eine 3TB Western Digital 2,5" USB 3.0 HDD gekauft. Die Platte wurde mit NTFS formatiert geliefert, was ich auch beibehalten werde, da es bei mir auf allen Geräten, Windows, NAS und MAC und Linux funktioniert. Das Einzige was ich zum schreiben auf die Platte vom Raspberry Pi benötigte ist ntfs-3g:

apt-get install ntfs-3g

Festplatte einbinden

Das es sich um einen USB Wechseldatenträger handelt und ich diesen auch schlafen legen möchte um Strom zu sparen, Mounte ich das Ganze mit autofs:

apt-get install autofs

nun benötigen wir einen Ordner auf dem Filesystem, in den die USB HDD gemountet wird:

mkdir /srv/backuphdd

ein erster Test des ganzen könnte wie folgt aussehen:

mount /dev/sda1 /srv/backuphdd/
mount
/dev/sda1 on /srv/backuphdd type fuseblk (rw,relatime,user_id=0,group_id=0,allow_other,blksize=4096)

nun wieder umounten, wir wollen die Platte ja mit autofs mounten

umount /dev/sda1

Nun können wir autofs einrichten damit es die Platte automatisch nach /srv/backuphdd mountet und nach 1 Minute Inaktivität diese wieder umountet.
Also fügen wir der Datei /etc/auto.master folgende Zeile am Ende hinzu:

/srv /etc/auto.usb-hdd --timeout=60 --ghost

Nun brauchen wir die UUID der Platte, diese spuckt das Tool blkid aus:

blkid
/dev/sda1: LABEL="Elements" UUID="420E47780E47644F" TYPE="ntfs" PARTLABEL="Elements" PARTUUID="ced7d098-dfde-4616-8075-421a4ba38385"

Nun legen wir die Datei /etc/auto.usb-hdd mit folgenden Inhalt an. Achtung hinter /by-uuid/ muss die oben ausgelesene UUID eingetragen werden.

backuphdd -fstype=ntfs-3g :/dev/disk/by-uuid/420E47780E47644F

Zum Aktivieren starten wir den Daemon neu:

systemctl restart autofs

nun sollte nach einem ls auf den Mountpoint die Platte einhängen:

ls -la /srv/backuphdd
mount
/etc/auto.usb-hdd on /srv type autofs (rw,relatime,fd=6,pgrp=3292,timeout=60,minproto=5,maxproto=5,indirect)
/dev/sda1 on /srv/backuphdd type fuseblk (rw,relatime,user_id=0,group_id=0,allow_other,blksize=4096)

nach ca. 1 Minute sollte bei erneutem mount Befehl nur noch die folgende Zeile zu sehen sein:

/etc/auto.usb-hdd on /srv type autofs (rw,relatime,fd=6,pgrp=3292,timeout=60,minproto=5,maxproto=5,indirect)

Rsync Server einrichten

Um den Rsync Server einzurichten, muss dieser als erstes aktiviert werden. Zusätzlich vergebe ich noch einen NICE Wert, damit das Backup den Betrieb des PI nicht allzusehr in die Knie zwingt. Hierfür als erstes folgende Datei editieren:
/etc/default/rsync

# start rsync in daemon mode from init.d script?
#  only allowed values are "true", "false", and "inetd"
#  Use "inetd" if you want to start the rsyncd from inetd,
#  all this does is prevent the init.d script from printing a message
#  about not starting rsyncd (you still need to modify inetd's config yourself).
RSYNC_ENABLE=true

# run rsyncd at a nice level?
#  the rsync daemon can impact performance due to much I/O and CPU usage,
#  so you may want to run it at a nicer priority than the default priority.
#  Allowed values are 0 - 19 inclusive; 10 is a reasonable value.
RSYNC_NICE='10'

Nun holen wir uns die Sample Konfiguration für den Server:

cp /usr/share/doc/rsync/examples/rsyncd.conf /etc/

und erweitern diese um den folgenden Block:
/etc/rsyncd.conf

[Backup]

        comment = Backup Rsync
        path = /srv/backuphdd
        lock file = /var/lock/rsyncd
        read only = no
        list = yes
        uid = root
        gid = root
        strict modes = yes
        hosts allow = 192.168.50.254
        ignore errors = no
        ignore nonreadable = yes
        transfer logging = no
        timeout = 600
        refuse options = checksum dry-run
        dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

dann den Dienst durchstarten:

systemctl restart rsync


Siehe auch hier:

Sysnology Hyper Backup konfigurieren

Als erstes starten wir im Hauptmenü das Tool Hyper Backup. Nach dem Starten dieses kann man unten Links mittels dem PLUS Button einen neuen Job hinzufügen.
Hier wählen wir Datensicherungsaufgabe aus.
Nun ganz unten Remote-Datenkopie auswählen und mit Weiter bestätigen.

In dem nun folgenden Reiter geben wir die Fakten zum RSYNC Server an:

  • Servertyp: rsync-kompatibler Server
  • Servername oder IP Adresse: Hier die IP oder den HOSTNAME des Raspberry PI angeben
  • Übertragungsverschlüsselung: AUS
  • Benutzername: root
  • Passwort: das root Passwort
  • Backupmodul: Hier sollte nun das von uns konfigurierte Modul Namens "Backup" auswählbar sein


Nun das Ganze mit Weiter bestätigen und im nächsten Fenster die Orte Auswählen, die gesichert werden sollen.
Im nächsten Fenster kann man noch auswählen ob man Programme des NAS sichern möchte

Zum Schluss noch einen Namen für den Job vergeben und ggf. Die Uhrzeit anpassen, an der der Job laufen soll.

Fertig!

USB Platte schlafen legen

hdparm installieren:

apt-get install hdparm

nun der Konfigdatei sagen, das die USB Platte schlafen soll: /etc/hdparm.conf

/dev/disk/by-uuid/420E47780E47644F {
write_cache = on
spindown_time = 60
}

IPv6 deaktivieren

/etc/ssh/sshd_config

ListenAddress 0.0.0.0

/etc/modprobe.d/ipv6.conf

# Don't load ipv6 by default
alias net-pf-10 off
alias ipv6 off
options ipv6 disable_ipv6=1
blacklist ipv6

folgenden Parameter am Ende der Zeile in /boot/cmdline.txt anhängen

ipv6.disable=1

nun den PI rebooten:

reboot

WLAN und Bluetooth deaktivieren

da ich nur über LAN auf den PI zugreifen will und Bluetooth auch nicht benötige, habe ich beides deaktiviert. Hierfür einfach folgende Datei mit dem Inhalt anlegen:
/etc/modprobe.d/raspi-blacklist.conf

# WLAN abschalten
blacklist brcmfmac
blacklist brcmutil
#blacklist cfg80211
#blacklist rfkill

# Bluetooth abschalten
blacklist btbcm
blacklist hci_uart

Dann noch den Bluetooth Dienst deaktivieren:

systemctl disable hciuart

und einmal erboten:

reboot

Mehr Infos hier:

WLAN konfigurieren

Sollte man doch WLAN nutzen wollen, muss zuerst das Modul wieder aktiviert werden:
/etc/modprobe.d/raspi-blacklist.conf

# WLAN abschalten
#blacklist brcmfmac
#blacklist brcmutil
#blacklist cfg80211
#blacklist rfkill

# Bluetooth abschalten
blacklist btbcm
blacklist hci_uart

Nach einem reboot sollte der Befehl

ip a
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether b8:27:eb:d9:29:ab brd ff:ff:ff:ff:ff:ff

das WLAN Interface anzeigen. Konfiguriert wird es dann wie folgt:

WLAN suchen

mit dem folgenden Befehl kann man nach WLAN Netzen suchen:

iwlist wlan0 scan

WLAN einrichten

am besten generiert man sich die Konfiguration mit dem Tool wpa_passphrase:

wpa_passphrase "MySSID" "MyWiFiPassword"

der Output siegt dann wie folgt aus

network={
	ssid="MySSID"
	#psk="MyWiFiPassword"
	psk=f1a2554f1f250efe79f1c7dd1bc0e1384962b4612cd65438759463df1f727f9b
}

diesen habe ich außer der Zeile #psk="MyWiFiPassword" der folgenden Datei angehängt:
/etc/wpa_supplicant/wpa_supplicant.conf

country=GB
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
	ssid="MySSID"
	psk=f1a2554f1f250efe79f1c7dd1bc0e1384962b4612cd65438759463df1f727f9b
}

Nun das Ganze aktivieren:

wpa_cli -i wlan0 reconfigure

ein erneutes

ip a

sollte dann eine IP zum Vorschein bringen, kann aber ein bisschen dauern, ca. 30s:

3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether b8:27:eb:d9:29:ab brd ff:ff:ff:ff:ff:ff
    inet 192.168.50.21/24 brd 192.168.50.255 scope global wlan0
       valid_lft forever preferred_lft forever

Mehr Infos gibts hier: