19.5 Workshop: Home-Server 

19.5.1 Anforderungen 

Der Betrieb von Servern ist eine Domäne von UNIX und Linux. Warum sollte dies nicht auch für einen Home-Server gelten? Linux hat in den letzten Jahren enorm an Multimedia-Fähigkeiten und Benutzerfreundlichkeit hinzugewonnen. Daher wollen wir uns in diesem Abschnitt mit dem Aufsetzen und Einrichten eines Linux-Home-Servers beschäftigen.
Microsoft möchte den Anwendern ein neues Produkt mit dem Namen »Windows Home Server« verkaufen, von dem viele noch gar nicht wussten, dass sie so etwas brauchen. Das Microsoft-Produkt weist teilweise eklatante Sicherheitslücken auf. Die Idee zu einem Home-Server ist übrigens nicht neu, aber sie ist gar nicht schlecht. Ein solcher Server kann vielfältige Aufgaben zu Hause übernehmen, die nicht nur den Umgang mit unterschiedlichsten Medien komfortabler machen, sondern auch für eine zusätzliche Datensicherheit sorgen.
Die wichtigsten Aufgaben eines Home-Servers sind die folgenden beiden Punkte:
- Bereitstellung von Dateien (Dokumente, Musik, Fotos etc.) für alle im heimischen Netz angeschlossenen Systeme sowie
- Datensicherheit durch automatische Backup-Routinen.
Darüber hinaus sind natürlich weitere Optionen möglich, die als technische Bonbons dienen:
- Fernzugriff über das Internet
- Fernsteuerung über WLAN mithilfe eines Palms
- Weckfunktion
Auch wenn wir uns zuerst einmal auf den grundsätzlichen, performanten und stabilen Betrieb konzentrieren, werden wir auf diese Bonbons später zurückkommen.
Welche Ubuntu-Version sollte man verwenden?
Für den Home-Server ist die Ubuntu-Version 8.04 besonders geeignet, da es sich hierbei um ein sogenanntes LTS-Release (Long Term Support) handelt. Diese Version ist mit den Enterprise-Versionen von RedHat und Novell vergleichbar, wird mindestens drei Jahre mit Sicherheits-Updates versorgt und eignet sich somit hervorragend für den Server-Einsatz.
Auch wenn ein Server in aller Regel über keine grafische Oberfläche verfügt, sollten Sie aus Gründen der Bequemlichkeit die ganz normale Desktop-Variante von Ubuntu installieren, wie sie auch auf der Begleit-DVD vorhanden ist. Des Weiteren gehen wir davon aus, dass Sie sich erst einmal keine neue Hardware kaufen und lieber einen älteren Rechner benutzen möchten. Vielleicht aber möchten Sie auch die Daten Ihres bevorzugten Rechners im Arbeitszimmer auch allen anderen Familienmitgliedern zur Verfügung stellen. Die Möglichkeiten, einen Server zu betreiben, sind vielfältig.
Da dies ein Exkurs ist, der über den normalen Anspruch hinausgeht, werden wir auch die meisten Dinge über die Kommandozeile erledigen.
Ein alter Rechner reicht
Wenn Sie einen separaten Rechner als Server verwenden möchten, reicht ein alter PC vom Dachboden oder aus dem Keller vollkommen aus, besonders wenn Sie auch noch auf die grafische Oberfläche verzichten und die Server-Installation von Ubuntu vorziehen. An den Prozessor werden keine großen Erwartungen gestellt, sodass hier ein alter Pentium mit einigen hundert Megahertz ausreicht. Der Arbeitsspeicher wird je nach Einsatzbereich des Servers unterschiedlich stark beansprucht, sodass Sie hier mindestens 512 MB (besser 1 GB) einsetzen sollten.
Um den Rechner per WLAN ansprechen zu können, sollte er selbstverständlich noch eine dementsprechende Netzwerkkarte besitzen sowie selbstverständlich ein CD- oder DVDLaufwerk. Bei einem Backup besagt die goldene Regel, dass Sie niemals das Backup auf demselben Medium anlegen, auf dem auch die Originaldaten liegen. Benutzen Sie aus diesem Grund lieber eine zweite Festplatte (intern oder extern).
19.5.2 Installation 

