prep-pi ist ein Raspberry-Pi (Zero) Webserver, der über einen WLAN-Hotspot Informationen lokal bereitstellt. Die Informationen sind auch bei ausgefallenem Internet noch verfügbar und mithilfe eines Solarpanels sogar bei Stromausfall.
Netzwerke sind im urbanen Leben notwendig, aber auch fehleranfällig. Wenn große infrastrukturelle Netzwerke wie Strom, Wasser, Internet ausfallen, merken wir das sofort: nichts geht mehr. Mit dem prep-pi lassen sich in einem solchen Fall Informationen bereitstellen. Das Projekt ist zum Nachmachen und Nachbauen konzipiert.
Der prep-pi ist eine Sammlung an Skripten die dabei helfen einen Offline-Server zur Verfügung zu stellen. Das Projekt besteht aus zwei Teilen:
-
Setup-Skripte für den Pi
Mithilfe diser Skripte wird der Pi ganz automatisch aufgesetzt um einen WLAN-Hotspot zur Verfügung zu stellen. Wird eine Verbindung zu diesem WLAN-Hotspot hergestellt öffnet das verbundene Gerät automatisch die "Login-Seite" (Captive Portal). Statt einer Seite zum Login kann hier aber jede beliebige lokale Seite angezeigt werden.
-
Statische Website mittels Hugo
Teil 1 stellt die Infrastruktur zum Anzeigen einer Website zur Verfügung. In diesem Projekt haben wir eine einfache Website mit Hugo kreiert, diese kann Bilder, PDFs, Videos und andere Formate zur Verfügung stellen und unterstützt deutsche und englische Beschreibungstexte, auch in einfacher Sprache. Neben unserer Seite mit eigenem Content kann aber auch eine gänzlich andere Seite angezeigt werden.
Um mit den notwendigen Tools zu arbeiten musst du eventuell einige Programme installieren und wissen was ein SSH-Key ist.
-
Raspberry Pi Zero (W) + Zubehör
-
microSD
-
Micro-USB zu Ethernet Adapter
-
(optional) mini-HDMI
Die Installation und Konfiguration ist nur auf einem Pi Zero W getestet, kann grundsätztlich aber auch auf anderen Modellen funktionieren. Der Pi Zero ist aber sehr stromsparend.
-
-
Solarpanel (optional)
Du musst den Pi natürlich nicht an einem Solar Panel verwenden, nur dann ist er aber dauerhaft ohne Stromnetz nutzbar. Für kurze Zeiten kann aber auch eine Powerbank ausreichen.
-
Clone dieses git-repo auf deinen Computer
-
Dietpi auf microSD Karte flashen
Lade das aktuelle dietpi Image für den Raspberry Pi Zero herunter. Dises musst du nun auf die SD Karte flashen, hierfür kannst du z.B. balenaEtcher nutzen.
-
Setup Dateien anpassen
- SSH-Key hinzufügen: Öffne
install/dietpi.txtund füge beiAUTO_SETUP_SSH_PUBKEYdeinen Public Key ein. Nur so kannst du später auf den Pi zugreifen. - Passwort ändern: Öffne
install/dietpi.txtund ändere beiAUTO_SETUP_GLOBAL_PASSWORDdas Passwort. - WLAN Namen ändern: Öffne
install/Automation_Custom_Script.shund bearbeite beiSSIDden Namen.
- SSH-Key hinzufügen: Öffne
-
Setup Dateien auf microSD austauschen
Im Unterordner
installdieses Projekts findest du drei Dateiendietpi.txt,Automation_Custom_Script.shundAutomation_Custom_PreScript.sh. Diese Dateien musst du auf die microSD Karte in den Ordnerbootkopieren, bzw. ersetzen. Es kann sein das die microSD als zwei Geräte auftaucht, wähle einfach das in dem derbootOrdner existiert. Es kann sein, dass du hierfür Administrator-Rechte brauchst. -
Pi starten
Stecke die microSD in den Pi, schließe Ethernet (unbedingt notwendig, ein Setup über WLAN ist nicht möglich da dieses als Hotspot konfiguriert wird) und falls du hast HDMI Kabel an, dann den Strom. Der Pi startet automatisch die Installation, das dauert ungefähr 20 Minuten.
-
Pi neustarten. Verbinde dich über ssh und starte den Pi neu mit
sudo reboot. -
Website deployen
Hugo ist ein Tool das einfache Templates benutzt um statische Webseiten zu erzeugen. Wir haben ein einfaches Template zur Verwendung erstellt.
Du musst Hugo installiert haben.
Du musst Python installiert haben um die automatischen Skripte zu benutzen.
Das automatische Skript erstellt für deine zu teilenden Daten automatisch die notwendigen Dateien in die du Beschreibungen hinzufügen kannst. Für gängige Dateitypen versucht das Skript außerdem automatisch Vorschaubilder zu erzeugen. Die Dateien werden am Ende automatisch aus dem Ordner entfernt.
- Kopiere Dateien die du Teilen möchtest in
new-content - Führe
new_resources.pydurch doppelklicken oder im Terminal aus - In
hugo-page/contentwurden automatisch*.mdDateien für jede Datei ausnew-contenterstellt. Du kannst die Dateien in einem Texteditor öffnen und an den vorgesehenen Stellen Beschreibungstexte einfügen. Du kannst dort auch den Titel oder das Vorschaubild (Dateien dafür müssen inhugo-page/static/imagesliegen) ändern. Du kannst auch den Dateinamen ändern. - Nun müssen diese Dateien noch auf den Pi um dort als Website angezeigt werden zu können. Verbinde dich dazu mit dem WLAN des Pi und führe dann
deploy.pyaus.
Im Terminal kannst du auch selbst neue Dateien erstellen mit hugo new --kind [blog|resource] content/<lang>/[blog|resources]/<filename.md>, oder du duplizierst einfach eine der existierenden Dateien und änderst Namen und Inhalt.
Dateien zum herunterladen müssen in hugo-page/content/static/downloads und Bilder für die Vorschau in hugo-page/content/static/images.
Content auf Pi aktualisieren:
- Wechsle in
hugo-page - Lösche eventuell existierenden
publicOrdner. (Hugo überschreibt nur Dateien, veraltete könnten sonst liegen bleiben) - Führe hugo [--minify] aus um die statischen Dateien zu generieren.
- Schalte das Dateisystem des PIs auf read-write indem du auf dem pi
dietpi-drive_managerausführst - Ersetze auf dem Pi
/var/www/publicmit dem vorher generiertenpublicOrdner. - Schalte das Dateisystem des PIs wieder auf read-only indem du auf dem pi
dietpi-drive_managerausführst. Wähle als directory/dann die option für read-only. Der drive_manager fragt nach erfolgreichem umschalten ob du das Dateisystem in den read-write Modus setzen willst, breche dies ab.
- Wir nutzen dietpi weil es ein System optimiert auf Performance und somit auch Akkulaufzeit ist. Es laufen nur die nötigsten Dienste. Außerdem erlaubt dietpi in einem automatischen Setup das aufsetzen benötigter Software.
- Das Setup setzt mithilfe von hostapd einen WLAN Hotspot auf, mit dnsmasq als dhcp Server.
- IPV6 ist deaktiviert um jegliche Weiterleitungen zu vereinfachen.
- iptables sind eingestellt um jeden http traffic auf den Pi umzuleiten. Dieser traffic wird von lighttpd beantwortet. Dieser erwartet eine
index.htmlin/var/www/public. In diesem Projekt legen wir dort eine mit Hugo erstellte Seite ab, jegliche andere statische Seite würde aber auch funktionieren. - Um als Captive-Portal zu funktionieren werden anfragen auf die lokale Domain weitergeleitet. Für Apple Geräte wird bei einer Anfrage für das Captive Portal keine Weiterleitung sondern einfach direkt die Webseite zurückgegeben.
Copyright © 2025 Hugo Dünger - ZKM | Zentrum für Kunst und Medien Karlsruhe
Dieses Projekt ist unter der MIT-Lizenz lizenziert - siehe die LICENSE Datei für weitere Informationen.
Die Schriftarten im Ordner hugo-page/static/fonts unterliegen eigenen Lizenzen:
- IBMPlexMono: SIL Open Font License - siehe `hugo-page/static/fonts/OFL.txt
