Marvin Preuss xsteadfastx photo

github twitter mastodon flickr

raspberrypi

Jitsi-Meet in Corana Zeiten

/// d9d5107 /// jitsi communication voip linux docker ansible golang covid19 prometheus raspberrypi

Social Distancing gehört eigentlich zu meinen Stärken. Soziale Kontakte kostet mich einen riesigen Aufwand. Auf einmal wurden wir alle Zuhausebleiber zu Helden der Corona-Zeit. Ich hätte es nicht gedacht, diese Distanz tat mir nicht gut. Ich scrollte durch viele “witzige” Screenshots von Gruppenvideochats. Vor ein paar Jahren probiere ich mal Jitsi-Meet aus. Ein kleiner Testlauf für die Firma, mit mäßigen Erfolg. Ab drei Teilnehmern ging der Server in die Knie. Nachdem ich diesen Bugreport sah, wurde mich auch klar wieso: Es gibt ein Firefox Bug, der die Verbindungen stark einschränkt, und das für alle Beteiligen.

Social Distancing gehört eigentlich zu meinen Stärken. Soziale Kontakte kostet mich einen riesigen Aufwand. Auf einmal wurden wir alle Zuhausebleiber zu Helden der Corona-Zeit. Ich hätte es nicht gedacht, diese Distanz tat mir nicht gut. Ich scrollte durch viele “witzige” Screenshots von Gruppenvideochats.

Vor ein paar Jahren probiere ich mal Jitsi-Meet aus. Ein kleiner Testlauf für die Firma, mit mäßigen Erfolg. Ab drei Teilnehmern ging der Server in die Knie. Nachdem ich diesen Bugreport sah, wurde mich auch klar wieso: Es gibt ein Firefox Bug, der die Verbindungen stark einschränkt, und das für alle Beteiligen. Egal. Ich kannte Jitsi schon aus meinen XMPP-Hype Jahren. Damals noch als Java Client der auch schon Audio und Video kannte. Er nutze dabei XMPP Jingle für das Aushandeln der Verbindungen. Da ich keine Lust darauf habe kommerzielle, closed Source Geschichten zu benutzen (aus Überzeugung), wollte ich etwas eigenes Aufsetzen. Jitsi musste wieder her halten.

In meiner Fantasie als Mega Super Admin rolle ich gleich mehrere Instanzen aus. Aus diesem Grund muss es eine Ansible Rolle sein. Diese wäre Teil meiner persöhnlichen Infrastruktausrollung. Ich schlug mich durch bereits vorhandene Ansible Rollen. Ein scharzer Tag innerhalb schwarzer Tage. Ich setze immer wieder frische virtualle Hetzner Server auf. Egal ob Debian oder Ubuntu, immer bekam ich andere Fehler. Anscheinend baut Jitsi intern viel um und will nun NGINX als neuen als Reverseproxy nutzen. Zumindestens nehme ich diese Aussage als Ausrede meines Nichtkönnens. Es gab aber noch eine andere Alternative: das docker-compose Setup. Aufgesetzt, funktioniert. Wieso also der Hassle?

Meine Ansible Rolle setzt ein funktionierendes Docker Setup voraus. Dann als Ansible Variabel den Host setzen:

    jitsi_meet__host: foo.bar.tld

Die meiste Arbeit steckt in dem offiziellen docker-compose File. Es kümmert sich sogar um letsencrypt SSL Zertifikate. Ich klickte mir erstmal den billigsten vServer in der Hetzner-Cloud. Natürlich muss ich auch mitbekommen wie sich die Zahlen der Konferenzen und User auf den Ressourcen-Verbrauch auswirkt. Ich brauchte einen Prometheus Exporter. Auch hier gab es was, dies beinahaltet Gefummel am XMPP Server. Keine Lust darauf wenn ich sowas automatisiert ausrollen möchte. Und da ich gerade eh mit go rumspiele musste ich es einfach selber machen. Stellt sich raus, die Videobridge Komponente in Jitsi kann Statistiken. Ich nehme die angebotenen Werte und baue daraus Prometheus Metriken. Ein Hack. Aber es macht was es soll. Der jitsiexporter!

Nun treffen wir uns einmal Morgends, frühstücken zusammen. Ich habe soviel soziale Kontakte wie noch nie. Diese Zeiten erzeugen eine Sensucht nach Nähe. Dies ist priviligiertes Gejammer aus der Quarantäne, das ist mir bewusst.



