knuspermagier.de
Hallo. Ich bins! Philipp!

Sonos-Frust

Aktuell habe ich vier IKEA Symfonisk-Boxen im Betrieb. Manchmal funktioniert alles, aber gerade ist der Wurm drin. Auch mit S2.

  • Teilweise spielt er nur auf einer Box, obwohl eine Gruppe gewählt ist.
  • Alle Boxen tauchen in meinem Spotify auf, ich kann aber nicht connecten.
  • Wenn ich in der Sonos-App bin, dauert es ewig, bis er mir das Richtige anzeigt.
  • Starte ich etwas über AirPlay 2, dann ruckelt es wie Sau und irgendwie blockiert es alles dermaßen, dass ich nichtmal über die Sonos-App zuverlässig das Lied wechseln kann.
  • Beim Liedwechsel dauert es manchmal 5 Sekunden, bis alle Boxen es mitbekommen haben
  • etc.

Mein WLAN war teuer und ist perfekt. Daran kann es nicht liegen. Klingt alles nach... Software-Problemen. Aber waruuuum. Sind die IKEA-Boxen vielleicht doch schlechter? Muss ich alles mal resetten? Wer will denn sowas?

Warum funktionieren Dinge nicht einfach.

toller.link
GOOS und GOARCH

Immer noch keine Lust auf Authentifizierung. Kümmere ich mich also erstmal um das Deployment, solang ich es noch nicht wirklich benutze, ist es ja auch egal.

Also schnell bei Hetzner eine VM geklickt und grob eingerichtet. Ich muss mir dringend mal ein Ansible-Playbook für meine privaten Server zusammenbasteln. Ich entscheide mich RediSearch per Docker-Image zu starten weil ich keine Lust auf kompilieren habe. Ich bin in der Zukunft angekommen.

Als nächstes überlege ich, ob die Go-App das Frontend wohl selber ausliefern kann, aber irgendwie klappen alle Code-Snippets nicht, die dafür sorgen sollen, dass der HTTP-Server Kram aus frontend/public korrekt ausliefert. Ich lege das erstmal für später zu den Akten und mache das per nginx.

Ein npm run build ist das Frontend fertig. Ein go build und das Backend ist fertig. Ich übertrage alles per scp, weil ~ich im Vorgestern lebe~ es schnell gehen soll und starte das Backend… geht natürlich nicht. Falsches Binary-Format! Ich muss etwas C R O S S C O M P I L E N. Das habe ich ja noch nie gemacht!

env GOOS=linux GOARCH=amd64 go build

Die Aufwände dafür halten sich allerdings auch in Grenzen.


Jetzt, wo es online ist und funktioniert, baue ich also um den iOS Shortcut. Ich hasse das Interface zwar, aber immerhin kann man das auch nebenbei auf der Toilette erledigen.

Mir fällt auf, dass man auch direkt den Safari Reader View anzapfen kann um an den echten Content der Seite zu kommen. Das ist ja nett, dann brauch ich gar keinen Hintergrund-Prozess, der die Seiten crawlt und hab direkt ein qualitativ hochwertigeres Stück Content. Zumindest sind mir aktuell keine guten Open Source Implementierung für die Content-Extraktion bekannt. Das Problem scheint sich seit der Quote.FM-Zeit nicht gebessert zu haben!

Jedenfalls baue ich dann mal noch eben Support ins Back- und Frontend ein, dass ich den Webseiten-Body übermitteln kann, er indiziert wird und bei der Suche auch durchsucht wird. Zusätzlich zeige ich im Frontend noch an, wo das Suchwort vorkommt! All die Sachen, die man halt quasi gratis bekommt.

Hier und da entstehen noch ein paar offene Fragen. Wie schreibt man in Svelte CSS-Code, der auch für dynamisch erzeugtes HTML funktioniert? (Die hervorgehobenen Wörter im Suchergebnis, z.B.). Erstmal in die global.css gepackt, aber ich werd’s mal noch googeln.


Tatsächlich dauert das mit Safari Reader View mir fast ein paar Sekunden zu viel, was den Share-Prozess irgendwie lang macht. Vielleicht baue ich es doch wieder aus. Mal sehen.


Jetzt aber Authentifizierung und einen… Deployment-Prozess, den ich halbwegs automatisieren kann. Vielleicht mal Github Actions probieren, oder so? Als Docker-Image? Brauche ich da eine eigene private Docker Registry, oder lade ich Sachen privat bei Docker Hub hoch? Die Wahrscheinlichkeit ist hoch, dass mir das zu stressig ist, und ich die Dateien lieber weiter per rsync hochlade. Wäre da nur nicht die Nervigkeit, dass man supervisor dann immer neustarten muss! Immer diese kompilierten Programme!!


Falls ihr euch jetzt fragt, warum toller.link gar nicht geht, obwohl ich großspurig erzählt habe, dass es deployt wurde? Dazu komme ich morgen.