Auf die Installation des Grundsystems wollen wir an dieser Stelle nicht weiter eingehen, da sie in Kapitel ab Seite erläutert wurde. Achten Sie lediglich darauf, dass Ihr PC von CD oder DVD bootet (Einstellung im BIOS). Beim Startbildschirm wählen Sie bei der Desktop-Variante die Option Auf Festplatte installieren, bei der Server-Variante von Ubuntu vielleicht auch Einen LAMP-Server installieren, wenn Sie später einen Web- oder Streaming-Server einrichten wollen.
Es ist von Vorteil, wenn Sie Ihrem Server und den Clients, die auf den Server zugreifen sollen, feste IP-Adressen zuteilen. Dies können Sie entweder in der Datei /etc/network/interfaces festlegen oder über die Konfiguration eines eventuellen Routers. Wie Sie statische IP-Adressen in der genannten Datei anlegen, ist sehr gut in der zugehörigen Manpage beschrieben.
Wir gehen im Folgenden davon aus, dass der Server die IP-Adresse 192.168.0.2 und der Client 192.168.0.4 besitzt.
19.5.3 Dateien teilen 

Wir wenden uns jetzt der ersten Aufgabe zu, die der Home-Server für Sie erledigen soll. Diese besteht darin, dass er anderen Computern im Netzwerk bestimmte Dateien zur Verfügung stellen soll. Gehen Sie zunächst einmal davon aus, dass Sie keine Rechner mit Windows im Netzwerk haben und daher auch kein Samba benötigen.
Um Dateien eines UNIX-Rechners anderen UNIX-Rechnern zur Verfügung zu stellen, benutzen Sie das Network File System (NFS). Sie installieren es über:
sudo apt-get install nfs-kernel-server
Benötigte Abhängigkeiten werden automatisch aufgelöst. Wir wollen nun auf dem Server Freigaben erzeugen und dafür sorgen, dass ein anderer Rechner ein freigegebenes Verzeichnis in sein eigenes Dateisystem einbindet und dieses dadurch nutzen kann, als befände es sich auf der lokalen Festplatte. Der erste Schritt besteht also im Anlegen von Freigaben. Dadurch editieren Sie die Datei /etc/exports. Fügen Sie in diese Datei beispielsweise Folgendes ein (siehe Abbildung):
/media 'IP des Clients'(rw,async)
Zugriffe
Wenn Sie allen Rechnern Ihres internen Netzwerks Zugriff auf dieses Verzeichnis geben möchten, können Sie an dieser Stelle auch einen IP-Bereich angeben:
/media 192.168.1.0/24(rw,async)
Nach jeder Änderung an dieser Freigabe-Datei müssen Sie den NFS-Server neu starten. Dies erledigen Sie mit dem Befehl
sudo /etc/init.d/nfs-kernel-server restart
Die Freigabe ist zunächst eingerichtet, und die in der Freigabe-Datei berechtigten Clients dürfen auf dieses Verzeichnis zugreifen. Es wäre aber wesentlich bequemer, wenn man vom Client aus nicht erst umständlich durch die Verzeichnishierarchie des Servers navigieren müsste, sondern ein festes lokales Verzeichnis als Mount-Punkt zur Verfügung hätte.
Die Dateien sollen nun in das Verzeichnis /media/share auf dem Client eingebunden werden. Da dieses Verzeichnis noch nicht existiert, muss es zuerst angelegt werden:
sudo mkdir /media/share
Abbildung 19.12 In der Datei /etc/exports verwalten Sie die Freigaben des Servers.Sie ist zu Beginn leer, d. h., andere Rechner besitzen keinerlei Zugriffsrechte.
Jetzt können Sie das erstellte Verzeichnis dazu nutzen, den freigegebenen Ordner des Servers an dieser Stelle einzubinden. Dies geschieht durch folgenden Befehl auf dem Client:
sudo mount -t nfs server:/media /media/share
Nach dem Einbinden finden Sie alle freigegebenen Dateien des Servers in diesem Verzeichnis; es wurde also korrekt eingebunden. Wenn es sich bei den Dateien um beispielsweise Musik handelt, können Sie jetzt diesen Ordner als Musiksammlung für Rhythmbox angeben und auf Ihrem Client die Musik hören, die eigentlich auf Ihrem Server liegt.
| NFS unter Windows |
|
Um Dateien zwischen einem UNIX-Rechner und einem Windows-Rechner auszutauschen, wurde das Samba-Protokoll entwickelt. Ein zweites Protokoll macht die Einrichtung des Linux-Home-Servers aber unnötig umständlich. Auch Windows kann dem Umgang mit NFS erlernen. Dies wird durch ein Java-Programm namens JFTP ermöglicht: http://j-ftp.sourceforge.net/. Es benötigt das aktuelle Java Runtime Environment (JRE) von Sun. |
|
Zur Konfiguration müssen Sie über den Pfad File • Connect to NFS Server Folgendes eingeben: |
| URL: nfs://192.168.0.175 |
|
Den Rest belassen Sie so – und schon können Sie auch mit Windows auf unseren NFS-Share zugreifen. |
19.5.4 Server-Verzeichnisse dauerhaft einbinden 

