Bananenkiste als Homeserver
Aus BraLUG-Wiki
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.
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
Samba
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.