Audio überall. Mopidy und Snapcast

/// d794cd8 /// mopidy linux raspberrypi python

Musik hören geht alle Zeiten wieder durch mehrere Iterationen. Von wild, ungetaggten, Files die ich bin XMMS abspielte, über die ersten Versuche mit einer Verwaltung unter Amarok und eine sehr düstere Zeit mit, dem vom Herzen tiefst gehassten, iTunes. Das erste Licht am Ende des Tunnels sah ich mit MPD und dem Feature von ncmpcpp Tags und Files umzubenennen und richtig zu taggen. Später dann mit Picard vom MusicBrainz Projekt.

Musik hören geht alle Zeiten wieder durch mehrere Iterationen. Von wild, ungetaggten, Files die ich bin XMMS abspielte, über die ersten Versuche mit einer Verwaltung unter Amarok und eine sehr düstere Zeit mit, dem vom Herzen tiefst gehassten, iTunes. Das erste Licht am Ende des Tunnels sah ich mit MPD und dem Feature von ncmpcpp Tags und Files umzubenennen und richtig zu taggen. Später dann mit Picard vom MusicBrainz Projekt. Dann kam ich schnell auf ein Kommandozeilen-Tool was dies auch ganz wunderbar kann: beets. Ab da wollte ich mir nicht mehr von anderen Programmen in meine Files schreiben lassen und erst recht nicht sortieren. Nun gibt es Clouds oder ähnliche Marketingkonstrukte und man installiert sich Software auf dem Heimserver wie Plex oder seine Open-Source-Alternative Emby. Mit diesen Diensten kann man seine Mediensammlung theoretisch über das Internet konsumieren. Klappt in den besten Fällen ziemlich gut. Gerade die UI von Emby kommt mir ziemlich behäbig vor (kann natürlich auch an meinem Server liegen). Ich erinnerte mich an meine unbeschwerte Zeit mit MPD. Alles flutschte und funktionierte mit den verschiedensten Clients. Nun gibt es ein kleines Projekt mit dem Namen Mopidy. Ein in Python geschriebener Audio Server der so tut als ob er MPD ist aber noch viel mehr zu bieten hat. Es gibt Plugins um auf die verschiedensten Bibliotheken zuzugreifen. Unter anderem Spotify, Youtube, Google Music, usw. Also habe ich mich mal ran gesetzt und ein Emby Plugin geschrieben. Nun kann ich das langsame UI umgehen und viele weitere Möglichkeiten machen sich auf.

Ich lasse Mopidy und Snapcast in einem Docker Container laufen. Snapcast bietet Multi-Room Streaming. Mehrere Devices die über das Netz ihren Output synchronisieren und das bei mir sogar über ein VPN hinweg. So kann ich Raspberry Pi’s über all im Haus verteilen. Diese starten dann den snapclient nach dem booten und die Musik spielt ab.

Mopidy muss dazu den Output in ein FIFO-File schreiben. Dazu muss in der Config folgendes stehen:

[audio]
output = audioresample ! audioconvert ! audio/x-raw,rate=48000,channels=2,format=S16LE ! wavenc ! filesink location=/tmp/snapfifo

Den Server startet man mit den Defaults mit einem einfachen snapserver. Der Client sollte den Server über Avahi finden. Da ich den Port an meinem Container nicht freigegeben habe mache ich das manuell mit snapclient -h 192.168.1.77. Mein Docker Setup findet man hier.



Als git den ganzen Raspi Speicher frass

/// d794cd8 /// git raspberrypi

Ich experimentiere gerade rum um einen Raspberry Pi zu einer kleinen Jenkins-Testbox umzubauen. Ich weiß ich weiß… der Raspi ist nicht gerade eine Powermaschine. Trotzdem ist es ein Projekt in das ich gerade viel Zeit stecke. Plan ist es auf dem Raspi alle meine git-Repos zu haben und bei commits dann die Tests auszuführen. Gerade versuche ich per Jenkins ein MySQL Backup über git einzuspielen. Der Dump ist ganze unglaubliche 10 MB groß.