Die oben gezeigte Vorgehensweise hat einen kleinen Schönheitsfehler: Nach einem eventuellen Neustart Ihres Clients ist die Einbindung des Server-Verzeichnisses wieder aufgehoben, und Sie müssen es erneut mounten. Es wäre doch wesentlich bequemer, wenn dies automatisiert bei jedem Systemstart geschehen würde. Nichts leichter als das, Sie müssen das Verzeichnis des Servers lediglich in die /etc/fstab Ihres Clients eintragen:
server:/media /media/share nfs rw,rsize=8192,wsize=8192 0 0
Statt server müssen Sie die IP-Adresse des Servers angeben. Jetzt ist das freigegebene Verzeichnis nach jedem Boot-Vorgang sofort verfügbar.
19.5.5 Backup 

Jetzt widmen wir uns der zweiten wichtigen Aufgabe unseres Home-Servers: dem Backup. Da Sie auf dem Home-Server die Daten zentral verwalten und mit den Clients nur darauf zugreifen, ist die Datenkonsistenz hier überaus wichtig. Das Backup sollte täglich stattfinden und vollautomatisch ablaufen. Als Backup-Medium verwenden Sie eine externe Festplatte. Sie können auch inkrementelle Backups durchführen; es soll also nur das gesichert werden, was sich seit dem letzten Backup geändert hat oder hinzugekommen ist. Diese Aufgabe erledigen Sie mit rsnapshot.
Abbildung 19.13 Der Befehl fdisk gibt Ihnen eine Übersicht über alle eingehängten Dateisysteme.
Als Erstes müssen Sie den Server mit der externen Platte vertraut machen, sodass sie dauerhaft eingebunden bleibt. Dies geschieht, wie bereits bei der Einbindung von Freigaben besprochen, durch das Hinzufügen der Platte in der Datei /etc/fstab. Die nötigen Parameter zum Anlegen dieses Eintrages bekommen Sie durch die Informationen, die folgender Befehl liefert:
sudo fdisk -l
Hier können Sie erkennen, dass die externe Festplatte als Gerät mit der Bezeichnung /dev/sdd1 eingehängt wurde.
19.5.6 Umgang mit rsnapshot 

