id4you.de

HowTo Raspberry PI als Web-Server

(Stand: 24.01.2020)

Das Gute an dieser Beschreibung ist: sie funktioniert ohne hin und her.

Was ist ein Raspberry PI?
Der Raspberry Pi wurde von der britischen Raspberry Pi Foundation entwickelt; Er läuft mit einem ARM-Mikroprozessor auf einer Platine in der Größe einer Kreditkarte. Er wurde mit dem Ziel entwickelt, jungen Menschen den Erwerb von Programmier- und Hardwarekenntnissen zu erleichtern. Entsprechend niedrig sind die Preise. Es existiert ein großes Zubehör- und Softwareangebot für zahlreiche Anwendungsbereiche. Verbreitet ist beispielsweise die Verwendung als Mediacenter (damals XBMC - heute Kodi), damit der Rechner Videodaten mit voller HD-Auflösung (1080p) dekodieren und über HDMI ausgeben kann. Als Betriebssystem kommen vor allem angepasste Linux-Distributionen mit grafischer Benutzeroberfläche zum Einsatz. Für das Modell (Raspberry PI3-B Stand 08/2017) existiert auch Windows 10 in einer speziellen Internet-of-Things-Version ohne grafische Benutzeroberfläche. Es tut mir leid, aber Windows hat meiner Meinung nach hier nichts zu suchen.
Mit Stand 01/2020 ist das Model Raspberry PI4-B aktuell.
Es lohnt sich auf jeden Fall, im Netz einmal nach den Einsatzbegieten zu suchen. Es ist erstaunlich, was damit alles möglich ist.
Raspberry

Warum ein Raspberry PI als Web-Server?
  • Der Raspberry ist extrem günstig in der Anschaffung (ca. 50 Euro inkl. Netzteil und Gehäuse, allerdings + MicroSD-Speicherkarte).
  • Er (Raspberry Pi3-B) verbraucht in Spitze 2,5 Watt / 5 Volt (ältere Modelle nennenswert weniger)
  • Die meiste Zeit tut er eher nichts (Verbrauch dann bei ca. 0,5 Watt / 5 Volt)
  • Keinerlei Geräusche
  • Spart teuren Webspace, insbesondere wenn man private Filme nicht bei z.B. Youtube einstellen möchte (Gema-Gebühren bei Musikhinterlegung)
  • Wie bei einem relativ teuren Root-Server können Seiten einfach mit Passwort geschützt werden, da man den Webserver selber konfiguriert.
  • Keine Gegühren an irgendwelche Dienste/Anbieter
TIP: Als Micro-SD-Karten sollten SDXC verwendet werden, denn der Unterschied zu langsameren ist deutlich merkbar.
Der ganze Aufwand lohnt sich nicht, wenn man nur eine Hompage mit wenigen MB betreibt.

Nun aber zu meiner Verwendung, anhand dessen das folgende beschrieben wird.

Auf dem Raspberry ist Linux installiert. Welches Linux ist eine Glaubensfrage. Es funktioniert wohl mit jeder Distribution.
Wie man auf einem Raspberry Linux installiert, wird im Web zur Genüge dargestellt, deshalb verzichte ich hier darauf.
Der Raspberry ist im Heimnetz an einer FritzBox 7490 angeschlossen.
Wir haben eine 50MBit Anbindung zu dem Provider 1&1, was beim Video-Streaming bei 1080p-Filmen, also FHD, eine ruckelfreie Übertragung zulässt.

Folgende Kenntnisse sind für die folgenden Erklärungen von Vorteil bzw. nötig:
HTML - XML - PHP - CURL - LINUX

Der folgende Inhalt der html-Datei mit der aktuellen IP (index.html) wird auf dem Raspberry mit PHP immer bei Änderung der öffentlichen IP erstellt und auf die Hompage bei 1&1 per SFTP übertragen. Natürlich automatisch per cronjob. Wenn sie aufgerufen wird, wird sofort weitergeleitet auf die aktuelle IP der FritzBox per HTTP (Port 80). An der FritzBox muss nur noch konfiguriert werden, auf welches Gerät/Server "durchgereicht" wird.
Weiterleitung

Inhalt der Datei mit dem Namen iphome: 89.245.127.209 (Natürlich nur ein Beispiel einer IP)
Der Inhalt der Datei zeigt immer die aktuelle öffentliche IP der FritzBox an.
Diese IP wird immer wieder bei Seitenverlinkungen benötigt.
Ausgelesen kann die IP mit PHP wie folgt:
$iphome = file_get_contents( "../xxxx/iphome" );

Wer möchte kann den Zugang mit einer Passwortabfrage absichern.
Dazu eine Datei mit dem Namen .htaccess in das aufzurufende Verzeichnis mit folgendem Inhalt stellen:
htpasswd
AuthUserFile gilt in dieser Form für 1&1-Kunden. Kann bei anderen Providern natürlich abweichen.
Heute würde das allerdings in der httpd.conf des Apache-Web-Servers geregelt.

Wie lese ich nun die Ip aus der fritzBox 7490 aus?
Folgende Skripte erzeugen:
external_ip.xml
external_ip.xml
external_ip.sh
external_ip.sh
external_ip.sh
das Skript "external_ip.sh" ruft "external_ip.sh", was wiederum "external_ip.xml" benötigt. Das Skript "external_ip.sh" klärt im Grunde nur, ob sich die IP geändert hat. Bei Änderung versendet es die neue HTML-Datei plus die Datei "iphome" per SFTP mit der neuen IP auf die Homepage bei 1&1.
trans.dyn.ip
Das Ganze läuft nun natürlich über SFTP. Das kann aber jerder selber angleichen.

Das Skript trans.dyn.ip wird über crontab alle x Minuten (hier 5 Minuten) gestartet.
crontab -e
*/5 * * * * /xxx/trans.dyn.ip > /xxx/trans.dyn.ip_LOG
Wenn sich die öffentliche IP geändert haben sollte, wird eine neue index.html plus die Datei iphome per SFTP auf die Homepage bei 1&1 übertragen.

Leider kann ich wegen Hackerangriffen nicht alles im Detail beschreiben, insbesondere nicht die Installation und Konfiguration von Linux mit den Paketen, die für einen Webserver mit PHP usw. nötig sind. Auch die Konfiguration der FritzBox 7490 ist nicht beschrieben.
Über Kontakt wäre allerdings einiges möglich.


id4you.de