Bananenkiste als Homeserver

Aus BraLUG-Wiki

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Motivation

Mein alter Homeserver, welcher seit Jahren klaglos seinen Dienst erledigt hatte, will nicht mehr so richtig. Zwar ist das Ding nicht irreparabel kaputt, aber ab und zu sollte man auch mal mit der Zeit gehen. Also der richtige Augenblick die Hardware zu tauschen, das Betriebssystem frisch zu installieren und die gewünschten Server-Dienste neu aufsetzen...

Die folgenden Kapitel sind in erster Linie eine Dokumentation für mich selbst, nützen aber vielleicht auch anderen "Freizeitadministratoren", die Ähnliches vorhaben.

Hardware

"Mit der Zeit gehen..." heißt natürlich aktuelle, ressourcen-seitig ausreichende und, vor allem, stromsparende Hardware zu verwenden, denn immerhin soll der Server ja 24 Stunden, 7 Tage in der Woche arbeiten. Heutzutage ist es kein Problem ein geeignetes Board, welches mit dem Betriebssystem Linux läuft, zu finden. Meine Wahl fiel auf einen Banana Pro. An die, auf dem Board vorhandene, SATA-Schnittstelle wurde eine 2,5"-"WD Red"-Festplatte angeschlossen. Alles in einem entsprechenden Gehäuse eingebaut, ergibt es ein recht kompaktes Gerät, welches überall Platz finden sollte.

Linux-Betriebssystem installieren und konfigurieren

Installation

Als Linux-Distribution wird Bananian verwendet, was eigentlich ein Debian 7 ist, welche aber speziell für den Banana Pi/Pro angepasst wurde.

Die Installation gestaltet sich recht einfach. Nach dem Download des gepackten Images, ist es zu entpacken und auf eine passende SD-Karte zu kopieren (Beispiel für Linux :-)):

> dd if=bananian-1504.img of=/dev/<your-sd-card> bs=1M
> sync

Danach ist die SD-Karte nur noch in den entsprechenden Slot des Banana Pi zu stecken, Netzwerk dran und Strom an! Das System sollte booten und eine IP-Adresse über DHCP beziehen. Zugriff auf das System hat man dann entweder lokal über die/den angeschlossene/n Tastatur/Monitor oder auch remote via ssh. Das root-Passwort lautet initial pi und sollte natürlich sofort geändert werden...

Konfiguration

Eine erste Konfiguration des Systems, kann man mit folgenden Tool erledigen:

> bananian-config

Folgende Einstellungen können verändert werden:

  • das root-Passwort
  • die Zeitzone
  • den Zeichensatz
  • den Rechnernamen
  • einige grundlegende Hardware-Einstellungen

Danach sollte das System einmal durchgestartet werden.

Feste IP-Adresse

Ein Server sollte eine feste IP-Adresse haben. Dazu ist die Konfigurationsdatei /etc/network/interfaces anzupassen:

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

auto eth0

# dhcp configuration
# iface eth0 inet dhcp

# static ip configuration
iface eth0 inet static
	address 10.1.1.42
	netmask 255.255.255.0
	gateway 10.1.1.1

Erläuterung: Die Netzwerkschnittstelle eth0 bezieht seine IP-Adresse nicht via DHCP (entsprechende Zeile einkommentiert), sondern wird fest auf (beispielsweise) 10.1.1.42, der Netzwerkmaske 255.255.255.0 und dem Gateway 10.1.1.1 eingestellt.

Danach sollte das Netzwerk neu gestartet werden oder der gesamte Rechner durchgestartet werden. Wird im Netzwerk ein DNS-Server betrieben, sollte dort IP-Adresse/-Name entsprechend aufgenommen werden, um den Server mit seinem IP-Namen ansprechen zu können. Alternativ kann diese Kombination auch in der jeweiligen Hosts-Datei (z.B. Linux /etc/hosts) der Clients aufgenommen werden.

Bananian von einer Festplatte booten

Hat man eine SATA-Festplatte an seinen Banana Pi angeschlossen, ist es sinnvoll von dieser auch zu booten. Um dies so einzurichten, sind z.B. folgende Schritte zielführend (angenommen, /dev/sda ist die angeschlossene Festplatte):

> fdisk /dev/sda

...RTFM --> Partionierung der Festplatte.


> mkfs.ext4 /dev/sda1

...Formatierung der (ersten eingerichteten) Partition der Festplatte mit ext4.

Das root-Filesystem der SD-Karte muss auf die Festplatte kopiert werden (Annahme, es wurde nur die Partition /dev/sda1 auf der Festplatte angelegt; der Swap-Bereich befindet sich in der Datei /swapfile1 (Default bei Bananian)):

> mount /dev/sda1 /mnt/
> rsync -ax / /mnt/