Ich experimentiere gerade rum um einen Raspberry Pi zu einer kleinen Jenkins-Testbox umzubauen. Ich weiß ich weiß… der Raspi ist nicht gerade eine Powermaschine. Trotzdem ist es ein Projekt in das ich gerade viel Zeit stecke. Plan ist es auf dem Raspi alle meine git-Repos zu haben und bei commits dann die Tests auszuführen. Gerade versuche ich per Jenkins ein MySQL Backup über git einzuspielen. Der Dump ist ganze unglaubliche 10 MB groß. Dies scheint zu reichen um git an seine Grenzen auf dem Raspi zu zeigen. Das ganze spiegelte sich in dieser Fehlermeldung wieder:

remote: Counting objects: 666, done.
remote: warning: suboptimal pack - out of memory
remote: fatal: Out of memory, malloc failed

Ich konnte es beseitigen in dem ich in dem Remote-Repo folgendes machte:

git config pack.windowMemory 10m
git config pack.packSizeLimit 20m


Angriff der Zombie-Drohnen

/// d794cd8 /// drones hacking raspberrypi

Vor ein paar Tagen krachte die Meldung rein, dass Amazon irgendwann Pakete mit Drohnen ausliefern will. Jetzt hatten wir an solchen Meldungen schon fast alles. vom Pizzacopter bis zum Dönercoptor. Nun also Amazon-Pakete. Dabei wird die Drohne meist als unbemannte und ethisch recht fragwürdige Tötungsmaschine wahrgenommen. Und da sind wir wieder an dem Punkt an dem Technik in jede Richtung benutzt wird. Das macht es auch so spannend. Für ein paar hundert Euro kann man sich zum Beispiel so eine Parrot-Drohne kaufen.

cc-by-sa Max Braun

Vor ein paar Tagen krachte die Meldung rein, dass Amazon irgendwann Pakete mit Drohnen ausliefern will. Jetzt hatten wir an solchen Meldungen schon fast alles. vom Pizzacopter bis zum Dönercoptor. Nun also Amazon-Pakete. Dabei wird die Drohne meist als unbemannte und ethisch recht fragwürdige Tötungsmaschine wahrgenommen. Und da sind wir wieder an dem Punkt an dem Technik in jede Richtung benutzt wird. Das macht es auch so spannend. Für ein paar hundert Euro kann man sich zum Beispiel so eine Parrot-Drohne kaufen. Diese ist mit einigen Kameras ausgestattet und lässt sich mit dem Smartphone oder Tablet-PC steuern.

Nun hat der Hacker Samy Kamkar aus ein paar Wlan-Devices, einem Raspberry Pi und einer Parrot eine hackende Drohne gebaut. Diese knackt das Wlan mit der die Drohnen gesteuert werden und zwingt die Drohne dazu sich mit seinem eigenen angebotenen Netz zu verbinden. So hat man am Ende ein Schwarm Zombie-Drohnen, die das Gebiet unsicher machen. Auf seiner Seite hat er alle Einzelheiten beschrieben. Den Sourcecode hat er auch veröffentlicht.



Der Raspberry Pi Supercomputer

/// d794cd8 /// linux raspberrypi

Wieso haben ich eigentlich noch keinen Raspberry Pi? Ds ist ein kleiner Computer für wenig Geld auf dem man problemlos Linux laufen lassen kann. Perfekt für einen kleinen Server oder eine Medienzentrale für das Wohnzimmer. Aber eigentlich will man damit nur rumspielen und Sachen aus dem Grund machen, das man sie machen kann. Zum Beispiel einen Supercomputer aus diesen kleinen Computer bauen. Das haben die Studenten von der Universität Southampton gemacht.

raspberry-pi-supercomputer-5

Wieso haben ich eigentlich noch keinen Raspberry Pi? Ds ist ein kleiner Computer für wenig Geld auf dem man problemlos Linux laufen lassen kann. Perfekt für einen kleinen Server oder eine Medienzentrale für das Wohnzimmer. Aber eigentlich will man damit nur rumspielen und Sachen aus dem Grund machen, das man sie machen kann.

Zum Beispiel einen Supercomputer aus diesen kleinen Computer bauen. Das haben die Studenten von der Universität Southampton gemacht. 64 Keincomputer wurden dafür zusammen geschaltet. Alle Informationen zum Nachbauen gibt es im Internetz. Und LEGO ey… wie geil seit ihr denn bitte?!



1 of 1