Kategorien
#OCHQ8 Aktuelles

lessions learned 3

technische learnings
Teil 4

4. Jetzt kommen wir aber tatsächlich zur Technik.

Opensource vom Volume bis zum Mauszeiger. Eine weitere Studie. Eine weitere Herausforderung.

Nachdem wir die Event-Software festgelegt hatten konnten wir alle weiteren Services festnageln. Die meisten der unten angeführten Projekte benötigen noch weitere technische Komponenten bzw. enabling Services, die aber häufig einfach als abhängige Pakete mit installiert und von der Paketverwaltung konfiguriert wurden und so unserer Aufmerksamkeit entgingen. Hier die wichtigsten:

  • Als Betriebssysteme wählten wir:
    • Debian 10 als Basis für den Workadventure-Server
    • Ubuntu 18 / 20.04, unser Standard Server und Desktop OS
    • Mint 19.3 an unserem Grafik, Blender und Videoschnitt PC
    • FossaPub auf einem 8Gb USB-Stick als Notfallbetriebssystem während meine Laptop-Festplatte schlapp machte
    • OpnSense als Firewall mit Failover-Verbindung als unsere Internet Leitung durch einen Baum zerstört wurde
    • Huawei OS für den mobilen Accesspoint auf den die Firewall beim Leitungsausfall umgeleitet hat
    • Android um den ADAC, Polizei und Feuerwehr zu Verständigen, als wir in einen schweren Verkehrsunfall verwickelt wurden; Um hunderte Telegram Nachrichten an Opencaching zu versenden, zu empfangen und zu beantworten; Um den einen oder anderen Cache zu verstecken oder zu suchen; Um eine Rede zu halten und via Tablet zum Openstreaming-Server zu übertragen; Um zu testen ob Workadventure auf Tablet und Smartphone möglich ist
    • und eine Windows 7 64bit Unlimited CD als Kaffeeuntersetzer (Diese wurde während der Arbeiten durch einen Bierdeckel ersetzt, da nicht mal als Kaffeeuntersetzer wirklich brauchbar, außerdem war die Lizenzsituation unklar)
  • Workadventure als Frontend mit Traefik als reverse Proxy für Docker
  • Jitsi-Meet (mit Videobridge) als Backend
  • Nginx als Webserver und Reverse Proxy
  • Apache2 um die Maps für Workadventure vorzuhalten
  • CoTurn als separaten STUN/TURN Server um die Trafic-Last von den Jitsi-Servern zu nehmen und zu einem anderen Provider zu lenken und die Kommunikation zwischen gut verstecken Clients zu ermöglichen
  • OpenStreamingPlattform mit selbst gebruzeltem Nginx mit RTMP-Erweiterung als Ergänzung bzw. Vereinfachung zu Youtube (siehe Artikel zu Streaming)
  • Icinga2 um die Auslastung und die Verfügbarkeit der Services im Blick zu behalten und mich notfalls via SMS aus dem Bett zu holen
  • Wekan Kanban Board (Snap) als agile Programmplanung während des Events
  • Nextcloud als ToDo-Liste, für Abstimmungen, zum Dateiaustausch, als Notizblock und zum sammeln aller Informationen zum 8. HQ
  • OpenLDAP für die Benutzerlogins
  • PhpOpenLDAP für die Verwaltung und Erstellung der Benutzerlogins
  • PhpMyAdmin um alle MySQL Datenbanken zu verwalten
  • BigBlueButton unsere Standard-Videokonferenz-Software
  • Kivitendo um unsere anfallenden Rechnungen zu verbuchen
  • Matomo um das Interesse an unseren Aktivitäten zu sehen
  • Bind9 um die Workadventure-Domains zu verwalten
  • Wordpad als Blog-Software und zur Koordination unserer Social Media Aktivitäten
  • whitebophir als kollaboratives Whiteboard
  • Joomla um unsere Webseite zu betreiben
  • MySQL / MariaDB um Daten zu bunkern
  • PostgresSQL um Daten und Datensicherungen zu bunkern
  • BareOS und BORG um Datensicherungen zu erstellen
  • TileED zur Erstellung der Maps
  • Blender für alle 3d Elemente
  • GIMP für sämtliche Bildbearbeitung
  • LibreOffice Texte, Tabellenkalkulationen
  • Freeplane für meine geliebten Mindmaps
  • Blufish Editor für HTML, PHP, JavaScript und solchen Kram
  • GPSBabel und GPSPrune um die Königsseekoordinaten umzurechnen
  • Shotcut für alle Videobearbeitungen
  • Filezilla zur Dateiübertragung
  • KeyPassXC damit wir uns die Passwörter nicht alle merken mussten
  • Thunderbird um (verschlüsselt) via E-Mail zu kommunizieren
  • Firefox um die HQ-Welt zu sehen
  • MidnightCommander zur Serverkonfiguration
  • OpenSSH zur Serverfernwartung

Zugegeben viele dieser Anwendungen waren schon vorkonfiguriert oder benötigten keine separaten Konfigurationsschritte. Sie waren aber definitiv alle an der Entstehung der HQ-Welt beteiligt.
Widmen wir uns deswegen mal den für den Betrieb wesentlichen Komponenten. Debian und Ubuntu sind entgegen ihres Rufs schnell aufgesetzt und brauchen insbesondere als virtuelle Server kaum Konfiguration. Die Installation der KVM-Basis möchte ich hier nicht im einzelnen beschreiben, da wir die Server nach dem Testbetrieb sowieso zu einem Cloudhoster transferiert hatten. Unseren guten Erfahrungen mit Hetzner sind wir treu geblieben und haben diesen ausgewählt.
Eine Debian 10 Instanz entsteht via Webfrontend in wenigen Sekunden, nach generellen Updates sollte sie betriebsbereit sein. Wenn man wie wir auf Linux-Desktops arbeitet sind alle notwendigen Komponenten zur Fernbetreuung via SSH vorhanden, sonst kann man auch auf die etwas unkomfortablere Web-Konsole zurückgreifen.

Workadventure

Auf Github und bei Workadventu.re sind die Installationsanweisungen etwas dürftig:

Install Docker.

Run: docker-compose up -d

The environment will start.

Diese Aussage ist zwar grundlegend richtig, aber nur wenig hilfreich. Tatsächlich passiert erst mal – wie erwartet – gar nichts bzw. antwortet docker mit einer Fehlermeldung.

Richtiger ist, man konfiguriert passend seine Domäne – ohne die wird es schwierig – das sollte dann in etwa so aussehen:

wa.wimmer.bayern.600 IN Axxx.xxx.xxx.xxx
api.wimmer.bayern.600 IN CNAMEwa.wimmer.bayern.
back.wimmer.bayern.600 IN CNAMEwa.wimmer.bayern.
pusher.wimmer.bayern.600 IN CNAMEwa.wimmer.bayern.
play.wimmer.bayern.600 IN CNAMEwa.wimmer.bayern.
  • Dann holt man sich den Inhalt von TCM auf seine eigene Festplatte z.B. nach /opt
    • cd /opt
    • git clone https://github.com/thecodingmachine/workadventure.git
    • cd workadventure
    • jetzt würde docker-compose up -d und http://play.workadventure.localhost/ vielleicht sogar einem Ziel führen, wir sind aber nicht lokal sondern auf einem entfernten Server. Also bearbeiten wir zuerst .env und docker-compose.yaml
    • die .env solltet ihr mit euren Daten füllen, als Jitsi-Meet könnt ihr natürlich auch den freien server meet.jit.si verwenden, der braucht jitsi_private_mode, jitsi_iss und jitsi_secret natürlich nicht, den Turn-server ändert ihr auch nur wenn ihr einen habt, eine Domain und Emailadresse sind aber wichtig. Die Start-URL hat mich einige graue Haare gekostet, ist aber, wenn man es verstanden hat, auch simpel. „/_/global/“ ist sozusagen verpflichtend, danach kommt die Url zu eurem Web wo ihr die Map hinterlegt habt, dann der oder die Unterordner und dann die .json datei
    • In der docker-compose.yaml würde ich die Sektionen maps, uploader und coturn entfernen, die verwirren nur, der integrierte maps-Webserver ist sehr langsam, auch die verweise in den anderen Sektionen, z.B. Uploader URL in Front würde ich auskommentieren . Für maps verwenden wir einen eigenen Webserver, bei Bedarf auch einen separaten coturn server, den uploader lassen wir weg. Hört sich simpel an, hat mich aber einige Wochen Bastelei gekostet.
      Den Traefik habe ich auf 2.4 hoch gesetzt, und die Api-UI deaktiviert.
      Front, Pusher und Back habe ich auf den Master-Zweig in Github gesetzt, Development lief zwar auch, war mir aber zu heiß. Noch ein wichtiger Tip: .yaml Dateien sind empfindlich was Einrückungen und Tabs betrifft, die müssen stimmen – sonst macht der Server gar nix.
    • jetzt steht einem docker-compose up -d eigentlich nichts mehr im Wege, docker lädt ziemlich viel herunter und backt die Images wenn alles gut geht könnt ihr jetzt mit play.eure.domain das erste mal in euer Workadventure bzw. in die Default-Map rein schauen.
  • So weit schaut das simpel aus, die Fehlersuche ist aber die Hölle, da die Fehlermeldungen nicht oder nur dürftig dokumentiert sind.

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.