Hardware
- 1 Raspberry Pi (Raspi)
- 1 SD Karte (mind. 4 GB)
- 1 SD Kartenleser
- 1 USB-Festplatte mit eigener Energieversorgung und USB-Anschlusskabel
- 1 Standard-Handyladekabel und -netzteil
- 1 Netzwerkkabel
Software
- Raspbian (Debian Wheezy) http://www.raspberrypi.org/downloads/
- SD Formatter https://www.sdcard.org/downloads/formatter_4/
- Win32DiskImager http://sourceforge.net/projects/win32diskimager/
- puTTY http://www.putty.org/
Mein Ziel war es, einen einfachen Fileserver zu bekommen, auf dem ich die wichtigsten Backups meines Windows 8-Arbeitsrechners speichern kann. Auf besondere Sicherheitsvorkehrungen und den Luxus von RAID habe ich verzichtet. Ein einfaches Backup ist für meine Zwecke genug. Natürlich gibt es wunderbare Lösungen, z.B. von Synology, die haben allerdings auch ihren Preis: Eine sehr einfache Synology mit einer 2 TB Festplatte kostet um die 250 Euro. Der Raspberry Pi mit Kühlkörpern, einem Gehäuse, einer 8 GB SD-Karte und einer externen 2 TB Festplatte mit Netzteil hat mich summa sumarum 145,31 Euro gekostet. Kartenleser, Handyladekabel und Netzwerkkabel hatte ich noch rumliegen. Ganz klar ist: Ein Raspi ist nicht so schnell wie eine hochgepimpte Lösung (dazu am Ende des Artikels noch eine kurze Anmerkung). Allerdings verbraucht er wenig Strom und Platz und macht einfach Spaß!
Software vorbereiten
Während man die SD-Karte vorbereitet, kann das Raspbian-Image schon mal heruntergeladen werden, deswegen als erstes den Download der knapp 800 MB großen ZIP-Datei anstoßen. Die drei weiteren Programme, die oben in der Liste stehen, kann man jetzt auch noch schnell herunterladen, sofern man sie nicht schon bereitliegen hat.
Jetzt muss die SD-Karte vorbereitet werden. Auch wenn sie neu ist, sollte man sie sicherheitshalber mit dem SD Formatter formatieren. Dieser sollte mit Administratorenrechten gestartet werden (Windows 7 und 8: Rechtsklick - als Administrator ausführen). Hinter dem Button Option verbergen sich zwei Einstellungsmöglichkeiten: Die Art der Formatierung und Format Size Adjustment. Bei ersterem konnte ich bisher immer auswählen, was ich wollte, am Ende wurde mir angezeigt, dass nur Quickformat funktionieren würde. Bei letzterem stellt man Format Size Adjustment = ON ein. Formatiert wird die Karte dann innerhalb von Sekunden. Wenn die Raspbian-Datei heruntergeladen ist, entpackt man das Wheezy-Image auf die Festplatte. Vorsicht, die ausgepackte Datei ist 2,8 GB groß! Nun öffnet man den Win32DiskImager, wählt die Image-Datei und den Laufwerksbuchstaben der SD-Karte aus und lässt das Image auf die Karte schreiben. Während das läuft, kann man den Raspi schon einmal zusammenstöpseln.
Hardware zusammenstecken
Mein Setup braucht weder Tastatur noch Maus noch ein Display für den Raspi. Da ich keinen Monitor oder Fernseher mit HDMI-Eingang habe, werde ich die gesamte Einrichtung vom Windows-Rechner aus per Konsole vornehmen.
Das Netzwerkkabel in den entsprechenden Anschluss stöpseln, die Festplatte per USB verbinden. Wenn die SD-Karte fertig beschrieben ist, schiebt man sie vorsichtig bis zum Anschlag in den SD-Kartenslot. Jetzt kommt zuerst die Festplatte ans Stromnetz, dann schließlich der Raspi. Wenn alles richtig verkabelt und die SD-Karte lesbar ist, beginnt jetzt die Lichtorgel auf der Platine: Unterhalb des hellblauen Soundanschlusses leuchten die diversen kleinen LEDs auf.
Zur Sache, Schätzchen!
Jetzt kommen wir zur Schreibarbeit. Dabei hilft puTTY. Zuerst muss man allerdings herausbekommen, welche IP im Netzwerk der Raspi hat. Ich habe mein Netzwerk über eine FritzBox laufen und habe einfach dort nachgeschaut. Über die Konsole geht es auch, kann aber zur Ratestunde führen. Man ruft die Windows-Konsole mit CMD auf und gibt arp /a ein. Jetzt werden alle im Netzwerk vergebenen IP-Adressen aufgeführt. Nur Geduld, eine wird schon die Passende sein. Diese IP-Adresse gibt man in puTTY ein und sollte gleich darauf nach Login und Passwort gefragt werden. Wenn nicht, ist etwas schief gelaufen...
Die Standardanmeldung an den Raspi geht mit dem Benutzernamen pi und dem Passwort raspberry. Wer möchte, kann das natürlich ändern, aber ich mache das mal vorerst nicht. Man kann den Raspi jetzt, wie er selbst vorschlägt, konfigurieren. Eine Übersicht über die wichtigsten Einstellungen findet sich z.B. im Blog von Jan Karres. Ich würde auf jeden Fall die Konfiguration so ändern, dass die gesamte SD-Karte verwendet wird.
Der Raspi bekommt jetzt noch ein Update spendiert (wenn man nicht schon der Anleitung im eben erwähnten Artikel gefolgt ist). Das dauert ca. 15 bis 20 Minuten. Man gibt
sudo apt-get update && sudo apt-get upgrade
ein. Zwischendurch muss man auch noch einmal bestätigen, dass man die heruntergeladenen Pakete auch wirklich speichern möchte.
Mit
sudo apt-get clean
verabschiedet man sich anschließend wieder von den Installationspaketen, die man ja jetzt nicht mehr braucht.
Ich gebe meinem Fileserver einen neuen Namen. An dem Login am Anfang ändert das nichts, nur wird dann in der Konsole statt pi@paspberrypi $ der neue Name angezeigt, und weil ich meinen Server peanut nenne, erscheint jetzt pi@peanut $. Um das zu bewerkstelligen, öffne ich mit dem Texteditor Nano zuerst die Datei hostname und ersetze raspberry durch peanut:
sudo nano /etc/hostname
Dasselbe mache ich mit der Datei hosts.
sudo nano /etc/hosts
Das Passwort für Root setzen, wozu das wohl gut ist? Ich folgte einer Anleitung auf Wel!s Blog. Bis zu einem gewissen Punkt macht die auch Sinn. Knut Welzel richtet für den User "root" ein Passwort ein, das habe ich dann auch mal gemacht. Schadet nicht.
Umswitchen zum User root:
sudo su
ein neues Passwort vergeben:
passwd
Zurück zum Standarduser:
exit
Okay, so weit so gut. Knut Welzel installiert jetzt noch weitere Pakete. Für meine Zwecke würde wahrscheinlich acl ausreichen, die restlichen Pakete haben was mit grafischen Benutzeroberflächen zu tun, die ich momentan nicht verwenden kann. Aber ich habe mal alles mitinstalliert, vielleicht habe ich ja irgendwann ein Gerät mit HDMI-Eingang...
sudo apt-get install avahi-daemon acl imagemagick libjpeg62 libjpeg62-dev libpng12-0 libpng12-dev
Festplatte formatieren, partitionieren und ins System einhängen
Weiter geht es mit der Festplatte. Meine ist eine nagelneue WD Elements Desktop 2 TB. Um eventuelles Branding runterzuwerfen und eine sauber formatierte Festplatte für meine Zwecke zu haben, gehe ich einfach weiter wie Welzel vor.
Mit
sudo fdisk -l
lasse ich mir die Festplatte und SD-Karte anzeigen.
/dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 15523839 7700480 83 Linux
ist die SD-Karte,
Device Boot Start End Blocks Id System
/dev/sda1 2048 3907024895 1953511424 7 HPFS/NTFS/exFAT
ist meine Festplatte (nach der Überarbeitung).
Mit
sudo fdisk /dev/sda1
kann ich in die Festplatte reinschauen und einige Änderungen vornehmen. Ich habe p eingegeben und mir damit die Partitionen anzeigen lassen. Tatsächlich fanden sich 4 Partitionen, die ich mit d löschen konnte (in der Konsole wird man selbsterklärend durch das Procedere geführt). Anschließend erstelle ich mit p eine primäre Partition mit der Nummer 1, durch drücken der Eingabetaste bei den nächsten beiden Eingabeaufforderungen wird der größtmögliche Teil der Festplatte verwendet. Danach drücke ich w, um eine Partitionstabelle erstellen zu lassen. Abschließend wird mit
sudo mkfs.ext4 /dev/sda1
die Plattte im Linuxformat formatiert.
Jetzt erstelle ich meinen neuen Ordner "share" für den Dateizugriff
sudo mkdir /share
Die Platte binde ich nun "fest" in mein System ein. Damit das nicht durcheinander kommt, wenn ich andere USB-Geräte anstöpsele, trage ich den UUID (Universally Unique Identifier) in die Datei fstab ein. Erst mal muss ich die UUI rausbekommen, dazu rufe ich
sudo blkid
auf und kopiere mir raus, was mir für sda1 ausgegeben wird:
/dev/sda1: UUID="204250cb-28cc-4d11-b3fa-7606893f3125" TYPE="ext4"
Jetzt muss das in fstab eingetragen werden:
sudo nano /etc/fstab
und hier lege ich unten eine neue Sektion an:
# USB-Platte UUID=204250cb-28cc-4d11-b3fa-7606893f3125 /share ext4 defaults 0 0
Mit
sudo mount -a
wird die Platte jetzt im System eingehängt und wenn ich jetzt
sudo blkid -o list -w /dev/null
eingebe, sollte sie auch angezeigt werden (und siehe da, das wird sie:
/dev/sda1 ext4 /share 204250cb-28cc-4d11-b3fa-7606893f3125).
Benutzer und Benutzerrechte einrichten, öffentlich und private Ordner anlegen
Weiter geht es mit den Einstellungen für die Benutzer. Zuerst bearbeite ich die Datei adduser.conf
sudo nano /etc/adduser.conf
Hier ändere ich DHOME, so dass anstelle des home-Verzeichnisses mein Verzeichnis share verwendet wird.
# The DHOME variable specifies the directory containing users' home # directories. DHOME=/share
Etwas weiter unten ändere ich die Zugriffsrechte auf das Userverzeichnis so, dass nur der Besitzer zugreifen kann.
# If DIR_MODE is set, directories will be created with the specified # mode. Otherwise the default mode 0755 will be used. DIR_MODE=0750
Weiter unten finden sich noch zwei kommentierte Einträge, die durch entfernen der Raute aktiviert werden. Gleichzeitig kann man den Benutzern noch weitere Gruppen zuordnen, z.B. so
# Set this if you want the --add_extra_groups option to adduser to add # new users to other groups. # This is the list of groups that new non-system users will be added to # Default: EXTRA_GROUPS="dialout cdrom audio video plugdev games users netdev input" # If ADD_EXTRA_GROUPS is set to something non-zero, the EXTRA_GROUPS # option above will be default behavior for adding new, non-system users ADD_EXTRA_GROUPS=1
Was einige der Gruppen im Einzelnen bedeuten, wird schön unter http://wiki.ubuntuusers.de/Benutzer_und_Gruppen beschrieben. Ich habe die oben genannten Gruppenzuordnungen einfach mal übernommen, wird schon gut sein.
Jetzt lege ich neue Benutzer an. Sicherheitshalber verwende ich als Benutzername und Passwort meinen Windows-Benutzer, man weiß ja nie... nötig ist es aber wohl nicht.
sudo adduser username
Nachfragen nach Adresse und Telefonnummer ignoriere ich...
Jetzt kommt noch das freigegebene Verzeichnis für den Zugriff von allen Rechnern im Netzwerk, das ich sinnvollerweise Public nenne.
sudo mkdir /share/Public
Da werden jetzt die Rechte gesetzt:
sudo chgrp -R users /share/Public sudo chmod -R 776 /share/Public sudo chmod g+s /share/Public sudo setfacl -m d:user::rwx,d:group:users:rwx /share/Public
Man kann jetzt auch noch Unterordner erstellen, die nur für die Benutzer der Gruppe users zugänglich sind, z.B. einen Ordner Multimedia mit diversen Unterordnern.
sudo mkdir /share/Multimedia cd /share/Multimedia sudo mkdir Music Pictures Videos TV-Shows Playlists cd / sudo chgrp -R users /share/Multimedia sudo chmod -R 774 /share/Multimedia sudo chmod g+s /share/Multimedia sudo setfacl -m d:user::rwx,d:group:users:rwx /share/Multimedia
Den Samba-Server installieren
1. Windows Workgroups (Arbeitsgruppen)
Seit ewigen Zeiten (genauer: seit Windows für Workgroups) vergibt Windows bei der Installation und Einrichtung des Netzwerkes einen Namen für die sogenannte Arbeitsgruppe, in der der Rechner Mitglied ist. Standardmäßig steht dieser Wert auf "WORKGROUP". Wurde bei der Windows-Installation dieser Standardwert geändert (z.B. in AUGE), so muss Samba diese mitteilen, ansonsten funktioniert der Zugriff von Windows auf die Samba-Freigaben nicht. Dazu sucht man in der Datei /etc/samba/smb.conf die folgende Zeile (ziemlich am Anfang unter "Global Settings")
workgroup = WORKGROUP
und ändert sie in
workgroup = AUGE
2. Schreibzugriffe auf die SD-Karte verringern
Standardmäßich legt Samba sein Logfile und /var/log ab. Da sich dieses Verzeichnis auf der SD-Karte befindet, verursacht jeder Eintrag in das File einen Schreibzugriff auf die SD-Karte. Da jeder Schreibzugriff unweigerlich die Lebensdauer der Karte verkürzt, sollte man deren Zahl so gering wie möglich halten. Dazu kann man das Logfile auf die Festplatte verlegen werden. Dies geschieht, indem man in der Zeile
log file = /var/log/samba/log.%m
(findet man weiter unten bei "Debugging/Accounting") ändert in
log file = /share/log/samba/log.%m
Unter Share hatten wir ja unsere USB-Festplatte eingehängt. Und damit wird das Logfile jetzt auf die Platte geschrieben.
3. Schreibzugriffe auf Home-Verzeichnisse ermöglichen
Wer das/die Home-Verzeichniss/e zum Schreiben freigeben will, muss noch die Zeile
read only = yes
(findet man ziemlich am Anfang des Abschnittes "Share Definitions") ändern in
read only = no
Hat man alle Änderungen durchgeführt speichert man die smb.conf ab und beendet nano. Damit Samba die Änderungen nicht erst beim nächsten Start des Raspberrys übernimmt gibt man auf der Kommandozeile noch
sudo service samba restart
ein. Damit wird der Samba-Server neu gestartet und übernimmt die eben eingetragenen Änderungen.
Anmerkung von Jürgen Thau, danke dafür! mrUnd jetzt wird der Samba-Server installiert, ich habe auch die grafische Benutzeroberfläche swat mit installieren lassen, obwohl sie mir im Moment nix nutzt... sag niemals nie...
sudo apt-get install samba samba-common-bin swat
Okay... jetzt muss Samba noch angepasst werden.
sudo nano /etc/samba/smb.conf
aufrufen und unten für die neu angelegten Ordner folgende Abschnitte einfügen:
[multimedia] path = /share/Multimedia writeable = yes browseable = yes create mask = 0664 directory mask = 0775 force user = nobody force group = users [public] path = /share/Public comment= Public writeable = yes browseable = yes create mask = 0666 directory mask = 0777 force user = nobody force group = users guest ok = yes
Zu guter Letzt habe ich noch einen neuen Samba-User angelegt. Hier habe ich auch wieder meinen Windows-User genommen, man weiß ja eben nie...
sudo pdbedit -a -u Benutzername
Dieser User wird bei der Verbindung mit dem eingeschränkten Ordner Multimedia abgefragt. Für jeden Benutzer im Netzwerk muss man hier also einen Samba-Benutzer anlegen.
Und jetzt noch ein Test...
testparm
Jetzt müsste man alles angezeigt bekommen, was man eben in der smb.conf geändert hat (und noch mehr). Samba neu starten mit
sudo service samba restart
Tadaaa!
Und ab jetzt war bei mir alles wie durch Wunderhand erledigt... Alle Rechner im neuen Netzwerk, egal ob Windows 7, Windows 8, Linux Mint oder mein Androide Nexus 7, hatten nach einem Neustart der Rechner Zugriff auf die kleine Erdnuss. Die steht jetzt, in ein Gehäuse verpackt und mit Kühlkörpern ausgestattet, in einer Ecke und leuchtet fröhlich aus allen LEDs. Wenn irgendwann ein neuer Monitor mit HDMI-Eingang bei mir einzieht, kann ich auch einmal die diversen grafischen Benutzeroberflächen ausprobieren und muss nicht immer nur auf der Konsole rumhacken! So soll Swat im Browser des Raspi mit http://peanut:901 (oder wie auch immer man sein NASchen nennt) aufgerufen werden können und einige Konfigurationsmöglichkeiten bieten.
Geschwindigkeit
Es gibt diverse Flaschenhälse für diesen Miniserver. Als erstes hatte ich ein Backup mit Acronis erstellt. Knapp 250 GB Daten hat das zusammengerafft, die fast 8 Stunden gebraucht haben, bis sie abgelegt waren. 250 MB Daten vom Adroiden auf das Netzwerk haben 10 Minuten gebraucht. 250 MB vom Windows-Rechner dagegen nur gute 20 Sekunden. Zum einen habe ich nur ein 100 Mbit/s LAN als Verbindung, dann hängt die Festplatte an einem USB 2.0-Anschluss. Die WLAN-Geschwindigkeit von Android-Geräten ist auch nicht gerade der Knüller, hier muss ich mich mit 65 Mbit/s begnügen. Trotzdem, das Streaming von Videos in HD-Qualität auf das Nexus 7 läuft ruckelfrei. Brauche ich aber eigentlich gar nicht, so viel Zeit verbringe ich nicht mit Video & Co.
Stromverbrauch
Dem Raspi der zweiten Generation wird ein Stromverbrauch von 30 kWh im Jahr nachgesagt. Ein überschaubarer Wert. Ungefähr das Dreifache habe ich gerade durch die Umrüstung von Halogen-Strahlern auf LEDs gespart. Für die externe Festplatte habe ich keine brauchbaren Angaben gefunden, hier müsste ich ein Strommessgerät verwenden.
Erweiterbarkeit
Wer ein Sicherheitsfanatiker ist, was Backups anbelangt, hat z.B. unter Windows mit Acronis sehr einfach umsetzbare Möglichkeiten. Zum Hardwaresetup käme noch eine zweite Festplatte dazu, in Acronis würde man auf diese zweite Festplatte von den Backups eine Sicherungskopie erstellen lassen. Das geht natürlich auch mit anderer Software oder händisch, der Fantasie sind keine Grenzen gesetzt.
Fazit
Wenn man es mal gemacht hat, weiß man, dass es leicht geht. Zugegebenermaßen habe ich zwei Anläufe gebraucht, auch weil ich mir diverse Anleitungen im Netz durchgelesen und dann alles durcheinander gebracht habe. Mit dem Ergebnis bin ich aber mehr als zufrieden. Wenn man nicht gerade gigabyteweise Dateien in kurzer Zeit rüberschaufeln, sondern ganz "normale" Dateien ablegen möchte, läuft das Ganze sehr gut und es erleichtert mir die Arbeit jetzt doch enorm, nachdem ich mit meinem Heimnetz-Mischmasch aus Windows XP, Windows 7 und Windows 8 immer wieder Probleme bei den Freigaben hatte (mal geht es, mal nicht, je nach Mondphase und Wasserstand des Nil). Mit dem Raspberry Pi werde ich auf jeden Fall noch andere Projekte angehen, z.B. eine selbstgebaute Digitalkamera ... aber das ist eine ganz andere Geschichte! ;-)
Kommentare
NAS-Selbstbau
M5543, Schriftführer und Leiter der RG600 im AUGE e.V.
Wir bauen uns ein NAS - Vorbereitung/Material
Bernd & ich arbeiten gerade an der Vorbereitung des großen Ereignisses und haben zur Orientierung für alle Interessierten eine Liste erstellt, die den heutigen Stand der Vorbereitung wiedergibt.
Was die Zeilen „heruntergeladenes Image von Raspbian (u.a.?)“ und „ein vorkonfiguriertes Image für die SD-Karte, um evtl. Probleme beim Download zu vermeiden“ betrifft, ist uns nicht ganz klar, welche Überschneidungen vorliegen. Und – es hat sich noch niemand bereit erklärt, die Erstellung zu übernehmen!
Material
wird bereitgestellt von
Mehrfachsteckdose(n) – jeder Teilnehmer braucht 3 Anschlüsse)
PePo (2)
Bernd (1)
Renate (1)
am besten vermutlich jede/r TeilnehmerIn für sich
Kabeltrommel
Bernd
UMTS-Router (wg. DHCP)
Jürgen
Switch
Jürgen
LAN-Kabel
Jürgen | PePo
SD-Kartenleser (mit µSD-Adapter)
PePo
heruntergeladenes Image von Raspbian (u.a.?)
Fotokamera für Dokumentation
Jürgen | PePo
Schraubenzieher und sonst. Werkzeug...und
PePo
ein vorkonfiguriertes Image für die SD-Karte, um evtl. Probleme beim Download zu vermeiden.
Notebook
PePo
RG-PC
PePo (von Arvid)
Monitor mit HDMI-Anschluß resp. Adapter
Beamer
Jürgen (?)
Das vorkonfigurierte Image
Das geht aber nicht ohne den RasbPi?
Ja, genau, diese Vorbereitung