Hallo zusammen, Ich habe mir in den Kopf gesetzt, dass ich gerne eine Website auf einem raspberrypi bei mir Zuhause selbst hosten möchte.

Sie sollte aus dem Internet (auch von anderen Personen) erreichbar sein, und sowohl einige Daten des raspberrypi anzeigen, als es auch erlauben, bestimmte Aktionen (also shell Skripts) auszuführen (natürlich hinter einem login). Mir ist bewusst, dass ich eine Domain bei einem DNS Provider Mieten muss.

Sicherheitstechnisch klingt die Idee aber durchaus bedenklich. Lade ich auf kurz oder lang Angreifer ein, die sich darüber Zugang verschaffen wollen. Auch diverser Web Crawler und ähnlich bots, die vielleicht etwas aufdringlich sind und mein Heimnetz mit Anfragen überhäufen würde mir als Problem einfallen.

Wie problematisch könnte das ganze also werden, hat vielleicht jemand schon Erfahrungen, oder kann Empfehlungen geben, oder sollte ich das als Laie lieber komplett lassen bleiben?

Ich freue mich über Anregungen aller Art :)

  • HaraldvonBlauzahn@feddit.org
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    2 days ago

    Ich habe einen Alternativvorschlag. Nämlich, die Sache zu vereinfachen, indem man statt einem HTTP Server das viel einfachere (und sicherere) Gemini-Protokoll benutzt. Was das ist erkläre ich gleich.

    Warum? Einen Webserver wie Apache oder Nginx aufzusetzen und zu pflegen ist relativ komplex. Das macht Arbeit, und da man den laufend updaten muss, ist das auch immer wieder Arbeit. (Es gibt auch einfachere Server wie diesen aber einfach ist da echt relativ…)

    Dazu muss man die Webseiten, wenn man einfache statische Webseiten verwendet, als HTML generieren. Dazu gibt es Blog-Generatoren, so etwas wird viel benutzt und ist sicher möglich. Aber es ist halt komplex.

    Ausserdem kosten extern gehostete Server Geld, und wenn man sie zu Hause hostet, kosten sie zumindest Strom. Für ein Gerät, das dauernd läuft, kommen da schon ein paar Euro zusammen.

    Eine erheblich einfachere Alternative ist wie folgt:

    • Statt HTTP benutzt man das Gemini-Protokoll, wie hier beschrieben. Hier ist die Homepage im Gemini-Netz. Wie man sieht, kann man Gemini-Seiten ganz einfach über einen HTTP-Gateway wie oben aufrufen. Oder eben mit einem extra Client wie z.B. deedum (Android) oder Amfora (Linux). Wenn man mal probieren will, wie sich das liest - die Gemini-Homepage der taz Berlin ist gemini://taz.de . Es ist im Vergleich zum modernen Web frugal, aber sehr lesefreundlich!

    Festhalten muss man, dass dieses Gemini nichts mit anderen Dingen der Internetkonzerne zu tun hat, die auch Gemini heißen, also weder mit Googles “KI” noch mit einem Chatbot. Es ist benannt nach dem Vorläufer des Apollo-Programms der NASA, und technisch gesehen ein Nachfolger von Gopher und eine Vereinfachung des auf HTML basierenden originalen World Wide Web.

    Konkret geht das wie folgt:

    • Man richtet einen Raspberry Pi mit Debian ein
    • Den hängt man z.B. an die Fritzbox. Die Stromversorgung geht dann über den USB Anschluss der FritzBox, das kostet nur so 1 Watt.
    • Damit der Server-Port von außen erreichbar ist, muss man beim ISP typischweise ine feste IPv4 IP schalten (kostet 5 Euro im Monat).
    • auf der Fritzbox / dem eigenen Interenetrouter richtet man eine Portweiterleitung ein.

    Soweit ist das jetzt nicht unterschiedlich von einem kleinem HTTP Server. Der entscheidende Punkt ist nun:

    • Statt einem HTTP Server richtet man einen robusten Server für das Gemini-Protokoll ein. Das ist ein stark vereinfachtes Hypertext-Protokoll, das statt HTML eine sehr einfache Syntax hat und auf simple Webseiten mit Text, Bildern und Medien optimiert ist.

    Hier ist die Wiki-Seite zum Gemini-Protokoll.

    Ein einfacher Webserver, der in Rust geschrieben ist, ist Agate. Hier ist die Github-Seite, und hier ist die Gemini-Homepage davon.

    Den Server kann man aus Rust auf dem Raspberry compilieren, wenn man Rust mit rustup installiert. Er ist nicht so komplex, daher ist es nicht nötig, den auf einem anderen Computer zu bauen.

    Da das Gemini-Protokoll nahezu keine bewegliche Teile hat und nur statische Seiten ausliefert, wird man da, wenn der Server auch noch in Rust geschrieben ist, nur selten Patches brauchen. Das wiederum spart einen Haufen Zeit. Zu konfigurieren gibt es auch nicht viel. Die gesparte Zeit kann man nutzen, um seine Seite zu schreiben. Gemini ist für alles Mögliche geeignet, als eine Art persönliches Wiki, als Microblog, als Blog mit Bildern und Medien, für vernetzten Hypertext oder Dokumentationen oder was auch immer. Dabei ist es sehr text-zentriert - es ist also ein Medium für Leute, die schreiben und lesen.

    Dann muss man noch seine eigenen Seiten statt mit HTML im Gemini-Format erstellen. Das ist super easy! Man benutzt ein Markup-Format ähnlich wie das Wikipedia-Markup oder Markdown (das was hier bei lemmy genutzt wird). Hier ist eine ebenso vollständige wie kurze Beschreibung des Formats.

    Erstellen und bearbeiten kann man die Webseiten mit einem Texteditor, wie z.B. Emacs oder vim. Die kann man dann per scp, Krusader oder WinSCP auf den Server kopieren oder mit einem Editor wie Emacs auch direkt auf dem Server bearbeiten.

      • HaraldvonBlauzahn@feddit.org
        link
        fedilink
        arrow-up
        1
        ·
        2 days ago

        Und ach ja, wenn du eine öffentlich erreichbare IP (auch ungenau statische IP genannt) von deinen Internetprovider bekommst, musst du nur einen Namen für den Server bei einem DynDNS Provider registrieren und die aktuelle IP dort mit einem script / Systemdienst updaten. Die Fritzbox muss dann den Gemini-Port - und nur den - auf den Raspberry Pi forwarden.

        Für einen optionalen Login von aussen per SSH brauchst du sehr starke Passwörter, sonst würde dein Server schnell gehackt.