Der Banana Pi als (Headless)Server mit Seafile, Nginx und anderen Kleinigkeiten

Warum ein Banana Pi statt Raspberry Pi?

Damals lagen beide Geräte preislich nah beieinander – gerade gebraucht. Von beiden Einplatinenrechnern gibt es mittlerweile diverse Varianten. Das Banana Pi M1 ist etwas seltener zu ergattern und die erste Generation. Man liesst zwar immer wieder, das die Hardware-Untestützung des Banana Pis nicht so gut sei, aber ich benötige weder Grafik noch Sound, von daher ignoriere ich diese Kritik. Relevant ist jedoch, dass beim Raspberry Pi USB- und Netzwerkanschluss über eine BUS laufen. Sprich man hat damit einen „Flaschenhals“ bei der Datenrate. Zudem ist der Datendurchsatz über SATA höher als über USB 2.0, über den der Banana Pi verfügt. Eine 2.5 Zoll HDD kann man also ohne zusätzliche Stromversorgung anschließen (bei einer 3.5" HDD benötigt man i.d.R. ein 12V Netzteil, der an die Festplatte zusätzlich angeschlossen wird)!Bei mir läuft das Ganze schon seit 2 Jahren im Dauerlauf mit einem 2,5 Ampere Netzteil im Netzwerk - ohne Beanstandung.
Somit lassen sich die Vorteile kurz zusammenfassen:


Überschlagene Berechnung für das Netzteil:

Der Banana Pi benötigt ca. 0,3 A, die 2.5“ HDD ca. 0,7 A. Nun habe ich noch mal für „Spitzenlasten“ Luft nach oben und für weitere Hardware an den USB Anschlüssen (ein USB Port kann ca. 0,5 A verbrauchen). Last but not least: Ich habe die Verbräuche einfach mal überschlagen und „grob“ nach oben dimensioniert. Mir ist lieber, Hardware läuft im Dauerbetrieb nicht am Limit. Zudem ist der Preisunterschied zwischen einem Netzteil von 1,5 A zu 2,5 / 3,0 A marginal - sie sind halt nur seltener zu kriegen.

Externe 2.5 Zoll Festplatte:

Da die Festplatte im Dauerbetrieb laufen wird, habe ich mich für eine sog. 24/7 HDD entschieden, die es auch im 2.5 Zoll Format gibt. Es ist die WD Red mit 750 GB geworden.

Installation eines aktuellen Armbian auf SD-Karte:

Ich habe mich für ein Armbian entschieden, das es rege durch eine Community gepflegt wird und zudem ein Installationsskript vorliegt, um die Root-Partition auf die Festplatte zu bringen. Das hat für mich als Entscheidungskriterium ausgereicht.

Zunächst wird ein aktuelles Armbian aus dem Netz heruntergeladen:
https://www.armbian.com/banana-pi/

Derzeit [Stand 09/2017] ist es folgende Datei: Armbian_5.31_Bananapi_Debian_jessie_next_4.11.5.7z. Es handelt sich um die Debian-Server-Variante, die kein GUI hat. Wer das umgedingt haben möchte, kann die Ubuntu-Desktop Variante wählen. Sie wird aber nicht zwingend benötigt, da alle Kommandos in einem Terminal durchgeführt werden.
In der Regel wird die Datei im Verzeichnis /home/Downloads/ abgelegt. Es handelt sich um eine ZIP-Datei. Diese kann mit dem Tool p7zip entpackt werden:
Ist p7zip nicht vorhanden, kann es flott nachinstalliert werden:

sudo apt-get install p7zip-full
sudo 7z e Armbian_5.31_Bananapi_Debian_jessie_next_4.11.5.7z
Danach hat man 2 neue Dateien - die mit der Endung .img ist die, die gleich auf die SD Karte kopiert wird.

Pfad der SD Karte ermitteln

Das kann mit dem Kommando fdisk -l durchgeführt werden.

sudo fdisk -l

Nun sieht man alle Laufwerke mit dem Pfad (siehe Ausgabe). /dev/sda ist die eigentliche Festplatte im Rechner und die Partitionen werden dann durchnummeriert angezeigt (/dev/sda1, /dev/sda2, etc). Eine SD Karte beginnt i.d.R. mit der Bezeichnung mmc.... Der komplette Pfad ist bei mir /dev/mmcblk0. Sind noch Partitionen auf der SD-Karte vorhanden werden diese durchnummeriert angezeigt. mmcblk0 ist bei mir die eigentliche Karte und mmcblk0p1 eine Partition darauf. Dies stört aber nicht weiter. Mehr brauchen wir also nicht: Wir wissen, wo das Image entpackt liegt und dessen Namen als auch den Pfad zur SD Karte.

Disk /dev/sda: 238,5 GiB, 256060514304 bytes, 500118192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xcc83e4f0

Device     Boot     Start       End   Sectors   Size Id Type
/dev/sda1  *         2048 483981311 483979264 230,8G 83 Linux
/dev/sda2       483983358 500117503  16134146   7,7G  5 Extended
/dev/sda5       483983360 500117503  16134144   7,7G 82 Linux swap / Solaris


Disk /dev/mmcblk0: 7,3 GiB, 7882145792 bytes, 15394816 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe821d800

Device         Boot Start      End  Sectors  Size Id Type
/dev/mmcblk0p1       2048 15086911 15084864  7,2G 83 Linux

Das dd-Kommando und seine Parameter

Das Image auf die SD-Karte kopieren

Nicht vergessen: Den Pfad ggf. an eure Gegebenheiten anpassen. sync ist ein abschliessendes Kommando, das i.d.R. per Semikolon an das vorherige Kommando angehängt wird:

sudo dd if=/home/Downloads/Armbian_5.31_Bananapi_Debian_jessie_next_4.11.5.img of=/dev/mmcblk0 bs=4M; sync

Nun wird sich bis zu einigen Minuten in eurem Terminal nichts tun, da der Kopiervorgang läuft. Ist er beendet erscheint eine Meldung:

320+1 Datensätze ein
320+1 Datensätze aus

Noch eins zu der Anzahl geschriebener Datensätze: Je kleiner ihr die Blockgröße bei bs setzt, desto größer ist die Zahl - also, nicht wundern, wenn ihr bs=3 genommen habt, wird die Zahl anders sein, als bei mir.

Datenträger aushängen

Eigentlich sollte der Datenträger die ganze Zeit nicht eingehängt sein (sonst hätte auch das dd-Kommando nicht funktioniert). Ist dem doch so, kann mit folgendem Kommando die SD-Karte ausgehängt werden:

sudo umount /dev/mmcblk*		# Das Sternchen steht als Expansion für alle Datenträger, die mit mmcblk anfangen.

SD-Karte in den Banana Pi einlegen und booten

Nun geht es daran, den Banana Pi startklar zu machen. Hierfür wird die externe HDD per SATA Kabel an den Banana Pi angeschlossen. Zusätzlich verbinden wir den Banana Pi mit dem Router mit einem Netzwerkkabel, um per SSH darauf zuzugreifen. Natürlich geht es auch per WLAN Adapter, aber da er später als Server sowieso neben dem Router steht und LAN doch einige Vorteile bietet, bleibe ich gleich dabei (keep it simple).
Die SD-Karte kann nun eingelegt werden. Sobald der Banana Pi dann an Strom angeschlossen wird (Netzteil mit mind. 2A) startet der Bootvorgang des Armbian. Nach kurzer Zeit sollte er über den Router per DHCP eine IP Adresse zugewiesen bekommen. Diese kann über das Webinterface des Routers ermittelt werden. Die IP Adresse wird benötigt, um auf das Armbian zuzugreifen.

Booten des Armbian über SSH und Grundkonfiguration:

Neuen SSH Key generieren, einen normalen User anlegen; Passwort für Root ändern; Hostnamen neu setzen und ein Software-Upgrade starten.

Root Partition auf die HDD per Skript migrieren:

folgt bald: Thema Sicherheit: SSH Zugriff anpassen:

folgt bald: Weitere Anpassungen / User anlegen:

folgt bald: Seafile installieren / konfigurieren:

folgt bald: Nginx installieren / konfigurieren:

folgt bald: Weiteres: