Mein Dart-Server im Keller

Seit dem letzten Blogpost habe ich meinen Code um eine Zähl- und Sortierfunktion erweitert, damit ich mir die Top-Poster_innen einer Facebookgruppe anzeigen lassen kann. Bevor ich mich an weitere Dinge (Suche, Visualisierung) mache, wollte ich eine Möglichkeit finden Daten persistent zu speichern. Das hätte ich am einfachsten über lokale plain-text-files machen können, aber da ich auf zumindest zwei Geräten arbeite und irgendwann das Dart-Programm unabhängig von der Entwicklungsumgebung nutzen möchte, musste ein Server her.

Da ich bisher nur mit shared hosting gearbeitet habe und mich nicht daran traute einen eigenen Server zu konfigurieren und zu verwalten, habe ich auf Twitter gefragt. Die Schwierigkeit ist, dass Dart noch nicht als ein Service auf Cloudhosting-Diensten angeboten wird. Google arbeitet daran es auf der Google App Engine anzubieten, aber das funktioniert noch nicht oder ich hab es nicht geschafft. Seth Ladd empfahl Heroku und ich fand auch sein Tutorial dazu, wie man die Dart VM dort einrichtet. Einfach schien dies aber auch nicht. Dann meldete sich noch Aerobatic, welche quasi einen Datenspeicher für serverless Webapps anbieten. Die App wird dann als static files gehostet, läuft komplett clientseitig (macht meine bisherige Dart App auch) und speichert diverse Daten in Aerobatic. Zusätzlich bieten sie ein paar kluge Dinge rund um Authentifizierung an, damit Tokens und ähnliches nicht ausgelesen werden können, sondern die Anfragen über Aerobatic laufen und erst dort mit den entsprechenden Tokens versehen an etwa Facebook weitergeleitet werden. Klang alles sehr vielversprechend, aber von meinen Visualisierungsprojekten weiß ich, dass es manchmal Stunden bis Tage dauert, um Daten komplett abzufragen. Dafür müsste der Client dann die gesamte Zeit online sein. Also doch Server, der 24/7 läuft.

Alter Laptop als Server neugeboren

Eher zufällig stolperte ich über meinen alten Laptop, bei dem der Bildschirm abgebrochen ist. Dual Core 2 Duo, 2GB RAM. Nicht beeindruckend, aber für einen ersten Server zum ausprobieren mehr als ausreichend. Nach kurzer Recherche entschied ich mich für Ubuntu als Betriebssystem. Vor allem weil es viele gute Anleitungen dafür gibt und es am ehesten direkt funktioniert. Da ich gerade einen Bildschirm herumstehen hatte, entschied ich mich mit Ubuntu Desktop zu starten, um zu sehen wie alles läuft. Vielleicht wechsle ich irgendwann auf eine saubere Ubuntu Server Installation.

  1. Ubuntu Desktop heruntergeladen.
  2. Mit UNetBootin auf einen USB Stick geladen.
  3. Installation lief problemlos und alles funktionierte sofort.
  4. SSH installiert (oder war es das schon?)
  5. Über Putty auf meinem Laptop mit dem Laptop verbunden
  6. tasksel installiert
  7. Über tasksel die Konglomerate Basic Ubuntu Server, OpenSSH server und PostgresSQL database installiert
  8. Über tasksel Ubuntu Desktop deinstalliert (nicht lachen)
  9. lm sensors installiert, damit ich die Temperatur überwachen kann. Lüfter hängt schon außerhalb.
  10. Mit stress -c 40 den Laptop mal etwas Druck gemacht. Bei 90°C bleibt die Temperatur stehen. Stromverbrauch 51W. Normalbetrieb 40°C-50°C. Stromverbrauch 35W.
  11. Webmin installiert zur komfortableren Verwaltung.

Nicht alles nötig, aber für mich eine neue Welt und da wollte ich paar Dinge ausprobieren.

Dart am Ubuntu Server installieren

Hachre ist so freundlich ein inoffizielles Repo für Dart zu Verfügung zu stellen.

Da ich weder den Dart Editor, noch Dartium auf dem Server brauche, habe ich lediglich das SDK installiert:
sudo add-apt-repository ppa:hachre/dart
sudo apt-get update
sudo apt-get install dartsdk

Vorbereitungen abgeschlossen. Wird Zeit einen einfachen Dart Server zu schreiben bzw. zu kopieren.

Lokal in den Dart-Editor kopiert, gespeichert und lediglich dieses eine Dart-File mit Filezilla auf den Server kopiert. Über SSH mit dem Server verbinden und mithilfe von „dart FILENAME.dart“ starten. (Über strg+c kann es abgebrochen werden.)

Erst hat nichts funktioniert, dann habe ich „InternetAddress.LOOPBACK_IP_V4“ durch die lokale IP des Servers ausgetauscht, dann lief es. Nun im Browser die IP des Servers mit dem angehängten Port aufrufen und man bekommt den zuvor ins Dart-File eingefügten Text ausgeliefert.

Weitere Schritte

Ich muss nun meinen bisherigen Code in server- und clientseitigen Code aufdröseln und auf den Server werfen. Vielleicht lerne ich auch noch wie man sauber deployed. Vielleicht mit Git. Die nächste Aufgabe, die mir etwas Kopfzerbrechen bereitet ist das Einsetzen von PostgreSQL. Aber wenn das alles steht kann ich meiner Sammelfreude freien Lauf lassen und Dinge bauen, die regelmäßige Aufgaben ausführen. Etwa eine Facebookgruppe auf neue Beiträge überprüfen, falls es welche gibt, diese auf Spam untersuchen und dann mich informieren oder den Beitrag sofort löschen und in ein Log schreiben, was gemacht wurde. Das wird toll.

Update
Habe mich nun doch entschieden eine saubere Server-Installation durchzuführen. Dazu das Server Image geladen, mit UNetBootin auf den Stick und versucht zu installieren. Leider ist die Installation immer an der gleichen Stelle abgebrochen. „Package busybox-intramfs cannot be installed“. Scheint ein bekannter Bug zu sein. Irgendwann hatte ich genug und wählte statt „Install Ubuntu Serber“ den Eintrag „Install“ ausgeführt. Dann wurden ein paar Sachen aus dem Netz nachgeladen(?) und alles klappte problemlos. Es wurde anscheinend auch die Server-Version installiert.


Beitrag veröffentlicht

in

von

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert