Kategorien
Betriebssysteme Programmieren Tools Webserver

Ein Webserver auf deinem iPhone/iPad

Die Verbreitung von Apple iPhones und iPads ist in der Schweiz, verglichen mit anderen Ländern, besonders hoch. Bei den Anteilen der Betriebssysteme an den Web-Besuchen in der Schweiz im Jahr 2019 liegt der Anteil von iOS Geräten bei 44.6%. Der vergleichbare Wert bei Android Geräten liegt bei 31.5%, Windows bei 18.9%, MacOS bei 4.7% (Quelle). Nach der Einführung eines Split Modes und der Mausunterstützung in iOS würden immer mehr Benutzer von iPads gern auf ihrem Gerät eine Entwicklungsumgebung haben um lokal programmieren zu können. Für das reine Programmieren liess sich da mit verschiedenen Apps durchaus etwas tun, aber ein lokaler Webserver und ein eigenes Dateisystem war bisher nicht wirklich möglich. Die im Apple App Store verfügbare App iSH ändert das nun – ein Selbstversuch.

iSH App

iSH ist eine Linux Shell für Apple iOS Geräte (Link zum App Store). Nach der Installation und dem Aufruf der App landet man tatsächlich in einer Linux Umgebung (auf dem iPad).

Die iSH App baut auf Alpine Linux auf. Sie enthält viele Linux Kommandozeilenprogramme und ermöglicht das Ausführen von Linux-Software (what works?). Die iSH App gibt es schon länger, aber nur im Rahmen von Apples Testflight Programm. Seit ein paar Wochen ist die App auch im Apple Store zum Download erhältlich und somit kannst du auf jedem iOS Gerät Alpine Linux installieren.

Paket Manager nachinstallieren

Aber eine kleine Einschränkung gibt es für die App aus dem Store: sie kommt ohne den APK Paketmanager. Das heisst, du hast zwar jetzt Alpine Linux auf deinem iPhone/iPad, kannst aber zunächst keine Softwarepakete installieren.

Den Paketmanager kannst du jedoch einfach mit diesem Befehl installieren:

wget -qO- http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86/apk-tools-static-2.10.5-r1.apk | tar -xz sbin/apk.static && ./sbin/apk.static add apk-tools && rm sbin/apk.static

In Wirklichkeit sind es vier verkettete Befehle, die zunächst das APK-Paket von der Alpine Linux Website laden, es dann auspacken, installieren und das heruntergeladene Paket wieder löschen.

Der Befehl stammt aus dem kleinen, aber sehr übersichtlichen Wiki des Projekts (Installing apk).

iSH Dateisystem nutzen

In der Apple Files App lässt sich problemlos auf das Dateisystem der App zugreifen. Du kannst also relativ einfach Dateien in und aus der iSH App kopieren. Selbst die Dateiansicht sieht mittlerweile schon fast wie in einem Dateimanager aus 😀.

Software installieren

Um arbeiten zu können benötigst du ein paar Tools wie beispielsweise einen Editor. Du kannst dir diese per APK Manager installieren. Mit dem Befehl apk —help erhältst du eine Übersicht der Möglichkeiten des Paket-Managers.

Ein Video von Youtube laden

Um ein konkretes und durchaus nützliches Beispiel zu zeigen, was man mit der iSH Shell machen kann, laden wir einfach ein Video von YouTube herunter. Das momentan etwas unter Druck der Musikindustrie stehende Projekt https://youtube-dl.org bietet ein Open Source Tool um öffentliche Videos von YouTube zu laden. In Alpine Linux gibt es dafür ein Installationspaket (https://pkgs.alpinelinux.org/package/edge/community/x86/youtube-dl).

Der Befehl

apk add youtube-dl 

installiert das Paket. Der eigentliche Download des Videos erfolgt mit dem Befehl

youtube-dl [YouTubeVideoURL] 
youtube-dl in der iSH App

Die Video-Datei kann nun mit Hilfe der Files App in den Apple Video Ordner geschoben oder kopiert werden.

