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.
  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. 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


wallpaper-1019588
Artgerechte Haltung: So sorgst Du für das Wohl Deiner Tiere in jedem Umfeld
wallpaper-1019588
Was ist das Fediverse
wallpaper-1019588
I May Be a Guild Receptionist: Neuer Trailer enthüllt Startdatum und Theme-Songs
wallpaper-1019588
Kaiju No. 8: Starttermin des Compilation-Films bekannt