In diesem Blog habe ich dir schon sehr viel aus der Technik-Welt vorgestellt. Ein Thema, das mich aktuell sehr beschäftigt, möchte ich jetzt auch mit dir teilen. Es geht um einen Einplatinen-Computer und dabei im besonderen Fall um den Banana Pi. Und natürlich auch um das Arbeiten mit Linux – ohne eine grafische Oberfläche.
In diesem Artikel möchte ich keine Anleitung geben, wie du einen Dienst unter Linux einrichtest. Es soll eine Übersicht über die Dienste sein, die bei mir auf dem Pi laufen.
Vor langer Zeit, habe ich mir mal ein Raspberry Pi in der B-Version gekauft. Ich habe ein bisschen damit gespielt, aber dann lag er sehr lange in der Ecke. Vor einiger Zeit hat mich die Lust wieder heimgesucht und ich wollte irgendwas auf Linux-Basis umsetzen. Viel cooler wäre es, wenn dabei noch etwas vernünftiges bei rausspringen würde. Mit dem Raspberry Pi hat sich viel auf dem Markt getan und es gibt weitere Einplatinen-Computer, bei denen jeder seine Vor- und Nachteile hat.
Der alte Raspberry Pi ist nicht der schnellste Computer und ich wollte mir etwas neues gönnen. Zum Zeitpunkt der Anschaffung gab es schon den Raspberry Pi 2.
Warum nicht der Raspberry Pi 2?
Der Pi sollte Server-Aufgaben übernehmen. Dafür war es mir wichtig, dass der Pi über eine 1Gbit-Ethernet-Schnittstelle verfügt. In diesem ersten Punkt scheidet der Raspberry Pi 2 direkt aus. Des Weiteren war es mir wichtig, dass der Ethernet-Anschluss einen separaten Controller besitzt, damit es zu keinen Geschwindigkeitsengpässen kommt, wenn eine USB-Festplatte angeschlossen wird. Ist bei Raspberry Pi zum Beispiel so.
Mit dem Banana Pi musste ich mich jedoch mit einem langsameren Prozessor zufrieden geben. Im Vergleich zum Raspberry Pi 2 hat der Banana Pi nur einen Dual-Core. Der Raspberry Pi hat schon einen Quad-Core.
Am Ende war der Preis das wichtigste Argument. Der Banana Pi ist billiger als der Raspberry Pi 2 gewesen.
Betriebssystem
Bevor es überhaupt mit irgendwas losgehen kann, muss man ein Betriebssystem auf die SD-Karte flashen. Ich habe mich damals für Bananian Linux entschieden. Das basiert auf Debian und es bringt nur wenige Funktionen mit. Deswegen darf man sich gleich damit beschäftigen, wie man z.B. das Programm sudo installiert und neue Nutzer anlegt.
Aber alles kein Problem. Es gibt viele Anleitungen im Netz, die dir dabei helfen.
Die eigene Cloud
Mit einem NAS von Synology bekommt man schon alles geboten, um eine eigene Cloud zu betreiben. Auch die Erreichbarkeit von außen stellt kein wirkliches Problem da und es lässt sich alles mit wenigen Klicks konfigurieren.
Aber ich habe kein gutes Gefühl, wenn das NAS, auf dem fast meine ganzen Daten liegen, aus dem Internet erreichbar ist. Deswegen habe ich das NAS vom Netz genommen und es läuft jetzt alles über den Pi.
Seafile ist ein schönes Stück Software, mit der man seine eigene Cloud recht schnell einrichten kann. Es gibt ein gutes Handbuch, in dem alles wesentliche erklärt ist, um Seafile zu installieren. Es ist sogar zu großen Teilen auf Deutsch verfügbar. Für den Pi gibt es eine spezielle Seafile-Version.
Es gab nur ein etwas größeres Problem, das gelöst werden musste, damit Seafile richtig arbeiten kann. Dadurch ergeben sich einige Dienste, die ich später noch vorstellen werde. Bei der Telekom, kann man keine Domain aufrufen, die auf den eigenen Anschluss zeigt, wenn man sich in dem Netz hinter dem Router befindet. Heißt, dass ich von außen auf den Seafile-Server zugreifen könnte, aber wenn ich zu Hause bin, habe ich keinen Zugriff auf den Server, weil die Domain nicht richtig aufgelöst werden kann. Seafile kann man nicht unter einer Domain und einer IP-Adresse betreiben. Die Adresse wird fest in Konfigurationsdateien geschrieben und deswegen muss die Adresse immer die gleiche sein.
Die optimale Lösung ist, dass man im eigenen Netzwerk einen eigenen DNS-Server betreibt. Dem DNS-Server wird mitgeteilt, dass die Domain des Seafile-Server im eigenen Netz auf die lokale IP des Pi’s zeigt. Bin ich unterwegs zeigt die Domain ganz normal auf den Anschluss. Im Router muss Port-Forwarding eingerichtet sein, damit die Anfragen auch beim Pi landen. Somit ist es immer die gleiche Domain aber die IP ist davon abhängig, wo man sich aktuell befindet.
Mit Seafile synchronisiere ich Dateien, die ich von überall abrufen will. Des Weiteren wird Seafile dazu genutzt, um Dateien zu verteilen. Wenn ich irgendjemanden eine größere Datei zukommen lassen will, dann passiert das bei mir über Seafile.
Mit einem VDSL50-Anschluss ist der Upload ganz brauchbar und die eigene Cloud lässt sich damit gut betreiben.
Es wird nur immer dann unangenehm, wenn Seafile nicht richtig läuft, denn dann muss man sich selbst darum kümmern. Das ist bis jetzt zum Glück noch nicht sehr oft vorgekommen. Oft hilft ein: “Have you tried turning it off and on again”[1]. Ich habe mal vergessen den Seafile-Server vor einem Update zu stoppen. War keine so gute Idee. Aber es ging dann alles nochmal gut.
DynDNS
Im letzten Abschnitt habe ich es schon erwähnt, dass der Banana Pi auch von außen erreichbar ist. Da sich die IP-Adresse eines normalen Anschlusses für Privatpersonen immer mal ändert, muss man einen DynDNS-Dienst nutzen. Aber auch das habe ich in die eigene Hand genommen und nutze keinen externen Dienst. Bei INWX, ein Dienst zum Registrieren von Domains, gibt es eine API, um z.B. die IP-Adresse einer Domain zu ändern. Auf dem Pi läuft alle 5 Min ein Skript, das prüft, ob sich die IP-Adresse geändert hat. Ist dies der Fall, wird sie bei INWX aktualisiert.
Bisher gab es da noch nie Probleme und ich konnte bis jetzt den PI immer von außen erreichen.
Das Skript findest du auf GitHub.
DNS- und DHCP-Server
Im Abschnitt über Seafile habe ich schon erwähnt, warum ein eigener DNS-Server zum Einsatz kommt. Es gibt aber noch ein paar weitere Vorteile. Als Software kommt dnsmasq zum Einsatz.
Damit jedes Gerät auch den eigenen DNS-Server nutzt, habe ich den DHCP-Server im Router ausgeschaltet. Der Pi übernimmt die Aufgabe, dass jedes Gerät im Netzwerk eine IP-Adresse zugewiesen bekommt und eben auch die Infos zum DNS-Server und Standard-Gateway.
Alle unbekannten Adressen werden an OpenDNS geschickt und es wird nicht mehr der DNS-Server von der Telekom genutzt. Der Banana Pi speichert die Anfragen zwischen und somit ist eine erneute Anfrage schneller. Somit wird das Internet allgemein ein bisschen schneller.
Mit dem Projekt Pi-hole kann man sich einen Adblocker auf DNS-Ebene ins Haus holen. Damit wird jede Werbung auf jedem Gerät im Netzwerk blockiert, weil die Domain der Werbung nicht aufgelöst wird.
Bei dem Projekt Pi-hole habe ich aber nur Teile übernommen, da es noch viel mehr liefert, dass ich nicht brauche. Für mich ist nur das Skript gravity.sh
und die Konfiguration von dnsmasq wichtig. Im Skript gravity.sh
habe ich der Variable piholeIP
den Wert 127.0.0.1
gegeben.
OpenVPN-Server
Das NAS ist nicht direkt über das Internet erreichbar. Jedoch will ich trotzdem die Option haben, dass ich Zugriff auf meine Daten habe, wenn ich unterwegs bin. Dafür läuft auf den Banana Pi ein OpenVPN-Server mit dem ich nach Hause telefonieren kann.
Bin ich in einem öffentlichen WLAN unterwegs, dann ist es mir lieber, wenn mein Traffic über den VPN geht und ich somit ein wenig mehr Schutz habe[2]. Deswegen habe ich unterschiedliche Profile angelegt. Das eine Profil schickt nur die Daten über das VPN, die in das heimische Netzwerk sollen, um z.B. auf das NAS zu zugreifen. Mit dem anderen Profil werden alle Daten über das VPN geschickt.
Netter Nebeneffekt von beiden Profilen: Es wird direkt der eigene DNS-Server verwendet und somit komme ich auch wieder in den Genuss der Vorteile vom eigenen DNS-Server.
Die Einrichtung ist nicht ganz einfach aber machbar. Mir hat dieser Artikel gut geholfen.
Webserver für interne Webseiten
Ein Webserver ist auch recht fix eingerichtet. Da für Seafile eh ein Webserver nötig ist, bekommt man dort schon ein Gespür für die Software. Damit das Aufrufen von Webseiten schnell funktioniert, kommt ngnix zum Einsatz. Der Webserver benötigt nicht ganz so viel Leistung und ist trotzdem schnell, deswegen ist ngnix perfekt für den kleinen Computer. Ich kann mich nicht beklagen und die Webseiten laden super. Neben Seafile läuft eine Webseite für den internen Gebrauch.
Mit Kirby habe ich ein kleines aber feines Kochbuch umgesetzt, in dem alle wichtigen Rezepte gesammelt werden. Um von überall auf das Kochbuch zu zugreifen, kommt wieder OpenVPN zum Einsatz.
Backup nicht vergessen
Jetzt hat man so viel Zeit in den kleinen Server investiert und freut sich, dass alles läuft. Daher darf man aber nie vergessen, dass alles nur auf einer SD-Karte gespeichert ist. Da auf der SD-Karte ein Betriebssystem läuft, wird sehr viel geschrieben und gelesen. Die Lebensdauer einer SD-Karte ist im Vergleich zu einer Festplatte deutlich kürzer. Gerade der Serverbetrieb verlangt der Karte viel ab.
Es ist nur eine Frage der Zeit bis die SD-Karte den Geist aufgibt und der kleine Server den Betrieb einstellt. In diesem Fall würde das ganze Netzwerk zusammenbrechen, da z.B. DHCP- und DNS-Server eine wirklich wichtige Rolle spielen, damit das Netzwerk richtig funktioniert.
Deswegen läuft auf dem Pi ein kleines Script, das alle 3 Stunden alle wichtigen Daten sichert. Dazu gehören z.B. die Home-Ordner, in dem u.a. Seafile liegt und der Ordner etc
. Wenn die SD-Karte ausfällt, wird es zu einem Ausfall kommen aber man muss sich nicht mehr alle Konfigurationen zusammensuchen, die man über die Zeit gemacht hat.
Noch besser wäre es, wenn man sich ein Image der SD-Karte macht. Damit lässt sich ein funktionierender Stand relativ schnell wiederherstellen und der Server kann seinen Betrieb wieder aufnehmen.
In der Planung
Vor einiger Zeit habe ich mir Gedanken zum Offsite-Backup gemacht. Da soll der Pi auch eine zentrale Rolle spielen. Leider bin ich da noch nicht weiter gekommen. Irgendwann wird das vielleicht auch noch was.
Das Garagen-Tor mit dem Pi öffnen. Eigentlich sollte das auch machbar sein. Die nötige Hardware dazu ist nicht wirklich teuer. Es ist nur ein Relais nötig, um den Garagenmotor ein Signal zu schicken. Über eine kleine Webseite, die man über das Smartphone aufruft, könnte dann das Öffnen und Schließen veranlasst werden.
Ein paar Ideen sind noch da, die man mit dem Pi umsetzen könnte. Mal sehen wann mich der Bastel-Drang wieder heimsucht.
Basteln macht Spaß aber kostet sehr viel Zeit
Ein Einplatinen-Computer ist ein perfekter Einstieg in die Linuxwelt. Wenn man Lust und Zeit mitbringt, kann man viele tolle Sachen mit dem Mini-Computer anstellen und ihn auch produktiv nutzen.
Wenn man noch nicht so tief in dem Thema drin steckt, könnte der Artikel ein bisschen verwirrend sein. Aber das soll dir keine Angst machen, denn wirklich viel kann man im ersten Moment bei einem Pi nicht kaputt machen. Wenn man mal was falsch gemacht hat, wird das Betriebssystem einfach wieder neu aufgesetzt.
Und am Ende ist Google dein bester Freund. Dort findest du alles zu diesem Thema und man kann sich die Kenntnisse sehr gut selbst beibringen. Mit der Zeit bekommt man ein Gefühl für die Bedienung eines Systems, das nur über das Terminal bedient wird. Mir macht es sehr viel Spaß im Terminal zu arbeiten. Und wenn etwas Spaß macht, dann nimmt man sich die Zeit und merkt dann gar nicht wie schnell die Zeit beim Basteln vergeht.