NAS im Eigenbau – Part 2

Veröffentlicht am 19. Juli 2011 8 Kommentare

Nachdem die Hardware eingetroffen und grob auf dem Fußboden zusammengesteckt war ging es ans installieren der Software…
Man braucht eigentlich nichts weiter als die NetInstall Version des aktuellen Debian 6.0.2 – hat man sich die heruntergalden auf CD gebrannt / USB-Stick kopiert kann es mit der Instalation auch schon losgehen.
Ich habe es über eine CD per USB-DVD-Laufwerk im „Textmodus“ installiert, alle zusätzlichen Dinge wie Grafische Oberfläche etc. abgewählt und das Betriebssytem auf den USB 3.0 Stick installiert (welcher an einem USB 2.0 Port angeschlossen war, da er sonst während der Installation nicht korrekt erkannt wurde). Nachdem alles installiert war, den Rechner ausgeschaltet den USB-Stick an den USB 3.0 Port angesteckt und im EFI/BIOS festgelegt, dass der Stick als Festplatte behandelt werden soll.
Nach dem ersten booten, als root angemeldet, ging es mit den 3 Standardbefehlen:
apt-get update
apt-get upgrade
apt-get dist-upgrade

weiter um auf einen eventuell neueren Softwarestand zu kommen.

Jetzt noch fix den MidnightCommander installiert:
apt-get install mc

Nun konnte ich mich ans einrichten machen.
Während der Installation hat Debian den DHCP-Server meiner Fritz!Box erkannt und sich eine dynamische IP geholt – im weiteren Einsatz ist das für mich aber nicht sehr hilfreich, ich möchte eine feste IP verwenden:
mcedit /etc/network/interfaces
hier ändere ich

iface eth0 inet dhcp

in

iface eth0 inet static
address 192.168.0.10
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1

wobei „address“ die IP des Rechners, „gateway“ die IP der Fritz!Box darstellt.
Nun noch in der
mcedit /etc/resolv.conf
nachsehen ob dort unter „nameserver“ auch die „192.168.0.1“ angegeben ist / bzw.

nameserver 192.168.0.1

hinzufügen und die Netzwerkverbindung ist (nach dem nächsten neustart) soweit fertig eingerichtet.

Da es ziemlich unbequem auf dem Fußboden war und man bei der weiteren Konfiguration/Installation ab und an auch mal im Internet nachlesen musste entschied ich mich als nächstes den SSH-Server zu installieren – damit ist es dann möglich alles weitere von einem anderen Rechner aus zu installieren bzw. einzurichten.
apt-get install ssh openssh-client
Die Konfigurationsdatei kann mit mcedit /etc/ssh/sshd_config bearbeitet werden – ein recht gutes Tutorial zum Thema SSH/Security findet man bei jrprojekt.de – ich habe bei mir komplett auf PubkeyAthentication, verbotenen root-Zugriff und nur einen erlaubten User gesetzt. Dazu noch fail2ban mit einem möglichen Fehlversuch, da mein SSH auch von extern zugänglich sein muss (apt-get install fail2ban) – in der config (mcedit /etc/fail2ban/fail2ban.conf) habe ich dazu folgende Einträge hinzugefügt:

[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 2
bantime = 86400

mehr Infos gibt es bei root-on-fire.com

Nachdem ich nun das Netzwerk eingerichtet, ich Zugriff von einem anderen Rechner auf das NAS hatte ging es daran das RAID5 aus den 6 Festplatten aufzubauen.
Zuerst wieder die benötigte Software installieren:
apt-get install mdadm
Nun können wir uns ans „bauen“ des RAIDs machen
mdadm --create --verbose /dev/md0 --auto=yes --level=5 --raid-devices=6 /dev/sd[abcdef] --spare-devices=0 --name=RAID --force
mdadm --readwrite /dev/md0

Nach einiger Zeit, bei mir hat das ganze mit 6x 2TB Festplatten gute 7 Stunden gedauert (den aktuellen Status gibt es über cat /proc/mdstat) richte ich das Dateisystem auf dem RAID ein, mounte es und trage es in die config-Datei vom mdadm ein:
mkfs.ext4 /dev/md0
mkdir -p /mnt/raid
mount -t ext4 /dev/md0 /mnt/raid
mdadm -Es | grep md/RAID >>/etc/mdadm/mdadm.conf
dpkg-reconfigure mdadm

Jetzt noch automatisch beim booten mounten lassen per mcedit /etc/fstab und dort:

/dev/md/RAID /mnt/raid ext4 errors=remount-ro 0 0

eintragen – Rechner neu starten und schauen ob das RAID unter „/mnt/raid/“ zu finden ist.

Als nächstes kommen die Freigaben für die Windows-Rechner an die Reihe – irgendwie muss das NAS ja befüllt werden 😉 – dazu verwendet man „traditionell“ SAMBA:
apt-get install samba
Nach der Installation folgt die Konfiguration, als erstes sollte man natürlich die Freizugebenden Ordner unter „/mnt/raid/“ anlegen danach:
mcedit /etc/samba/smb.conf
meine config sieht z.B. so aus (Drucker / Homes habe ich deaktiviert da ich diese Standardfreigaben nicht benötige):

[global]
workgroup = ARBEITSGRUPPE
server string = dNAS
wins support = no
dns proxy = no
name resolve order = lmhosts host wins bcast
interfaces = 127.0.0.0/8 eth0
bind interfaces only = yes
log file = /var/log/samba/log.%m
max log size = 1000
syslog only = no
syslog = 0
panic action = /usr/share/samba/panic-action %d
security = user
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdate
pam password change = no
domain logons = no
load printers = no
printing = bsd
printcap name = /dev/null
show add printer wizard = no
disable spoolss = yes
domain master = auto
usershare max shares = 500
[homes]
comment = Home Directories
browseable = no
read only = yes
create mask = 0700
directory mask = 0700
valid users = %S
create mask = 0600
directory mask = 0700
[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
guest ok = no
read only = yes
create mask = 0700
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = no
read only = yes
guest ok = no
[Backups]
comment = Datensicherung
path = /mnt/raid/shared/backups
valid users = @users
force group = users
create mask = 0777
directory mask = 0777
writable = yes
[Dokumente]
comment = Datei Archiv
path = /mnt/raid/shared/documents
valid users = @users
force group = users
create mask = 0777
directory mask = 0777
writable = yes

Nun noch die verschiedenen User bsp. „MrX“ anlegen:
useradd MrX
passwd MrX
smbpasswd -a MrX
usermod -a -G users MrX

und nach einem /etc/init.d/samba restart prüfen ob alles wie gewünscht funktioniert.

Als nächstes wollte ich erst einmal meine Musik aufs NAS bringen um mehr Platz auf den internen Platten der Rechner zu schaffen. Als einzig brauchbare Lösung habe ich forked-daapd gefunden – alle anderen Projekte sind mehr oder weniger tot. Im normalen Debian Repository ist irgendeine alte Version (von der ich vermute, dass sie zur aktuellen Version 10.3.1 von iTunes inkompatibel ist – Apple baut da ja gerne mal um) – in den Backports ist aber eine aktuelle 0.17 von forked-daapd zu finden also weiter: mcedit /etc/apt/sources.list
am Ende der Datei trägt man nun:

deb http://backports.debian.org/debian-backports squeeze-backports main

ein und führt ein apt-get update aus, danach noch apt-get install forked-daapd=0.17-1~bpo60+1 und der iTunes-Server ist installiert.

Update 23.07.2011: Mir ist aufgefallen, dass sich der forked-daapd wie oben beschrieben installiert – bei mir nach kurzer Zeit selbst beendet – schuld ist wohl eine veraltete externe Library. Ich habe nach erfolgloser Fehlerbehebungmaßnahmen einfach eine andere Version installiert, die 0.17gcd – soll laut Entwickler wohl auch schneller arbeiten. Als erstes laden wir uns das Debian Package herunter:
wget http://ftp.us.debian.org/debian/pool/main/f/forked-daapd/forked-daapd_0.17gcd-1_amd64.deb
danach müssen wir die „bösen“ unstable-Quellen in der sources.list (mcedit /etc/apt/sources.list) hinzufügen:

deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
deb http://ftp.de.debian.org/debian unstable main contrib non-free

danach noch:
apt-get update
dpkg -i forked-daapd_0.17gcd-1_amd64.deb
apt-get install -f

und die GCD-Version ist installiert 😉 Die neue Version läuft nun schon 2 Tage ohne Probleme, bei der anderen war im 15 Minuten Takt ein /etc/init.d/forked-daapd start nötig…

In der config noch den Pfad zum Musik-Ordner gesetzt (mcedit /etc/forked-daapd.conf) und neugestartet /etc/init.d/forked-daapd restart und die Musik liegt iTunesfreundlich im Netzwerk. Jetzt die Backports wieder aus der sources.list werfen – forked-daapd ist eigentlich die einzige Software die ich „ganz aktuell“ haben möchte.

Was nun noch fehlt ist die Synchronisierung der 2 NAS per RSync, die AFP Freigaben für die TimeMachine Backups und der UPnP Mediaserver MediaTomb. Könnte eigentlich alles schon fertig sein, hätte mich da nicht ein böser Bug von abgehalten – beim kopieren der Dateien über das Netzwerk auf das RAID hat sich der komplette Rechner immer bei ca. 10GB transferierten Daten komplett neugestartet und danach das RAID5 neu aufgebaut. Zuerst hatte ich kurz Netzwerkkarte dann Platten, mdadm bzw. das RAID und danach SAMBA im verdacht, keine Einträge in irgendeinem Log machten das ganze nicht einfacher – nach einigem suchen im Internet und zig resyncs des RAID habe ich dann einfach mal eine zweite Netzwerkkarte eingebaut und siehe da alles Läuft super. Das Problem scheint also der Realtek 8111E GBit Ethernet Chip, das ASUS E35M1-M PRO Board an sich, der Kernel 2.6.32-5-amd64 oder der Treiber etc. oder die Kombination aus allem auszulösen. Genau weiß ich es leider auch noch nicht – ich suche aber nach einer Lösung um die 2. Netzwerkkarte (leider nur 2 100MBit Karten in meiner Bastelkiste gefunden) schnellstmöglich wieder los zu werden.

Kategorien: Allgemein, Hardware

8 Kommentare bis jetzt.

  1. Alex sagt:

    Hi,

    ich bin mal deiner Anleitung gefolgt, weil ich schon unzählige Male versucht habe den forked-daapd zu installieren und es nie geklappt hat. Kurzer Hinweise: Aktuell ist die 0.18, die 0.17 ist über den obigen Pfad nicht mehr zu erreichen.

    Hast du den User daapd angelegt, der in der forked-daapd.conf angegeben ist oder einfach auf deine Uid angepasst? Bei mir taucht der Server nie in der Seitenleiste von meinem iTunes auf, obwohl das Log vom forked-daapd keine Angaben über Fehler stellt, habe schon den Loglevel auf debug gesetzt, aber finde trotzdem nichts.

    • frag-mich-doch.net sagt:

      Ja, die 0.18 ist derzeit aktuell – habe heute auch mal ein Update gemacht.
      Ich habe keinen User angelegt, der User „daapd“ ist allerdings bei mir vorhanden (cat /etc/passwd | cut -d":" -f1).
      An meiner forked-daapd.conf habe ich nur folgendes geändert: db_path auf ’s RAID gelegt, Name des Servers geändert, Pfad zum Ordner mit Musik angepasst, Local audio output & Airport Express device auskommentiert.
      Ist bei dir der avahi-daemon installiert? (apt-get install avahi-daemon) – der wird benötigt um den iTunes-Server „bekannt“ zu machen per Zeroconf/Rendezvous/Bonjour…

      • Alex sagt:

        Ja, is alles installiert. Mein iPhone findet die Bibliothek auch. Aber mein iTunes nicht. Liegt evtl. auch daran, dass ich die aktuelle iTunes Beta nutze und Apple wieder was am Protokoll geändert hat. Werde gleich aber nochmal eine virtuelle Maschine mit Windows aufsetzen und dort testen.

        • frag-mich-doch.net sagt:

          Gut möglich, dass Apple da wieder rumgebastelt hat – habe hier die 10.4 (80) auf Snow Leopard laufen und unter Windows auch die aktuelle Version. In den Optionen von iTunes muss man das suchen von freigegebenen Mediatheken ja auch nicht mehr explizit einschalten, von daher müsste es eigentlich funktionieren 😉

          • Alex sagt:

            Das ist alles sehr komisch hier 😀 Habe avahi installiert gehabt und überwache auch mit avahi-browse die vorhandenden daap-Services im Netz. Dort werden mein Server, mein Macbook mit der iTunes Beta und die virtuelle Windowsmaschine mit der aktuellen iTunes Version angezeigt. Macbook und virtuelle Maschine finden sich gegenseitig. Der Server wird von niemandem gefunden. Habe bereits iTunes 10.4, 10.3 und 10.1 auf Windows installiert: Nichts.

            Habe aufm Mac Bonjour Browser offen, der zeigt mir aber den Server nicht an. Das Log von forked-daapd zeigt mir „Avahi state change: Client running“ an, daher geh ich davon aus, dass Avahi läuft. Weiß auch nich mehr weiter, ist alles sehr mysteriös 😀

            Hast du deine avahi-daemon.conf irgendwie noch extra angepasst?

          • frag-mich-doch.net sagt:

            Wirklich sehr mysteriös das ganze, und /etc/init.d/forked-daapd status sagt dir „forked-daapd is running“ ? Bei mir sagt das log vom forked-daapd auch nur „main: Forked Media Server Version 0.18gcd taking off
            main: mDNS init
            mdns: Avahi state change: Client registering
            mdns: Avahi state change: Client running“ und dann eben ein Eintrag pro gestreamter Datei bei loglevel „log“

          • Alex sagt:

            Bei mir fehlt die Zeile „Client registering“, keine Ahnung wieso.

            [2011-08-16 10:27:17] main: Forked Media Server Version 0.18gcd taking off
            [2011-08-16 10:27:17] main: mDNS init
            [2011-08-16 10:27:17] mdns: Avahi state change: Client running

            Werd jetzt nochmal bissl rumprobieren, und wenns nich geht, dann werd ich halt die Bibliothek komplett auslagern und dann als Netzlaufwerk mounten.

          • frag-mich-doch.net sagt:

            Schon mal die „Windows Lösung“ versucht, also forked-daapd & avahi deinstalliert und neu installiert?