Danach müssen noch die entsprechenden Boot-Parameter in der Datei /uEnv.txt eingestellt werden (der Editor joe ist installiert):

> umount /mnt/
> mount /dev/mmcblk0p1 /mnt/
> joe /mnt/uEnv.txt

Die Zeichenfolge 'root=/dev/mmcblk0p2' ist durch 'root=/dev/sda1' auszutauschen. Nach einem

> reboot

sollte von der angeschlossenen Festplatte gebootet werden...! Die SD-Karte muss natürlich im entsprechenden Slot bleiben, da sich darauf der Bootloader befindet. Bei einem Festplattendefekt hat man damit auch gleich ein funktionsfähiges Basissystem zur Verfügung (uEnv.txt entsprechend angepasst...).

"Heartbeat" ausschalten

Um die nervig blinkende grüne LED auf dem Board auszuschalten, ist folgender Befehl (als root auszuführen) erfolgreich:

> echo none > /sys/class/leds/green\:ph24\:led1/trigger

Wird dieses Kommando in der Datei /etc/rc.local aufgenommen, erfolgt das Ausschalten der blinkenden "Herzschlag"-LED automatisch nach dem Hochfahren des Systems.

Server-Dienste

Printserver

Als Druck-Server wird CUPS verwendet. Die Installation gestaltet sich recht entspannt:

apt-get install cups cups-bsd foo2zjs

Mit dem Tool cupsctl sollte man folgendes einstellen:

  • die lokalen, am Server angeschlossenen, Drucker im Netzwerk freigeben
  • CUPS über das Netzwerk administrierbar machen
  • die automatische Druckervermittlung aktivieren
cupsctl --share-printers  --remote-admin --remote-printers

Danach kann CUPS z.B. über einen Webbrowser administriert werden. URL: https://dein_server:631. Wie man Drucker einrichtet und administriert, kann der CUPS-Dokumentation entnommen werden bzw. die Web-Oberfläche ist auch recht selbsterklärend...

Ich besitze einen HP Laserjet 1018, es muss die Firmware aus dem Internet geholt und installiert werden, damit diese automatisch beim Einschalten des Druckers in selbigen kopiert wird:

> getweb 1018
...

Das Tool getweb ist Bestandteil des Paketes foo2zjs. Als Parameter wird die Typ-Nummer des Druckers angegeben. Das Tool richtet dann alles notwendige automatisch ein.

Danach empfiehlt sich ein Reboot des Systems.

autofs

Spätestens beim Backup benötigt man sinnvoller Weise einen Datenträger, welcher nur für die Zeit des Schreiben/Lesens in den Verzeichnisbaum eingebunden und sonst vom System jeder Zeit entfernbar ist. Es wird also ein Dienst benötigt, welcher z.B. eine bestimmte USB-Festplatte automatisch einbindet, wenn diese im System verfügbar ist. Ein solcher Dienst ist u.a. autofs.

Installation:

sudo apt-get install autofs 


Festlegung des Verzeichnisses, unter dem der dynamische Datenträger eingebunden werden sollen:

> sudo mkdir /autofs

> cat /etx/auto.master
/autofs  /etc/auto.autofs --timeout=300 --ghost

> cat /etc/auto.autofs
usb-backup -fstype=ext3,sync :/dev/disk/by-uuid/0d5ef4bb-6f06-4814-95fe-7aa5acf09f4f

Also:

  • ein Verzeichnis anlegen, unter dem die Datenträger eingebunden werden sollen
  • auto.master --> alle Datenträger, welche unter diesem Verzeichnis eingebunden werden sollen (mehrere möglich), sind in /etc/auto.autofs konfiguriert, werden nach 300 Sekunden ausgehangen (timeout) --> RTFM!
  • unter dem Verzeichnis usb-backup wird eine USB-Festplatte, formatiert mit ext3, eingebunden, wenn sie die angegebene UUID hat...


UUID:

sudo blkid -o list -w /dev/null
...
/dev/sdb1                ext3                   (not mounted)                0d5ef4bb-6f06-4814-95fe-7aa5acf09f4f

Fileserver

sshfs

Die einfachste Methode ein Server-Verzeichnis in den Verzeichnisbaum des Clients einzubinden, bietet sshfs, vorausgesetzt:

  • auf der Server-Seite ist ein ssh-Server (sollte eigentlich Standard sein...) und
  • auf der Client-Seite ist sshfs (siehe z.B. folgende Dokumentation)

installiert.

Das Einbinden eines Server-Verzeichnisses via sshfs erfolgt (interaktiv) über folgendes Kommando:

> sshfs serveruser@server:/serververzeichnis /clientverzeichnis 

Man wird nach dem Passwort des angegebenen Server-Benutzers gefragt...