Auch wenn es inzwischen zahlreiche grafische Backup-Werkzeuge gibt, glänzt rsnapshot mit einer konkurrenzlosen Zuverlässigkeit und Stabilität. Das Programm wird über die Datei /etc/rsnapshot.conf konfiguriert. Auch wenn die Datei zu Beginn erschlagend wirkt, lohnen sich zwei Minuten Beschäftigung mit ihr. Sie ist sehr übersichtlich aufgebaut und hervorragend kommentiert. Den folgenden Zeilen sollten Sie besondere Beachtung widmen bzw. sie nach eigenem Gusto abändern:
no_create_root 1 #interval hourly 6 #interval weekly 4 ... # Bei den Backup-Points hinzufügen backup /media/share/ localhost/
Automatisches Backup
Für ein automatisches Backup Ihrer Daten kommentieren Sie bitte die zugehörige Intervallzeile aus, und vergessen Sie nicht, zu kontrollieren, welche Verzeichnisse in das Backup mit einbezogen werden sollen.
Es ist bei der Konfiguration wichtig, dass Sie auf der (externen) Backup-Festplatte ein Verzeichnis (hier: server) anlegen, das sich nicht im Verzeichnisbaum des Servers befindet. Dadurch wird verhindert, dass der Server versucht Backups, durchzuführen, wenn die Backup-Festplatte nicht gemountet ist.
Die gesamte Konfiguration können Sie im Anschluss vom Programm selbst testen lassen:
rsnapshot configtest
Wenn das Skript die Meldung Syntax OK zurückgibt, ist es Zeit für ein erstes Backup:
sudo rsnapshot -V daily
Die Option -V lässt rsnapshot detaillierte Informationen ausgeben. daily wurde vorher auskommentiert. Nach dem ersten Durchlauf werden jeweils nur noch Dateien gesichert, die neu hinzugekommen sind oder sich verändert haben. Allerdings bedeuten die Intervallangaben in der Konfigurationsdatei von rsnapshot nicht, dass das Backup ab sofort vollautomatisch im gewählten Intervall abläuft. Dafür müssen Sie ein weiteres fleißiges Helferlein aus der Linux-Welt bemühen: cron. Konfiguriert wird cron über die Konfigurationsdatei /etc/crontab.
rsnapshot und Speicherverbrauch
Unter rsnapshot wird bei jedem Backup-Vorgang ein separater Ordner erstellt. Mit der Zeit würden unheimlich viele Dateien mehrfach vorliegen, wenn man immer komplette Backups des Tages haben wollte. Ein Hardlink ist hier eine tolle Sache, denn statt der Kopie wird nur ein Hardlink dieser Datei beim nächsten Backup angelegt. Solange sich die Datei nicht ändert, haben Sie also lediglich einen Hardlink statt viel Speicherverbrauch.
Abbildung 19.14 Die Konfigurationsdatei von rsnapshot
Wenn Sie nun ein Backup wiederherstellen, dann kopiert sich das System entsprechend der Hardlinks die notwendigen Dateien aus den älteren Ordnern.
Die Einträge von cron sehen bisher so aus:
# /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file. # This file also has a username field, that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command 17 * * * * root run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily 47 6 * * 7 root test -x /usr/sbin/anacron || run-parts --report /etc/cron.weekly 52 6 1 * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.monthly #
Editieren Sie die Datei, und fügen Sie einen Eintrag für rsnapshot hinzu. Die Zeilen sehen dann folgendermaßen aus:
# /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file. # This file also has a username field, that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command 17 * * * * root run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily 47 6 * * 7 root test -x /usr/sbin/anacron || run-parts --report /etc/cron.weekly 52 6 1 * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.monthly 0 1 * * * root rsnapshot daily #
Sie haben in der letzten Zeile definiert, dass rsnapshot ab jetzt jede Nacht um 1 Uhr automatisch ein Backup der Dateien vornimmt. Die täglich gespeicherten Backups werden bis zu sieben Tage lang gespeichert, d. h., Sie werden den exakten Stand der Dateien von beispielsweise vor fünf Tagen herstellen können.
Damit sind die beiden wichtigsten Aufgaben unseres Home-Servers fertig konfiguriert, und Sie haben die größten Vorteile einer derartigen Lösung kennengelernt.
SSH
Gerade dann, wenn Sie vorhaben, Ihren Server später ans Internet anzubinden oder ihn per WLAN ansprechen, ist es empfehlenswert, ihn per ssh anzusprechen. ssh ist immer noch die sicherste Methode Ihre Daten vor allzu neugierigen Blicken zu sichern. Sie können diese Konfiguration selbstverständlich auch nach erfolgreicher Installation der grundsätzlichen Funktionen vornehmen. Hier eine Kurzanleitung:
| 1. | Installieren Sie einen ssh-Server: |
sudo apt-get install openssh-server
| 2. | Ändern Sie aus Sicherheitsgründen als Root in der Datei /etc/ssh/sshd_config die folgenden Zeilen auf no: |
| PermitRootLogin |
| PasswortAuthentification |
| PAM |
| 3. | Starten Sie den ssh-Server neu: |
sudo /etc/init.d/ssh restart
| 4. | Legen Sie sich auf einem beliebigen Rechner einen Public Key an: |
ssh-keygen -t dsa
| 5. | Dieser Key wird in /home/user/.ssh/ gespeichert und muss auf den Server kopiert werden (.ssh/authorized_keys). Somit können nur noch User, die über diesen Key verfügen, auf den Server zugreifen. |
| 6. | Sie werden nun trotzdem noch bei jedem Einloggen nach Ihrem Passwort gefragt, aber auch das können Sie vermeiden, indem Sie Ihren Schlüssel dem ssh-Agenten mitteilen. Dies geschieht durch den Befehl: ssh-add. Mit ssh-add -l können Sie sich die vom Agenten verwalteten Schlüssel anzeigen lassen. |
Abbildung 19.15 Der ssh-Key wird im versteckten Ordner .ssh angelegt und muss auf dem Server sowie auf jedem Client vorhanden sein.








Jetzt bestellen