Dateisystem in Apple Files App

Der Video Ordner ist aus der Apple Photo App erreichbar und hier ist das Video auch editierbar.

Video in Apple Photo App

Und der Vollständigkeit halber wollen wir jetzt noch die Videodatei ansehen, als Datei, unabhängig von YouTube, ins Blog hochgeladen und mit dem HTML5 Player abspielbar.

Das Video nun als Datei im WordPress

Hinweis: Um das YouTube Download Projekt gibt es momentan viel Wirbel. Das Github Directory wurde am 23.10.2020 von der RIAA gesperrt https://github.com/github/dmca/blob/master/2020/10/2020-10-23-RIAA.md. Nicht explizit urheberrechtlich geschützte Videos, wie das von mir benutzte, lassen sich aber weiterhin downloaden.

Ein Webserver

Nun aber zum versprochenen Webserver. Um eine Website zu entwickeln, benötigt man einen lokalen Webserver zum Anzeigen des Ergebnisses im Browser. Dieser Webserver muss kein Apache oder NGINX Server sein, denn die Website wird ja nicht permanent gehostet.

Die Programmiersprache Python enthält beispielsweise einen Webserver der gut für Entwicklungsaufgaben geeignet ist. Auf unserem iOS Gerät können wir einen solchen Webserver für die lokale Entwicklung nutzen. Wenn du Python noch nicht installiert hast, kannst du es jetzt erledigen.

apk update
apk add python3

Dann benötigst du noch einen Editor wie Nano (https://www.nano-editor.org) um die Dateien bearbeiten zu können.

apk add nano

Nun musst du dir eine HTML-Datei mit ein paar HTML, CSS und/oder JavaScript Befehlen erstellen und benennen, beispielsweise index.html. Wenn du noch nie mit HTML gearbeitet hast, schau einfach ein Wochenende lang bei https://wiki.selfhtml.org vorbei. Die eigentliche Erstellung und Bearbeitung der Datei erfolgt mittels touch Befehl und über einen Editor.

touch index.html
nano index.html

Den Webserver kannst du anschliessend mit diesem Befehl aufrufen

python3 -m http.server

Wenn du nun in deinem Browser http://127.0.0.1:8000 aufrufst, so erscheint der gerenderte Inhalt deiner Datei. In der iSH Shell werden dir die Zugriffe im Log angezeigt.

Links HTML-Datei, rechts Webserver Log Datei

Innerhalb des lokalen Netzwerks kann der Webserver auch über die Netzwerk-IP-Adresse von anderen Geräten aus aufgerufen werden. Deine genutzte IP-Adresse findest du in den WiFi-Einstellungen deines iOS Geräts.

Von deinem Gerät genutzte IP-Adresse

Da die Programmiersprache Python läuft, kannst du nun natürlich auch mit Frameworks wie Flask komplexere Websites erzeugen. Flask lässt sich einfach installieren …

python3 -m pip install Flask

Ein nachvollziehbares, einfaches Beispiel einer Webanwendung mit Python und Flask findest du in diesem Tutorial https://entwickler-ecke.de/topic_Einfache+Websites+mit+Python+und+Flask+erstellen_115286.html.

Was mit Python geht, geht natürlich auch mit PHP und anderen Sprachen. Im iSH-Wiki findest du viele Kapitel mit nützlichen Hinweisen https://github.com/ish-app/ish/wiki.

Fazit

Die iSH App ist ein wunderbarer Weg um Linux (und iOS und vieles andere mehr) besser zu verstehen. Sie bietet einen sehr niederschwelligen Einstieg und macht Spass (Achtung – Suchtgefahr 😉). Die Möglichkeiten sind erstaunlich.

Links


tl;dr: Linux zum mitnehmen in einer App auf deinem iOS Gerät!

Von hagengraf

Ich erstelle bequeme und benutzerfreundliche Orte in virtuellen und physischen Umgebungen.

Kommentar verfassen