Natürlich kann man auch alles automatisieren und z.B. das Einbinden eines Server-Verzeichnisses via sshfs über einen Eintrag in der Datei /etc/fstab erledigen. Eine weitere interessante Methode über den NetworkManager-Dispatcher ist z.B. hier beschrieben.

Ein, über sshfs eingebundenes Server-Verzeichnis, wird man mit folgenden Kommando wieder los:

> fusermount -u /clientverzeichnis


NFS

...kommt (vielleicht) noch.

Samba

Samba ist auch eine recht nette Möglichkeit, Zugriff auf Verzeichnisse des Servers zu bekommen. Vorteil ist, dass man damit auch Windows-Clients versorgen kann...

Installation Samba-Server plus einiger Tools:

> sudo apt-get install samba-common samba-common-bin samba samba-doc samba-doc-pdf tdb-tools 

Samba verwaltet seine Benutzer in einer eigenen Datenbank (wenn nichts anderes konfiguriert):

> sudo smbpasswd -a <user>         # Benutzer <user> in der Samba-DB anlegen/aktivieren
> sudo smbpasswd -x <user>         # Benutzer <user> aus der Samba-DB entfernen
> sudo smbpasswd -d <user>         # Benutzer <user> in der Samba-DB deaktivieren
> sudo smbpasswd -e <user>         # Benutzer <user> in der Samba-DB wieder aktivieren

Beim Anlegen eines Samba-Benutzers (erstes Kommando) kann man auch gleich ein Passwort vergeben. Mit dem gleichen Befehl kann dieses Passwort für den angegeben Benutzer auch geändert werden.


Die Konfiguration des Samba-Servers erfolgt über die Datei /etc/samba/smb.conf. Über die vielfälltigen Einstellungsmöglichkeiten sind diverse Beschreibungen im Internet zu finden. Um beispielsweise ein Verzeichnis auf dem Server im Netzwerk freizugeben, ist die Datei /etc/samba/smd.conf um folgende Zeilen zu ergänzen:

# Bilder
[Bilder]
path = /medien/bilder
public = no
writeable = yes

Erläuterung: Das Verzeichnis /medien/bilder auf dem Server wird als Share "Bilder" freigegeben, kann allerdings nur von Benutzern aus der Samba-DB (siehe oben) geöffnet werden und ist auch beschreibbar. (Nicht angegebene Optionen wirken mit ihrem Default-Wert (RTFM...)).


Bevor man die Samba-Dienst mit der veränderten Konfiguration durchstartet, sollte man deren Syntax überprüfen, um eventuelle Fehler auszuspüren:

> testparm

Das Durchstarten der Samba-Dienste kann z.B. mit folgenden Kommando erfolgen:

> service samba restart


ToDo:

  • Client-Zugriff auf freigegebene Shares
  • Zugriff auf "Server-Drucker" von Windows-Clients aus
  •  ?

Backup

rdiff-backup

Allgemeines

Ein recht komfortables Backuptool zur Sicherung entfernter Rechner bzw. auch lokaler Serververzeichnisse auf einen externen Datenträger ist rdiff-backup. Das Tool ermöglicht eine einfache und platzsparende Sicherung (und natürliche auch Rücksicherung) von Daten. Nach einer initialen Vollsicherung werden in der Folge nur noch Änderungen versioniert in einer speziellen Verzeichnisstruktur gesichert (RTFM). Die Backups können auch über das Netzwerk gesichert via ssh erfolgen.

rdiff-backup ist ein Kommandozeilentool. Es gibt aber eine Reihe von GUIs, die u.U. die Bedienung vereinfachen. Ich selbst verwende zur Überprüfung/Sichtung der Backups auf dem Homeserver rdiffweb, eine kleine WEB-basierte Oberfläche.

Backup-Szenarien

Szenario 1: Sicherung von Systemen, auf Initiative des Homeservers (Backupservers), die ständig angeschaltet und im Heimnetz erreichbar sind. Bei mir sind das z.B. mein Wohnzimmer-"Multimedia"-Rechner und mein Mini-Rechner zur Aufzeichnung von diversen Wetterdaten.

Eine mögliche Vorgehensweise für die Konfiguration eines solchen Backup-Szenarios ist hier zu finden. Zur automatisierten zyklischen Sicherung der entfernten Rechner, sollten zum Abschluss die entsprechenden rdiff-backup-Befehle in der Crontab des Backup-Users auf dem Homeserver aufgenommen werden.


Szenario 2: Sicherung von Desktops, Notebooks etc., auf den Homeserver, welche nur sporadisch angeschaltet sind und damit selbst den Backup-Zeitpunkt bestimmen sollen/müssen.

...


Szenario 3: Sicherung von Daten des Homeserves auf ein angeschlossenes externes Speichermedium (z.B. USB-Festplatte).

...

Weitere Informationsquellen zu rdiff-backup

Mail

Usenet

Kontakt

Uwe

'Persönliche Werkzeuge