Thomas: So, hallo und herzlich willkommen zusammen beim SmartHütte Podcast, euer Podcast für
Thomas: Smart Home, Technikkram, alles was nerdig ist, würde ich sagen.
Thomas: Wir haben heute den 24. Juli 26 und nehmen gerade auf Episode 35 und mit dabei ist wieder
Thomas: der und der Thomas, also ich, nein, schön.
Andrej: Andrej, moin.
Andrej: Hallo, Thomas.
Thomas: Also ich wollte fast sagen, so als Intro, wir haben wieder ein buntes Potpourri an Themen,
Andrej: Bestimmt.
Thomas: Aber mittlerweile ist das eigentlich unser Standard. Das ist die Baseline.
Thomas: Also, ja. Aber du hast was Cooles mitgebracht und da kommen wir auch relativ früh drauf.
Thomas: Aber vielleicht starten wir einfach mal mit zwei, drei kleineren Themen so zum Warmwerden.
Andrej: Genau.
Andrej: Vor einigen Folgen haben wir über unsere Matter-Erfahrung berichtet
Andrej: und dann war ich ein bisschen genervt zwecks der Zeitgeschichte von,
Andrej: wie heißen die, Ikea, Alpstuga, diese Luftqualitätsmen...
Thomas: Ja, genau, weil die das Display haben, ne?
Andrej: Ja, genau, die haben so ein Display mit der Uhrzeit
Andrej: und dann war ich ein bisschen genervt, dass das nicht im Matter-Standard ist.
Andrej: Es ist jetzt im Matter-Standard.
Andrej: Matter 9.1.0.
Andrej: Ich folge ja dem Ingo jetzt auf LinkedIn,
Andrej: Der hat da seine Artikelchen und schreibt da immer schön die Neuerungen rein.
Thomas: Du sagtest gerade Standard. Ist das auch neu im Standard oder ist es nur neu in diesem Matter-Server,
Andrej: Und da stand da was von Time Server.
Andrej: Ich habe direkt gefragt, ist das der Time Server, den ich hoffe, dass das der Time Server ist,
Andrej: dass er den Time Server, den ich über HACS installiert habe, jetzt ersetzt?
Andrej: Ja, es ist das.
Andrej: Das ist im Endeffekt die Möglichkeit, du kannst diese HACS-Matter-Time-Server-Geschichte jetzt deinstallieren
Andrej: und das ist integriert.
Andrej: Die Geräte kriegen ihre Zeit über den Matter-Server, den Default-Matter-Server, den du bei Home Assistant installiert hast.
Thomas: der da installiert ist, quasi bei Home Assistant? Weißt du das?
Andrej: Ja, klar, als ob ich das weiß.
Thomas: Okay, cool. Hauptsache es geht, weil das ist gut. Das hat mich auch unglaublich genervt. Ja, okay. Okay, okay. Sei einfach froh, dass du nicht irgendwie in der Maintainer-Rolle bist und dir das auseinanderbröseln kannst, wenn dir irgendjemand irgendwas reportet. In der und der Version geht's nicht. Version von was? Ja, aber ist cool, gut zu haben.
Andrej: Nee, ich weiß es nicht.
Andrej: Also kann sein, dass es im Matter-Standard ist,
Andrej: aber ich weiß jetzt nicht, was das für eine Version ist.
Andrej: Ist das die Matter-Version gewesen oder die matter.js?
Andrej: Habe ich jetzt nicht mal geguckt.
Andrej: Ich gucke mal kurz.
Andrej: Also es geht um die 9.1.0.
Andrej: Das ist das Home Assistant Add-on für Matter, der Matter-Server.
Andrej: Und in diesem wird der Matter-Server von 1.1.7 auf 1.2.6 gezogen.
Andrej: Und jetzt wird es wild.
Andrej: Dieser supportet Matter 1.6.0.
Andrej: Also, what?
Andrej: Ja, das ist jetzt auf jeden Fall supported.
Andrej: Wer das macht, ist mir auch egal.
Andrej: Genau, dachte ich, wäre eine coole Ankündigung.
Andrej: Dann kann man wieder eine HACS-Integration rausschmeißen.
Andrej: Und der Maintainer kann die wahrscheinlich auch einfach mal jetzt archiven,
Andrej: weil braucht man nicht mehr.
Andrej: Außer es gibt ein Feature, was der Standard-Matter-Server nicht hat,
Andrej: aber habe ich jetzt nicht gesehen.
Thomas: irgendwie, es schien halt so, das war
Thomas: das, glaube ich, was so besonders dran genervt hat.
Thomas: Ähm, Nerven ist jetzt
Thomas: übertrieben, aber es schien halt so, als wenn
Thomas: Uhrzeit synchronisieren ein gelöstes
Thomas: Problem sei. Und dann
Thomas: mit dem neuen IoT-Standard
Andrej: Null Uhr.
Thomas: stöpselst du dein Gerät an und
Thomas: die Uhrzeit driftet.
Thomas: Das war so, what? Ich muss ja
Andrej: Selbst Radiowecker aus den 80ern können,
Thomas: jetzt das händisch konfigurieren.
Andrej: ach, wahrscheinlich schon mal eher können das ja schon,
Thomas: Ja, aber schön.
Andrej: von daher war ein bisschen nervig.
Thomas: Ja, cool.
Andrej: Haken dran.
Andrej: Oh, wie heißt das?
Thomas: Also, ja, bin schon dabei,
Andrej: Kapitelmarke.
Andrej: Hast du gemacht?
Thomas: genau.
Andrej: Okay.
Thomas: Das war so geil. Okay, also, wir haben eine Nachricht bekommen nach der letzten Folge von, das sollte ich gerade gucken, ich glaube es war Sebastian, achso, ich muss auf alle Mailboxen suchen gehen, Sebastian, Sebastian, Sebastian, Sebastian, genau.
Thomas: Und die hat mich so unglaublich unterhalten und gleichzeitig habe ich mich so unglaublich dumm gefühlt, aber es war schön. Also, wir erinnern uns, in der letzten Folge hatte ich das Thema angebracht, aber diese Hitze hier in der Bude, diese Bewegungssensoren von Ikea, die funktionieren nicht mehr richtig. Ich muss 50 Zentimeter nah rangehen teilweise, damit die reagieren.
Thomas: Sebastian so, ja, das sind Infrarot-Sensoren.
Thomas: Wenn sich die Umgebungstemperatur deiner Körpertemperatur nähert, können die das nicht so gut erkennen.
Thomas: Und das war einfach nur mindblown.
Andrej: Ja, die haben halt einfach nur warm gesehen, ne?
Thomas: Das macht so Sinn.
Thomas: Und es ist so gut.
Andrej: Spannend wäre natürlich jetzt,
Thomas: Ja, ja, tatsächlich.
Andrej: ob die von Ikea oder die von Aqara
Andrej: oder wie auch immer du zu Hause hast,
Andrej: sich anders verhalten,
Andrej: aber Infrarot ist, Infrarot ist Wärmestrahlung.
Thomas: Also entweder die Aqara-Dinger, die hingen da sechs Jahre oder so.
Thomas: Also entweder hatten wir keinen so heißen Sommer, also nicht annähernd so heiß.
Thomas: Oder die kriegen es einfach ein bisschen besser hin, die sind einfach ein bisschen empfindlicher.
Thomas: Sie waren auch im Normalzustand in meiner Beobachtung etwas empfindlicher.
Andrej: Möglich.
Thomas: Vielleicht hat das den Unterschied schon gemacht, dass mir das nie aufgefallen ist.
Thomas: Oder die Hitze, ich weiß es nicht.
Thomas: Naja, also sehr geil, danke dafür.
Thomas: Nie drüber nachgedacht, macht Sinn.
Thomas: Und es hat tatsächlich nicht nur die Erkennung von den Myggspray betroffen.
Thomas: Ich habe die Dinger mit so einem Halter an die Wand geschraubt.
Thomas: Die Aqara-Teile, die haben ja diesen Sockel, den du so ein bisschen bewegen kannst und dann da drauf diesen Zylinder und die hatte ich immer nur festgeklebt und diesmal dachte ich mir, boah, das letzte, was du festgeklebt, wenn du es abnimmst, reißt sowieso die Tapete ab, also kannst du es auch gleich ranschrauben, ehrlich gesagt, also hinterlässt auch Spuren und vor allem, ich habe die kein einziges Mal unbewegt.
Andrej: Kugelgelenk.
Thomas: Also habe ich mir gedacht, komm, schraubst du mal ran. Und ich hatte so einen coolen Halter gefunden auf Maker World. Das ist einfach eine Fassung, wo du quasi dann diesen Myggspray von hinten reinklemmst. Du nimmst die eigene Klappe hinten ab, die äußere, und stattdessen klippst du den dann auf diese Schale. Und die hat dann eine Kugelfassung und auf der anderen Seite eben die Kugel, sodass du das halt quasi kugelgelagert drehen kannst und ausrichten kannst. Ziemlich cool, genau.
Andrej: Nice.
Thomas: Ja, ich habe es im PLA gedruckt und die haben alle runtergeguckt.
Andrej: Guck dir der runter.
Thomas: Die hingen alle runter, Kopf hängen lassen.
Andrej: Ja, die Toleranzen sind da sehr wichtig
Andrej: bei so einem Kugelgelenk, ne?
Thomas: Und am Anfang war das super rigid, würde ich sagen.
Andrej: Jetzt heißt es wohl Heißkleber dran.
Thomas: Das war echt fest.
Thomas: Du musstest richtig mit Kraft rangehen, um die zu bewegen.
Thomas: Und du hast sie einmal ausgerichtet und dann war es das.
Thomas: Ja, wahrscheinlich.
Andrej: Oder was auch immer.
Thomas: Ich habe es nochmal im PETG gedruckt und dachte, mir gibt es ja dem nochmal eine Chance.
Andrej: Meine Materialien ziehen sich zusammen
Thomas: Mal gucken.
Thomas: Nächster heißer Sommer oder so.
Andrej: und dehnen sich ja aus. Das ist ganz normal.
Andrej: Schade.
Thomas: Und wenn du jetzt dann dieses PLA, dieses Gelenk über die Kugel drehst,
Thomas: am Anfang war das halt, weil die Kugel natürlich, die ist ja in Layern gedruckt,
Thomas: das heißt, sie ist natürlich nicht super glatt.
Thomas: Und du hast das dann gespürt, es hat so wie so kleines Einrasten.
Andrej: Stufen. Geschmirgelt.
Thomas: Es waren natürlich keine Einrasten, genau, es waren die Stufen.
Thomas: So und nachdem das, sagen wir mal, das PLA hat sich geglättet.
Thomas: Es war butterweich.
Thomas: Du konntest das Ding bewegen, es hat nur nicht mehr eingerastet.
Thomas: Es war so ein bisschen wie der traurige Roboter Marvin.
Thomas: Ja, hat den Kopf hängen lassen.
Andrej: Aber so ein Tropfen
Thomas: Tja, genau.
Andrej: Heißkleber ist super cool, weil
Andrej: du kannst da dran machen, musst ja kurz warten.
Andrej: Aber der trocknet ja richtig schnell
Andrej: und das Coole ist, ist er abnehmbar.
Andrej: Das heißt, wenn der Winkel da nicht passt, kannst du einfach
Thomas: Du hättest denn, also du meinst einfach den Sensor, ach an der Kugel.
Andrej: abreißen wieder und es sieht nicht so
Andrej: mega scheiße aus, wenn man da dran kommt.
Andrej: An der Kugel. Einfach da, wo
Andrej: Ja, weil die richtige Menge Heißkleber, viele sagen, die richtige Menge ist, bis man nichts mehr sieht, aber die richtige Menge lässt sich auch echt relativ entspannt entfernen, wo dann das irgendwas kaputt geht. Schon echt viele Sachen mit gefixt. Echt? Und ausprobieren ist easy, weil diese Sticks kosten nichts und jeder hat solche. Ich habe hier so eine Schublade mit 50 Sticks, weil 50 waren billiger als 10. Und das, dann wollte ich da doch nicht.
Thomas: Ja, okay, das hätte ich vielleicht noch versuchen können.
Thomas: Ja, das stimmt.
Thomas: Die richtige Ausrichtung irgendwie merken sozusagen und dann kleben.
Thomas: Das habe ich von dir gelernt, seitdem ein paar Sachen mit Heißkleber befestigt.
Thomas: Ich weiß, einmal hat es
Thomas: nicht so den gewünschten Erfolg, aber ansonsten
Thomas: ist das eine super Sache, um das auch eben abnehmen
Thomas: zu können, wie du sagtest. Ja.
Andrej: fünf Minuten. Ja, das ist ja das Gute,
Thomas: Das Einzige Blöde ist halt, es ist immer relativ viel Aufwand.
Thomas: Du musst das Ding warm machen,
Thomas: es fängt vielleicht auch ein bisschen an zu oozen,
Thomas: dann musst du dann gucken, wo du das hinstellst
Thomas: und so. Also, mit Dingen, die
Thomas: nicht... Ja, das stimmt.
Andrej: ist ja egal, kannst alles wieder abmachen.
Thomas: Das stimmt. Was ist dein Makita-Aussatz?
Andrej: Ich wollte mir vielleicht, ich habe ja so einen mit
Andrej: hier an Steckdose,
Andrej: ich habe schon so lange überlegt, ich brauche den ja immer wieder,
Andrej: ob ich mir nicht einen hole, der meinen
Andrej: Makita-Aufsatz kann. Die gibt es bei Amazon
Andrej: für 20, 30 Euro oder so.
Andrej: So oft, wie ich da drangehe, wäre das schon
Andrej: geil, einfach Makita-Aufsatz dran,
Andrej: warm machen, fertig und
Andrej: hier einfach der Akku von Makita.
Thomas: Ach, okay. Okay, cool.
Andrej: Also was auch immer für ein Hersteller von Baumaschinen ihr habt,
Andrej: da gibt es wahrscheinlich beides.
Thomas: Hast du noch was Schönes gedruckt?
Thomas: In letzter Zeit. Hast du was für dein Rack gemacht, ne?
Andrej: Ach ja, oh mein Gott.
Andrej: Ja, ich habe parametrisch designt in FreeCAD
Andrej: und FreeCAD hat gesagt, nö, ist nicht parametrisch genug.
Andrej: Ich habe für meinen 10-Zoll-Rack,
Andrej: da war früher eine Fritzbox drin.
Andrej: Das ist so ein Rack, wo zwei 9-Zoll-Displays drin sind.
Thomas: Du weißt schon genau, wie oft es klingelt, ne?
Andrej: Eins für Home Assistant, eins für meinen Gaming-PC
Andrej: und das nehme ich halt mit zu Meetups & Co.
Andrej: und auch zu FrOSCon jetzt dieses Jahr.
Andrej: Und dort war eine Fritzbox drin
Andrej: und die Fritzbox lässt sich nicht so gut verwalten
Andrej: im Zuge von, oder einen Uplink geben.
Andrej: Die sind da sehr, sehr, ja, streng.
Andrej: Du kannst keinen WiFi-Uplink zum Beispiel geben.
Andrej: Dann habe ich mir einen von diesen Reiseroutern nochmal geholt,
Andrej: den ich ja für den Urlaub habe.
Andrej: Habe ich dann günstig bei Kleinanzeigen geschossen.
Andrej: Wir warten mal kurz auf den Katholenterror.
Andrej: So, und dann habe ich den Reiserouter...
Andrej: Ja, ja, zweimal bei halb.
Thomas: Oh, ah ja.
Andrej: Ja, genau, ich habe dann diesen Reiserouter geholt.
Andrej: Der hat natürlich nur zwei Ports, einen LAN und einen WAN.
Andrej: Das heißt, dafür brauchte ich auch einen Switch.
Andrej: Hatte ich noch in der Schublade rumliegen.
Andrej: Habe ich dann irgendeinen TP-Link-Switch mir geholt mit acht Ports.
Andrej: dann musste ich noch eins
Andrej: für das Home Assistant Blue
Andrej: drucken. Das heißt, drei von diesen
Andrej: mehr oder weniger ähnlichen, ne, vier. Und dann
Andrej: habe ich noch so eine Powerbank geholt, die
Andrej: nicht eine Powerbank, ein Power Supply,
Andrej: wo sechs USB-Cs sind und zwei
Andrej: USB-A, um alle oder die meisten
Andrej: Geräte aus dem Rack zu befeuern mit
Andrej: Strom. Funktioniert alles sehr gut,
Andrej: nur das Drucken, das war painful,
Andrej: aber ich glaube, ich habe acht Stunden oder so dafür gebraucht.
Andrej: Nicht fürs Drucken, sondern fürs Design,
Thomas: Das kann ich mir ja gar nicht vorstellen.
Andrej: weil, weil, ja,
Andrej: Weil man Kika hat echt, muss man echt aufpassen, wie man das bedient.
Andrej: Also mein Learning ist jetzt daraus, keine einzige Bemaßung zu machen,
Andrej: die irgendwie auf was anderes abzieht, außer die XYZ-Achsen und die XYZ, also XZ, YZ und so weiter, die Ebenen.
Andrej: Sonst hast du beim Skalieren von irgendwelchen Sachen hast du immer Probleme.
Andrej: Das hat mich so genervt.
Thomas: Nein, also, was ich meinte ist,
Thomas: ich kann mir echt nicht vorstellen, so zu arbeiten.
Thomas: Ich arbeite komplett anders.
Thomas: Ich klicke mich da so durch.
Thomas: Ich versuche viel Master-Sketch zu machen
Andrej: Ich habe halt angefangen, ich habe die Frontplatte genommen und davon habe ich nur die Hälfte designt,
Thomas: und dann nur gewisse Dinge auszuwählen
Thomas: und zu extruden oder zu pocketieren oder sowas.
Thomas: Aber vielleicht sollten wir mal zusammen
Andrej: weil es ja symmetrisch, gespiegelt.
Andrej: Okay, habe ich auf einer Ebene gemacht.
Andrej: Dann habe ich den Rahmen gemacht.
Andrej: Ich habe den Item Holder, habe ich das genannt?
Andrej: Was ich da reintue, war im Endeffekt ja viermal das Gleiche,
Andrej: nur andere Maße.
Andrej: Das waren andere Komponente,
Andrej: die ich dann abhängig von der Dicke der Front Plate machen musste.
Andrej: Das heißt, das war dann auch berechnet direkt,
Andrej: mit Variablen an der Mpazap.
Andrej: Dann habe ich die Base Plate gemacht,
Andrej: die abhängig von der Breite als auch der Tiefe
Andrej: des Item Holder
Andrej: Rahmens ist. So, und das hat auch
Andrej: eigentlich super funktioniert, aber sobald du dann anfängst
Andrej: mit Fillets und mit Holes und hier und da,
Andrej: dann musst du voll aufpassen, auf was du
Andrej: dich beziehst, weil wenn du dann nach diesen
Andrej: Grundfunktionen etwas abänderst,
Andrej: wo dein Power Supply
Andrej: Loch sein muss, für dein Kabel
Andrej: oder so, dann musst du echt aufpassen.
Andrej: Und die Fillets musst du sowieso jedes Mal
Andrej: neu machen. Und damit das überhaupt
Andrej: gedruckt werden konnte, habe ich dann tatsächlich
Andrej: im FreeCAD-Forum auch gefragt, ich habe das
Andrej: exportiert und ich habe irgendwie nur
Andrej: so, weiß nicht, 50%
Andrej: meines Modells bekommen, was ich dann bei
Andrej: Bambu Slicer gesagt habe, so hä?
Andrej: Wenn du drei oder mehrere Komponenten hast,
Andrej: musst du die erst mal zusammenführen,
Andrej: dass das nachher ein Objekt ist.
Andrej: Und dann kannst du das große Objekt,
Andrej: wo die ganzen Einzelmodelle
Andrej: gebaut drin wurden, kannst du dann
Andrej: exportieren als großes
Andrej: 3MF, oder? 3MF heißt das?
Thomas: eine FreeCAD-Session machen.
Thomas: Entweder mache ich was anders.
Andrej: Willst du jetzt von mir lernen oder mache ich Scheiße?
Thomas: Also bei mir knallt es auch ständig bei
Thomas: eins von beiden.
Thomas: Also entweder lerne ich was
Andrej: Ja, ich habe halt ein bisschen viel
Thomas: oder du machst Dinge sehr kompliziert.
Thomas: Die, ja, vielleicht.
Andrej: Solidworks und Autodesk
Andrej: wie heißt das?
Andrej: Designer hieß das damals? Ja.
Andrej: Davon habe ich halt wie Denkweise wahrscheinlich noch übrig.
Thomas: Damit hatte ich nie Kontakt.
Thomas: Ich habe mit FreeCAD angefangen,
Andrej: Ich kann dir mal zeigen, das Modell, was ich gemacht
Thomas: ein bisschen OpenSCAD gemacht
Thomas: und wieder zurück zu FreeCAD.
Thomas: Zeigst du.
Andrej: habe. Vielleicht hast du ja eine Idee. Oder?
Andrej: Machen wir mal. Aber nicht im Podcast, ist das
Thomas: Ja, genau.
Andrej: nicht so spannend.
Thomas: Wie wir hier sehen.
Andrej: Nächstes Thema?
Thomas: Okay, cool.
Thomas: Ich habe noch eine kleine Sache zum 3D-Druck
Thomas: und zwar,
Thomas: Ich habe hier im Büro so Hohlräume, also das Büro hat halt so ein Spitzdach und das geht aber nicht bis zum Boden direkt runter, da ist so ein Meter 20 vielleicht hoch an den Rändern und da haben wir dann so Hohlräume gemacht, einfach OSB-Platten und du kannst die aufmachen und da kommst du rein und so weiter.
Thomas: Und da lagere ich so ein bisschen Werkzeug und sowas und dann ist mir irgendwann der Gedanke gekommen, alles was da drin ist in den Räumen, das purzelt, querbeet und es ist immer schwer an die Sachen ranzukommen, man muss sich total verbiegen, vor allem wenn du eine gewisse Höhe hast, Körperhöhe, macht gar keinen Spaß.
Thomas: Also ist mir eingefallen, ich könnte ja anfangen, mir mal so Haken zu drucken, die ich vielleicht sogar an die OSB-Platten von der Innenseite befestige.
Thomas: Und dann kann ich Dinge aufhängen wie einen Akkubohrer oder Schrauber.
Thomas: Also diese gesamte, das träge Köfferchen oder sowas.
Thomas: Mega geil, habe ich gemacht.
Thomas: Und dann war der nächste Gedanke, die Tür selber, wenn man sie aufklappt, hat halt in dem Raum ziemlich viel Platz.
Thomas: Und ich habe sehr viele Spaxschrauben-Behältnisse.
Thomas: Also, es ist ja eh die Erkenntnis schlechthin, ne?
Thomas: Man braucht auf jeden Fall gutes Werkzeug, dann macht das Ganze auch viel Spaß.
Thomas: Und meine Erkenntnis auch, du brauchst halt auch ein Riesensortiment an Spaxschrauben, damit du einfach für jede Konstellation was da hast.
Thomas: Sehr geil.
Thomas: Die sind jetzt da, aber die stehen halt quasi im Hohlraum ganz vorne auf dem Boden.
Thomas: Das heißt, immer wenn ich einen Werkzeugkoffer rausschiebe, muss ich die immer erstmal alle zur Seite nehmen.
Thomas: Das hat mich so genervt.
Andrej: Da macht man halt so Sachen nicht,
Andrej: wie mal schnell was aufhängen oder sowas.
Thomas: Richtig. Ja. Also dachte ich mir, okay, komm, dann machst du auf die Innenseite irgendein Befestigungssystem, wo ich dann zumindest diese Spaxschrauben-Behältnisse irgendwie in Behälter reinstecken kann und dran befestigen kann.
Andrej: Ja, ja.
Thomas: Wie machst du das? Wie wäre es mit Open Grid? Das ist ja eigentlich genau für sowas gedacht, was auch so ein bisschen was tragen kann.
Thomas: Habe ich mir mal ausgerechnet, wie viel Kilofilament ich nur für das Grid an der Tür bräuchte.
Thomas: Habe ich keine Lust mehr.
Andrej: Viel.
Thomas: Ja, also ich weiß nicht mehr genau die Zahl, aber die Tür, die hat vielleicht so,
Andrej: Okay, nee, nee. Einfach eine Fase.
Thomas: wie gesagt, 1,20 Höhe und sagen wir mal mindestens 80 Breite, aber es könnte auch ein Meter sein.
Thomas: Ich kam so grob auf 6 Kilo, 6 Spulen.
Thomas: Dachte ich mir, nein, das mache ich nicht.
Thomas: Und habe stattdessen mich nochmal an, habe mich einfach nochmal an FreeCAD gesetzt und gedacht,
Thomas: okay, ich habe an einigen Stellen mit so French Cleat gearbeitet.
Thomas: Das sind diese Klemmleisten, wo du einfach nur eine Leiste an die Wand schraubst
Thomas: und die hat halt auf der Seite, auf der Wandseite oben, so eine 45 Grad Abschrägung nach unten.
Thomas: Und da kannst du Dinge, eine Fase, ja, danke.
Thomas: Und da kannst du Dinge einfach reinhaken, hin und her ziehen.
Thomas: Macht man halt anscheinend viel in Werkstätten.
Thomas: Klemmleiste auf Deutsch, so.
Thomas: Dann dachte ich mir, komm, designst du das nochmal.
Thomas: Hab ich schon oft gemacht in FreeCAD, weil ich da schon vieles mit befestigt hab an verschiedenen Stellen.
Thomas: und versuchst es mal auf minimal Material zu reduzieren
Thomas: und das hat auch wunderbar geklappt.
Thomas: Also eine Leiste, die irgendwie 70 cm breit ist,
Thomas: bestehend halt aus drei Teilen.
Thomas: Also die Leiste hat dann so ein Element,
Andrej: Ja, die brauchen ja nichts, weil es so plan ist.
Thomas: wo du so ein Verbindungsstück reindrücken kannst,
Thomas: damit du die gerade anschrauben kannst.
Thomas: Damit du also quasi 3 x 23 cm aneinander dingeln kannst
Thomas: und dann schraubst du die gerade ein und zack, alles ist gut.
Thomas: Das war die Idee, hat auch gut funktioniert.
Thomas: Und jede dieser Leisten keine 20 Gramm Filament.
Thomas: Das heißt, du hast dann irgendwie 50 bis 60 Gramm.
Andrej: Und du musst ja auch, das ist easy,
Thomas: Ja, genau.
Thomas: Stabilität brauchst du nicht groß.
Thomas: Ich glaube, drei Wände reicht locker an der Stelle.
Thomas: Ein bisschen Infill rein.
Thomas: Aber so Standard, Kubik, 15 Prozent und so.
Thomas: Und da habe ich dann als erstes mal einen kompletten Werkzeugkoffer voller Spax dran gehangen.
Thomas: Der Haken selber hat dann leider auch nochmal 50 Gramm Filament geschluckt,
Thomas: weil der musste eine gewisse Breite haben.
Thomas: Aber davon abgesehen, es ist sehr materialschonend.
Andrej: gegenüber 6 rollen.
Thomas: Also ja, also Open Grid hat da leider keinen Sinn gemacht.
Andrej: Ja gut, die Flexibilität hast du
Thomas: Auch wenn ich das System toll finde irgendwie.
Thomas: Die Light-Variante hätte glaube ich nicht, nee genau, nicht ganz so.
Andrej: jetzt halt dafür nicht. Oder nicht ganz so.
Thomas: Also ich müsste mir jetzt halt mehrere von diesen Leisten,
Thomas: aber ehrlich gesagt mehr als 200-300 Gramm an Leisten mache ich mir an die Tür nicht ran
Thomas: und dann habe ich genug Flexibilität für alles.
Thomas: Und bei den sechs Spulen, da war ja noch nicht dabei die Behältnisse.
Thomas: Also das Spaxzeug wollte ich, also du musst es entweder umfüllen oder du musst es halt mitsamt der Packung irgendwo reinstellen.
Andrej: Ich habe mitgebracht zwei Themen.
Thomas: Das musst du auch nochmal drucken, das macht auch nochmal viel aus.
Thomas: Ja, wollte ich nochmal erwähnt haben.
Thomas: Also ich mag dieses Klemmleisten-System total gerne.
Thomas: Und da gibt es auch viele Modelle schon fertig.
Thomas: Ich wollte es einfach nur möglichst klein haben.
Thomas: Deswegen, es hat irgendwie eine Tiefe von 7 Millimeter, eine Höhe von, ich glaube ich kam auf 17 oder sowas.
Thomas: Und damit ist das sehr, sehr sparsam.
Thomas: So, was hast du da Schönes?
Andrej: Einen hoffentlich eher kürzeren
Andrej: mit SSH-Keys und FIDO2
Andrej: und YubiKey. Und NixOS
Andrej: kommt gleich. Aber machen wir erst SSH-Keys.
Thomas: Wahrscheinlich nicht so, wie du das jetzt besprechen möchtest, weil du hast was von FIDO2 erzählt
Andrej: Hast du
Andrej: schon mit YubiKeys SSH-Keys
Andrej: gemacht? Ja?
Thomas: und meine Variante bis jetzt war einfach nur, den Key in den Passwort-Safe reinzupacken
Thomas: und den Passwort-Safe quasi dann mit Touch-ID oder irgendwas Biometrischem abzusichern.
Andrej: Okay, dann machen wir mal FIDO2.
Andrej: Da habe ich nämlich letzten, ich habe das vor Jahren
Andrej: schon mal gemacht, aber irgendwie
Andrej: nie gemacht. Also ich habe den Key erstellt, aber
Andrej: nie benutzt. Aber jetzt habe ich
Andrej: mich nochmal damit beschäftigt, weil ich das ganz interessant fand.
Andrej: Und zwar gibt es da,
Andrej: du kannst mit dem YubiKey, kannst du
Andrej: einen SSH-Key generieren. Auf
Andrej: zwei verschiedene Arten und Weisen.
Thomas: Das hat er nicht antizipiert.
Andrej: Noch einmal kurz, danke
Andrej: Katholin. Und zwar gibt es
Andrej: einmal die sogenannten Non-Resident und die
Andrej: Resident-Keys. Und
Andrej: das sind quasi SSH-Keys,
Andrej: auch mit, gibt es mit
Andrej: RSA als auch mit
Andrej: Ed25519.
Andrej: Das geht mir so auf den Keks
Thomas: Haben die kein Mute? Kann man da nicht Do Not Disturb machen?
Andrej: mit dieser Kirche hier.
Andrej: Wir haben hier 100...
Andrej: Keine Ahnung.
Andrej: Die bimmeln hier manchmal einfach 20 Minuten
Andrej: und kommen halt los und dann haben wir...
Thomas: Es ist auch nur ein paar Meter bei euch, ne? Also 50 oder was?
Andrej: Das ist am Fenster sind das 100 Dezibel.
Andrej: Habe ich mal durchgemessen. Das ist schon echt laut.
Andrej: Ja, gefühlt 10.
Andrej: Nee, weniger. Also Luftlinie 10.
Thomas: Noch weniger.
Andrej: Und das ist das Dachfenster.
Andrej: Na egal, ich habe das Fenster jetzt zugemacht.
Andrej: Ich werde vielleicht währenddessen ersticken, aber
Andrej: den Tod müssen wir halt sterben.
Andrej: dafür, dass die Katholen ihre Sachen hier ausleben können.
Thomas: Dafür haben wir vor allem auch nicht in den heißen Tagen aufgenommen,
Thomas: weil das konnte ich mir wirklich nicht vorstellen, hier im Büro zu sitzen.
Andrej: Naja, machen wir noch mal vorne.
Thomas: Das ging nicht.
Andrej: Non-Resident und Resident Keys.
Andrej: Und zwar, warte, wie war das nochmal?
Andrej: Ach ja, und zwar, der Non-Resident Key,
Andrej: den kann man erzeugen, gibt es mit RSA,
Andrej: hat es auch mit Ed25519 irgendwas.
Andrej: Ich vergesse das immer, die Zeichenfolge.
Andrej: Also beide Typen, je nachdem, welche Firmware euer YubiKey hat,
Andrej: kann der halt vielleicht nicht den neueren.
Andrej: Muss man mal drauf achten.
Andrej: Und so wie ich das jetzt im Kopf habe, ist das so, dass bei dem Non-Resident-Key habt ihr quasi nicht den SSH-Key per se auf dem System.
Andrej: Ihr habt schon, aber es ist quasi ein Teil des SSH-Keys.
Andrej: Der generiert euch natürlich den Private-Key und den Pub-Key, aber du brauchst den YubiKey und die Datei, die du auf deinem Rechner generiert hast, um den gesamten Private-Key zu generieren.
Andrej: Was macht das interessant?
Andrej: Und zwar SSH, Agent Forwarding, ist sicher.
Andrej: In dem Sinne, weil wenn du dich auf einen Server tunnest,
Andrej: wo du mit vielen Kollegen drauf bist oder teilst das mit Freunden oder so
Andrej: und du machst Agent Forwarding, dann ist ja im RAM dein Key halt.
Andrej: So nicht, weil nur der Teil im RAM ist, der auch auf deinem System drauf ist,
Andrej: aber nicht der Teil des YubiKeys, der Hardware.
Andrej: Fand ich irgendwie ganz spannend, das Konzept.
Andrej: Nachteil ist natürlich, du brauchst beides.
Andrej: Ist natürlich auch der Vorteil von der Sicherheit her.
Andrej: Du brauchst beides.
Andrej: Das ist ja was haben und was wirklich physisch ist,
Thomas: Und du brauchst es vor allem auch jedes Mal, weil es kann ja nicht gecached werden.
Andrej: weil das Digitale kann dir ja geklaut werden.
Andrej: Ja, genau.
Thomas: Dementsprechend bei jedem SSH-Key-Use.
Andrej: Es gibt so ein paar Tricks, wo ich gesehen habe,
Andrej: dass man so eine Art Timeout reinpacken kann.
Andrej: Da muss ich mir noch ein bisschen mehr einlesen,
Andrej: weil es nervt mich schon wirklich jedes Mal,
Andrej: diesen SSH, den YubiKey da anzufassen.
Andrej: Genau.
Andrej: Und der Resident Key, der ist auch interessant.
Andrej: Der ist der quasi, das ist quasi der Key, der dann auch auf der Festplatte liegt und du kannst, das Problem bei dem ist oder der Vorteil, diese Datei, die du beim Non-Resident hast, wenn die weg ist, ist die weg, du brauchst einen neuen Key.
Andrej: Bei dem Resident-Key kannst du die immer generieren lassen.
Thomas: Du brauchst also am Ende wirklich nur den YubiKey.
Andrej: Das heißt, jemand, der dein Key hat, kann mit SSH-Keygen-Uppercase-K
Andrej: kann dann dieses Ding generieren und hat dann quasi Zugriff auf deine Systeme.
Andrej: Genau, ist aber dafür mit einem großen Vorteil versehen, super portabel.
Andrej: Du kannst den mitnehmen, den Key, von deinem Desktop an deinen Laptop
Andrej: und musst nichts drüber kopieren, nichts machen.
Andrej: Richtig cool.
Andrej: Also haben bei, da wüsste ich nicht, ob der das unterstützt,
Thomas: Aber dafür würde ich das dann vielleicht eher nur mit dem Bio-YubiKey machen,
Thomas: der ja auch selber einen Fingerprint-Sensor hat und nicht nur Touch.
Andrej: weil der Bio hat ja viel weniger Funktionen.
Thomas: Achso, okay. Bin da leider auch nicht tief genug.
Andrej: Ich weiß nicht, ob der FIDO2 kann.
Andrej: Der Bio ist ja, nee, der Bio kann, glaube ich,
Andrej: keinen Pass dieser ganzen Smartcard-Features
Andrej: und OpenSS, äh, nicht OpenSS, sondern OpenPGP oder so.
Andrej: Bin ich mir auch nicht sicher.
Thomas: Moment, das heißt, du musst den Key nur reintun und du musst ihn nicht jedes Mal bestätigen?
Andrej: Der Bio ist auf jeden Fall ein bisschen runtergestrippt dran.
Andrej: Kann sein, dass der FIDO2 kann.
Andrej: Genau, und das fand ich ganz interessant.
Andrej: Du kannst aber auch, wenn du bei der Generierung
Andrej: ein paar Flags angibst, kannst du sagen,
Andrej: hey, ich hätte gerne einen Verify-Required-Pin.
Andrej: Das heißt, du brauchst immer den Touch.
Andrej: Aber du kannst auch sagen, ich hätte einen Non-Touch-Required.
Andrej: Und das ist natürlich dann auch interessant für Skripte,
Andrej: für ein Backup-Skript.
Andrej: Dann erzeugst du dir halt so einen kleinen Non-Touch-Required-Key
Andrej: und solange der Key drin ist, läuft das Backup,
Andrej: ziehst den Key raus, läuft das Backup nicht,
Andrej: weil da ist kein Zugriff mehr drauf.
Andrej: Ja, genau.
Andrej: Es gibt Non-Touch-Required.
Andrej: Das ist ein Minus-O, No-Touch-Required.
Thomas: Geil, dann hast du so einen Dongle-Modus, ne?
Andrej: Fand ich auch ganz interessant.
Andrej: habe ich einfach im Zuge, ja, ein bisschen
Andrej: so, ein bisschen unauthenticated,
Andrej: ne, im Endeffekt nichts anderes, als wenn du dann
Thomas: Ja, ich habe übrigens mal nachgelesen.
Andrej: SSH-Key generierst und den
Andrej: einfach ohne Passwort für Automatisierung machst,
Andrej: aber halt mit Key, ne, den du halt rausziehen
Andrej: kannst. Fand ich ganz cool. Okay.
Thomas: Ach, gelesen. Geskimmt.
Thomas: Nachgeskimmt. Es gibt YubiKey Bioseries FIDO-Edition.
Thomas: Und es gibt eine Multiprotokoll-Edition und anscheinend unterstützen die beide FIDO.
Thomas: Also vielleicht ist das... FIDO ist vielleicht das Basismodell.
Thomas: Aber so viel habe ich es jetzt auch nicht gelesen.
Thomas: Es ist nur bestätigt zumindest, geht wohl auch damit.
Thomas: Weil gerade wenn du so einen Key hattest, wo du wirklich nur den Key brauchst
Thomas: und keinen lokalen Teil, keinen zweiten Faktor, wäre das natürlich relevant.
Andrej: Genau, sehe ich auch so. Ja, also wenn du
Andrej: den Resident-Key hast, dann solltest du schon den
Andrej: Bio nehmen, dann kann dir jemand,
Andrej: der den Key klaut, halt tatsächlich
Andrej: nicht nutzen, wenn dein Fingerabdruck eigentlich dabei ist.
Andrej: Außer der klaut dir halt deinen Daumen, ne, von daher
Andrej: ist das auch egal.
Thomas: Ist noch, also ich sehe da eine gewisse Hürde.
Andrej: Also, da muss man auch überlegen, ne,
Andrej: wenn dir jemand deinen Key klaut, dann kann er dir auch deinen Daumen
Andrej: klauen, wenn er Bock drauf hat.
Andrej: Da gibt es doch diesen XK...
Andrej: Kennst du diesen XKCD mit dem...
Andrej: mit dieser Security-Sache?
Thomas: Ich glaube nicht.
Andrej: Nee, ich hab... Wir müssen die Nummer nach raus...
Thomas: Du kannst ihn zwar jetzt hier nicht zeigen, aber du kannst ihn mir sagen und wir nehmen mal ein Lachen auf.
Andrej: Es ist mit einem Hammer.
Andrej: XKCD
Andrej: Hammer Security, glaube ich.
Andrej: Gucken wir als erstes... Ja, da ist er.
Andrej: Irgendwie sowas von...
Andrej: Hey, this laptop is encrypted. Let's build a million-dollar
Andrej: cluster to crack it. No good! It's
Andrej: 4096-Bit-RSA.
Andrej: Best you blast, or
Thomas: Ja, der physische Teil.
Andrej: evil plan is foiled. Und dann, ja, hier ist
Andrej: der Schraubenschlüssel, mit dem du den Kopf einschlagen
Andrej: kannst hier. Hol dir, hol das Passwort.
Andrej: Schraubenschlüssel im Baumarkt, 15
Andrej: Euro. Genau, ich fand das einfach
Andrej: interessant, weil ich mir diese Keys aufgesetzt
Andrej: habe. Und was auch geht,
Andrej: selbst noch nicht gemacht, steht
Andrej: aber jetzt an die nächsten Wochen irgendwann mal,
Andrej: du kannst die auch für LUKS Encryption
Andrej: benutzen. Also,
Andrej: fand ich dann auch ganz nett. Ein bisschen praktischer für
Thomas: Ja, das ist gut.
Andrej: den Laptop halten, finde es aber jetzt nicht so, dass du immer hingehen musst
Andrej: und einmal touchen. Und ist auch ein bisschen
Andrej: in Pointless da ein No-Touch-Required
Andrej: dann hinzupacken.
Andrej: Ja, ne, fast gar nicht.
Thomas: Hast du, was ist denn der Grund, warum bist du jetzt auf den YubiKey wieder so gekommen?
Thomas: Du hattest den die letzten Jahre nicht so intensiv in Benutzung, oder?
Andrej: Ich weiß nicht, hatte ich Bock drauf und lag hier rum und weil ich
Andrej: meinen Desktop halt neu gemacht habe, dann dachte ich, komm,
Thomas: Okay.
Andrej: dann probiere ich es mal und mache es mal richtig.
Andrej: Zu dem Thema
Thomas: Ich habe mich nämlich ein bisschen, also meine, ich habe es eine Zeit lang sehr intensiv genutzt.
Andrej: LUKS mit...
Thomas: Aber dann waren die praktischen Faktoren, haben zu viel Gewichtung bekommen.
Thomas: Also ich glaube, ich hatte es schon mal erwähnt, wenn du abends auf der Couch sitzt und bist belagert von Frau und Hund oder sowas.
Thomas: Und du brauchst deinen YubiKey, der am Schlüsselbund unten an der Eingangstür hängt,
Thomas: nur damit du dich jetzt hier irgendwo einloggen kannst.
Thomas: Sehr nervig.
Thomas: Und ich habe jetzt so einen Mittelweg für mich gefunden, der noch funktioniert.
Thomas: Kommen wir später zu.
Thomas: Es gibt nämlich bei Strongbox, das ist die KeePass-Software für iOS und macOS,
Thomas: da gibt es die Möglichkeit, einen virtuellen Key anzulegen.
Thomas: Du gibst also quasi das Secret ein, was deinen YubiKey generiert hat
Thomas: und hast dann auf beiden Seiten
Thomas: dasselbe. Und der ist biometrisch
Thomas: gesichert, also in der sicheren
Andrej: Ja, und
Thomas: Enklave vom Mac.
Thomas: Und dann musst du halt Touch-ID. Ist natürlich nicht
Thomas: ganz so sicher, natürlich, aber weil es
Thomas: halt in der Enklave drin ist,
Thomas: bilde ich mir ein, also
Thomas: nicht nur bilde ich mir ein, hast du zumindest
Thomas: den Effekt, dass wenn sich jemand auf deiner Kiste
Thomas: doch irgendwie einloggt
Thomas: und
Thomas: das alleine reicht ja nicht von außen.
Thomas: Also er müsste immer noch den Finger haben.
Thomas: Na gut.
Andrej: bei mir ist das gerade praktisch, ich habe
Andrej: zwei gleiche YubiKeys
Andrej: von der Version her und einer steckt im Desktop
Andrej: fest drin, einer im Laptop. Ich überlege
Andrej: mir, ob ich mir so ein USB-Verlegungskabel
Andrej: einfach hier auf den Tisch lege und dann
Andrej: habe ich halt einfach eine praktische, ein bisschen
Andrej: wie Fingerabdruck beim MacBook, das ist ja auch super
Andrej: praktisch. Beim Framework nutze ich es
Andrej: nicht, weil es funktioniert beim Anfänger
Andrej: irgendwie nicht. Ich bin da nicht so happy mit.
Thomas: Okay. So, jetzt hatte ich dich unterbrochen. Du wolltest irgendwas mit LUKS, glaube ich, sagen. Irgendein Filmname, oder? Nein? Okay. Gibt's denn da noch einen anderen Faktor? Oder ist es wirklich so, wenn der Server da ist und der Client anfragt, Attacke.
Andrej: Das ist meine persönliche Erfahrung.
Andrej: Im Internet sagen andere Leute Besseres.
Andrej: Ich habe auch immer mit meiner rechten Hand
Andrej: generell, also mit dem rechten Daumen immer Probleme
Andrej: bei dem Aqara-Schloss, aber mit
Andrej: meinem linken geht es. Keine Ahnung,
Andrej: vielleicht bin ich rechtstrocken getrocknet oder sowas.
Andrej: Genau, LUKS geht auch
Andrej: und dann dachte ich so, okay,
Andrej: das kommt gleich noch zu dem anderen Thema, was ich habe,
Andrej: aber das ziehe ich mal vorweg, weil es gerade thematisch passt.
Andrej: Und ich habe ja meinen Server auch verschlüsselt mit LUKS,
Andrej: alle Platten mache ich schon seit Jahren, immer.
Andrej: Hatte ich, glaube ich, auch schon mal erwähnt.
Andrej: Aber es war ein bisschen nervig, weil, gut, bei Proxmox kann es halt passen,
Andrej: ein Tipp mit einer Konsole, aber das macht auch keinen Spaß.
Andrej: Und jetzt bin ich über ein Projekt gestoßen, das ist auch schon ein bisschen älter,
Andrej: aber ich habe davon nie gehört.
Andrej: Kennst du LUKS, Clevis & Tang oder Tang & Clevis?
Andrej: Schon mal davon gehört?
Andrej: Ja, nee, Tang ist der Server, Clevis ist der Client.
Andrej: Und im Endeffekt ist das nichts anderes als über Netzwerk eine LUKS-Entschlüsselung oder Verschlüsselung natürlich auch und das funktioniert so, der Server ist super klein, läuft irgendwo und Clevis als Client nistet sich ein in den Bootprozess als mögliche und die fragen was an.
Andrej: Ich habe mir eineinhalb Stunden
Andrej: Talk dazu angekollt. Die erste Stunde
Andrej: ging um den mathematischen
Andrej: Mechanismus, warum das sicher ist.
Andrej: Weil ich das im Gehen gemacht habe,
Andrej: nur Kopfhörer, und die Slides dazu nicht gesehen habe,
Andrej: habe ich das überhaupt nicht verstanden.
Andrej: Ich weiß nur, dass
Andrej: wenn du den Client klaust, hast du
Andrej: kein Secret, womit du das LUKS entschlüsseln kannst.
Andrej: Wenn du den Server klaust, hast du auch kein Secret,
Andrej: womit du das entschlüsseln kannst. Das ist so eine mathematische
Andrej: Geschichte. Keine Ahnung.
Andrej: Da kann man sich ja mal reinziehen. Auf jeden Fall,
Andrej: solange dieser Server halt verfügbar ist,
Andrej: kannst du einfach einen Slot enrollen in LUKS
Andrej: und das Ding macht es automatisch.
Andrej: Und das Ding läuft auch in Raspberry Pi.
Andrej: Das braucht gar nicht viele Ressourcen.
Andrej: Das ist total spannend.
Andrej: Da wurde ich dann richtig fuchsig.
Andrej: Da können wir gleich, ja, vielleicht gut.
Thomas: Aber ja, das ist natürlich das Problem, ne? Also ich habe das hier auch und das ist zum Glück nur bei dem Host, der auch ein PyKVM angeschlossen hat. Da kann man dann zur Not darüber rauf, also nicht zur Not, sondern das ist dann halt der Weg. Oder ich habe das zweierlei gelöst. Also das habe ich als eine Variante.
Andrej: Ja, du kannst, glaube ich,
Andrej: oh warte, das weiß ich nicht.
Andrej: Ich meine, du kannst das mit dem TPM auch zusammen machen.
Andrej: Das heißt, der Client, Clevis, muss ein Secret bekommen,
Andrej: als auch der TPM muss verfügbar sein.
Andrej: Das heißt, an der Hardware wurde nicht rumgefummelt.
Andrej: Und dann, ich glaube, das heißt
Andrej: ein Shamir Shared Secret, dieses SSS.
Andrej: Gibt es ja diese
Andrej: Gibt es ja diese Secrets
Andrej: Geschichten, wo du sagst, okay,
Andrej: es gibt fünf Leute, die haben ein Secret,
Andrej: drei davon müssen da sein, damit das jetzt
Andrej: entschlüsselt wird. Solche Sachen gibt es ja.
Andrej: Ich glaube, das heißt Shamir Secrets.
Andrej: Und ich meine, das kannst du damit auch konfigurieren.
Andrej: Ich fand das super spannend. Ich werde das, glaube ich, machen.
Andrej: Also ich bocke auf den Moment, mal rumzuspielen.
Andrej: Also wer mal Bock hat auf Festplattenverschlüsselung,
Andrej: aber kein Bock hat, hier jetzt mal
Andrej: Passwort einzutippen, was ich voll nachvollziehen kann,
Andrej: Wenn mal so ein Reboot oder Stromausfall,
Andrej: dann musst du halt da hin, ne?
Andrej: Gut, bei Stromausfall ist sicher das Problem,
Andrej: dass der Tang-Service halt eher da sein muss
Andrej: als sein Clevis, der die Anfrage schickt.
Andrej: Aber wenn das, das ist
Andrej: echt nur ein kleines Binary, soweit ich weiß,
Andrej: oder kleiner Miniserver, dann
Andrej: lohnt sich das ja vielleicht mal, da Zeit zu investieren.
Andrej: Ja. Ja, dann musst du aber den Schlüssel
Thomas: Die andere Variante ist, das Root-Datei-System ist nicht verschlüsselt, du kannst das System ganz normal starten, aber alles, was irgendwie mit Payload zu tun hat, also das gesamte Docker-Volume quasi, also das Überverzeichnis, das Parent-Verzeichnis, wo das ganze Docker-Kram drin ist, das alles liegt auf einem verschlüsselten Volume.
Thomas: in dem Fall ZFS, aber das spielt keine Rolle.
Thomas: Und der Schlüssel, den musst du dann halt entweder nach dem Boot händisch eingeben mit SSH
Thomas: oder du kannst den auch potenziell verschlüsselt zum Beispiel in einem eCryptfs lagern,
Thomas: aber dann wird es schon ein bisschen komplexer.
Andrej: wieder wohin tun, ne? Das ist ja mal das
Thomas: Das eCryptfs entschlüsselt sich, glaube ich, alleine schon dadurch,
Andrej: Problem. Ach so, okay, ja, kann sein.
Thomas: dass du dich anmeldest mit deinem Benutzernamen und Passwort mit PAM quasi.
Thomas: Ich meine, so war es.
Andrej: Aktuell mache ich's, ich
Thomas: Ja, okay.
Andrej: hab noch leider Proxmox,
Andrej: das heißt, da muss ich's eintippen.
Andrej: Dann wird mein Root-Endschlüssel bootet
Andrej: und auf meinem Root liegt der Key für meine Disks,
Andrej: für mein Hard-Disk-Array, für mein RAID.
Andrej: Und das mache ich mit, ich glaube, /etc/crypttab ist das, glaube ich.
Andrej: Da kannst du das halt hinterlegen.
Andrej: Und natürlich habe ich immer noch die Möglichkeit,
Andrej: das per Hand abzutippern, wenn ich Bock habe.
Thomas: Da muss ich jetzt gerade wieder an dieses neue MacOS-Feature denken.
Andrej: Nur ist das sehr, sehr lang und das werde ich nicht tun.
Andrej: Vor allem nicht in einer Konsole, wo du nicht mal Feedback bekommst.
Thomas: Ich weiß nicht, ob das 26 oder 27 war, wo sie eingebaut haben,
Thomas: dass wenn du verschlüsselte Disks hast auf einem Server
Thomas: und der dann bootet, dass du per SSH schon draufkommst,
Thomas: damit du entschlüsseln kannst.
Andrej: Ach, das gibt es auch schon für Linux.
Andrej: Das heißt, da kannst du Dropbear-SSH für nehmen.
Thomas: Ah, nice.
Andrej: Das ist ein kleiner SSH-Client, Dropbear heißt der.
Andrej: Und der startet einfach schon super, super früh.
Andrej: Kannst du auch auf einen anderen Port legen als 22,
Andrej: damit es nicht kollidiert.
Andrej: Und dann kannst du genau das Gleiche auch machen.
Thomas: Nice.
Andrej: Das heißt, du kannst deinen Root völlig verschlüsseln.
Andrej: Und anstatt, dass du es in so eine Konsole eintippst,
Andrej: kannst du es dann über den Dropbear-SSH machen.
Andrej: Auch fein.
Thomas: Habe ich was zugefunden, cool.
Thomas: Packen wir mal in die Shownotes.
Andrej: Ich weiß gar nicht, warum ich es jetzt nicht benutze.
Thomas: Ja, frage ich mich auch gerade.
Andrej: Ja, Schmerzen.
Andrej: Dann siehst du, wie oft ich den reboote.
Thomas: Ja.
Andrej: Genau.
Andrej: Das Thema wollte ich nur kurz anschneiden.
Andrej: Das brauchen wir nachher nochmal.
Andrej: Jetzt kommt aber ein großer Sack.
Thomas: Ein großer Sack.
Andrej: Ganz, ganz großer Sack.
Thomas: Kannst du das?
Andrej: Geschenke.
Andrej: Nee, nicht Geschenke.
Thomas: Du kennst ja nix.
Andrej: Andrej kann nix, sag ich dazu.
Andrej: Kann nix, ne?
Andrej: Genau.
Andrej: Ich habe, ich weiß gar nicht, wie es angefangen hat,
Andrej: aber schon länger, den Nix-Bug gefressen.
Andrej: Was ist Nix?
Andrej: Leider ist die Nomenklatur ein bisschen blöd bei denen.
Andrej: Es gibt NixOS, das Betriebssystem, es gibt Nix den Paketmanager und es gibt Nix die Sprache. Es hilft nicht am Anfang, dieses Thema zu durchdringen. Nun ja, was ist es? Warum finde ich das so spannend?
Thomas: Okay.
Andrej: Wir beide kommen ja aus der, oder nicht kommen,
Andrej: wir haben schon super viel deklarativ versucht,
Andrej: Betriebssysteme aufzubauen.
Andrej: Mit Ansible, mit Puppet, mit Chef, mit Salt,
Andrej: die habe ich zumindest alle angefasst.
Andrej: Und natürlich Bash.
Andrej: Mit varying degree of success, würde ich mal behaupten.
Thomas: Ja.
Thomas: Mit Container-Linuxen und Containern.
Andrej: Ja, Container-Linux und mittlerweile ist ja auch
Andrej: der ganze heiße Scheiß im uBlue-Linux
Andrej: mit all seinen Nachteilen.
Andrej: Ja, und das hat mich immer so,
Andrej: ich fand das Thema total spannend,
Andrej: Aber ich fand, da war noch nichts Geiles und jetzt habe ich NixOS gefunden.
Andrej: Und dabei ist das noch nicht mal neu, das existiert seit 20 Jahren oder so.
Andrej: Das ist noch richtig alt.
Andrej: Also ich habe jetzt auch nicht mega den Plan.
Andrej: Ich habe nur ein Server jetzt aufgesetzt und Desktop und spiele damit jetzt rum
Andrej: und wollte jetzt einfach mal kurz mal ein bisschen schmackhaft machen, worum geht es denn hier.
Andrej: So ein Aperitif rüberbringen.
Thomas: Passt.
Thomas: Wenn du jetzt auch mega den Plan hättest, dann würde das ja gar nicht hier in den Podcast passen.
Andrej: Okay, genau.
Andrej: Also ich habe ja schon erwähnt, Nix ist eine Sprache, das ist eine funktionale Programmiersprache.
Andrej: Fällt mir wahnsinnig schwer.
Andrej: das zu verstehen. Mein Hirn ist dafür
Andrej: einfach noch nicht gemacht, aber ich sage mal so,
Andrej: Claude hilft unfassbar gut dabei.
Andrej: Also ich bin erschrocken, wie gut die Ergebnisse
Andrej: sind, voll mit Opus. Um das mal
Andrej: sich erklären zu lassen, warum das
Andrej: so jetzt aufgebaut ist und so weiter.
Andrej: NixOS, wie gesagt, das Betriebssystem und dann gibt es halt
Andrej: noch den Paketmanager. Der ganze
Andrej: oder der Nachteil bei
Andrej: Ansible und Co. ist, oder
Andrej: ein Bash-Script, du hast
Andrej: ja, du versuchst etwas deklarativ zu beschreiben,
Andrej: ob es jetzt mit YAML
Andrej: ist, mit Ansible oder was ist das
Andrej: in, was ist das bei Puppet?
Andrej: Was war das nochmal? Ruby, ne?
Andrej: Irgend so ein Ruby-Syntax-
Andrej: Geschichtchen. Das ist immer
Andrej: das, du kannst da zwar zum Beispiel
Andrej: sagen, okay, installiere bitte folgendes
Andrej: Paket Nginx, das ist dann auch deklarativ.
Andrej: Wenn du diesen Block dann rausnimmst,
Andrej: dann ist Nginx immer noch
Andrej: installiert und
Andrej: du hast eventuell einen unterschiedlichen Zustand,
Andrej: je nachdem zu welchem Zeitpunkt
Andrej: welcher Server wann provisioniert wurde bei diesen
Andrej: Servern, weil das Skript halt eventuell anders war
Andrej: zu dem Zeitpunkt. Bei Nix ist das anders.
Andrej: Die versuchen das komplett anders zu lösen.
Andrej: Das System besteht erstmal aus
Andrej: zwei Dateien, also die das
Andrej: beschreiben. Einmal die Configuration.nix,
Andrej: nicht irgendwo in ETC,
Andrej: und dann gibt es einmal die Hardware-Configuration.nix.
Andrej: Die Hardware-Configuration.nix,
Andrej: die wird generiert. Da ist, ich glaube,
Andrej: das New-ID von der Festplatte drin,
Andrej: Machine-ID, vielleicht irgendwie solche Sachen.
Andrej: Hab ich gar nicht so reingeguckt. Braucht man gar nicht.
Andrej: Musste nur ins Git packen nachher und gut ist.
Andrej: Und in der Configuration.nix steht
Andrej: halt das drin, was du reinschreibst.
Andrej: Und das bildet das System ab.
Andrej: Und das ist total genial. Du sagst einfach,
Andrej: ich hätte gerne zum Beispiel Nginx
Andrej: installiert oder SSH, dann sagst du einfach
Andrej: packages.ssh.enable.
Andrej: Done.
Andrej: Und dann hast du diese Konfiguration
Andrej: geschrieben. Was du machst, ist, du führst
Andrej: ein Kommando aus und dann
Andrej: baut das System eine neue
Andrej: Generation, heißt das,
Andrej: und das Paket läuft. Und viele Dinge
Andrej: sind im Hintergrund schon passiert, weil
Andrej: dieses Enable-SSH ist ein Modul,
Andrej: welches zum Beispiel dein
Andrej: Firewall-Port aufmacht, den User
Andrej: erlaubt, etc. pp. Ganz viele
Andrej: Dinge passieren da. SSHD startet
Andrej: eventuell, wenn du
Andrej: nicht nur einen Agent hast,
Andrej: nicht nur einen Client, sondern halt einen Server.
Andrej: Und da passieren dann so ganz viele Dinge. Auf diese
Andrej: Dinge hast du auch Einfluss. Du kannst auch
Andrej: sagen, SSH enable, dann machst du
Andrej: eine geschweifte Klammer auf und dann
Andrej: hast du da so Options drin. Zum Beispiel
Andrej: bitte keine Passwort
Andrej: Authentication zulassen, nur
Andrej: Root von Localhost etc. pp.,
Andrej: was du halt alles einstellen kannst. Das heißt,
Andrej: du schreibst wirklich
Andrej: literally alles in die
Andrej: configuration.nix und gar nichts
Andrej: mehr in etc.
Andrej: sshd
Andrej: slash config slash .1
Andrej: Es gibt ja diese nummerierten Configs
Andrej: in sshd.d
Thomas: Mhm.
Andrej: und so einen Blödsinn. Du schreibst alles
Andrej: da rein. Dann führst du diesen Befehl
Andrej: aus und dieser Befehl,
Andrej: Dieser NixOS Rebuild Switch, der sorgt dafür, dass die Dinge passieren, die passieren sollen.
Andrej: Ein Snapshot erzeugt wird, ein Symlink umgesetzt wird, weil das aktuelle System ist im Endeffekt nur ein Symlink auf was installiert ist.
Thomas: Mhm.
Andrej: Hast du es verkackt, kannst du zurückrollen. In Sekunden.
Thomas: Also ist das ein Symlink auf einen Stand, wo alles drin ist?
Thomas: Oder ist das quasi jede Datei irgendwie ein Symlink auf irgendwas?
Andrej: Gute Frage. Dafür müsste ich jetzt mal in den Nix Store reingehen.
Thomas: Mhm.
Andrej: Nix hat ja diesen Paketmanager und alles, wirklich alles ist in slash Nix slash Store drin.
Andrej: Hast du Python 11 installiert, hast du dort Python 11 drin.
Andrej: Jetzt kommt aber der Clou.
Andrej: Da das eine funktionelle Programmiersprache ist
Andrej: und das Ziel von dieser auch ist,
Andrej: bytegenau deine Programme zu haben,
Andrej: sorgt es dafür, dass der Compiler, die Flags,
Andrej: andere Dependencies sind Inputs für die Funktion,
Andrej: Python jetzt zu bauen.
Andrej: GCC so und so, das und das, Build Flag.
Andrej: Und dann wird das gebaut.
Andrej: Und was am Ende rausputzt, ist dann Python 11 mit einem Hash.
Andrej: Ich glaube, der Hash ist in der Mitte und danach steht irgendwie die Python 11 und dann die Version von Python oder von dem Paket selbst.
Andrej: Und dieser Hash ist exakt der gleiche, wenn die Inputs die gleichen sind.
Andrej: Hast du die gleiche GCC-Library, hast du die gleichen Build-Flags, hast du die gleichen Dependencies, dann ist der Hash identisch und das liegt in deinem Nix Store.
Andrej: Baust du Python 11 mit einem anderen Compiler, also hier mit musl zum Beispiel oder sowas, dann kriegst du einen anderen Hash, hast aber auch Python 11.
Thomas: Mhm.
Andrej: Und jetzt kommt der Clou, dem wir ja mit Docker und Containern jetzt ein bisschen ausgeholfen haben, ist diese Dependency-Hell, dieses, mein Programm braucht Python 11, mein Programm braucht Python 12, du kannst aber nur mutually exclusive eins von beiden installieren, weil, whatever, und das lösen die, indem die einfach jede einzelne Version gehashed in diesen Nix-Store liegen lassen können.
Thomas: Okay, das heißt, wenn du eine Dependency hast von Python oder irgendeine Python-Bibliothek
Andrej: Und egal was, ImageMagick oder genau, er würde es bauen, wenn es nicht im Nix Cache vorhanden ist. Der Nix Cache ist so ein riesen Cache, den ich glaube teilweise auch von AWS gesponsert wird, wenn ich mich recht entsinne. Das heißt, die ganzen Binary sind da und er würde ihn einfach runterladen. Dann hast du halt mehrfach das Ding da drauf.
Thomas: oder irgendeine Software, die auf Python läuft,
Thomas: hat eine Dependency auf Python mit irgendwelchen Flags,
Thomas: dann, und du hast einen Python installiert,
Thomas: das aber nicht exakt diese Flags hat,
Thomas: dann würde er nochmal ein anderes bauen
Thomas: oder fertig gebaut installieren,
Thomas: wenn ich das richtig verstehe.
Thomas: Ja, okay, interessant.
Andrej: Voll der spannende Ansatz, weil du, ja, dieser Nix Store ist auch der Dreh- und Angelpunkt im Endeffekt allem.
Thomas: Weil das auf einer so globalen Ebene funktioniert, ne?
Andrej: Das ist auch einer der Nachteile, die Nachteile kann ich nachher nochmal zusammenfassen,
Andrej: aber einer der Nachteile ist, du kannst jetzt nicht mal eben BindView runterladen und das ausführen.
Andrej: Es geht nicht, weil die Pfade nicht existieren.
Andrej: Es gibt keinen User Lib, es gibt keinen, wo die Shared Libraries drin sind,
Andrej: weil Shared Libraries haben ja den Nachteil, dass sie Shared sind und dadurch halt dieses Dependency Locking haben,
Andrej: wenn du halt unterschiedliche Abhängigkeiten hast.
Thomas: Das heißt, im Grunde für alles, was installiert ist,
Andrej: Genau, also und nicht nur die Libraries findet,
Thomas: muss er eine eigene Umgebung zusammenbauen,
Thomas: damit diese Applikation die ganzen Libraries findet, die es braucht.
Thomas: Und die sucht... genau, genau, mit exakt den Flags und allem Drum und Dran.
Andrej: sondern die Libraries in der Version.
Thomas: Also genau das, was das Ding braucht.
Andrej: Das ist halt nachher bytegenau.
Andrej: Wenn ich dir mein, da kommen wir gleich nochmal drauf,
Andrej: wegen Flake und so, wenn ich dir meine Konfiguration gebe,
Thomas: Und derselbe Compiler, also nicht nur die...
Andrej: in fünf Jahren, selbst wenn der Binary Cache nicht mehr verfügbar ist,
Andrej: solange der Source noch da ist,
Andrej: baust du dir das byte für byte exakt wieder auf.
Andrej: Nicht der gleiche, nicht die gleiche, derselbe.
Thomas: Okay, spannender Ansatz.
Andrej: Das ist echt wichtig.
Andrej: Ja, also, es gibt keine Dependency-Hell.
Andrej: Gibt es trotzdem beim Paketieren.
Andrej: Das ist ein bisschen komplexer.
Andrej: Also, so eine Funktion zu schreiben.
Andrej: Ich habe es noch nicht gemacht.
Andrej: Ich möchte es machen,
Andrej: weil bisher bin ich noch nicht in die Bedrohung gekommen,
Andrej: dass ein Paket nicht vorhanden war,
Andrej: weil Nix-Packages tatsächlich sogar größer ist als das AUR,
Andrej: also das Arch User Repository.
Andrej: Ich habe jetzt leider, ja, ich auch nicht.
Thomas: Was überraschend ist, weil ich habe noch nie jemanden getroffen, der das nutzt.
Thomas: Sie wird es geben, natürlich, aber dass die Userbase so groß ist,
Thomas: dass man so ein großes Package-Repository abbildet.
Thomas: Das ist überraschend.
Andrej: Ja, genau.
Andrej: Das ist auf jeden Fall ein Thema,
Andrej: das schreibe ich mir auch die nächsten Wochen, Monate
Andrej: mal auf, dass ich da mal Bock drauf habe, was zu paketieren.
Andrej: Problem ist, wenn es nichts
Andrej: gibt und er schon paketiert ist, das wird es machen.
Thomas: Nein, Luxusprobleme.
Andrej: Genau, das heißt,
Andrej: wir haben diese Konfigurationsdatei,
Andrej: wir interagieren mit dieser Konfigurationsdatei
Andrej: mit Nix-Kommandos, die uns erlauben,
Andrej: du kannst auch sagen, ich
Andrej: NixOS Rebuild test, dann wird
Andrej: deine Umgebung gebaut und
Andrej: aktiviert, auch der Symlink
Andrej: wird gesetzt auf deine aktuelle,
Andrej: aber wenn du zum Beispiel so mit
Andrej: SSH oder Netzwerk-Kram rumspielst
Andrej: und du hast dich ausgeschlossen,
Andrej: kannst du dann einfach rebooten, weil es wurde nicht persistiert.
Thomas: Mhm, okay.
Andrej: So wie früher viele Firewalls
Andrej: das gemacht haben. Du applyst
Andrej: dein Change und dann
Andrej: kannst du mal gucken,
Thomas: Das heißt, das machst du, wenn du explizit Tests als Argument ergibst.
Andrej: ob du noch draufkommst. Wenn nicht, dann
Andrej: machst du... Genau.
Thomas: Okay.
Andrej: Test erzeugt auch keine Generation, weil
Andrej: eine Generation ist dann
Andrej: dieser Symlink,
Andrej: der dann diesen Zustand beschreibt zu dem Zeitpunkt.
Thomas: Okay.
Andrej: Jeder von diesen Generationen
Andrej: ist ein Bootbar, wird auch in einem Bootmenü eingetragen.
Andrej: Dann kannst du einfach durchscrollen und sagen,
Andrej: ja, ich hätte jetzt gerne die Version.
Andrej: Vorsicht, rollt nicht die Konfiguration.nix zurück,
Andrej: sondern nur den Zustand.
Andrej: Wenn dort noch ein Bug drin ist, tut weh.
Andrej: Oder kann weh tun.
Andrej: Muss man einfach drauf achten.
Andrej: Genau.
Thomas: Zu dieser Konfiguration nichts.
Andrej: Wie funktioniert...
Thomas: Es sei denn, da kommst du eh noch drauf.
Thomas: Aber du sagtest, die beschreibt dein gesamtes System.
Andrej: Mhm, yep.
Thomas: Also Pakete, die installiert sein sollen
Thomas: und teilweise ja sogar, wie sie konfiguriert sein sollen.
Thomas: mit der geschweiften Klammer und
Thomas: erlaube kein Passwort-Zugriff.
Thomas: Gehe ich denn recht in der
Thomas: Annahme, dass du auch sagen kannst, an der Stelle,
Thomas: du könntest auch da Includes definieren
Thomas: auf andere .nix-Dateien,
Andrej: Das machst du noch anders, aber kommen wir gleich drauf.
Thomas: damit du sagen kannst, für Entwicklungsumgebung
Thomas: für mein
Thomas: Software X ist hier eine .nix-Datei
Thomas: und da ist alles drin, was
Thomas: die Entwicklungsumgebung braucht.
Thomas: Und du, okay, cool, dann
Thomas: das stimmt. Aber das heißt,
Andrej: Genau.
Andrej: Was du machen kannst,
Andrej: zum Beispiel, ich mache mal ein paar kleine Beispiele hier.
Andrej: Bei mir steht time.timeZone gleich Europe/Berlin.
Andrej: So, Zeitzone gesetzt.
Andrej: Ähnliches Kommando für den Host nehmen.
Andrej: Mist, sehe ich gerade nicht.
Andrej: Egal.
Andrej: Oder du kannst einfach so eine Liste abgeben.
Andrej: Zum Beispiel, ich hätte jetzt gerne
Andrej: environment.systempackages.
Andrej: Das sind einfach die Pakete,
Andrej: die dem System zur Verfügung stehen sollen.
Andrej: Also auch dem Root-User.
Andrej: Das ist ja manchmal praktisch,
Andrej: was der mal ein paar mehr Tools bekommt,
Andrej: als die mitgeliefert werden.
Andrej: Da sind bei mir zum Beispiel ZSH, WGET, CURL,
Andrej: HTOP, GIT, QEMU und BIND für dig.
Andrej: Also Network Debugging und so.
Andrej: Und das beschreibt es halt.
Andrej: Dann baust du und kriegst die Pakete.
Andrej: Und das dauert halt so lange, das dauert nicht lange.
Andrej: Das ist jetzt irgendwie nicht so wie so ein Ansible-Run.
Andrej: Ich habe das mal probiert mit Ansible,
Andrej: so ein deklaratives OS zu machen.
Andrej: Boah, ist das painful, das ist so langsam.
Andrej: Und das ist halt wirklich, es dauert so lange,
Andrej: wie es runterladen hat, von so einem Binary
Andrej: und ein bisschen Linkerei.
Andrej: Aber das ist fix.
Andrej: Das machst du mal eben im Alltag, das ist handelbar.
Andrej: Das ist nicht so aufwendig.
Andrej: Ich würde sagen, nicht compilen.
Thomas: weil wir hatten vorhin gesagt, da wird
Thomas: was kompiliert teilweise.
Thomas: Das heißt aber, es gibt für die Standard-Dinge alles?
Andrej: Es wird nicht compiled.
Andrej: Solange es Binarys gibt, werden die runtergeladen.
Thomas: Ja.
Andrej: Ich hatte noch keinen Compile-Prozess bei mir.
Thomas: Okay.
Andrej: Es wird gebaut im Sinne von
Andrej: diese Derivation wird gebaut.
Andrej: Das kann manchmal dauern, wenn du super viele
Andrej: Pakete hinzugefügt hast und ganz viele
Andrej: Module und Optionen. Wenn du ganz
Andrej: viel auf einmal machst, dann kann das so ein paar
Andrej: Sekunden mehr dauern.
Thomas: Ich hatte schon ein bisschen Sorge vor...
Thomas: Also jeder, der mal Gentoo benutzt hat, weiß.
Thomas: Wenn der X-Server neu kompiliert wird.
Thomas: Kannst du mehrere Kaffee trinken gehen?
Andrej: Machst du erstmal Urlaub.
Thomas: Okay.
Andrej: Genau. Dann, wie machen
Andrej: die ihr Release? Das fand ich auch ganz spannend.
Andrej: Es gibt ja im klassischen Sinne
Andrej: LTS und Rolling Release und diverse
Andrej: Variationen da drin.
Andrej: Arch natürlich auf der ganz harten Seite mit
Andrej: Rolling oder Bleeding Edge, weil
Andrej: AUR zwischendurch
Andrej: und dann Ubuntu, Debian mit diesen
Andrej: LTS, die 2, 5
Andrej: je nachdem, was für ein Support-Paket man auch
Andrej: kaufen kann und so, ne, kriegst halt
Andrej: dann deine x Jahre, deine neuen
Andrej: Pakete. Wenn ich das richtig
Andrej: verstanden habe, hast du bei NixOS
Andrej: zwei Channels aktuell. Der eine
Andrej: heißt 26.5
Andrej: aktuell, also jetzt von diesem Jahr
Andrej: im Mai und dann gibt's
Andrej: Unstable heißt der. Gibt diese zwei Channels.
Andrej: Wenn ich, wenn meine Recherche
Andrej: richtig ist, hält ein
Andrej: 26.5, 6 Monate.
Thomas: Okay.
Andrej: Dann gibt es 9.
Andrej: Da heißt dann wahrscheinlich
Andrej: 26.11 oder so.
Andrej: Oder 12. Ah nee, 26.12 wird es werden.
Andrej: Also dann ungefähr ein halbes Jahr
Andrej: halten die so. Dann haben die noch einen Monat
Andrej: Karenzzeit für Security-Updates und dann muss
Andrej: es halt auf den neuen Channel
Andrej: aufspringen. So. Diese
Andrej: Channels sind ein bisschen
Andrej: wie LTS, nur ein bisschen schneller.
Andrej: Aber wenn du jetzt
Andrej: NixOS installierst und ich mache das
Andrej: eine Woche später und wir haben den gleichen Channel,
Andrej: haben wir nicht den gleichen Stand.
Andrej: Weil es kann sein, dass zu dem Zeitpunkt
Andrej: der Pakete geupdatet wurden.
Thomas: Keine Ahnung.
Andrej: Das heißt, du folgst einem Channel.
Andrej: Das ist so ein bisschen wie bei Flatpak.
Andrej: Wie hieß das bei denen? Auch Channel?
Andrej: Ja, ne? Anyway.
Andrej: Nicht Flatpak, Flatcar meine ich.
Andrej: Ich pfeife.
Thomas: Ah, okay, ja.
Thomas: Kann sein.
Thomas: Ich glaube, das hieß Channel.
Andrej: Ja, genau.
Thomas: Genau.
Andrej: Und dem folgst du halt.
Andrej: Und danach wird immer relativ schnell deprecated.
Andrej: Und Unstable ist halt, was du daraus machst.
Andrej: Unstable kann halt viele Änderungen haben.
Andrej: Das Coole ist, du kriegst im Output auch häufig mit,
Andrej: hey, die Option für SSH,
Andrej: die du jetzt aktuell in deiner Konfiguration haben,
Andrej: die haben sich geändert.
Andrej: Hier sind die neuen Pfade.
Andrej: Das heißt, du kannst auch relativ entspannt migrieren,
Andrej: so bisher.
Thomas: Was heißt hier sind die neuen Pfade?
Andrej: Noch hatte ich keine großen Probleme, was das angeht.
Andrej: Habe ich tatsächlich auch noch nicht gemacht,
Andrej: weil es ist ja nur eine Warning.
Andrej: Ja, zum Beispiel das Modul SSH,
Andrej: die Option für SSH-Keys wurde jetzt in eine Suboption gepackt.
Andrej: Keine Ahnung, irgendwie sowas.
Thomas: Ah, okay.
Andrej: Das ist dann so interner von einem Modul.
Andrej: Genau.
Thomas: Weil du meintest ja vorhin, es gibt diese geschweifte Klammer auf.
Thomas: irgendwelche, bei BSD hat man das
Thomas: glaube ich früher Flavors genannt oder sowas,
Thomas: also irgendwelche
Thomas: Ausrichtungen oder Features aktivieren,
Thomas: deaktivieren. Das heißt, es ist aber nicht
Andrej: Das ist sehr flexibel.
Thomas: nur flach, also am Ende
Thomas: gibt es sogar eine Konfigurationssektion
Thomas: für jedes dieser Pakete.
Andrej: Das kann unendlich viele Ebenen haben,
Andrej: je nachdem, wie komplex das Modul halt ist.
Andrej: Also das ist das SSH-Modul, was viele Leute nutzen.
Andrej: Da kannst du halt super viel konfigurieren.
Andrej: Im Endeffekt alles, was du in der Config-Datei konfigurieren kannst.
Thomas: Das muss natürlich nur
Thomas: explizit abgebildet sein,
Thomas: in der Paketdefinition.
Andrej: Fast.
Andrej: Es gibt, also wenn du ein Modul nutzt, dann ja.
Andrej: Es gibt aber, glaube ich, auch Sachen,
Andrej: die kannst du einfach templaten.
Andrej: Dann nutzt du halt die Konfigurationssprache,
Andrej: die das Tool nutzt, JSON, YAML, whatever,
Andrej: und baust das halt da rein.
Andrej: Der Vorteil ist, es ist trotzdem in der Nix-Konfiguration.
Andrej: Sie kann nur nicht evaluiert werden.
Andrej: sie kann syntaktisch
Andrej: evaluiert werden, im Sinne von, ist das
Andrej: ein valides YAML vielleicht?
Andrej: Aber selbst das ist dann schwierig, weil das
Andrej: halt dann abhängig von dem
Andrej: Tool ist, was das nutzt.
Andrej: Ist eine Struktur, ja.
Thomas: Das heißt, am Anfang
Thomas: habe ich irgendwie diese, warum auch immer,
Thomas: diese geschweifte Klammer gesehen als
Thomas: steht halt hinter der Paketdefinition
Thomas: einfach so in einer Zeile drin, aber
Thomas: ich muss mir das eher wie so ein Objekt oder eine
Thomas: Struktur vorstellen, die ich aufmache
Thomas: und dann die sogar mehrere Ebenen haben
Andrej: Im Endeffekt glaube ich ein Attribute-Set, weil das
Thomas: kann.
Andrej: du holst dir dann einfach
Andrej: bei mir zum Beispiel Hardware.Bluetooth.
Andrej: Ich hatte kein Bluetooth hier. Ich habe mich gefragt,
Andrej: wo ist denn mein Bluetooth? Ja gut, muss ich
Andrej: Hardware.Bluetooth gleich, Klammer auf,
Andrej: Enable gleich true.
Andrej: Und ich hätte auch direkt sagen, Hardware.Bluetooth enable.
Andrej: Aber dann ist das nur eine Zeile und ich habe diese Struktur nicht.
Andrej: Aber ich brauche zum Beispiel auch Power on Boot True.
Andrej: So, dann baue ich diese Klammer auf.
Andrej: Dann kannst du so peu à peu einfach ganz viele Optionen nacheinander reinsetzen.
Thomas: Cool. Während der Laufzeit. Und dann würde
Andrej: Genau, fand ich auch.
Andrej: So, und jetzt gehen wir mal, genau, wir hatten das mit dem Switch.
Andrej: Der baut eine Generation, die immer bootbar ist.
Andrej: Ist im Boot-Menü eingetragen.
Andrej: Kann man auch während der Laufzeit immer wechseln.
Andrej: Jetzt kommen wir zu dem Thema, also einfach nur NixOS Switch.
Andrej: Ich glaube, Rollback war es, glaube ich, oder so.
Andrej: Oder Restore, habe ich vergessen.
Andrej: Ja, gar kein Thema.
Thomas: ja gegebenenfalls, dann hättest du auf einmal wieder
Andrej: Fand ich auch krass.
Thomas: Dinge nicht mehr installiert, weil
Thomas: waren in der vorherigen Generation nicht dran.
Thomas: Okay. Nice. Ja. Interessant.
Andrej: Gibt es ein paar Sachen, da musst du aufpassen,
Andrej: wenn du beim Bootloader was umänderst.
Andrej: Solche Sachen, klar, da musst du einen Reboot machen.
Andrej: Ich habe den Hostname geändert, da habe ich auch ein paar Sachen gelernt.
Andrej: Wenn du den Hostname änderst und das in der Laufzeit machst,
Andrej: dann kannst du Chrome nicht mehr benutzen.
Andrej: Chrome kriegt dann nämlich ein Error
Andrej: und macht ein Logfile auf deinem Profil.
Andrej: Wahrscheinlich ein Security-Feature,
Andrej: dass jemand nicht deine Cookies und so klauen kann,
Andrej: mal eben so.
Andrej: Ich weiß nicht warum, aber
Andrej: Logfile entfernen, da konnte ich Chrome wieder starten.
Andrej: Ich habe mich sehr gewundert. Genau, dann gehen wir mal zu dem Thema.
Thomas: Okay. Ja, das ist doch krass.
Andrej: Jetzt haben wir diese Channels, das ist ein bisschen
Andrej: krass, dass du alle sechs
Andrej: Monate das machen musst, weil
Andrej: es ist halt fix, es ist nicht ganz wie Arch,
Andrej: aber es ist auch schnell manchmal.
Thomas: Also, ob sich das bei meinem Server machen
Thomas: wollen würde jedes Mal, weiß ich nicht.
Andrej: Jetzt kommen wir bei der geilen Punkt.
Andrej: Das Thema Flakes. Ich habe ja
Andrej: vorhin auch gesagt, du folgst ja einem Channel. Das heißt, wenn wir
Andrej: zu einem unterschiedlichen Zeitpunkt das installieren, haben wir
Andrej: nicht notwendigerweise die exakt gleichen Pakete.
Andrej: Und wir wissen ja, was das für ein
Andrej: Pain manchmal ist für Server, wenn du eine unterschiedliche Umgebung hast
Andrej: und du willst die eigentlich vereinheitlicht behandeln.
Andrej: Kettle versus Snowflake.
Andrej: Nun gibt es das seit 2021 experimentelle Feature,
Andrej: ein bisschen so wie die Google-Gmail-Beta,
Andrej: das sogenannte Flakes.
Andrej: Musst du einmal enablen, dann hast du es drin.
Andrej: Dadurch ändert sich auch ein bisschen, welche Kommandos du brauchst,
Andrej: wie du mit dem System interagierst.
Andrej: Ist aber nicht so wichtig.
Andrej: Ist so ein bisschen Syntax anders.
Andrej: Und was das macht ist, es generiert hier ein flake.lock-File
Andrej: und in diesem lock-File steht im Endeffekt die exakte Version drin
Andrej: von dem Paket, was du jetzt installiert hast.
Andrej: Das heißt, wenn du jetzt meine Konfiguration bekommen würdest
Andrej: und ich habe da meinen flake.lock drin,
Andrej: dann würdest du wirklich ein vollidentisches System bekommen,
Thomas: Das ist dann also der Version-Pin, wenn man so möchte.
Andrej: inklusive wirklich gehashter, bytegenauer Programmversion.
Andrej: Genau, das ist ein bisschen so wie die requirements.txt
Andrej: oder was es nicht alle gibt bei JavaScript und so.
Andrej: haben wir ja alles mal schon mal gesehen. Genau.
Andrej: Und das macht es halt dann auch ganz
Andrej: spannend, finde ich, weil dann ist es wirklich
Andrej: übertragbar von einem System
Andrej: auf den anderen. Das macht es halt auch easy zu spielen.
Andrej: Hey, du spielst mal, ne? Das Einzige,
Andrej: was du wegsichern musst, ist halt die Konfiguration
Andrej: selbst. Die ist völlig okay in Git zu packen
Andrej: und dein Home
Andrej: musst du halt wegspeichern, weil
Andrej: State ist halt
Andrej: schwierig, ne? Also, wenn du jetzt
Andrej: deinen Browser hast, den Cache und die Configs.
Andrej: Wobei, Konfig kommen wir noch zu.
Thomas: Einfach zu sagen, ich installiere mir hier einen Rechner neu und mit einem Tool, also mit dem Tool aus der Distribution sozusagen, kann ich sicherstellen, dass das wirklich nachher so aussieht wie vorher.
Thomas: Ich muss dann nur noch meinen State drüber kopieren.
Andrej: Ich fand es super, also technisch finde ich es
Andrej: interessant, als auch als Hoster
Andrej: und als Provider und so weiter.
Andrej: Aber was ich dann auch spannend fand, ich habe mal gelesen,
Andrej: in der Wissenschaft ist es auch total doof.
Andrej: Nehmen wir mal, voll gut,
Andrej: nimm mal an, du hast irgendwie
Andrej: Forschung gemacht, Messergebnisse, dann nutzt du
Andrej: irgendein Python-Tool, um die zu analysieren,
Andrej: zu berechnen und
Andrej: veröffentlichst das und fünf Jahre später
Andrej: baut jemand auf deiner Forschung auf,
Andrej: schreibt darüber eine Doktorarbeit etc. pp.
Andrej: Gibt ja tausend Möglichkeiten, aber der
Andrej: kriegt es nicht hin, die Forschungsergebnisse zu reproduzieren,
Andrej: weil vielleicht gab es
Andrej: einen Bug in dem Floating-Zahl
Andrej: GCC, weil GCC
Andrej: Floating-Zahlen halt falsch behandelt hat zu dem
Andrej: Pipe-Type, whatever. Da gibt es ja auch sowas.
Andrej: Und das kann das System
Andrej: halt auch in der Theorie lösen.
Andrej: Dass du halt drei Jahre später einfach eine identische
Andrej: Umgebung aufsetzt und
Andrej: das dann einfach nochmal empfährst.
Andrej: Also wirklich reproduzierbare
Andrej: Ergebnisse bekommst. Weißt du, durch
Thomas: Und gerade so im Hosting-Umfeld, weil du das ja auch gerade erwähnt hattest, da gibt es ja den Ansatz zu sagen, einfach damit etwas in einen gewissen Zielzustand kommt,
Thomas: betrachtest du es halt statt Snowflake
Thomas: irgendwie als Cattle. Das heißt, der
Thomas: State darf da nicht drauf sein in irgendeiner Form.
Thomas: Du schmeißt es weg und erstellst
Thomas: es from scratch von etwas,
Thomas: was durchgetestet ist,
Thomas: was gescannt wurde,
Thomas: alles, was dazu gehört. Genau.
Andrej: CI/CD-Ding, durch Security-Patch
Andrej: und so weiter.
Thomas: Und dann hast du im Grunde ein deterministisches
Thomas: System. Aber es heißt
Thomas: halt natürlich, dass, nehmen wir mal an, du hast Kubernetes
Thomas: Nodes und du willst eine Node,
Thomas: willst eine Sicherheitspatch einspielen,
Thomas: musst du wirklich alle Nodes durchrotieren
Thomas: und du musst wirklich Workloads umschieben
Andrej: Genau, und das kannst du auch remote machen.
Thomas: und du musst aber auch die Node selber zerstören und dann neu erstellen.
Thomas: Ist eine destruktive Operation, die dann auch natürlich Impact drauf hat,
Thomas: also wie viel Last dieser Prozess erzeugt.
Thomas: Könnte man genauso gut mit NixOS lösen, indem du halt sagst,
Thomas: alles klar, wir bereiten die neue Generation vor, flake.lock,
Thomas: da ist alles beschrieben, was für ein Zielzustand da sein soll,
Thomas: da ist die Kernel-Version drin, da sind die ganzen Paket-Versionen drin,
Thomas: sondern das ist alles so getestet und die bestehenden Systeme müssten im Grunde einfach nur das einmal anwenden.
Thomas: Also diesen Rebuild-Switch, wovon du vorhin gesprochen hast.
Thomas: Einziger Nachteil, vielleicht müssten sie einmal rebooten natürlich, also Kernelfix natürlich,
Andrej: Ich habe, ja klar, ewig, geht noch weiter.
Thomas: da musst du einmal durchtreten, wenn du da nicht irgendein Kernel-Patching-Ding drin hast.
Thomas: Aber durchtreten ist halt immer noch eine andere Dimension als ich schmeiße das Ding jetzt weg
Thomas: und ich erstelle ein neues, da kann viel bei schief gehen.
Thomas: Also Provider haben halt auch natürlich, ich meine, diese Prozesse sind ja komplex und können temporäre Fehler auftreten.
Thomas: Es dauert einfach insgesamt teilweise vielleicht was lange.
Thomas: Okay, total spannend.
Andrej: Du hast ja gerade gefragt wegen der Entwicklungsumgebung,
Andrej: dass du deine Pakete definierst.
Andrej: Das machst du gar nicht mehr im System.
Andrej: Du hast gar nicht so viele Pakete mehr im System.
Andrej: Du packst ja deine Dependency einfach ins Repo.
Andrej: Du erzeugst einen Flake.
Andrej: Du kannst nämlich Flakes unabhängig von NixOS benutzen,
Andrej: sondern einfach mit Nix.
Andrej: Du erzeugst eine Flake-Datei, wo du deine Pakete reinpackst,
Andrej: zum Beispiel Just, das gute alte Just-File.
Andrej: dann dein Python,
Andrej: dann dein, was auch immer du halt hast,
Andrej: dann ImageMagick, falls du Bildbearbeitung machst,
Andrej: oder Pillow oder whatever.
Andrej: Das heißt, du packst dann nicht nur
Thomas: Es klingt vor allem auch danach nach ein Teilproblem dessen, ein kleiner Teil, wofür ich mir eigentlich auch immer eine Lösung gewünscht habe,
Andrej: Python und Python-Pakete rein,
Andrej: sondern auch System-Pakete, die du
Andrej: für diese Entwicklung
Andrej: brauchst, machst dann flake.lock
Andrej: mit und zu dem Zeitpunkt,
Andrej: und dann kannst du noch ein Tool benutzen, wo ich gerade total
Andrej: der Fan von bin: direnv,
Andrej: du gehst da einfach rein mit CD
Andrej: und er öffnet direkt eine
Andrej: Nix-Shell, das kann man
Andrej: auch auf macOS machen, öffnet einfach eine
Andrej: Nix-Share, wo diese Dinge einfach installiert sind,
Andrej: Punkt, aus, fertig. Du gehst aus
Andrej: diesem Verzeichnis wieder raus, es ist
Andrej: nicht mehr installiert. Es ist
Andrej: einfach so genial.
Andrej: Ich krieg ja Gänsehaut.
Andrej: Es macht, ja,
Thomas: ist, du gehst in ein Verzeichnis rein
Thomas: und es werden automatisch Env-Vars gesetzt
Thomas: in deinem System, weil, ne,
Thomas: damit die zu deiner Entwicklung passen,
Thomas: keine Ahnung, Staging, URL, SD
Thomas: und das und das und blablabla
Thomas: und das natürlich dann irgendwie auch idealerweise
Thomas: rekursiv nach unten, ne, also wenn du, keine Ahnung,
Thomas: in das Git von deiner Arbeit reingehst, dann wird
Thomas: schon mal das und das gesetzt, gehst du in ein Unterverzeichnis
Thomas: rein, wird auch noch das und das gesetzt
Thomas: und ich hab irgendwie nie eine Lösung dafür gefunden.
Andrej: das uv und
Andrej: wie, was wir, venv,
Andrej: Python venv, ne, die haben das ja auch so gelöst.
Andrej: Du kannst das ja machen, du kannst
Andrej: eine .python-version-Datei, glaube ich,
Thomas: Python, äh, das war PyEnv.
Andrej: anlegen. pyenv, so, ja, sorry.
Thomas: PyEnv, mhm.
Andrej: Genau, die
Andrej: Aber was die machen, die packen dir quasi die PIP-Dependencies rein.
Andrej: Für Python jetzt.
Andrej: Es gibt auch andere Tools, wie das mit Go und Rust und was weiß ich nicht alles machen.
Andrej: Oder auch mit Terraform.
Andrej: Aber du kriegst halt keine System-Sachen da rein.
Andrej: Und wenn du dann, gerade bei Terraform,
Andrej: wenn du Terraform installiert hast auf dem System,
Andrej: dann hast du es in dieser Version.
Andrej: Und gerade mit Terraform ist das so pain,
Andrej: wenn du jetzt eine neuere Version hast als deine Arbeitskollegen
Andrej: und du pleist den State und du machst das wirklich vom Laptop
Andrej: oder von der Maschine halt und nicht
Andrej: von der CI/CD, dann meckert
Andrej: der State beim nächsten Kollegen so,
Andrej: ja, dein Terraform ist zu alt, dein Kollege
Andrej: hat schon eine neue Version.
Andrej: Dann hängst du da wieder.
Andrej: Das ist dann wieder so. Und das ist
Andrej: einfach geil. Das flake.lock
Andrej: beschreibt einfach exakt deine
Andrej: Umgebung, die du haben willst.
Andrej: Es gibt ein separates Kommando, womit
Andrej: du sagst, ich hätte gerne die Dependencies
Andrej: abgedatet. Jetzt kommt noch ein weiterer
Andrej: Clou, da bin ich ganz übersprungen. Ich habe ja vorhin
Andrej: diese Channels erwähnt. Du kannst die Channels,
Andrej: du hast ja so ein Update-Befehl,
Andrej: du kannst den Channels immer noch folgen, aber was du mit
Andrej: Flakes jetzt auch machen kannst, du kannst sagen,
Andrej: jetzt bin ich aber überlegen, ob das
Andrej: wirklich Flakes, doch,
Andrej: das ist Flakes-spezifisch. Du kannst auch sagen,
Andrej: ich hätte gern dieses Paket aus
Andrej: Unstable und den
Andrej: Rest lasse ich einfach aus
Thomas: Ah, okay. Ich werd grad rollig.
Andrej: dem Channel 26.5
Andrej: aktuell. Das ist, weil
Andrej: manchmal sind die halt im Stable
Andrej: unnötigerweise viele Versionen hinter,
Andrej: aus welchen Gründen auch immer, und du
Andrej: sagst, okay, ich hätte aber folgendes Tool, bitte gerne
Andrej: immer in der letzten.
Thomas: Ja, das hat mich sehr verwirrt.
Andrej: Ich wusste es.
Andrej: Wir sind noch nicht fertig.
Andrej: So, direnv haben wir, Flakes haben wir,
Andrej: also wir locken das.
Andrej: direnv löst ganz viele Entwicklungsprobleme.
Andrej: Ich nutze es noch nicht lang genug,
Andrej: um wirklich Pain zu haben.
Andrej: Also von daher, alles mit Vorsicht zu genießen,
Andrej: das kann auch sehr komplex werden.
Andrej: Was viele Leute auch machen,
Andrej: habe ich noch nicht gemacht, möchte ich noch,
Andrej: Docker mit Nix, also
Andrej: Docker-Container mit Nix zu bauen.
Thomas: Ich habe gelesen, dass das geht und dachte mir aber, warum macht man das?
Andrej: Ja, du weißt das ganz genau.
Thomas: Also ich meine, Docker hat ja eine eigene deklarative Sprache.
Thomas: Bitte, erzähl.
Thomas: Ja, wobei, nee, stimmt, die ist nicht deklarativ, ne?
Andrej: Die ist überhaupt nicht deklarativ.
Thomas: Also die ist imperativ.
Thomas: Also teils, teils.
Thomas: Deklarativ im Sinne von nutzt folgendes Image, aber der Rest ist dann halt irgendwelche Run-Commands.
Andrej: Der Rest ist Bash.
Thomas: Ha, okay.
Andrej: So, ich kann mir ein Problem beschreiben,
Andrej: was wir mal hatten.
Andrej: Es war, glaube ich, unser Postgres-Service,
Andrej: den wir mal hatten.
Andrej: Und wir hatten eine Postgres-Version gepinnt,
Andrej: in Klammern, 15 damals oder sowas.
Andrej: Und dann lässt du die CI/CD-Pipeline noch mal rennen
Andrej: und dann war das Postgres-Image kaputt,
Andrej: obwohl es die gleiche gepinnte Version war.
Thomas: Ja, ja, ja, genau.
Andrej: Aber was viele ja nicht wissen,
Andrej: dass ein Docker-Tag, der ist
Andrej: überhaupt, wie ein Git-Tag im Endeffekt,
Andrej: ist überhaupt nicht,
Andrej: wie nennt man das,
Andrej: nicht reproduzierbar, sondern
Andrej: unique? Ne, der ist nicht geschützend
Andrej: in irgendeiner Weise, du kannst ihn überpushen.
Andrej: Das heißt, in einem ganz kurzen Augenblick,
Andrej: in der Woche oder zwei,
Thomas: Immutable, wie er auch immer auf Deutsch heißt.
Andrej: im YouTube, ja, danke,
Thomas: Ja, ich erinnere mich.
Andrej: in der Woche oder zwei,
Andrej: wo der Kollege, ich weiß gar nicht, ob das ich das war oder
Andrej: ein Arbeitskollege, versucht hat, das Docker-Image
Andrej: zu bauen und komplett verzweifelt ist,
Andrej: hatten die einfach ein kaputtes Image gepusht.
Andrej: auf den Tag.
Thomas: Das war gemein.
Andrej: So, und ja,
Thomas: Hat Vor- und Nachteile, ne?
Thomas: Aber lass mal die Klammer vielleicht nicht zu sehr aufmachen,
Thomas: weil das kann ja auch total sinnvoll sein.
Andrej: der Vorteil ganz easy, du kriegst die Patches mit rein,
Andrej: ganz cool.
Thomas: Genau, ja.
Andrej: Oder wenn das Postgres 15
Andrej: ist, dann können auf einmal,
Thomas: Ich glaube, das war eine neue Debian-Version oder sowas.
Andrej: vielleicht war das sogar, die haben den Unterbau gewechselt
Andrej: von Debian auf Ubuntu oder sowas.
Andrej: Oder neue Debian-Version, was ich finde,
Thomas: Und, mhm, mhm, ja, cool.
Andrej: kein meiner Ding war, naja, egal.
Andrej: Und du kannst aber auch einfach
Andrej: diese Nix-Konfigurationssprache nehmen
Andrej: und sagen, ja gut, ich hätte jetzt gern Postgres,
Andrej: ich hätte jetzt gern die und die Plugins,
Andrej: Whatever, ne? Erweiterung. Und dann
Andrej: baust du dir das und als Artefakt
Andrej: spuckt dir halt ein Docker-Image raus. Dann machst du kein,
Andrej: soweit ich weiß, ich hab's noch nicht gemacht,
Andrej: nutzt du nicht mehr das Docker-File per se,
Andrej: sondern halt diese NixOS-Geschichte
Andrej: und haust dann da halt was rein
Andrej: mit der flake.lock. Das ist sehr gefährlich,
Andrej: das weiß ich wirklich nicht. Aber
Andrej: super interessant, weil es halt wirklich bytegenau, ne?
Thomas: Ja, also, weil wirklich genau dieses Szenario,
Thomas: was du beschrieben hast,
Thomas: wir hatten es schon mal in,
Thomas: wirklich im Zuge der Entwicklung eines Features.
Thomas: Also wirklich so von wegen, in der Feature-Branch
Thomas: vor dem Merge Request war noch alles okay.
Thomas: Und danach, weiß ich nicht,
Thomas: Integrationstest und irgendwie alles ist kaputt.
Thomas: Und du fragst dich, hä?
Thomas: Aber ja, es ist natürlich kein Schutz da.
Andrej: Ja, und das ist halt immer, als
Thomas: Das ist wirklich ein neues Image.
Andrej: guter Entwickler guckst du ja auch immer ein bisschen auf Dependencies.
Andrej: Du machst ja nicht einfach nur, ja, scheiß drauf, ich nehme jetzt die alte
Andrej: Version, sondern dann löst du halt die
Andrej: Fehler auch, ne? Und das ist dann wieder Zeit.
Andrej: Und das macht ja auch Sinn, diese Fehler zu lösen, aber vielleicht auch nicht unbedingt zu dem Zeitpunkt.
Andrej: Und dann kannst du diesen Prozess halt auch trennen.
Andrej: Du kannst sagen, ich bringe die gepatchte Version raus vom Postgres,
Andrej: aber ich brauche jetzt nicht das Debian-Upgrade, weil es ist eh noch gültig, die Version.
Andrej: Oder vielleicht switchen die von Debian auf Ubuntu oder Alpine oder whatever.
Andrej: Das musst du nicht mitnehmen, weil das bringt natürlich auch mal seine Challenges mit.
Andrej: Na gut, dann gehen wir noch auf drei Themen ein.
Andrej: Dann habe ich ja vorhin noch erwähnt, dass das Home, dein Home-Verzeichnis,
Andrej: da, wo dein State drin ist, da wird es halt auch schwierig,
Andrej: weil du kannst ja nicht State deklarieren.
Thomas: Also ich denke jetzt zumindest
Andrej: Mein Desktop läuft gerade auf NixOS, da läuft jetzt auch der Chrome
Andrej: und ich muss mich ja einloggen.
Andrej: Da gibt es dann halt Grenzen.
Andrej: Da muss man sich klar sein, das geht nicht.
Andrej: Aber doch.
Andrej: Also zum Beispiel teilweise.
Thomas: mal als erstes an Dot-Files.
Thomas: Das ist ja auch ein anderweitig
Andrej: Geht.
Thomas: durchaus schon gelöstes Problem, aber
Thomas: wäre natürlich nett, das irgendwie
Thomas: noch irgendwie integriert zu wissen.
Andrej: Genau, dafür gibt es ja auch viele andere Projekte.
Andrej: chezmoi habe ich auch mal ausprobiert, hat mich genervt.
Andrej: Dann gibt es GNU Stow, nee, Stow, Stow heißt es, genau.
Thomas: Ist das ein Teil von Nix?
Andrej: Und diverse andere Tools, die dort File Management machen können.
Andrej: Aber brauchst du gar nicht.
Andrej: Also es gibt dieses Projekt Home Manager heißt das.
Andrej: Und Home Manager übernimmt im Endeffekt alles, was dein User macht.
Andrej: Also in meinem Fall Andrej, in deinem Fall Thomas.
Thomas: Oder ist das Nix-spezifisch, Mitchell?
Andrej: Nein, das ist ein separates Modul, was du auch nachträglich installieren musst.
Andrej: Kann man auch auf Mac benutzen, unabhängig von NixOS.
Andrej: Generell, Nix kann man sich auf dem Mac installieren
Andrej: und hat man den Nix-Paketmanager.
Andrej: So entwickelt auch der, ich glaube es war der,
Andrej: wie heißt der, der Hashimoto, der Terraform-Gründer?
Andrej: Mitchell Hashimoto, genau.
Thomas: Hm. Hm. Hm. Stimmt. Ja. Jucky. Ja. Da muss man vielleicht auch die Kirche mal im Dorf lassen. Also da mag jeder anders ticken, aber also ich hüpfe sehr, sehr selten von einem Rechner aufeinander, ehrlich gesagt.
Andrej: Genau, der macht das auch schon seit langem.
Andrej: Und mit diesem Homemanager kannst du viele Dinge tun.
Andrej: Dort kommen dann ganz viele Module zum Vorschein.
Andrej: Zum Beispiel gibt es auch ein Modul für, klar, Git.
Andrej: Das ist aber auch schon in der Configuration nix möglich,
Andrej: also in dem System.
Andrej: Aber halt dann übernimmt der Homemanager so einige Dinge,
Andrej: so ist mein Verständnis aktuell.
Andrej: Und zum Beispiel hast du dann auch so ein Konfigurationsmanagement für Oh My Zsh.
Andrej: Anstatt, dass du so ein Git-Repo da runterpullst, mehr oder weniger regelmäßig, kannst du das einfach konfigurieren.
Andrej: Oder, was ich gemacht habe, Syncthing, meinen File-Syncing-Server, den ich nutze, um Dateien von Desktops und so weiter zu sharen und Handy,
Andrej: den habe ich auch konfiguriert. Das ist eine Syncthing.nix-Datei.
Andrej: Dort habe ich den Service-Syncthing enabled true, habe die guiAddress gemacht,
Andrej: habe gesagt, bei meinem Desktop ist es in Ordnung, dass der von überall erreichbar ist,
Andrej: aus meinem lokalen Laden.
Andrej: Ich habe dem sogar die Credentials durchgepasst.
Andrej: Kommen wir gleich noch drauf zu.
Andrej: Und du kannst sogar die Folders definieren
Andrej: und welche Geräte damit synchronisieren.
Andrej: Das ist sehr stark abhängig,
Andrej: wie viel Zeit Leute in das Modul reingesteckt haben,
Andrej: was es kann.
Andrej: Das Syncthing-Modul ist wohl ganz nett.
Andrej: Da kannst du auch die Devices konfigurieren, die du hast.
Andrej: Das heißt, du machst nicht dieses Setup jedes Mal von vorne
Andrej: und das ist einfach Klick da.
Andrej: es gibt auch ein Modul für GitHub,
Andrej: den GitHub-Community-Client
Andrej: habe ich auch jetzt genutzt. Da habe ich jetzt nicht
Andrej: viel drin. Da habe ich nur ein
Andrej: API-Token
Andrej: hinterlegt mit vielen
Andrej: Read-Rechten, weniger Löschrechten,
Andrej: als mal was schief geht.
Andrej: Also dieses Home-Manager, das übernimmt dann quasi
Andrej: die Installation von Paketen und
Andrej: Konfiguration von Paketen in deinem Home-Verzeichnis.
Andrej: Das heißt, viele Dinge sind gar nicht mehr auf dem
Andrej: System installiert, sondern nur noch für den User.
Andrej: Warum sollte mein Root-User den GitHub-Client
Andrej: haben? Warum sollte mein Root-User
Andrej: VS Code haben?
Andrej: Also ganz viel, das hat ja Impact auch
Andrej: ein anderer. Gibt sogar ein Home-Manager-Modul
Andrej: für den Plasma-Desktop, wo du
Andrej: sehr rudimentär, aber immerhin noch
Andrej: deinen Desktop so konfigurieren kannst und dann exakt mitnehmen.
Andrej: Da kommen wir aber auch zu dem Nachteil,
Andrej: Plasma konfiguriert
Andrej: sein Desktop über eine wahnsinnig große
Andrej: XML-Datei.
Andrej: Wenn du Bock hast,
Andrej: kannst du die auch
Andrej: templaten lassen und dann da
Andrej: mit Variable etc. pp.
Andrej: da reinschreiben. Da musst du aber aufpassen,
Andrej: dass du nicht mit dem GUI mehr rumklickst.
Andrej: Da ziehe ich dann die Grenze zwischen
Andrej: deklarativ und was ist praktisch,
Andrej: weil ich will meinen,
Andrej: wenn die Monitors gedreht sind,
Andrej: ich bin irgendwo und dann möchte ich nicht in die
Andrej: Config-Datei, dann möchte ich einfach in dem
Andrej: Settings-Menü klicken und sagen,
Andrej: mach Spiegel oder mach erweiterter Screen.
Andrej: Ja, sehe ich auch so.
Thomas: Und wenn ich das mal tue, also hüpfen im Sinne von migrieren auf ein neues System, dann machst du halt ein R-Sync von deinem alten Home-Dir auf das neue und dann ist es halt so wie vorher. Für sowas finde ich das vollkommen legitim.
Andrej: Ja.
Thomas: Deswegen habe ich auch persönlich, ich arbeite noch gar nicht mit Dotfiles, aber da gibt es zumindest ein Pain, weil da geht es ja nicht nur darum, dass man von einem System auf ein anderes migriert, sondern man hat halt immer mal wieder neue Systeme, auf die man per SSH drauf geht und die verhalten sich dann halt anders, Stock.
Thomas: Da wäre es schon schön, keine Ahnung, seine Vim-Konfiguration mitzunehmen oder in der ZSH-RC gewisse Dinge einfach immer zu setzen.
Thomas: Okay, ja. KDE-Konfiguration über XML oder über Module. Voll gut.
Andrej: Das habe ich mir dann gespart.
Thomas: Ja.
Andrej: Ich habe es drin,
Andrej: weil ich dachte, vielleicht gibt es ja so Sachen,
Andrej: guck mal grad rein, was hab ich denn da drin?
Andrej: Home, Common, ne, nix
Andrej: besonderes. Plasma, ah ja.
Andrej: Idle Timeout für meine Displays.
Thomas: Ach, du kannst das dann kombinieren, ja? Du kannst sagen, die Sachen setzt er dann so und zerstört dir dann nicht deine komplette andere Config?
Andrej: Ist eine gute Frage, kann ich dir gar nicht beantworten.
Thomas: Okay. Das wäre dir wahrscheinlich schon aufgefallen.
Andrej: Vielleicht konkurriert's auch.
Andrej: Das war auch nur ein Test, ich war jetzt
Andrej: nicht so, da ging's mir eher,
Thomas: Mhm.
Andrej: den Desktop nutze ich teilweise auch als Server. Ich lass den
Andrej: hier oben laufen, weil der ist halt ein bisschen mehr Power als
Andrej: mein Laptop und dann baue ich hier halt
Andrej: Sachen. Wirklich genau, Compilen
Andrej: oder so. Das möchte ich nicht auf dem Framework machen.
Andrej: Ist der Akku leer und
Andrej: der hinter dem Ding hebt ab. Genau, und dann nochmal
Andrej: ein letztes Thema, weil Komplexität kennt ja kein Ende.
Thomas: Oh.
Andrej: Gar nicht
Andrej: letztes, noch zwei. Ja, und dann
Andrej: nochmal die Nachteile. Jetzt hat man seine
Andrej: Konfiguration und alles und
Andrej: jetzt möchte man natürlich auch sowas
Andrej: wie, bei Syncthing möchte ich
Andrej: mein User Passwort festlegen, welches
Andrej: das GUI schützt. Oder
Andrej: vielleicht Keys hinterlegen, was auch
Thomas: Mhm. Bei age muss ich kurz klugscheißern. Ich hatte gelesen, weil ich finde das immer sehr verwirrend vom Namen her, dass man das A-G ausspricht oder A-G oder irgendwie sowas.
Andrej: immer. Es gibt zwei Projekte,
Andrej: um Secret Management zu
Andrej: machen in Nix. Es gibt agenix
Andrej: und sops-nix. Ich habe mich für
Andrej: SOPS entschieden, aus Gründen,
Andrej: die ich nicht ernsthaft, the more you know,
Thomas: Ähm, jaja. Mhm. Okay. Mhm. Mhm. Mhm. Gibt's denn da ein Tooling, dass das gleich, sagen wir mal, repo-weit macht? Wobei, nee, das ist ja eine Nix-Datei, ne? Ah, okay. Ah. Nice. Mhm. Mhm. Ja, klingt aber auch so. Mhm. Mhm. Jaja.
Andrej: so wie ich das gehört habe, ich kann mich
Andrej: gerne auch entscheiden. agenix ist
Andrej: ein bisschen weniger komplex,
Andrej: verschlüsselt aber auch
Andrej: und auch ein gutes Tool, auch sehr
Andrej: soweit ich weiß,
Andrej: sind die da fleißig am Programmieren, auch wenn
Andrej: das letzte Release jetzt drei Jahre her ist.
Andrej: Aber egal, kann ja vielleicht funktionieren.
Andrej: Was ich genommen habe,
Andrej: ist sops-nix. Gehen wir mal kurz
Andrej: drauf ein, wie das funktioniert.
Andrej: Was man macht ist,
Andrej: man erzeugt einen age-Key,
Andrej: ein Private Key auf deinem Rechner.
Andrej: Der liegt in ~/.config/age
Andrej: irgendwo und dann
Andrej: hast du ein Private Key. Dann
Andrej: nimmt man sich diese Datei
Andrej: und generiert mit irgendeinem Kommando,
Andrej: kann man sich in der Anleitung durchgucken, beim GitHub ist
Andrej: ganz gut die Anleitung, dann
Andrej: generiert man sich aus dem Private Key
Andrej: ein Public Key. Diesen Public Key
Andrej: nimmt man und copy-pastet den
Andrej: in eine YAML-Datei
Andrej: Einen Augenblick, bevor ich hier Schwachsinn erzähle.
Andrej: Es gibt eine, genau, du legst eine SOPS-YAML-Datei an.
Andrej: Dort kannst du dann deine Keys deklarieren.
Andrej: Ich habe zum Beispiel Admin-Framework und Admin-Desktop.
Andrej: Das sind meine Public Keys.
Andrej: Und dann kannst du denen quasi so ein Mapping machen.
Andrej: Schaut einfach in die Doku rein.
Andrej: Das ist ein bisschen einfacher.
Andrej: So ein Mapping zu Host und welcher User das ist.
Andrej: So eine Gruppe erzeugst du im Endeffekt.
Andrej: Bei mir ist es gerade alle Geräte, alle User dürfen auf alle Geräte drauf.
Andrej: Man kann es komplexer machen.
Andrej: Gehen wir jetzt nämlich drauf ein.
Andrej: nutzt, wenn man
Andrej: jetzt hat man diesen Private Key lokal
Andrej: auf der Kiste liegen und mit diesem Private Key
Andrej: wird im Endeffekt,
Andrej: wenn ich das richtig verstanden habe,
Andrej: wird eine YAML-Datei, die du
Andrej: Secrets YAML oder so nennst, wird die
Andrej: verschlüsselt. Das heißt, du kannst im
Andrej: Plaintext deine Daten bearbeiten
Andrej: mit so einem
Andrej: Kommando, SOPS edit oder so was,
Andrej: habe ich jetzt nicht mehr im Kopf, aber ist auch nicht so wichtig,
Andrej: steht alles in deinem GitHub-Ding. Dann
Andrej: bearbeitest du das mit deinem Editor deiner Wahl,
Andrej: schließt und du hast
Andrej: age-encrypted-Dateien drin.
Andrej: Was du siehst, ist die Struktur.
Andrej: Du siehst Syncthing, Passwort, Github,
Andrej: CLI-Token, aber der Value
Andrej: ist immer verschlüsselt. Und
Andrej: decrypted wird das Ganze
Andrej: mit dem SSH-Host-Key,
Andrej: der immer erzeugt wird
Andrej: in der Installation unter etc.
Andrej: slash SSH, slash SSH-Host
Andrej: ED, was auch immer. Ist ganz wild.
Andrej: Du kannst, was ich gemacht habe, ist,
Andrej: ich habe meinen Laptop,
Andrej: also ich habe meinen Desktop aufgesetzt,
Andrej: ich saß hier mit meinem Freund Niklas, liebe Grüße, wenn du das hörst,
Andrej: Wir haben einfach Nix installiert,
Andrej: einfach Nix-Installationsparty-Nachmittag gemacht
Andrej: und dann saßen wir an unseren jeweiligen Rechnern,
Andrej: haben es installiert, dann wollten wir,
Andrej: das nächste Ziel war, okay, jetzt möchten wir das
Andrej: aber von meinem Laptop steuern können.
Andrej: Man kann die ganzen Kommandos mit Nix, OS, Rebuild, blablabla,
Andrej: die kann man auch mit einer SSH-Target machen.
Andrej: Du kannst sogar sagen, welcher Host der Build-Host ist.
Andrej: Das heißt, wenn du jetzt zum Beispiel
Andrej: auf einem Raspberry Pi was machst,
Andrej: dann willst du vielleicht nicht alles
Andrej: auf dem Raspberry Pi bauen lassen.
Andrej: Vielleicht auch doch, weil ARM ist ein bisschen blöd
Andrej: mit Cross-Compiling auf deinem
Andrej: x86, bei dir nicht mit deinem Mac.
Andrej: Nun ja, das haben wir dann geschafft
Andrej: und dann wollte ich halt natürlich auch, dass
Andrej: mein Laptop und mein Desktop diese Datei
Andrej: bearbeiten können. Ja, und dann
Andrej: kannst du einfach diese,
Andrej: gehst du nochmal diesen,
Andrej: fügst du nochmal ein Public Key hinzu von deinem
Andrej: Laptop dann, in dem Falle,
Andrej: musst die nochmal neu verschlüsseln, die Datei
Andrej: und dann können beide darauf zugreifen.
Andrej: Inwiefern, Rieb?
Andrej: Das ist eine YAML-Datei, die du im Git einfach committest.
Andrej: Weil es verschlüsselt ist, kannst du es machen.
Andrej: Genau, jetzt habe ich also ein Secret-Management,
Andrej: wo so, sagen wir mal, Secrets drin sind,
Andrej: die ich für nicht alle Secrets,
Andrej: weil ich password-manage ja trotzdem,
Andrej: aber die ich halt zur Build-Zeit immer brauche.
Andrej: Aktuell nur zwei, aber hey.
Andrej: Ich habe eine gelockte Flake-Datei,
Andrej: die mein System exakt genau beschreibt.
Andrej: Ich habe diverse Flake-Konfigurationen
Andrej: in meinen diversen GitHub-Repositories,
Andrej: die dann direkt die Dependencies ziehen, die ich brauche
Andrej: und habe halt ein deklaratives System.
Andrej: Und so aktuell arbeite ich daran,
Andrej: diese Struktur, die ich mir aufgebaut habe in meinem Repo,
Andrej: für mehrere Hosts zu machen.
Andrej: Das heißt, ich habe dann meinen Desktop, meinen Laptop,
Andrej: meinen kleinen Miniserver, den ich hier noch habe,
Andrej: so einen Woodward-Arm-Rechner,
Andrej: dass ich dann ein Git-Repo habe,
Andrej: welches meine Infrastruktur beschreibt
Andrej: und wo ich dann auch easy, in Klammern,
Andrej: ist es Komplexität, darf man auch nicht vergessen,
Andrej: aber halt easy an einer Stelle abdecken kann.
Andrej: Und da kommen wir, glaube ich, auch zu den Nachteilen. Das passt dann ganz gut. Das hört sich jetzt in der Theorie alles sehr cool an, aber meine Fresse, ist das eine brutale Lernkurve. Kein Scheiß. Das ist so komplex, ne? Ja, die Idee hört sich cool an und dann denkt man, ja, vielleicht Enzo Bejami, bla bla bla. Ne, nixer. Diese Nix-Sprache, mir tut die im Kopf weh. Ich verstehe immer mehr, aber es dauert.
Andrej: Ich muss dafür auch sagen,
Andrej: die Community ist da auch sehr einig,
Andrej: die Doku-Scheiße, die gibt es an viel zu
Andrej: vielen Stellen, in unterschiedlichen Versionen,
Andrej: in vielen Git-Repos
Andrej: und das macht keinen Spaß.
Andrej: Das ist wirklich nicht cool.
Andrej: Und ich bin froh, dass Claude Code existiert,
Andrej: weil der hilft ungemein. Aber man darf nicht vergessen,
Andrej: man muss das auch verstehen, was man da macht.
Andrej: Das ist wichtig in meinen Augen,
Andrej: weil sonst wird es schwierig.
Andrej: Was ich auch ein bisschen schwierig finde,
Andrej: was zu der Lernkurve gehört, die Errors,
Andrej: die Error-Meldungen sind hart.
Andrej: Also du kriegst erstmal mal so einen fetten Trace
Andrej: und im Endeffekt ist nur die letzte
Andrej: Zeile sinnvoll, wie bei Python häufig.
Andrej: Das ist ja auch so.
Thomas: Was sind denn übliche Fehler?
Andrej: Den anderen Scheiß kannst du erstmal ignorieren.
Andrej: Ja, muss
Andrej: man lernen und dann muss man halt auch viel
Andrej: verstehen, um die Error-Meldung zu interpretieren.
Andrej: Große Klassiker, Semikolon
Thomas: Was fällt dir so ein? Wo bist du schon mal reingelaufen?
Andrej: und vergessen hier und da. Dann suchst du dich
Thomas: Das sind zwei Zeilen inhaltlich gemerged und bam.
Andrej: dumm und dusselig.
Andrej: Ja, genau.
Andrej: Oder
Andrej: dann eine Modul-Config
Andrej: konfiguriert, die es
Andrej: so nicht mehr gibt, weil die Doku zu alt war.
Andrej: Oder das Beispiel im Blog oder so.
Andrej: Dann sagt er dir hier, das Modul existiert
Andrej: nicht. Oder du machst eine
Andrej: Konfiguration, eine Home-Manager-
Andrej: Konfiguration machst du
Andrej: in deinem System, weil es das nicht gibt.
Thomas: Einfach weil alle Abhängigkeiten fehlen, oder?
Andrej: Es gibt aber eine gute
Andrej: Paketsuche. Es gibt auch eine gute
Andrej: Modulsuche. Da kann man auch sich alle
Andrej: Moduloptionen auflisten
Andrej: lassen. Auch in der Kommandozeile gibt es
Andrej: auch im Web eine gute. Das hilft dann schon.
Andrej: Großer Nachteil finde ich jetzt so,
Andrej: mal eben so ein Binary installieren
Andrej: und sagen, ich führe das aus, geht halt nicht.
Andrej: De facto geht das nicht.
Andrej: Das ist total crazy. Das ist eine
Andrej: ganz andere, ja,
Andrej: dafür ist das nicht gemacht.
Andrej: Es fährt kein Halbgleis.
Thomas: Das heißt, im einfachsten Fall, wenn es irgendein CLI ist oder so,
Andrej: Es gibt nur so, entweder so oder gar
Andrej: nicht. Oder du baust von Source.
Thomas: ist es wahrscheinlich am einfachsten, du startest mal eben schnell einen Docker-Container
Thomas: und packst das da rein und führst das halt da eben aus und schmeißt danach wieder weg.
Thomas: Ja, okay.
Andrej: Da musst du aber die Nix-Funktion
Andrej: wieder machen. Habe ich, wie gesagt, noch nicht
Thomas: Gibt es hinter Tooling was sowas vereinfacht?
Andrej: gemacht. Das muss ich noch machen. Das ist noch eine Übung, die mir
Andrej: fehlt. Weiterhin
Thomas: gibt es irgendwie so eine Art Nix-Generator
Thomas: oder so, wo du vielleicht
Andrej: Nee, es gibt Tooling, keine Ahnung.
Thomas: einfach sogar in Pakete, das wäre doch cool,
Thomas: wenn du so eine Text-User-Interface
Thomas: wo du einfach eine Suchmaske
Thomas: hast nach Paketen, zum Beispiel
Thomas: und wenn du
Thomas: es anklickst, dann zeigt er dir vielleicht auch noch an, was du alles
Thomas: konfigurieren kannst und dann kannst du es einfach so schön
Thomas: grafisch dir zusammenbröseln.
Thomas: Schade.
Andrej: Es gibt Hilfen für,
Andrej: es gibt ja Pakete, die, also ich glaube,
Andrej: man kann Binaries ausführen, wenn die komplett autark sind
Andrej: und von nichts abhängen.
Andrej: Dann müsste es eigentlich eine Theorie gehen,
Andrej: wenn die so komplett autark sind. Ich weiß nicht, wie easy
Andrej: das ist oder wie viele das sind.
Andrej: Es gibt, ich habe es gelesen, noch nicht
Andrej: gemacht, es gibt ja diese Filesystem
Andrej: Hierarchy in Linux, also ETC User
Andrej: war, was weiß ich, das ist ja hier
Andrej: komplett umgedreht, weil
Andrej: es liegen ja keine Libraries und Co. da, wo sie
Andrej: für gewöhnlich liegen.
Andrej: Und es gibt aber wohl auch so ein Projekt, wo du das faken kannst für bestimmte Applikationen, damit die halt überhaupt lauffähig sind.
Andrej: Zum Beispiel, wenn du einen Vendor, ein Freund von mir, der Niklas wieder, der will irgendwie so ein elektronisches Messgerät benutzen, dafür kriegt er ja nicht den Source, sondern nur ein Binary oder sowas.
Andrej: Und da musst du es halt faken.
Andrej: Da musst du dann so ein Filesystem-Archive gehen und er hat es dann nicht gemacht, weil dann musst du es schnell laufen bringen, hat dann Ubuntu-Installation und zack, zack.
Andrej: soweit ich gelesen und gehört habe
Andrej: und ein paar YouTube-Videos, kannst du das
Andrej: halt irgendwie hinkriegen. Soweit bin ich
Andrej: noch nicht. Mach das jetzt seit ein paar Wochen.
Andrej: Genau, noch ein Nachteil, wie gesagt
Andrej: schon vorher, zurückrollen ändert nicht
Andrej: die Konfigurations-Nix. Das heißt, du hast immer
Andrej: noch eine eventuell defekte Konfiguration.
Andrej: Die Konfiguration an sich ist jetzt
Andrej: eher weniger defekt, weil
Andrej: die wird ja auch evaluiert und wenn die baut, dann baut die.
Andrej: Wenn die nicht baut, dann baut die nicht. Das ist ein bisschen
Andrej: so wie eine Compiled-Sprache.
Andrej: Das heißt aber nicht, dass dein Tooling-Bugs
Andrej: haben kann oder du es falsch konfiguriert
Andrej: hast, dein SSH, Deem etc.
Andrej: Das schützt dich davor natürlich nicht.
Andrej: Und da es diesen Nix-Store hat
Andrej: mit den im Endeffekt
Andrej: nicht nur doppelten, sondern auch teilweise
Andrej: achtfach vorkommenden Paketen,
Andrej: braucht es ein bisschen mehr Storage.
Andrej: Da habe ich mir beholfen mit Btrfs und ein bisschen
Andrej: ZSTD-Compression. Das haut nochmal
Andrej: irgendwie gute 30-40%
Andrej: weg. Das ist schon mal ordentlich.
Andrej: Und man darf auf keinen Fall vergessen,
Andrej: dass man diese Garbage-Collection aktivieren sollte,
Thomas: Stimmt, sammelt sich
Andrej: dann sonst...
Andrej: ne?
Andrej: Sonst hast du noch, ja.
Thomas: nur immer mehr ein. Und NixOS kommt
Andrej: Und Btrfs mit Limit
Andrej: Festplatte ist kacke.
Andrej: Kennt man ja. Ne, das hab ich jetzt
Thomas: also mit Btrfs. Das ist so
Thomas: ein Teil. Okay.
Andrej: gemacht. Es gibt einen Installer, den du
Andrej: fahren kannst. Das ist der Calamares
Andrej: Installer, den haben viele Distros.
Andrej: Du kannst auch, das mach ich jetzt
Andrej: gerade für mein Odroid, du kannst
Andrej: auch ein Tool nehmen, das heißt Disko.
Andrej: D-I-S-K-O.
Andrej: Cooler Name. Da kannst du auch deinen
Thomas: aus deiner configuration.nix.
Andrej: Festplatten beschreiben. Du kannst sagen,
Andrej: welche Partition, GPT,
Andrej: welches Layout, MBR, GPT,
Andrej: welche Partition du haben möchtest, welche
Andrej: Dateisysteme, ob du LUKS haben möchtest und dann schreibst du es
Andrej: deklarativ rein, machst mit sops dein
Andrej: LUKS-Passwort rein, das ist mein Endgoal.
Andrej: Aber
Andrej: eins nach dem anderen lösen.
Andrej: Und das letzte Rabbit Hole, was ich jetzt noch aufmachen wollte
Andrej: zu dem Thema, da das ja
Andrej: alles so wiederherstellbar
Andrej: ist, gibt es in der Community einen
Andrej: ganz witzigen
Andrej: Versuch, oder nicht Versuch, es nutzen viele
Andrej: Leute, ein Ephemeral Root
Andrej: zu haben, also in dem Sinne, dass
Andrej: das Root-Datei-System nie auf der Festplatte existiert,
Andrej: sondern bei jedem Boot neu erzeugt wird.
Andrej: Ja, und im Endeffekt liegt es dann,
Thomas: Und, ah, klingt eigentlich auch total plausibel.
Andrej: ich glaube, es liegt dann im RAM,
Andrej: das ist ein Nix-Community-Projekt,
Andrej: also github.com slash nix-community
Andrej: und das heißt Impermanence.
Andrej: Habe es mir noch nicht angeschaut,
Andrej: fand ich einfach nur interessant vom Gedanken her.
Andrej: Wenn man so, klar,
Thomas: Ich meine, wenn du eh schon alles, die Daten, die ganzen Pakete
Thomas: in ihren ganzen Variationen müssen ja noch immer gespeichert werden,
Thomas: aber das Zusammenbauen kann ja und die mal,
Thomas: dann gehst du auch wirklich mal sicher,
Thomas: dass du nicht versehentlich außerhalb von irgendwelchen Nix-Spezifikationen
Thomas: irgendwas umkonfigurierst, ne?
Andrej: genau, it lets you choose what files and directories
Thomas: Okay, das heißt, du könntest eventuell sogar noch irgendwas definieren.
Andrej: you want to keep between reboots.
Andrej: The rest is thrown away.
Andrej: Dann soll es dein Home zum Beispiel
Thomas: wenn du möchtest, dass noch etwas persistiert wird.
Thomas: Das klingt auf jeden Fall total spannend.
Andrej: oder deine Boot-Partition vielleicht auch.
Andrej: Ganz andere Denke halt.
Thomas: Auf der anderen Seite natürlich auch einiges an Komplexität wieder,
Thomas: wenn man vom, ja, ich meine,
Thomas: deklarativ ist für Build-Prozesse, für Code, den du rausbringst,
Thomas: wo auf Production quasi sichergestellt sein muss,
Thomas: dass das derselbe Stand ist,
Thomas: wie den, den du entwickelt hast und getestet hast.
Andrej: Come to us.
Thomas: Aber bei Laptops, also bei Arbeitsumgebung,
Thomas: ist das Anforderungsprofil ja anders.
Thomas: Ich sehe den Charme und ich liebäugel auch gerade damit, da mal was auszuprobieren.
Thomas: Ich weiß nur nicht, ob das genauso wie mit To the Dark Side, We Have Cookies.
Andrej: Come to us.
Thomas: Ich weiß ja nicht, ob der O-Welt.
Andrej: Scheiße.
Thomas: Also dieses, du hast mal angefangen, irgendwann mit Ansible-Systeme einzurichten.
Thomas: Das hatte ich auch mal getestet und habe relativ schnell festgestellt,
Thomas: boah ne, allein schon dieser iterative Prozess, an das Ziel zu kommen,
Thomas: Und dann sicherzustellen, dass dasselbe Playbook auch funktioniert, wenn du vom Scratch startest, also nicht die Einzelschritte durchläufst. Das ist schon so viel Schmerz und das kostet so viel Zeit und das ist es bei mir einfach nie wert gewesen.
Andrej: Das hast du mit Nix halt nicht.
Andrej: Das baut oder baut nicht.
Thomas: Ja, genau.
Andrej: Ich glaube, der große
Andrej: Unterschied zwischen das Ansible-Deklarativ zu machen
Andrej: ist, erstens, Ansible ist arschlahm.
Andrej: Wenn du so...
Andrej: Das dauert einfach. Das ist so langsam.
Thomas: Ja, furchtbar.
Andrej: Und das nervt einfach schon.
Andrej: Wenn du nur ein Paket installieren möchtest,
Andrej: dann geht dir ja trotzdem das ganze Playbook jedes Mal durch,
Andrej: obwohl der Status ja schon längst erreicht ist,
Andrej: weil der hat halt kein State.
Andrej: Das ist ja der Nachteil.
Andrej: NixOS macht das nicht.
Andrej: Der hat irgendwie ein Div, macht den Div
Andrej: und im Endeffekt nichts anderes,
Andrej: als wenn du sagen würdest,
Andrej: sudo apt-get install oder brew install.
Andrej: Ist ja egal.
Andrej: Für Thomas, es gibt nix-darwin
Andrej: oder für die Leute, die das mal ausprüfen wollen,
Andrej: Und es gibt wohl ein paar Leute, die dann halt ihre Home zumindest mal gemacht haben.
Andrej: Oder die fangen an mit dem Repository und teilen sich dann mit der Flake, machen sich da das DN freien.
Andrej: Du brauchst ja gar kein NixOS, du kannst ja schon mal langsam starten.
Andrej: Du kannst den Nix-Paketmanager installieren auf macOS.
Andrej: Ich glaube, der braucht Root-Rechte.
Andrej: Ich weiß nicht, wie easy das ist, wenn das ein Lockdown-macOS beim Arbeitgeber ist.
Thomas: Testen.
Andrej: Weil du halt auf Slash nix musst und ein paar Sachen.
Andrej: Da bin ich mir gar nicht sicher.
Andrej: Ich habe gerade keinen Mac zu Hause, den ich nutzen kann.
Thomas: Ich fand's geil.
Andrej: Ja, super spannendes Thema, finde ich.
Andrej: Sorry fürs Abgenörde, aber sowas fixt mich total.
Andrej: Ich fand es geil.
Andrej: Endlich normale Leute.
Andrej: Und wenn jemand das nutzt und ich hier viel Schwachsinn erzähle,
Thomas: Ja, also bietet sich ja an, wenn man gerade für etwas brennt, Leute vielleicht noch gleich mit anzustecken bei der Gelegenheit. Das ist gut.
Andrej: weil ich bin gerade erst voll im Learning-Prozess drin.
Andrej: Bitte, bitte melden, weil ich bin total interessiert in einem Thema.
Andrej: Und das hört ja noch nicht auf.
Thomas: Ja, fantastisch.
Andrej: Das Thema wird gleich nochmal aufgebaut.
Andrej: Aber erst mal du.
Thomas: Na gut, dann ich.
Thomas: Also, der Papa hat sich was geklickt.
Thomas: Und zwar...
Andrej: Ist egal, was es war, es war unten rechts.
Thomas: Fast, aber nah genug.
Andrej: War die Batterie der Maus alle oder was?
Thomas: Also ich meine, wir leben in einer Welt...
Thomas: Auf dem Weg dahin.
Thomas: Also, du hast mich angefixt, du Sau.
Andrej: Das ist ein bisschen nicht mehr hingekommen.
Thomas: Das machst du ja schon mal gerne.
Thomas: Und zwar vor zwei Monaten oder so.
Thomas: als du mir dieses Video geschickt hast von der Framework-Keynote,
Thomas: als das 13 Pro vorgestellt wurde.
Andrej: Ist das schon draußen?
Thomas: Das hat so langsam in mir gebrodelt.
Thomas: Also es wurde ja irgendwie verzögert, die Lieferung.
Thomas: Es sollte im Juli jetzt die erste Charge kommen,
Andrej: Weil ich habe noch keine Reviews gefunden, deswegen frage ich.
Thomas: die eigentlich im Juni kommen sollte.
Thomas: Momentan steht bei den Batches immer noch
Thomas: Expected July.
Thomas: Genau, ich auch nicht.
Andrej: Naja, also nicht.
Thomas: Deswegen, eigentlich wollte ich auf Reviews warten, um zu gucken, weil, was war die Wunschvorstellung?
Thomas: Hab ich nicht, nein, das war mal wieder, das war mal wieder so.
Andrej: Das kannst du auch, glaube ich, vergessen auf dem Desktop.
Thomas: Die Wunschvorstellung war, ich mag ja, also meine Vergangenheit war, ich hab eigentlich seit Mitte 90er Jahre circa eigentlich nur Linux benutzt.
Thomas: In den unterschiedlichen Variationen, also und auf Servern, auch so OpenBSD, NetBSD, FreeBSD, das hat mich auch angefixt.
Thomas: Aber das war halt eine Servergeschichte, nie auf dem Desktop.
Thomas: Es gab ein, ich würde sagen, ja, andere Leute sehen das vielleicht anders,
Thomas: aber die OpenBSD-Entwickler, die nutzen das auch anscheinend auf ihren Notebooks.
Andrej: Ja, die eine Person.
Andrej: Kudos.
Thomas: Ich hätte da jetzt kein Interesse dran.
Thomas: Naja, ich hatte mal eine Phase, das muss irgendwie um 2010 oder so gewesen sein,
Thomas: da habe ich, glaube ich, zwei Jahre ein Mac benutzt,
Thomas: bin dann wieder zurück auf ein ThinkPad mit lecker Linux
Thomas: und als ich dann bei, ja, bei unserem Arbeitgeber jetzt angefangen habe,
Thomas: da hatte ich dann die Option und ich weiß, zuvor, wir haben uns ja ein Jahr zuvor kennengelernt,
Thomas: bei einem anderen Arbeitgeber, da hatte ich dann auch noch ein ThinkPad mit Linux
Thomas: und ich weiß, da waren wieder diverse Themen wie, was, ich erinnere mich nicht, okay, ach du je,
Andrej: Telefonanlage.
Andrej: Die Telefonanlage wäre so eine Telefonsoftware,
Andrej: die nur auf Mac oder Windows lief.
Andrej: Es war es ja noch.
Andrej: Weißt du das nicht mehr?
Thomas: nee, das habe ich verdrängt, achso, du meinst so, damit man sich dann da anmelden kann,
Andrej: Okay.
Andrej: Ja, PTSD.
Thomas: damit man telefonisch erreichbar ist, also der Client dafür.
Andrej: Ja.
Thomas: Ach, okay. Oh Gott, den habe ich zum Glück nicht mehr in Erinnerung.
Thomas: Aber ich weiß, ich hatte so Probleme wie, ich klappe die Kiste auf aus dem Standby
Thomas: und der Bildschirm bleibt schwarz oder so.
Thomas: Oder irgendwas mit WLAN, weiß ich auch noch.
Andrej: Das war vor zehn Jahren, by the way.
Thomas: Also da gab es Probleme und irgendwie dachte ich mir, boah, ich bin jetzt schon alt.
Thomas: Ich bin zu alt für diesen Scheiß.
Thomas: Und dann dachte ich mir, komm, ja, das ist schockierend genug.
Andrej: Das ist so alt, wie ich jetzt bin.
Thomas: Alleine schon das.
Andrej: Nicht ganz.
Thomas: Ja, und dann dachte ich mir jedenfalls, komm, versuchst du es nochmal mit einem Mac.
Thomas: Mit Windows kann ich ja gar nicht, aber eben dieser BSD-Unterbau von Mac
Thomas: und kombiniert mit absolut geiler Hardware, jetzt, damals nicht.
Thomas: Also der Mac, Katastrophe, ne?
Andrej: Warte mal, warte mal.
Andrej: Gar nicht.
Andrej: Also die Intels waren scheiße.
Thomas: Das war wirklich furchtbar.
Thomas: Diese Generation, also der, den ich 2010 hatte, mit dem war ich eigentlich sehr zufrieden.
Thomas: Der hatte eine schöne Build-Quality. Der war ja auch ein gutes Stück dicker als die 2017er, 2018er Modelle. Also 2017, 2018er Modelle. Und der hatte diese thermische Drossel nicht in dem Maße. Also mit dem konnte ich wirklich zufriedenstellend arbeiten. Es war halt nur kein Linux. Und deswegen bin ich irgendwann wieder zu Linux zurück und das Ding verkauft.
Thomas: Aber die 2017er, 18er Modelle, die so schön dünn gebaut haben, mit dem Intel drin, der dir deine Schenkel verbrät, nee, das war Katastrophe. Der hat dich ja die ganze Zeit angebrüllt. Da gehst du in ein Videomeeting und der brüllt dich die ganze Zeit an.
Thomas: Also da hast du dir, also ich weiß noch, ich habe dann irgendwann angefangen, mir einen Laptopständer hinzustellen, damit der von unten ein bisschen Luft zirkulieren kann. Am Ende Kopfhörer mit Noise Cancelling, damit dein Lüfter dich nicht nervt. Absurd. Naja, das war wirklich eine dunkle, dunkle Zeit von Apple, ja. Aber als dann natürlich die Apple Silicon Dinger rauskamen, Game Changer, total geil.
Andrej: Ja, ich glaube auch, wenn die nicht aus dem Alu-Block gefräst wären,
Andrej: wären die immer irgendwie linksdrahtig hochgegangen oder so
Andrej: oder weggeflogen vom Tisch.
Andrej: Weil, Alter, diese Lüfter, die waren ja konstant an dem Meeting.
Andrej: Konstant.
Andrej: It just works.
Thomas: Also ich bin, also ich habe jetzt hier so ein M4 Pro und bin vom Gerät her total verliebt da drin. Ich finde das wirklich von vorne bis hinten super sexy. Lässt eigentlich keine Wünsche offen, würde ich sagen. Fällt mir zumindest gerade nichts ein.
Andrej: Bis auf das Betriebssystem.
Thomas: Ja, genau. Ich verstehe auch nicht, wie die Leute arbeiten. Kürzlich noch ein Video gesehen von irgendjemandem auf YouTube, der jetzt nochmal macOS getestet hat mit 26 und meinte, mittlerweile kann man es wenigstens benutzen, weil die haben ja einiges auch mit Fenster, Tiling und so haben sie ja nachgerüstet jetzt. Es ist nicht auf dem Niveau von Windows und Linux, aber du brauchst kein Rectangle oder so mehr.
Andrej: Und das, sagen wir mal, in Klammern Fenstermanagement.
Andrej: Alles on.
Thomas: Also es geht auch ohne. Nur Rectangle bietet ja dann halt auch schöne Shortcuts an, damit die Fenster gleich auch noch richtig sind. Also das ist halt der Apple-Weg. Also auf der einen Seite können die sehr gut Shortcuts anbieten, das war früher so ein ganz elementares Thema für die. Auf der anderen Seite, für sowas Elementares bieten sie dann keine Shortcuts an.
Andrej: Okay.
Andrej: Und wie heißt dieses neue, in Klammern neue, Fenstermanagement von denen,
Thomas: Oder ein virtueller Desktop, also Space-Wechsel, dauert gefühlt zwei Sekunden, das kriege ich auch irgendwie die Pimpernellen bei. Also die Software ist es. Stage Manager? Nee, gar nicht.
Andrej: was eine absolute Vollkatastrophe ist, was man enablen muss, wenn man das startet?
Andrej: Ja, ja, oh mein Gott.
Andrej: Ich dachte so, cool, probiere ich mal aus.
Andrej: Vielleicht ist das ja besser als die Vollkatastrophe, die die vorher gemacht haben.
Andrej: Es ist einfach noch viel schlechter.
Andrej: Man findet gar nichts mehr wieder.
Thomas: Ich dachte am Anfang, die hätten das nur fürs iPad entwickelt und wäre gut dann, aber anscheinend kommt es ja auch auf dem macOS und ich kenne auch niemanden, der es benutzt, aber ich glaube, ich hoffe nicht schlagen, ich frage mich gerade, ob das beim iPad sogar default on war, bin mir nicht mehr ganz sicher, ich glaube, Roddy von der Freakshow war es, der gesagt hat, er findet das auf dem iPad eigentlich richtig gut, kann ich nicht nachvollziehen, ich mag das nirgendwo.
Andrej: Das ist, glaube ich, nicht ohne Grund Default Off.
Thomas: Naja, also Software und dieses ganze Gatekeeping, das für Einsteiger total sinnvoll ist, aber für Profis, also wenn ich halt, wie oft kriege ich einen Dialog von Copia, Copia läuft, es wird selten aktualisiert, es macht bei den Backups und wie oft kriege ich einen Dialog, ob das auf die Daten anderer Apps zugreifen darf.
Thomas: Ja natürlich, es ist meine Backup-Software. Natürlich darf die das. Im schlimmsten Fall würde ich das einmal bestätigen und nicht irgendwie nach jedem Update nochmal neu oder zwischendurch auch nochmal neu. Also solche Dinge treiben mich in den Wahnsinn. Du lädst irgendwo ein Binary runter, startest das, kriegst im Terminal gar kein ordentliches Feedback, warum es nicht startet. Ja, weil es halt irgendwie durch den, ich glaube es nennt sich Gatekeeper oder so, abgehalten wurde davon. Solche Dinge treiben mich in den Wahnsinn.
Andrej: Oh ja, dann musst du wieder in die Settings reingehen,
Thomas: Tja, ja, jetzt habe ich geklickt und will wieder Linux testen. Wieder mal zurück. Ich weiß nicht, ob das eine gute Idee ist, muss ich sagen. Also mal gucken, weil ich bin ja immer noch, also ich bin ja noch zehn Jahre älter, wie wir gerade festgestellt haben.
Andrej: dann diese eine Binary separat enablen und bla, bla, bla, bla, bla.
Andrej: Vielleicht musst du sogar noch rebooten, weil es noch nicht Applied wird.
Andrej: Oh mein Gott.
Thomas: Also eigentlich könnte man meinen, ich hätte noch weniger Bock auf den Scheiß, aber auf der anderen Seite, gewisse Dinge finde ich gerade auch geil. Ich tauche gerade wieder in Neovim ein. Also Vim als Editor ist eigentlich normal und die letzten Jahre habe ich Zed verwendet, dieses Zed, diese neumodische Entwicklungsumgebung, die ich auch sehr, sehr geil finde und die auch einen Vim-Mode hat und wirklich vieles sehr richtig macht.
Andrej: Das ist schon ein Neovim auf dem Mac installieren.
Thomas: Aber es ist halt immer noch ein Fenster.
Thomas: Und gewisse Dinge haben entweder kein Kürzel,
Thomas: wobei das gibt, glaube ich, wenige, die kein Kürzel haben.
Andrej: Also das wollen wir jetzt hier nicht.
Thomas: Habe ich, habe ich, habe ich.
Andrej: Okay.
Thomas: Genau, das habe ich nämlich erst die Tage wieder gemacht.
Thomas: Und diesmal, also damals hat es,
Thomas: irgendwann hat es nicht Klick gemacht bei mir.
Thomas: Aber da habe ich, glaube ich, nur Neovim installiert
Thomas: und versucht es händisch so ein bisschen zu konfigurieren.
Thomas: Jetzt habe ich einfach mal LazyVim verwendet.
Thomas: Und das Ding startet, rödelt ein bisschen
Andrej: Ja, ja.
Thomas: und auf einmal hast du eine richtig geile Entwicklungsumgebung,
Thomas: mit der du vor allem, du hast nicht diese Shortcuts mit drei Modifiern,
Thomas: wo du dir Finger brichst, sondern du drückst einfach Vim-typisch mehrere Tasten hintereinander
Thomas: und damit komme ich halt einfach viel besser klar.
Thomas: Also ich verliebe mich gerade wieder in Neovim und alles, was so auf Text ist
Andrej: Uh, hast du gar keinen Bock auf Linux?
Thomas: und ich freue mich einfach nochmal auf Linux.
Thomas: Und ich glaube, ich werde tatsächlich anfangen mal, ich werde mit Omarchy anfangen.
Thomas: Ich will einfach mal so ein richtig...
Thomas: Mal gucken.
Andrej: Weil Desktop-Umgebung gibt es halt nicht da, ne?
Andrej: Also eine klassische.
Thomas: Genau, ja, richtig. Also deswegen, das wird eine harte Umstellung sein, aber mir gefällt einiges von dem Ansatz. Ich muss aber auch dazu sagen, früher konnte ich mich an Tiling Manager nicht gut gewöhnen. Ich habe es mehrmals probiert, ich weiß aber auch nicht mehr, was ich damals getestet habe.
Thomas: Ich habe auch einen auf dem Mac mal getestet, diesen Amethyst oder so, der hat mich auch nicht begeistert, aber das ist ja auch so ein bisschen das Mac-Problem, also gewisse Dinge kann die Software ja nicht beeinflussen und das ist immer so ein limitierender Faktor bei allem, was Mac ist.
Thomas: Tja, naja, mal gucken, wie es mit der Linux-Welt so ist. Angefixt bin ich, wie gesagt, hardware-technisch auch total gespannt, also da hat mich, ich glaube am Ende, ich habe lange überlegt, ob ich klicken soll und am Ende war es irgendein Blogpost von den Framework-Jungs, wo über die SSD-Verfügbarkeit informiert wurde und das auf einmal für die Leute, die PCIe 5. Generation haben wollen,
Thomas: also eine SSD für PCIe 5, die hatten irgendwie nur folgende Modelle zur Verfügung und die waren verdammt teuer und jetzt haben sie einen neuen Lieferanten gefunden, trotz der Situation, wo irgendwie für dasselbe Geld doppelt so viel Kapazität und ich glaube sogar noch günstiger, da gab es so einen Blogpost vor ein paar Wochen und dann haben sie quasi das automatisch gemacht, adaptiert und auch noch den Preis gesenkt.
Thomas: Da dachte ich mir, Leute, wie geil ist das?
Thomas: Was für ein Hersteller macht sowas?
Thomas: Findet neue Lösungen und senkt dabei auch noch den Preis für Order,
Thomas: die schon, na gut, die sind nicht bezahlt.
Thomas: Die haben ein Deposit hinterlegt.
Thomas: Bezahlt sind die noch nicht, weil das sind alles Pre-Orders.
Thomas: Gut, also vielleicht sehen sie da auch die Gefahr,
Thomas: dann könnte ja jemand, wenn die Konfiguration sich ändert,
Thomas: eine Order droppen, wie auch immer, ist egal.
Thomas: Aber ich finde das trotzdem von der Firma her einen coolen Move.
Andrej: Ja, und jedes Teil hat einen QR-Code.
Thomas: Und habe mir dann gedacht, komm, jetzt klickst du.
Thomas: Das war komisch, weil du hast ein Framework 13.
Thomas: Ich habe mir jetzt das 13 Pro geklickt.
Thomas: Dieses hat halt so einen MacBook-Formfaktor.
Thomas: Gehen wir nochmal einen Schritt zurück.
Thomas: Für alle, die sich damit nicht auseinandergesetzt haben.
Thomas: Was macht ein Framework aus?
Thomas: Es ist wirklich total auf Repairability getrimmt.
Thomas: Du kannst es auseinanderbauen.
Thomas: Du kannst es sogar in Teilen kaufen und dir zusammenschrauben.
Thomas: Dann hast du halt dein Chassis,
Thomas: kriegst du deine Tastatur, kriegst du deine SSD,
Thomas: WLAN-Adapter oder was weiß ich.
Thomas: Und dann stöpselst du sie zusammen und dann kannst du die Kiste so benutzen.
Thomas: Oder eben, du musst was tauschen, Batterie neu, kostet 'nen Hunni oder sowas, kannst du einbauen, kein Problem.
Thomas: Geil, ne?
Andrej: Also du machst, ich glaube, ich muss nur vier Schrauben öffnen unten.
Andrej: Dann kannst du die Tastatur anheben.
Andrej: Und das ist nicht nur so reparierbar,
Andrej: sondern das Kabel für die Tastaturanheberei ist lang genug,
Andrej: dass du es nicht aus Versehen abreißt.
Andrej: Also sowas im Design ist halt auch drin, ne?
Thomas: Stimmt, preislich ist das ein ganz schöner Klopper.
Andrej: Ja, bin ich gespannt, was du davon hältst.
Andrej: Reparability ist natürlich ein großer Faktor.
Andrej: Dafür sind sie leider echt ein bisschen teuer für das, was sie bieten.
Andrej: Also im Vergleich zu Dell und Lenovo mit den ThinkPads.
Thomas: Die haben ja ein bisschen günstiger angefangen, als sie angekündigt wurden.
Andrej: Au, für die Workload ist ja was anderes.
Thomas: Da war der Markt ja auch schon in den Fritten, aber noch nicht so sehr.
Thomas: Ich habe das Teil jetzt bestellt für rund 2370 oder so.
Thomas: Ja, also mein MacBook war günstiger bei Amazon damals, war glaube ich ein paar Euro günstiger und von den Benchmarks her circa ein Drittel schneller, aber ob die Benchmarks aussagekräftig sind, weiß ich nicht.
Thomas: Ja, genau, das sagen die Benchmarks. Tatsächlich, das war's. Ja gut, da habe ich wirklich eigentlich keine Ahnung von. Ich habe nur gesehen, von der Teraflop-Geschichten her, hätte die Intel-Plattform vom Framework sogar bessere Zahlen, aber müsste man mal unter der realen Bedingung testen.
Andrej: Es wird definitiv besser sein für KI-Kram, dein MacBook.
Andrej: Da haben die nicht ansatzweise eine Chance gegen die.
Andrej: Was auch immer für ein Chip du nimmst, ob Intel oder AMD.
Thomas: Ja, okay, also geklickt für viel Geld und es war sehr komisch, weil du hast dein Framework 13 Jahre vor einem Jahr oder so gekauft und hast mir damals schon erzählt, ja, du kannst dir das halt fertig kaufen, pre-assembled, pre-built nennen sie es glaube ich, oder du kaufst dir das in der Do-it-yourself-Variante, dann kriegst du die ganzen Komponenten, du hast die ja sogar selber, um ein bisschen Knete zu sparen und war ja auch signifikant.
Andrej: Ich glaube, letztes Jahr im Mai oder so, in einem Dreh.
Thomas: Uiuiui, das ist, ja, irgendwo, das war noch eine Zeit, hör mal. Ja, kommen wir gleich zu. Kannst damit jetzt eine Reihe machen vielleicht. Also, ja, also wie gesagt, damals war es halt so, die Pre-Build-Variante ist teurer und du kannst ja was sparen, wenn du Do-It-Yourself machst.
Andrej: Bisschen, ich glaube 250 Euro oder so, habe ich mir gespart,
Andrej: weil ich meine SSD und RAM selber gekauft habe damals.
Andrej: Ich habe ja 48 GB da drin, dafür habe ich 90 Euro bezahlt.
Andrej: Und 2 TB SSD auch, ich glaube, 110 Euro waren das.
Andrej: Ich glaube, das ist jetzt alles so um die 300 bis 400 Euro wert.
Andrej: Willst du einen Fan verkaufen?
Andrej: Aber mir hat das damals auch schon keinen Sinn gemacht,
Thomas: Zu dem Zeitpunkt, wo ich dann geschaut habe, das war jetzt so vor rund zwei Wochen, war es plötzlich alles umgekehrt. Oder drei Wochen, weiß ich nicht. Also wenn die das wirklich tun, bin ich ganz bei dir. Das ist wirklich eine gute Frage. Ergibt auch dann gar keinen Sinn.
Andrej: weil die DIY-Variante, die wird zusammengebaut,
Andrej: getestet vor Ort in deren Lab
Andrej: und dann wieder auseinandergebaut.
Andrej: Das heißt, die hat ja einen Schritt mehr.
Andrej: Warum ist die günstiger?
Andrej: Das tun die, das ist deren Production-Prozess.
Andrej: Ich habe da so ein Interview gesehen,
Andrej: da sind die durch die Hallen gegangen
Andrej: und haben dann erklärt,
Andrej: der Gründer hat das so erklärt,
Andrej: wie die das machen.
Andrej: Warum ist das günstiger?
Thomas: Oder die testen die Komponenten nicht alle immer im Zusammenhang.
Andrej: Wenn du Produkte herstellst
Andrej: und verschiedene SKUs hast,
Andrej: also eine 2 GB, eine 8 GB,
Andrej: wenn du verschiedene Linien hast,
Andrej: Das ist immer teuer, weil das Lagerplatz
Andrej: ist. Aber die können ja einfach nur
Andrej: sagen, ja komm, wir bestellen einfach
Andrej: einen Sack von den grauen Panels, einen Sack von
Andrej: den deutschen Tastaturen, einen Sack von den
Andrej: englischen Tastaturen. Und die bedienen
Andrej: sich davon einfach sowieso. Vielleicht ist das
Andrej: keine Ahnung, ist nur Spekuliererei.
Thomas: Also deine Komponenten.
Andrej: Doch, die bauen den zusammen,
Thomas: Echt? Okay.
Andrej: machen auch RAM und SSD rein,
Thomas: Ich kenne das jetzt so von unserem Arbeitgeber und so, der hat halt Teststationen.
Andrej: weil sonst kannst du ja nicht testen. 400 Euro.
Thomas: Das sind dann riesige Teststationen für RAM-Module oder für SSDs oder sowas.
Thomas: Und dann kann das alles ganz gezielt getestet werden.
Thomas: Und wenn alle Komponenten einzeln funktionieren, müsste ja auch die Gesamtkombination stimmen.
Thomas: Ja, das war auf jeden Fall dann plötzlich, vor drei Wochen war das umgekehrt.
Thomas: Da war diese Konfiguration, von der ich gesprochen habe, 2370 oder so, das war die Pre-Build-Geschichte.
Thomas: Und klickst du dir die exakt selbe Konfiguration Do-It-Yourself zusammen, bist du 400 Euro teurer unterwegs.
Thomas: 350, meine ich, waren es.
Thomas: Ja, war komisch, ne? Ich habe darüber nachgedacht, hat für mich keinen Sinn ergeben, dachte mir dann, vielleicht ist die Pre-Build-Variante, haben sie vielleicht in genau diese Konfiguration durchgerechnet schon eine große Order bestellt für genau das und reserviert. Und wenn du Do-It-Yourself machst, kriegst du schon die aktuellen Konditionen. Das hatte ich mir mal so hergeleitet.
Andrej: Wow. Das ist viel.
Andrej: Also ein Fufi würde ich jetzt noch verstehen oder so,
Andrej: aber das kann sein.
Thomas: Ich habe es bestellt irgendwann und war total happy, also ich habe halt mit mir gerungen, willst du wirklich den Schritt gehen, also hast du nicht schon genug Probleme in deinem Leben, dass du jetzt auch noch funktionierende Dinge ersetzt aus Gründen mit neuen Problemen, die auf dich zukommen.
Andrej: Der Spieltrieb. Okay.
Thomas: Naja, der hat das Interesse oder die, die, die, ähm, genau, der hat gewonnen, ich habe geklickt, alles gut.
Thomas: Zwei, drei Tage später gucke ich in den Shop, wir sind irgendwie, ähm, zwei Batches schon weiter, ich bin Batch 16, jetzt mal bei Batch 18 und denke mir, hä, was ist denn da mit den Preisen passiert?
Thomas: Ähm, das Interessante ist, die Order ist wieder hergestellt.
Thomas: Do-it-yourself ist wieder günstiger.
Thomas: Aber frag nicht nach den Preisen.
Thomas: Es gibt einen Blogpost dazu, der das Ganze erklärt.
Thomas: Der halt erklärt, dass einfach mit dieser Art von Anstieg für die DDR5-Preise,
Thomas: oder diese LPCAMM2-Preise, damit haben sie nicht kalkuliert.
Thomas: Die Konfiguration, die ich bestellt habe, kostet jetzt 900 Euro mehr.
Andrej: Wow, 900?
Thomas: Krank, oder?
Andrej: Ja, das Problem ist halt auch,
Thomas: Ja, LPCAMM2, ja, das Ding kostet jetzt 3200 irgendwas Euro in der Pre-Build-Variante und es ist 3100 irgendwas Euro in der Do-It-Yourself-Variante, du kannst wieder ein bisschen sparen, aber da muss man sich schon, nee, 32, 32 mit einer 1TB SSD, das ist eine von den Pre-Build-Konfigurationen zum Glück gewesen,
Andrej: der Framework-Laptop ist der einzige Laptop
Andrej: und der erste Laptop, der dieses neue RAM-Modul hat.
Andrej: Wie heißt das?
Andrej: LP, wie auch so?
Andrej: LP-Cam, okay.
Andrej: Das heißt, das ist noch kein...
Andrej: Das nenne ich nicht sparen, du.
Andrej: Wie viel RAM hast du bestellt?
Thomas: Die haben zwei verfügbar gehabt, den Ultra 5 und den Ultra X7.
Thomas: Der Ultra 5 war dann 16 GB und 512 SSD und der Ultra X7 32 GB, 1 TB SSD.
Thomas: Zufällig genau das, was ich eh genommen hätte.
Andrej: Mich ärgert es so, dass sie den RAM geändert haben.
Thomas: Aber ja, haben Leute auch teilweise auf YouTube alles schon mal durchgespielt,
Andrej: Sonst würde ich mir nur das neue...
Andrej: Also ich würde einfach nur das neue Chassis,
Andrej: die neuen Lautsprecher und alles bestellen
Andrej: und einfach umbauen.
Thomas: tatsächlich ein komplettes Upgrade davon zu machen.
Thomas: Aber ja, der RAM ist natürlich ein Bestandteil der Platine und dementsprechend müsstest du da auch löten.
Andrej: Jep, lohnt nicht.
Thomas: Also ich bin aus allen Wolken gefallen und die haben es erklärt.
Thomas: Und die haben auch erklärt, dass eben aufgrund der Tatsache, dass die Preise so stark gestiegen sind, haben sie jetzt auch ein Problem.
Thomas: Die hatten nämlich schon eine gewisse Menge an 64-Gig-Modulen gekauft.
Thomas: Die reicht aber nur bis Batch 4, wenn du Do-It-Yourself bestellt hast.
Thomas: Und wenn du nur das Mainboard bestellt hast, bis Batch 7 oder irgendwie sowas.
Thomas: Und das Problem ist halt, für Do-It-Yourself und Mainboard-Bestellung, also Einzelkomponente, also nur Mainboard anscheinend,
Thomas: haben sie jetzt gesagt, die haben da jetzt 32 Gig-Module reingepackt statt 64,
Thomas: berechnen dir allerdings auch nur das 32 Gig-Modul zu dem damaligen Preis.
Thomas: Also das ist schon, sagen wir mal, fair, aber ist halt krass,
Thomas: weil du hast im Grunde deine 64 Gig-Konfiguration kannst du jetzt nicht kriegen.
Thomas: Und ich habe mich dann auch persönlich gefragt, weil da stand irgendwie so ein Satz drin wie,
Thomas: ja, für die Pre-Build-Systeme mit 32 Gig machen wir den Schritt nicht,
Thomas: da gibt es nämlich auch überhaupt noch gar keine 16 Gig-Version, die kommt später noch.
Thomas: Dann dachte ich mir, schreibst du sie mal an, ob man sich jetzt darauf einstellen kann, ob die so kommt wie bestellt oder ob wir dann später noch das Downgrade kriegen.
Thomas: Da haben sie auch reagiert und meinten, nee, nee, das wird dann schon so ausgeliefert werden mit den 32 Gig.
Andrej: Das ist krass, ne?
Thomas: Es ist unglaublich, wie der Markt gerade kaputt geht.
Andrej: Der Markt ist so richtig kaputt.
Thomas: Ist echt traurig.
Thomas: Also es ist wirklich traurig, gerade auch für so ein Unternehmen, was mit guten Werten an den Start geht.
Thomas: Wir haben es ja auch schon mal damals mit Samuel auf der Handyseite gehabt.
Thomas: Und haben jetzt wirklich ein Produkt rausgebracht, wo ich glaube, dass viele Entwickler da richtig Bock drauf haben, weil eben MacBook-Formfaktor, also großes Touchpad, das Design sehr ähnlich.
Thomas: Also vieles geht in die Richtung, mal gucken, wie die Verarbeitungsqualität nachher wirklich ist.
Thomas: Lautstärke könnte auch ein Thema sein, weil das hat halt immer noch nur eine Lüfterstruktur.
Thomas: Also es gibt halt nur einen Lüfter, nicht zwei wie bei Mac.
Andrej: Ja, das macht finanziell aber keinen Sinn.
Thomas: Das ist noch nicht so ideal.
Thomas: Aber dafür ist es halt upgradbar.
Thomas: Du könntest deins wirklich vollständig upgraden auf die neue Kiste.
Thomas: Nee, jetzt gerade jetzt nicht.
Andrej: Also aktuell nicht und es hat auch nie Sinn gemacht.
Andrej: Es macht mehr Sinn, den kompletten Laptop zu verkaufen,
Andrej: den neuen zu holen.
Thomas: Ja, ich denke auch.
Andrej: Weil willst du bei Ebay dir gebraucht
Andrej: jedes Einzelteil für den blöden Laptop kaufen?
Thomas: Das ist der Nachteil, du müsstest dann halt das Gerät auch alle Einzelkomponenten später so verkaufen, richtig.
Thomas: Und die müsstest du an den Mann bringen.
Andrej: Eben.
Andrej: Was ich machen würde oder was eine Überlegung wert wäre,
Andrej: ist natürlich nur das Mainboard zu tauschen.
Thomas: Für die Rechenleistung, ja.
Andrej: Dann kriegst du halt nicht das neue Chassis.
Andrej: Gut, dann hast du immer noch den Lautsprecher nicht
Thomas: Stimmt, das haben Leute tatsächlich einfach eigene Gehäuse irgendwie gebaut, gedruckt oder sonst was, ne?
Andrej: und dann kannst du den internen Kram von Framework
Andrej: halt für den Server benutzen.
Andrej: Weil dafür reicht die CPU ja dicke aus.
Andrej: Die Framework-Leute haben ja auch ein CAD-File aufgelegt
Andrej: für die ganzen Maße.
Andrej: Da gibt es, glaube ich, auch von bestimmten Herstellern
Thomas: Mhm, nice.
Andrej: auch fertige Gehäuse, die du kaufen kannst.
Andrej: Brauchst du gar nicht drucken.
Andrej: Sondern hast du so ein...
Andrej: Also gibt es alles, ne?
Thomas: Das ist ein interessantes Ökosystem, weil es ja auch, es gibt ja sogar ein RISC-V-Mainboard und ein ARM-Mainboard,
Thomas: nicht von Framework selbst, einfach
Thomas: diesen Formfaktor eingehalten und dann kannst
Thomas: du es dir da einbauen, wenn du möchtest. Nur den
Andrej: Ja, und deswegen macht es halt null Sinn in meinen Augen.
Thomas: Akku, den könntest du bei dir nicht einbauen, weil der ist
Thomas: dicker. Der ist ja ganz mehr
Thomas: Kapazität, aber der hat leider auch eine andere
Thomas: Form. Ja, Speaker vielleicht.
Thomas: Die Investition könnte klein genug sein, wenn die
Thomas: dich nerven, weil du meintest mal, die klingen so
Thomas: wie Dose. Das wäre vielleicht was.
Andrej: wie eine Alu-Dose. Nichts zu essen.
Thomas: Das ist doch, ja.
Thomas: Tja, interessant. Total verrückt.
Thomas: Ich habe mir dann überlegt,
Thomas: was kommt denn jetzt alles auf mich zu?
Thomas: Also vielleicht, Distribution, das ganze Thema Distribution.
Thomas: Also ich bin jetzt quasi, die letzten Tage tendiere ich zu Omarchy,
Thomas: einfach weil ich diese tastaturgetriebene Bedienung gerne mal ins Extreme treiben wollen würde.
Andrej: Da gibt es aber geile Tools für.
Thomas: Bis dahin war ich aber sehr unentschlossen, sollte es ein KDE sein, sollte es ein GNOME sein,
Thomas: sollte es ein COSMIC oder sowas sein, ja, nein, keine Ahnung.
Thomas: Ich habe mich so ein bisschen damit beschäftigt und da gibt es, also du hast halt auf einmal viele neue Herausforderungen, die du zu lösen hast, neben der einfachen Umgebung, die sich ändert.
Thomas: Du hast auf einmal so, was sind denn die Probleme? Naja, wenn du halt immer noch ein iPhone hast zumindest, so mal eben Dinge airdroppen geht halt nicht mehr.
Andrej: LocalSend zum Beispiel oder solchen.
Thomas: LocalSend, coole Lösung. Ja, habe ich auch mal getestet jetzt, also ohne Linux, einfach nur mal für die Leute, die vielleicht noch keine Lösung haben zwischen Geräten irgendwas oder vielleicht ein Linux und ein iPhone oder sowas.
Andrej: Da gibt es auch viele andere. LocalSend ist nur eine von,
Andrej: ich habe schon tausende solcher gesehen.
Thomas: Also LocalSend funktioniert halt irgendwie einfach nur, du musst halt im LAN sein und dann nutzt das hier dieses MDNS-Announcement und du siehst dich dann gegenseitig und dann kannst du sagen, alles klar, ich schicke da mal eine Datei rüber oder mein Clipboard oder so.
Thomas: Kannst du einfach ganz normal im Browser machen, kannst du aber auch die App installieren.
Thomas: Ziemlich cool.
Andrej: So habe ich zum Beispiel meine WireGuard-Dateien verteilt
Andrej: an die Geräte von meiner Freundin.
Thomas: Okay, nett.
Thomas: Aber du musst im selben LAN sein.
Thomas: Das ist die Hürde, glaube ich.
Thomas: Das heißt, wenn du dir irgendwo auf der Party bist oder so, Festival, Fete, irgendwas, willst du was austauschen, dann würde LocalSend wahrscheinlich nicht funktionieren.
Andrej: Es weiß ich noch, ja. Da gibt es aber auch
Andrej: Methoden, also es gibt auch so ein Tool,
Andrej: ich glaube, die kommen nicht auf den Namen,
Andrej: aber es gibt ganz viele solcher Send-Tools,
Andrej: die dann auch übers Internet funktionieren.
Andrej: Ohne Account, free und so.
Thomas: Ja, genau, übers Internet, aber wenn du halt lokal über Bluetooth quasi oder hier direktes WLAN oder sowas, dann wird es schon wieder schwieriger.
Andrej: Muss man ein bisschen aufpassen, was man schickt.
Andrej: nutze ich.
Thomas: Ja, ich habe KDE Connect gefunden.
Thomas: Mit sowas habe ich gar nicht gerechnet.
Thomas: Nutzt du?
Thomas: Okay, für dein Android und Linux und verbindest die.
Thomas: Was machst du da alles mit, Robert?
Andrej: Ich sehe gerade, ich habe es auf dem Desktop gar nicht installiert,
Andrej: aber auf dem Framework habe ich das drauf und da
Andrej: ich sehe die Notifications,
Andrej: was mehr oder weniger nervig sein kann.
Thomas: Das ist cool.
Andrej: Kannst aber ausmachen. Du kannst da
Andrej: glaube ich Dateien hinterschieben.
Andrej: Du siehst einen Anruf ankommen,
Andrej: falls du das stumm hast.
Andrej: Also ganz nett.
Thomas: Genau diese Integration, die man eigentlich nur innerhalb des eigenen Ökosystems erwartet.
Andrej: Meistens nur Apple. Microsoft kriegt das glaube ich auch nicht hin.
Thomas: Ich bin mal gespannt.
Thomas: Ich habe irgendwas gelesen beim iPhone gegen gewisse, manche Dinge nicht, die bei Android gehen.
Andrej: Gibt es das nicht im Web?
Thomas: Klar, wieder irgendwie abgesandboxed oder sowas.
Thomas: Aber ja, dann Apple Music ist bei mir noch ein Thema.
Thomas: Ja, das gibt es im Web.
Andrej: Gut, dann machst du dir so einen Chrome-Tab hier.
Thomas: Da habe ich nur wenig Bock drauf.
Thomas: Aber gibt es im Web.
Thomas: Wäre vielleicht eine Option.
Andrej: Wer ist das? Speicher als Seite
Andrej: oder so. Und dann hast du das auch als
Thomas: Auf dem Arbeitsrechner hatte ich damit Probleme, da sind die Streams immer wieder abgebrochen, aber vielleicht ist das ja auch ein Thema, was gelöst ist, das könnte natürlich sein. Ich habe sonst gefunden, gibt es eine freie Software, nein, die freie ist die glaube ich tatsächlich nicht. Es gibt eine Multi-Plattform-Software namens Cider, Cider Collective, die haben wohl ein Interface gecodet, Vibe-Coded wahrscheinlich und, ja, ich suche es gerade.
Andrej: App, in Klammern.
Andrej: Das Logo ist ja geil.
Andrej: Wenn du eine Hand in eine Ciderflasche hält,
Andrej: dann fällt eine Note raus in so ein Bierglas.
Andrej: Ist im Readme oben.
Thomas: Ah, okay. Ja, das könnte eine Lösung sein.
Thomas: Airpods weiß ich nicht, was mich erwartet.
Thomas: Also ich denke, verbinden sollte klappen, wie mit dem Arbeitsrechner.
Thomas: Du musst es halt nur explizit machen.
Thomas: Also es switcht dann halt nicht mehr.
Thomas: Es ist ja kein Multipoint, kein Bluetooth-Multipoint,
Thomas: sondern es switcht ja irgendwie mit irgendeinem Apple-Proprietär-Kram
Thomas: normalerweise zwischen den Geräten hin und her.
Thomas: Das wird natürlich mit dem Linux-Ding nicht mehr funktionieren.
Thomas: Da dachte ich mir schon, es gibt vielleicht auch andere Multipoint-Lösungen,
Thomas: Aber da hast du dann auch schon wieder, es gibt halt eigentlich immer nur so zweifaches Multipoint, also dreifach, ich glaube, ich habe einen Kopfhörer oder so gefunden, der das unterstützt und der dann aber auch nur degradierte Audioqualität anbietet.
Andrej: Also meine Bose, die
Andrej: urmelalten Dinger, die verbinden sich immer mit Handy.
Andrej: Die können sich mit zwei gleichzeitig verbinden.
Andrej: Das hat ein altes Gerät.
Andrej: Und wenn du auf dem Handy was spielst,
Andrej: dann Pause machst, dann auf dem MacBook weitermachst,
Thomas: Ja, das mit dem zweifaches scheint nicht nur wegen altes Gerät zu sein, das scheint immer noch ein Ding, eine Limitierung zu sein bei den, ich wechsle halt in der Regel ganz gerne mal zwischen drei Geräten hin und her, deswegen ist das relevant.
Andrej: oder egal was für ein Gerät, dann geht das.
Andrej: Und ist auch immer High-Quality.
Andrej: Ja gut, dann wird es vielleicht schwieriger.
Thomas: Aber mal gucken, da bin ich noch gespannt, das könnte auf jeden Fall noch ein bisschen Schmerzen bereiten, auch Schmerzen bereiten könnte die Verfügbarkeit hier so von Videoeditoren zum Beispiel, das ist aber eigentlich ein Thema, das haben wir immer noch nicht besprochen, nämlich Podsync quasi.
Thomas: Also ich habe halt Anfang des Jahres viele Monate quasi da reingeballert, eine Podcasting-Aufnahmeplattform zu bauen, weil mich die, mit der wir gearbeitet haben, ein bisschen genervt hat und dazu gehört natürlich auch testen, testen von vielen Editoren und die Verfügbarkeit von Editoren wie Final Cut oder, wie hieß das Adobe-Ding noch gleich, ich verdränge das immer, das gibt es zum Glück auch auf Linux.
Andrej: Ich kenne nur DaVinci Resolve.
Andrej: Das, ja.
Thomas: Es hat wohl Einschränkungen wegen Hardware-Beschleunigung und so, aber genau, das gibt es.
Thomas: Aber Final Cut natürlich nicht, das kriegst du wahrscheinlich sogar nur auf dem Mac, denke ich mal.
Andrej: Und ganz simpel halt das KDE-Tool.
Andrej: Das nutze ich auch oftmals so.
Thomas: Kdenlive oder so, ne?
Andrej: Kdenlive.
Andrej: Kdenlive, ja.
Thomas: Ja, das sind auf jeden Fall Dinge, wo man sich die letzten Jahre keine Gedanken machen musste,
Andrej: Das ist sehr rudimentär, aber funktioniert.
Thomas: weil du effektiv mit einem Mac halt die, in vielerlei Hinsicht ja die Vorteile von einem Unix-basierten System hast,
Thomas: die Kommandozeile und so.
Thomas: Und auf der anderen Seite aber auch nahezu
Thomas: alles, was kommerziell benötigt
Thomas: wird, funktioniert.
Thomas: Ob es halt irgendwie, keine Ahnung, die,
Thomas: wenn du dann doch mal irgendwie was mit der Webcam
Thomas: einstellen musst und Webcam
Thomas: Programmen da installieren
Thomas: musst, Treiber und Programmen, damit du die Einstellung
Thomas: vornehmen kannst, das geht halt einfach immer.
Thomas: Bei meiner Frau ist es halt so, bei Andrea, dass
Thomas: sie tatsächlich noch eine Hebammensoftware
Thomas: hat, weil sie ist jetzt gerade auf Apple Silicon
Thomas: gewechselt und sie hat eine Hebammensoftware, mit
Thomas: der sie ihre Abrechnung macht.
Thomas: Das ist wirklich noch eine Windows-only-Software.
Thomas: Die haben zwar jetzt auch eine SaaS-Lösung,
Thomas: aber da müsste man halt hinmigrieren.
Thomas: Aktuell ist es noch Windows-only.
Andrej: Ja.
Thomas: Und Windows-only, das ist gar nicht mehr so...
Thomas: Also ich hätte gedacht, du kannst einfach diese Parallels-VM nehmen
Thomas: und du startest die jetzt halt auf einem aktuellen Parallels,
Thomas: auf einem Apple Silicon.
Thomas: Nope, weil der Ansatz ist wirklich,
Thomas: du installierst ein ARM-basiertes Windows
Thomas: und das ARM-basierte Windows wiederum hat dann den Translation-Layer drin,
Thomas: um x86 drauf auszuführen.
Andrej: Oh, böse Kombi, ey.
Andrej: Das ist ja eine Kette.
Thomas: Naja, da hast du einige Komponenten
Thomas: drin, brauchst wieder eine Windows-Lizenz und
Thomas: heieiei. So,
Thomas: vorhin brannte mir eine Frage
Thomas: Dingens, und jetzt haben wir das Linux-Thema
Thomas: und wie gesagt, also es dauert jetzt noch ewig,
Thomas: wenn es sich nicht
Thomas: noch weiter verschiebt, dann irgendwann im Oktober,
Thomas: aber ich sehe gerade,
Thomas: Batch 18 ist schon für Dezember angekündigt,
Thomas: also kann halt auch sein, dass es
Thomas: sich wieder verschoben hat,
Thomas: wer weiß das schon. Warte, das
Thomas: gucke ich jetzt schnell, das dürfte
Thomas: easy gehen. Ich glaube, du musst nur in den Konfigurator
Thomas: klickst halt irgendeine Konfiguration an, siehst,
Thomas: dass sie in welchem Batch sie drin ist
Thomas: und dann klickst du auf den Batch und dann zeigen
Thomas: sie dir an, wie das komplette, die gesamte
Thomas: Timeline ist.
Thomas: Nö, ist tatsächlich noch
Thomas: für Oktober expected. Na gut.
Thomas: Du hast vorhin
Thomas: das Stichwort TPM
Thomas: erwähnt. Dinge, mit denen ich
Thomas: mich, glaube ich, noch nie auseinandergesetzt
Thomas: habe in der PC-Welt.
Andrej: Ich nehme Unsecure Boot.
Thomas: Ja, vielleicht
Thomas: Vielleicht auch, aber was ich ja sehr charmant finde in der Apple-Welt ist, dass sie gewisse Dinge eben über dieses Secure Enclave gelöst haben.
Thomas: Das ist ja im Grunde wie ein zweiter kleiner Rechner im Rechner ist, mit fest definierten Schnittstellen und dadurch wird halt diese Kapselung realisiert.
Thomas: Kriegt man das mit TPM auch so hin und gibt es da auch so Linux-Integration, dass so zum Beispiel sowas wie Fingerprint-Sensor-Informationen, diese biometrischen Dinge, dass die halt in TPM gespeichert werden? Ist das das Pendant oder ist das was komplett anderes?
Andrej: Nee, also das ist jetzt mein Wissen vor vielen Jahren.
Andrej: Vor drei, vier, fünf Jahren oder so.
Andrej: Fingerprint ist entweder ein Binary-Blob-Geschichtchen,
Andrej: was dein Fingerprint-Reader macht.
Andrej: Und dein Fingerprint liegt auf dem Gerät selbst.
Thomas: Okay, okay, okay, okay. Das hatten wir mal bei dir mit dem Dashboard, mit dem Kiosk, das Thema. Wenn du TPM benutzt, dann löst das nicht das Problem, wenn das gesamte Gerät geklaut wird, weil der Schlüssel ja quasi mitgeklaut ist.
Andrej: Oder es ist diese Lib.
Andrej: Und wer ist die Lib?
Andrej: Irgendeine Lib ist das, die alle Fingerprint-Reader kann.
Andrej: Und dann ist das irgendwo lokal.
Andrej: Und dann läuft da...
Andrej: Da bin ich ganz, ganz, ganz froh.
Andrej: Das ist nicht ansatzweise so wie bei Mac oder Windows.
Andrej: Bei Windows hast du ja auch dieses Windows Hello,
Andrej: glaube ich, heißt es ja.
Andrej: Was mit biometrischen Faktoren wie Gesichtserkennung
Andrej: vielleicht auch Fingerprint, das weiß ich gerade gar nicht,
Andrej: dein Account entsperrt
Andrej: und das hast du nicht so.
Andrej: Du kannst den Fingerprint benutzen,
Andrej: kannst ihn für dein Login benutzen,
Andrej: du kannst ihn auch für SSH benutzen, das geht,
Andrej: aber wie sicher das ist, kann ich dir
Andrej: nicht gerade sagen.
Andrej: Und Verschlüsselung ist ja nochmal ein separates Thema.
Andrej: TPM an sich bringt dir gar nichts, weil
Andrej: dann ist dein Laptop geklaut,
Andrej: ist ja zwar verschlüsselt, aber
Andrej: wenn er dann startet, ist er halt trotzdem
Andrej: am, müsst ihr halt die SSD klauen.
Andrej: Nur dafür schützt es.
Andrej: Genau, und da sind dann diese Shamir-Secrets halt interessant,
Andrej: die dann mit Tang und Clevis kommen können.
Andrej: Dann hast du Clevis als einen Teil,
Andrej: TPM als zweiten und die beiden dürfen zusammen entschlüsseln.
Andrej: Das heißt, dein Threat-Faktor ist dann,
Andrej: solange die zu Hause sind, kriegen die meinen Laptop entschlüsselt.
Andrej: Hey, whatever, wenn es geklaut ist, dann halt nicht.
Andrej: Das heißt aber auch, wenn es geklaut ist, dass man es eintippen muss.
Thomas: Okay. Wie war denn dein Umstieg damals? Wenn du dich da noch dran erinnerst, das ist ja jetzt auch schon ein Jährchen her. Auf Linux. Genau. Du hattest vorher auch schon mal Linux, ne? Das stimmt. Aber dann warst du ja doch ein paar Jahre primär auf dem Mac unterwegs, oder? Von der Arbeit her? Und, ja.
Andrej: Auf Linux oder auf Mac?
Andrej: Weil ich bin ja auf Mac bei der Arbeit gewechselt.
Andrej: Meinst du, also ja, ich mache das ja auch irgendwie 2016, ne, 2015 habe ich das klar.
Andrej: Ne, von der Arbeit her ja, bin ich ja jetzt auch immer noch.
Thomas: Hm. Ja, das ist ein guter Faktor, ja. Stimmt. Ja. Mhm. Ja. Ja. Ja. Das muss man dann wieder machen. Stimmt. Ja. Hast du mir gerade kurz Angst gemacht? Dafür so ein Roadcaster-Duo. Und. Mhm. Ja. Okay. Stimmt, es gab auch ein Android-App-Ausführ-Layer, oder? Außerhalb von dem SDK. Okay. Na gut. Wir werden sehen. Ich bin total gespannt. Rollig. Alles.
Andrej: Also ich bin, wie gesagt, immer noch ein großer Fan von dem.
Andrej: Ich habe keinen Bock auf das Mac-User-Interface, das finde ich einfach, liegt mir nicht.
Andrej: Ich finde das nicht logisch.
Andrej: Und hast natürlich die ganzen Vorteile mit Docker-Nativ.
Andrej: Keine VM, ich bin, also ich weiß auch, welche Tools ich immer nutze.
Andrej: Also wenn man mal zoomen und so läuft alles, wenn man Teams benutzt, Teams for Linux, nicht das offizielle Teams benutzen, das ist Müll, einfach das Teams for Linux Ding nutzen, wenn man es dann darf, installieren darf.
Andrej: Für meinen persönlichen Use Case habe ich ja wenig gefunden oder eigentlich gar nichts gefunden, was ich damit nicht machen kann.
Andrej: Aber es liegt auch stark daran, dass wenn ich irgendwas kaufe, irgendwelche Hardware, dann recherchiere ich auch im Info hinein.
Andrej: Audio Interface ist zum Beispiel so ein Thema, das ist nicht so easy dann.
Andrej: Du kannst jetzt nicht einfach so sagen,
Andrej: okay, ich mache jetzt Linux, ich möchte jetzt
Andrej: diese Streamdecks haben
Andrej: oder sowas. Ich glaube, es gibt da
Andrej: oder GoXLR, diese
Andrej: bekannten Teile. Ich glaube, es gibt für bestimmte
Andrej: Themen, irgendwer hat auch irgendwo im YouTube-Video
Andrej: mal erwähnt, dass GoXLR sogar besser
Andrej: auf Linux gerade läuft, weil die die alte Software
Andrej: nicht mehr supporten oder so ein Quatsch.
Andrej: Und da ist die Community natürlich dann wieder dran.
Andrej: Aber muss man ein bisschen
Andrej: mehr schauen. Es gibt so ein,
Andrej: ich habe vergessen, wie das heißt, so ein Standard,
Andrej: in dem alle Audio-Interfaces
Andrej: mit drin sind. Und wenn
Andrej: das Audio-Interface
Andrej: diesen Standard unterstützt, dann kannst du es
Andrej: damit halt benutzen. Das heißt aber
Andrej: nicht, dass du es damit einstellen kannst. Mein Yamaha
Andrej: AG03, was ich hier habe zum Aufnehmen,
Andrej: das kann ich perfekt nutzen.
Andrej: Alle Knöpfchen drücken und so weiter.
Andrej: Das ist gut. Aber die
Andrej: Konfiguration muss ich über so eine komische App machen.
Andrej: Und diese App muss sich dann in Wine laufen
Andrej: lassen auf meinem Laptop. Die Konfiguration
Andrej: kann ich aber auch mit meinem Handy machen. Da gibt es
Andrej: eine Handy-App zu. Weil im Endeffekt ist die Wine-App
Andrej: nichts anderes als eine Android-App, die
Andrej: oder was auch immer für eine App halt gepackagt ist.
Andrej: Uh, da musst du, ne,
Andrej: also, ich weiß, dass Chrome, Chrome
Andrej: OS hat das, aber hab ich mich noch
Andrej: nicht mit beschäftigt. Ja, frag.
Thomas: Dann jetzt du und auch mit dem Nix mit dabei.
Thomas: Ist alles nochmal so ein bisschen aufgewühlt.
Thomas: Mal gucken, mal gucken.
Thomas: Du hattest, ich weiß nicht, das nächste Thema kommt ja jetzt wieder, ne?
Thomas: Ich hatte nämlich noch ein...
Thomas: Komm, fangen wir mit dem nächsten Thema an.
Andrej: Okay. Genau.
Thomas: Ich bring das gleich mal rein.
Andrej: Wir haben ja noch nicht genug geredet mit einer Stunde
Thomas: Plus den ersten Teil der Aufnahmen.
Andrej: 58. Oh, stimmt.
Andrej: Mist. Ähm, naja.
Andrej: Wird auch nicht so mega lang.
Andrej: Ich hab ja dieses 10-Zoll
Andrej: Rack hier rumstehen, was ich ja
Andrej: auf Meetups mitnehme und so. Und
Andrej: wir haben ja auch mal von TouchKio gesprochen.
Andrej: Diese Software, die dir erlaubt,
Andrej: ein Touchscreen mit Home Assistant zu steuern,
Andrej: mit dimmbaren, also das Licht dann zu steuern,
Andrej: an- und auszuschalten, das Dashboard.
Andrej: Mir war das zu komplex und dann habe ich die Idee gehabt,
Andrej: ich baue jetzt ein Betriebssystem, was ja nicht komplexer ist.
Thomas: Von Home Assistant?
Andrej: Nein, mein Ziel war, oder anders,
Andrej: bei TouchKio muss man halt ein Betriebssystem installieren,
Andrej: ein bestimmtes und auch ein bestimmtes Desktop,
Andrej: weil sonst funktioniert das Licht nicht und so weiter.
Andrej: Und dann muss man ein TouchKio installieren.
Andrej: Das fand ich waren schon sehr viele nervige Schritte.
Andrej: Nichts gegen das Tool, das ist super, aber es sind halt viele nervige Schritte, die viele Leute, glaube ich, scheuen.
Andrej: Und ich dachte, wie cool das einfach wäre, wenn du einfach was flashen kannst und dann hast du so ein Betriebssystem, was genau das eine macht, und zwar die Dashboard-Anzeigen mit Home Assistant.
Andrej: Und klar, es gibt die iPads, es gibt auch die Android-Version und ich habe gelernt, es gibt einen Kiosk-Modus von Home Assistant für iOS und für Android, wusste ich gar nicht.
Andrej: Ja, also die Companion-App. Es gibt einen iOS-Kiosk-Modus und es gibt einen Android-Kiosk-Modus.
Thomas: Okay, stimmt.
Andrej: Musst du mal in die Doku gucken.
Andrej: Du kannst zum Beispiel bei Android auch den Home Assistant als Launcher auswählen.
Andrej: Das heißt, das bootet direkt in Home Assistant rein.
Andrej: Ja, gibt so ein paar Sachen.
Andrej: Ich bin kein Fan von diesen, so weder iPads noch Android-Tablets an die Wand zu hängen,
Andrej: weil irgendwann sind die halt out of date und dann funktioniert die App vielleicht irgendwann nicht mehr.
Andrej: die ist das jenes. Da bin ich halt irgendwie kein Fan von.
Andrej: Und ich bin aber ein Fan von
Andrej: einem gut maintainter Hardware,
Andrej: irgendeiner x86 oder Raspberry Pi
Andrej: auch, meinetwegen.
Andrej: Und da halt dann erst drauf zu bauen, was
Andrej: dann halt geupdatet wird. Das ist aber auch der
Andrej: Nachteil bei dem TouchKio, ist halt
Andrej: Debian drunter. So, nach fünf Jahren
Andrej: musst du halt, oder wann auch immer der Zeitpunkt ist
Andrej: und nachdem du es installiert hast, musst du halt ein Major-Upgrade
Andrej: machen. So, und das machst du nicht
Andrej: per Klick. Und ich hatte mir
Andrej: die Zielstellung gesetzt, ich möchte ein
Andrej: OS bauen, was easy
Andrej: integriert, aber halt auch
Andrej: eine Update-Entity hat in Home Assistant,
Andrej: wo man sagt, Update, Update, Update und
Andrej: muss sich gar nicht drum kümmern. Du musst nicht
Andrej: verstehen, du brauchst kein SSH,
Andrej: um die Kiste zu verwalten.
Andrej: Das ist gerade mein Ziel. Und ursprünglich wollte ich das
Andrej: mit Yocto machen, weil ich Bock auf Yocto lernen hatte.
Andrej: Aber dann habe ich gemerkt, boah, das ist ja voll kompliziert.
Andrej: Und dann meinte ein Kollege von mir, mit dem ich hier die
Andrej: Nix-Installationsparty gemacht habe, mach das mal
Andrej: mit NixOS und probier mal aus. Und dann hat er mich gefixt
Andrej: und dann habe ich das jetzt mal gemacht.
Andrej: Und ich habe jetzt wahnsinnig viel Zeit darin investiert und bin auch schon verdammt weit gekommen, also krass.
Thomas: So hat es also angefangen, ja?
Andrej: Ich kann jetzt x86-Images bauen und Raspberry Pi 4, das ist das Einzige, was ich gerade hier habe.
Andrej: Ich kann Displays erkennen, ob das ein internes Display oder ein externes ist, weil das macht einen Unterschied zwischen Dim-Layern, das sind unterschiedliche Tools, die das Dimming dann machen.
Andrej: also wirklich Hardware-Dimming, die sprechen dann
Andrej: mit meinem Monitor und haben
Andrej: dann eine bidirektionale
Thomas: Ja, vor allem, wenn du einen Browser orchestrieren musst.
Andrej: Kommunikation. Wenn das nicht funktioniert,
Andrej: geht es immer noch auf Gamma-Werte
Andrej: runter, Rechnungen runter. Das heißt, du kannst immer
Andrej: noch dimmen. So doof, dann verbraucht der
Andrej: Monitor immer noch viel Strom in der Theorie, weil
Andrej: die Brightness nicht ganz so angepasst wird
Andrej: wie mit Hardware dann. Genau.
Andrej: MQTT habe ich entwickelt,
Andrej: dass der sich automatisch meldet bei Home Assistant.
Andrej: Ich habe so ein Seed-File, das
Andrej: du populierst mit MQTT und
Andrej: einen Home Assistant-Token, damit
Andrej: der User sich direkt anmeldet und du das
Andrej: Dashboard hast und nicht über ein Touchscreen dein
Andrej: Username und Passwort eintippen musst, weil das ist Horror.
Andrej: Das habe ich auch echt hacky gemacht,
Andrej: weil es gibt keinen offiziellen Weg von Home Assistant.
Andrej: Ich nehme mir einen User-Token,
Andrej: speichere den, starte Chromium
Andrej: im Developer-Modus
Andrej: mit dem Token.
Andrej: Wie war das nochmal?
Andrej: Ich glaube, ich speichere den Token
Andrej: in den Local Storage vom Chromium.
Andrej: Er startet einmal,
Andrej: dadurch meldet er sich an.
Andrej: Davon nehme ich dann den Cookie.
Andrej: schließe Chromium wieder
Andrej: und starte dann wieder.
Andrej: Irgendwie so war das. Ich habe es nicht mehr in die Details im Kopf.
Andrej: Es gibt ja keinen offiziellen Mechanismus, um sich
Andrej: im User Interface einzuloggen.
Andrej: Das heißt, du musst halt über die Low Level gehen.
Andrej: Das war geil. Das hat Spaß gemacht,
Andrej: das rauszufinden.
Andrej: Ja, und ich möchte nicht,
Andrej: dass man da, ich habe ein Touchscreen Keyboard
Andrej: reingebaut, das war auch richtig kompliziert,
Andrej: aber ich habe ja keinen Bock,
Andrej: ein Passwort da einzutippen. Das macht halt gar keinen Spaß.
Thomas: Da müsste es so einen QR-Code einloggen geben.
Andrej: Ja, aber wie?
Thomas: QR-Code scannen und dann auf dem Handy einloggen oder sowas.
Thomas: Aber dann auch natürlich nicht einloggen mit dem User,
Andrej: Ja, aber eben.
Thomas: mit dem du auf dem Handy eingeloggt bist,
Thomas: weil der darf ja zu viel.
Thomas: Ei, ei, ei.
Andrej: Genau. Und dann habe ich mir auch gesagt, okay, jetzt schreibe ich mal die ganze Doku dafür, wie viel notwendig ist. Habe ich das gemacht mit Screenshots und so. Ich habe das dann fertig gemacht und habe gesehen, das sind ganz schön viele Schritte. Du musst in Home Assistant gehen, du musst einen neuen User erstellen, den Kiosk-User oder wie auch immer du ihn nennen möchtest.
Thomas: Okay.
Andrej: dann musst du dich als der User einloggen,
Andrej: weil du kannst keinen Token erstellen
Andrej: für einen anderen User. Das ist
Andrej: total doof. Das heißt, du
Andrej: erzeugst immer nur Tokens für den User, der du
Andrej: aktuell bist. Genau, ohne einen Token kann
Thomas: Und ohne einen Token kannst du auch nicht mit der API reden wahrscheinlich.
Andrej: ich das Seed-File nicht populieren
Andrej: und dann halt das Dashboard
Andrej: Assistant starten. Nun ja,
Andrej: Claude hat mir unfassbar dabei geholfen, aber man muss
Andrej: dann leider auch viel selber machen und dann
Andrej: und Basis NixOS halt.
Andrej: Jetzt bin ich mir überlegen,
Andrej: vielleicht sollte ich es doch anders machen.
Andrej: vielleicht doch die Integration schreiben.
Andrej: Und die Integration kümmert sich dann um alles.
Thomas: Okay.
Andrej: Da kann ich dann auch Zugriff,
Andrej: habe ich dann halt über die internen Tools
Andrej: auf den Auth-Provider von Home Assistant Zugriff
Andrej: und kann das dann erzeugen.
Andrej: Muss es nicht selber machen.
Thomas: Das heißt, du kannst über eine Integration
Thomas: auch User in Home Assistant erstellen und alles, was dazu gehört.
Andrej: Ja, eine Integration hat voll Zugriff.
Thomas: Okay.
Thomas: Was natürlich auch immer die Gefahr mit sich bringt.
Thomas: Also an der Stelle für alle HACS-Integrationen.
Andrej: Ja, das ist halt HACS, ne?
Andrej: Das ist, ja, genau.
Thomas: Was ist denn da?
Andrej: Und dann dachte ich, okay, vielleicht mache ich das.
Andrej: Ich glaube, das schreibe ich mir mal am Wochenende.
Andrej: Und was war noch?
Andrej: Ach ja, und dann sitzt da ja noch so ein Token auf dem Gerät,
Andrej: wenn das Gerät geklaut ist.
Andrej: Hm, dann, äh, ja, kannst halt token revoken, na klar.
Thomas: Token revoken.
Thomas: Ja.
Andrej: Aber sieht halt trotzdem deine Sachen, dein WiFi eventuell, ne?
Andrej: Und dann dachte ich, das passt ja perfekt mit diesen Tang & Clevis.
Andrej: Oder nee, Tang & Clev...
Andrej: Mein Gott, wie heißt das?
Andrej: Ähm...
Andrej: Tang & Clevis, genau.
Thomas: Ja.
Andrej: Dann dachte ich, okay, vielleicht schreibe ich ein Home Assistant Add-on,
Andrej: was den Tang halt laufen lässt.
Thomas: Was ja auch nicht so verkehrt wäre eigentlich.
Andrej: Home Assistant muss online sein, und solange der online...
Thomas: Also wenn so ein Home Assistant laufen muss,
Thomas: dass die, wenn du so eine Art Recovery-Mechanismus bringst,
Andrej: Ja, genau.
Thomas: dass, keine Ahnung, zwei Minuten lang keine Eingabe
Thomas: oder fünf Minuten lang dein Rebooter einfach nochmal
Thomas: mit der Hoffnung, dass sich das Problem gelöst hat.
Thomas: Ja, interessant.
Andrej: Und das Coole ist, du kannst Tang auch,
Andrej: du kannst mehrere Tangs benutzen.
Andrej: Also du kannst halt mehrfach diesen Server laufen lassen
Andrej: und einfach mehrere Key Slots machen.
Andrej: Das heißt, du kannst einen auf deinem Raspberry Pi packen,
Andrej: völlig unabhängig von dem Add-on.
Andrej: Und dann kannst du einen im Home Assistant Add-on laufen lassen.
Andrej: Genau, da bin ich gerade so am Spinnen,
Andrej: worauf ich da Bock drauf habe.
Thomas: Klingt komplex, aber auf jeden Fall auch gut.
Thomas: Ich meine, was bedeutet das?
Thomas: So ein Tang-Server für Tang und Clevis.
Andrej: Tang und Clevis.
Thomas: Achso, was ist das denn?
Andrej: Tang und Clevis ist wohl ein,
Andrej: wenn du das mal googlest,
Andrej: dann siehst du ein Bild für einen Mechanismus,
Andrej: wie man Physiker, ah hier,
Andrej: Tang, Clevis,
Andrej: das ist so ein Latch-Mechanismus, heißt das, glaube ich,
Andrej: auf Englisch, weiß nicht, was auf Deutsch ist.
Andrej: So wie so ein Kettenglied kann man sich das vorstellen.
Andrej: So fast. Ja, ja, ja.
Thomas: Okay, na gut, Clevis und Tang.
Thomas: Man kriegt auch viele Personenbilder in dem Suchergebnis.
Thomas: Okay, genau.
Thomas: Ich überlege gerade, was sind die operativen Hürden von sowas?
Thomas: Also wenn du sowas in den Betrieb nehmen wollen würdest, hat das natürlich eine gewisse Komplexität, du musst es erstmal in deiner Integration alles orchestrieren und in dem Betriebssystem von dem Gerät, aber es kann natürlich auch operativ immer so ein bisschen was mit sich bringen, wie zum Beispiel, was ist, wenn der Home Assistant nicht im selben Netzsegment steht.
Andrej: Jep.
Thomas: Wie reden die miteinander? Ist das überhaupt Broadcast? Wird einfach ins Netz posaunt, ich suche hier einen Tang, mit irgendeinem Clevis, aber Clevis war doch der Client.
Andrej: Clevis. Genau. Aber du sagst immer
Thomas: Okay, ja, ich weiß nicht, ob sich das jemals ändern wird. Tang und Clevis. Also geht der Client hin und sagt hier, Server, ich such dich, Server mit irgendeiner ID vielleicht, mit irgendeiner Kennung und der muss sich dann melden und dazu muss das vielleicht irgendwie MDNS reden können.
Andrej: Tang und Clevis.
Andrej: Denke, das ist die IP.
Thomas: Ist das eine Einschränkung oder ist das quasi hart kodiert die URL, die IP oder IP-Port-Kombination?
Andrej: Denke, das ist die IP. Du kannst ja auch mehrere
Thomas: Okay, das heißt, das sollte dann kein Problem sein, selbst wenn dein Home Assistant in einem anderen Netzsegment steht.
Andrej: angeben, deswegen ist das auch nicht so wild.
Andrej: Ja, theoretisch nicht.
Andrej: Ja, genau. WiFi-Token oder Ethernet?
Thomas: Was musst du zum Orchestrieren sonst noch mit drauf tun?
Thomas: Also wenn du quasi sagst, ja, das ist eigentlich auch mein Vorgehen.
Andrej: Also Ethernet ja nicht, aber eventuell
Andrej: dann Static-Configuration.
Andrej: wenn da jemand Bock drauf hat.
Andrej: Also ich mache ja immer DHCP
Andrej: und pin die IP einfach am Router.
Andrej: Das ist mir viel einfacher als Static, weil dann kannst du auch mal
Andrej: das Netz ändern. Es gibt noch...
Thomas: Das ist natürlich für viele mit Router gucken und dann da raussuchen, welches Device hat sich hier angemeldet, damit ich die MAC-Adresse finde.
Andrej: Ja, aber wer statisch
Thomas: Ja, ja, ja. Das sind ein paar Schritte. Wie ist denn sonst der Provisionierungsprozess? Sagen wir mal, du hast jetzt hier irgendein Tablet oder ein Pi oder sowas und wie kriegst du das Betriebssystem aufgespielt?
Andrej: konfiguriert, der kann auch Router gucken.
Andrej: Da habe ich auch ein Problem gefunden.
Andrej: Da kommen wir gleich drauf. Erstmal baue
Andrej: ich mir ein Disk-Image. Das Disk-Image
Andrej: kannst du einfach flashen.
Andrej: Raspberry Pi 4 bootet auch schon, funktioniert.
Andrej: Ich habe hier so ein Odroid,
Andrej: so ein Intel-Chip hat der.
Andrej: Funktioniert auch. Dann ist mir eingefallen,
Andrej: Also du bootest, flasht und wenn du geflasht hast, ist die SD-Karte oder deine SSD oder was auch immer du an deinem Rechner gehangen hast, da gibt es eine FAT-Partition, die kann jeder lesen, also Windows, Mac, Linux, mit FAT ist ja easy und da musst du dann eine Datei hinlegen, in der das WiFi der MQTT, aktuell noch MQTT, ich möchte ja noch migrieren und dein Token von Home Assistant drin liegen und die URL von Home Assistant.
Andrej: Und beim Boot von dieser Datei kopiert er das lokal weg, löscht die Datei von der FAT-Partition, weil die ja easy lesbar ist, und legt dann dann irgendwo ums Deutsch rum.
Thomas: Okay, das ist doch kaputt. Oh, ja, also man hat ja früher für sowas auch gerne mal einen Pixie-Boot genommen, also PXE, aus dem Netzwerk booten, irgendwo einen Server bereitstellen, der muss natürlich dann auch, boah, das ist lange her, ich glaube, der muss, könnte im Addon liegen, ich glaube, der DHCP muss gewisse Optionen gesetzt haben, damit der Pixie-Boot greift, damit der connectet, das könnte eine Hürde sein.
Andrej: Ich habe auch einen Mechanismus, wo man einfach einen USB-Stick hinzufügen kann und der die gleiche Datei im Endeffekt reinlegen kann.
Andrej: Also USB-Stick oder direkt auf die FAT-Partition des geflashten Devices.
Andrej: Dann ist mir eingefallen, ich will das auf meinem Microsoft Surface testen und du kannst ja die SSD gar nicht ausbauen.
Andrej: Ist ja geklebt. Das ist ja voll doof.
Andrej: Und jetzt bin ich, dann dachte ich, ja gut,
Andrej: vielleicht gibt es ja mehr so Geräte, die sowas haben.
Andrej: Jetzt bin ich dabei, ein zweiter Art Image
Andrej: zu machen, wo ein Installer dabei ist.
Andrej: Und der könnte ja natürlich auch im Add-on liegen.
Andrej: Aber macht der nicht der ACP?
Andrej: Naja. Und Pixieboot kann
Thomas: Und Pixiboot? Ja, Client-Hardware vielleicht nicht, das könnte sein, ja.
Andrej: nicht jede Hardware. Musst du auch
Andrej: im BIOS konfigurieren. Ich glaube, das ist zu komplex.
Thomas: Dann bist du dann wahrscheinlich doch wieder auf so ein Medium angewiesen, was du reinsteckst, ne, um davon mal zu booten.
Andrej: Es gibt wohl, wir haben ja vorhin über
Andrej: Disko geredet, es gibt wohl auch
Andrej: ein Kommandozeilen
Andrej: oder so ein ncurses oder so klein.
Andrej: Ich habe es noch nicht probiert, wo du halt auch so einen Installer machen kannst.
Andrej: Dann kann ich ja diesen Installer, kann ich ja flashen auf USB.
Andrej: Vielleicht lege ich da auch direkt die Datei mit rein.
Andrej: Du flashst und dann erzeugst du die Datei.
Andrej: Und dann liest der Installer einfach direkt davon und macht dann einfach rüttel, rüttel, fertig ist.
Andrej: Hat den Vorteil, falls du keinen SATAC.
Andrej: Ich hatte zum Beispiel, ich habe hier so einen Odroid mit einer eMMC.
Andrej: Dann habe ich mir blinderweise einen eMMC-Adapter bei Amazon geklickt für 5 Mark.
Andrej: Ja, es gibt mehrere eMMC-Standards.
Andrej: Es gibt MMCs mit zwei PIN-Leisten und es gibt einen mit einer.
Thomas: Was?
Thomas: Muss mal gucken, was ich hier habe. Das müsste ich jetzt suchen.
Andrej: Das wusste ich nicht.
Andrej: Jetzt musste ich mir einen richtig teuren von Hardkernel kaufen,
Andrej: weil ich habe nur den gefunden.
Andrej: Der hat mich 20 Euro gekostet plus Versand.
Andrej: Und den Schmerz, dachte ich mir,
Andrej: spare ich den Usern vielleicht einfach mal.
Thomas: Ich habe eigentlich auch nur eine EMMC-Karte im Einsatz jemals gehabt und das war so ein Odroid.
Andrej: Blue, ja, der Home Assistant Blue.
Thomas: Ah, dann sind es zwei. Ne, ich hatte noch vorher einen C2 oder sowas hieß das Ding, glaube ich.
Andrej: Ah, okay.
Andrej: Ah ja, der war auch sehr bekannt.
Thomas: Das war auch so eine ARM-Plattform.
Thomas: War ganz cool.
Thomas: Früher mal Kodi drauflaufen lassen.
Thomas: Vor langer Zeit.
Thomas: Und genau, damit man eher mit dem C schreiben konnte,
Thomas: musstest du dieses kleine Ding auf den Adapter aufklipsen.
Thomas: Den konntest du dann per...
Thomas: Was war es?
Andrej: USB.
Thomas: Ich glaube, bei mir war es SD-Karte oder so.
Andrej: Ah ja, das gibt es auch, ja.
Thomas: Das war dann so ein SD-Adapter.
Thomas: Reinstöpseln.
Thomas: Und okay, den habe ich mir wahrscheinlich damals zusammen
Thomas: mit dem Odroid-Ding bei Reichelt oder so geklickt.
Andrej: Aber es wäre doch cool, wenn du das nicht brauchst,
Andrej: dass du dir nicht extra Hafe holen musst.
Thomas: Ja, ja, absolut.
Thomas: Absolut.
Andrej: Und deswegen bin ich halt dann in diese Richtung gegangen.
Andrej: Genau, jetzt heißt es, mein Plan ist aktuell.
Andrej: Erst mal, wenn wir d'accord werden,
Andrej: wenn ich diese Verschlüsselung mache mit Tang
Thomas: Ist natürlich auch die Frage...
Andrej: und Clevis,
Andrej: dann ist der Server halt Voraussetzung.
Andrej: Ohne geht's nicht.
Thomas: Und also jetzt mal von der Provisionierung abgesehen, weil du vorhin auch anbrachtest, was ist, wenn das Ding geklaut wird, WLAN, Schlüssel und so weiter. Was sind die Anforderungen von einem normalen Endverbraucher? Ich nehme mal an, der wird sich da nicht viele Gedanken machen, wenn das Ding irgendwo in der Wand gehangen wird oder sogar vielleicht in die Wand oder Plan installiert wird.
Andrej: Ja, möglicherweise.
Thomas: Wenn jemand einbricht, hat er wahrscheinlich interessantere Ziele. Aber wenn du natürlich denkst, ja, das könnte auch irgendwo in einem Betrieb eingesetzt werden, als Dashboard irgendwo an der Wand, ja, sowas, da will man die Zugangsdaten natürlich nicht zugänglich haben.
Andrej: Kein X-Integratoren, ne?
Thomas: Vor allem, weil die ja eben, es kann jetzt ein Home Assistant sein, es kann aber auch sein, dass du irgendwie Zugriff auf irgendeinen, keine Ahnung, mir fällt auch so das Stichwort NOC ein, also Network Operation Center, je nach Unternehmen, wenn du halt Netzwerke hast, die in einem Raum sitzen, hast du üblicherweise Latte an Paneelen irgendwo, wo die unterschiedlichsten Dashboards gezeigt werden und diese Dashboards, die sind vielleicht schon etwas unternehmenskritischer, sicherheitskritischer.
Andrej: Ja.
Andrej: Ja, und was ich, ich mache ja nicht nur Home Assistant.
Andrej: Du kannst ja, vielen Dank,
Andrej: jetzt klingelt es viermal, um dann fünfmal zu klingeln.
Andrej: Ich mache mal das Fenster zu.
Andrej: Du kannst ja nicht nur das Home-Assistant-Dashboard bei mir anzeigen,
Andrej: sondern per MQTT kannst du aktuell bis zu zehn Seiten,
Thomas: Kalender von Google ist auch schon wieder so ein Kandidat, ne?
Andrej: also irgendwelche URL-Seiten festlegen.
Andrej: Du kannst deinen Grafana anzeigen,
Andrej: du kannst deinen Stundenplan anzeigen,
Andrej: deinen Kalender von Google, whatever.
Andrej: Du musst dich da einloggen.
Andrej: Das kann ich nicht übernehmen,
Andrej: aber das liegt ja potenziell.
Thomas: Gibt es bestimmt Lese-Read-Only-Zugriff, aber trotzdem.
Andrej: Ja, das stimmt, das kannst du mit einer URL machen,
Andrej: Aber potenziell hast du da Logins drauf, die du vielleicht nicht einfach geklaut haben wollen würdest.
Andrej: Wenn einer das jetzt zu Hause bootet und dann, ja, hast du halt da ein Login drauf.
Andrej: Deswegen wäre es vielleicht sinnvoll, die Home-Partition, also es muss nicht das ganze Root verschlüsselt sein,
Andrej: aber zumindest die Home-Partition und vielleicht auch der Part, wo dann die Keys drauf liegen.
Andrej: Wahrscheinlich dann im Home, aber...
Thomas: Ja, okay, sehe ich.
Andrej: Oder zwei Versionen, eine unverschlüsselt, eine verschlüsselt.
Andrej: Das ist das Coole mit Nix, du kannst Module bauen, weil es ja eine Programmiersprache ist.
Andrej: Und den Raspberry Pi Teil, da habe ich nicht so viel geändert, muss ich sagen.
Thomas: Ja, du kannst es templaten, ne?
Thomas: Dachte ich mir jetzt auch gerade.
Andrej: Ja, ich habe den gesamten Teil, der das Dashboard macht,
Andrej: das so Essence, den Chromium-Kram, das konnte ich ja einfach so lassen.
Andrej: Dann habe ich das so umgebaut mit Imports und so,
Andrej: dass ich nur, anstatt Systemd-Boot, Raspberry Pi,
Andrej: habe ich dann U-Boot genommen als Bootloader, weil der supported ist.
Andrej: Und was muss ich noch machen?
Andrej: Ja, das war es im Endeffekt.
Andrej: Ich glaube, der U-Boot, Bootloader.
Andrej: Ah, und ein bisschen anderen Kernel.
Andrej: Ein paar Sachen beim Kernel ausmachen,
Andrej: weil es gab Probleme mit dem Unstable-Branch,
Andrej: den ich aktuell benutze.
Andrej: Musste ich ein paar Kernel-Module ignorieren,
Andrej: solche Sachen, damit der überhaupt baut,
Thomas: Du baust, also du kannst dann direkt ein Installationsmedium bauen,
Andrej: weil irgendwie wurden die verlangt,
Andrej: obwohl die gar nicht hart verlangt werden von Raspberry Pi.
Andrej: Da gab es einen Bug.
Andrej: Das kann man schon machen.
Andrej: Und so ein Live-Installer war auch nur ein Modul.
Andrej: Wiederschreiben, nimmst die gleichen Sachen
Andrej: und das muss ich jetzt noch testen.
Andrej: Noch nicht getestet, noch nicht live gebootet, nur gebaut.
Thomas: was auch schon, wo schon alles drin ist.
Andrej: Genau.
Thomas: Also du kannst quasi eine Nix-Konfiguration nehmen,
Thomas: bauen lassen und es purzelt ein Image raus,
Thomas: was du dann auf eine Platte schreiben kannst
Thomas: Und dann ist dein System einsatzbereit. Es kann starten, es hat alles drin. Ja, ich denke mir auch gerade, bei klassischen Linux-Distributionen waren das alles isolierte Probleme, die du gelöst hast. Bei Docker-Containern hattest du dein Docker-File, das hat nicht deklarativ, aber, oder halb deklarativ, halb imperativ, hat das halt Docker-Container erstellt.
Andrej: In der Flake-Datei definiere ich mehrere, ich nenne es jetzt mal Ziele.
Andrej: Ich nenne x86-Image oder ISO.
Andrej: Dann führe ich den Befehl aus und er baut das ISO.
Andrej: Kann ich aber auch genauso gut x86-Live-Installer.
Andrej: Dann muss ich nur die Pakete dementsprechend und die Dateien, die das beeinflussen, anpassen und die richtigen Module laden.
Andrej: Das ist halt eine fette Programmiersprache im Endeffekt.
Andrej: Ja, komplett.
Thomas: Installern für das Linux selber gab es
Thomas: ja auch unattended Installer, die das
Thomas: irgendwie gemacht haben. Aber das ist dann schon wieder was
Thomas: distributionsspezifisches und was genau
Thomas: diesen einen Use Case bedient, nämlich
Thomas: installieren. Nichts
Thomas: generisches. Das klingt so, als
Thomas: wenn Nix eben eine Sprache
Thomas: wäre, mit der man generisch
Thomas: sowas abbilden kann. Die muss
Thomas: natürlich in der Übersetzung, gibt's
Thomas: natürlich dann immer Schichten, die
Thomas: genau das Spezielle machen, nämlich zum Beispiel
Thomas: installieren von auf
Andrej: Im Build-Prozess zumindest.
Thomas: einem Medium oder sonst was oder erstellen
Thomas: von einem OCI-Image.
Thomas: Haha, spannend. Und damit ist
Thomas: natürlich auch interessant, dass du eben
Thomas: gewisse Dinge konditionell machen
Thomas: kannst. Sagen kannst, okay, wenn das jetzt
Thomas: diese Plattform ist, genau.
Andrej: In der Theorie, ja. Aber du brauchst es gar nicht.
Thomas: Also ob das jetzt im einfachsten Fall
Thomas: selbst, könntest du es selbst mit einem Template
Thomas: machen. Selbst wenn die Sprache keine
Thomas: Konditionen vorsehen würde, sowas wie, wenn der
Thomas: Wert x ist, dann mach das, wenn y dann das.
Thomas: Oder nur das setzen, wenn x.
Thomas: Dann könntest du ja trotzdem das
Thomas: Nix-File templaten.
Thomas: Rendern und dann brauchst du gar nicht.
Thomas: Noch besser.
Andrej: Du könntest theoretisch auch sagen,
Andrej: ich nehme jetzt das, was ich gebaut
Andrej: habe und dann mache ich eine Enterprise-Version,
Andrej: packe die in einen privaten Repo,
Andrej: importiere alles, was ich habe und packe
Andrej: darauf meine Enterprise-Sachen. Whatever.
Andrej: Das geht. Weil das ist nur ein
Andrej: Import. Das ist halt nur ein Import.
Andrej: So wie jede andere
Andrej: Programmiersprache, die stdlib,
Andrej: stdin, die Standard Library,
Andrej: stdlib importiert und
Andrej: dann eine andere und diese und
Andrej: Das funktioniert halt so, das ist total crazy.
Thomas: Ich bin gerade gedanklich zurück bei dem Schritt, wo du meintest, wie mache ich das mit dem Login?
Andrej: Das ist auch einer der Gründe,
Andrej: warum ich jetzt nichts so erst genommen habe.
Andrej: Ich wusste gar nicht, dass das was kann.
Andrej: Das habe ich erst jetzt gelernt über das Machen.
Andrej: Aber weil ich das für den Desktop gemacht habe,
Andrej: dachte ich, komm, probiere ich es mal aus.
Andrej: Was kriege ich mir denn da so hin?
Thomas: Es ist natürlich total gut, das für Home Assistant möglichst einfach zu machen und im Idealfall komplett durchzuautomatisieren.
Thomas: Erster Gedanke, der aufkam, ist, wird man nicht hin und wieder doch noch ausgeloggt bei Home Assistant?
Thomas: Bin mir nicht sicher, ehrlich gesagt.
Thomas: Ich glaube, meine Sessions halten nahezu ewig.
Andrej: Der Long-Lived-Token hält für 10 Jahre.
Thomas: Okay, gut, das ist kein Problem.
Thomas: Aber was dir natürlich passieren kann,
Thomas: ist, dass wenn jemand da eine Google-Kalender-Seite oder sowas,
Thomas: also irgendwas, wo ein Kalender angezeigt wird,
Andrej: Ich habe überlegt,
Thomas: dass man sich da initial einmal einloggen muss.
Thomas: Hast du da schon was vorgesehen?
Thomas: Irgendwie so ein Remote-Desktop oder sowas?
Andrej: ob ich VNC enablen kann.
Thomas: Ja.
Andrej: Also ich würde VNC jetzt nicht laufen lassen,
Andrej: durchgehen, sondern einfach zum Beispiel
Andrej: ich würde das mit installieren.
Andrej: Das ist eine Überlegung.
Andrej: installiere es mit, Default ist aus,
Thomas: Hm.
Andrej: du kannst aber über eine Home Assistant-Entität
Andrej: oder über MQTT, das
Andrej: steht ja noch aus, kannst es einmal
Thomas: Ja.
Andrej: enablen, wenn die Laufzeit
Andrej: und dann dich vielleicht mit VNC drauf connecten, machst
Andrej: sie eben klick, klick und dann
Andrej: das war eine Überlegung wert.
Andrej: Was natürlich auch geht, aber das möchte
Andrej: ich nicht, das mache ich nur bei der Entwicklung,
Andrej: du kannst Chrome im Development-Modus starten,
Andrej: dann öffnet der ein Port und du machst
Andrej: einen SSH-Tunnel dahin, das mache ich aktuell
Andrej: so, aber das ist nichts Gutes
Andrej: für die Produktion in meinen Augen.
Andrej: Für den Nerd zu Hause, okay.
Thomas: Was brauchst du denn auf Client-Seite,
Thomas: um dann auf den Browser quasi zuzugreifen?
Andrej: Du brauchst halt den Key auf dem Image.
Thomas: Was ist denn das?
Andrej: Das kann ich ja nicht machen.
Thomas: Nee, ich meine, wenn du den Chrome im Developer-Mode laufen lässt
Thomas: und der macht einen Port auf,
Thomas: dann musst du ihn ja, du willst ihn ja fernsteuern, ne?
Thomas: Womit machst du das?
Andrej: Ja, danke.
Thomas: Also auf der Seite von, du bist am Rechner.
Andrej: Ach so, Localhost und dann den Port.
Thomas: Was machst du, um den dann fernzusteuern?
Thomas: Was nutzt du für eine App?
Thomas: Ist das auch Chrome?
Thomas: Ja, aber was für ein Protokoll?
Andrej: Der öffnet einfach nur...
Andrej: Also du, ich habe den Chrome-Developer-Port auf,
Andrej: auf 8000, was auch immer.
Thomas: Ja.
Andrej: Dann mache ich ihn...
Andrej: Und Chrome erlaubt dir,
Andrej: zumindest habe ich es so konfiguriert,
Andrej: auf Localhost darfst du zugreifen, nicht von außen.
Thomas: Ja.
Andrej: Deswegen habe ich den SSH-Tunnel,
Thomas: Ja.
Andrej: um dann halt in meinem Browser, auf meinem Rechner,
Thomas: Ach, in deinem Browser.
Andrej: den Chrome zu steuern.
Andrej: Also nicht den Chrome, sondern die Webseite,
Andrej: die ich gerade, ja.
Thomas: Okay, das heißt, Chrome kann quasi als Client für ein Development Chrome fungieren.
Andrej: Nee, das nicht. Ich kann halt nur die Chrome-Seite,
Andrej: die Developer-Docs,
Andrej: die Developer-Seite halt öffnen.
Thomas: Ach so, das ist einfach nur eine Webseite dann?
Andrej: Dort läuft halt meine Applikation
Andrej: gerade drauf. Ja. Nee, das
Thomas: Die öffnest du?
Thomas: Und, ah, okay, okay.
Thomas: Jetzt, so langsam.
Thomas: Ja, dann löst das vielleicht das Problem nicht komplett, ne?
Thomas: Weil du müsstest ja den Browser steuern können, um sich irgendwo einzuloggen.
Andrej: löst es nicht. Vielleicht geht das auch. Das kann ich
Thomas: Also so VNC, RDP, ja, gibt genug Clients, auch Leichtgewichtige, teilweise aber auch Klobige, also die, ich habe kürzlich wieder auf ein Linux-System zugreifen müssen, Remote und ich glaube, ich hatte damals die Wahl zwischen VNC und RDP zu konfigurieren auf einem GNOME und irgendwas war mit VNC, entweder ging es aus Gründen nicht mehr oder es war irgendwie eingeschränkt, Protokoll, irgendwas, ich weiß es nicht mehr, ist schon ein paar Jahre her, ich weiß nur, ich musste dann irgendwie auf RDP wechseln.
Andrej: auch mal gucken. Ja, von C ist halt
Andrej: meh, aber funktioniert halt für so einen Use Case
Andrej: okay, ne? Ja, aber die gibt es ja für alle
Andrej: Systeme. Das ist schon mal easy. Und dann
Andrej: da kommt jeder, glaube ich, mir klar, mal eben was einzutippen.
Andrej: Und ich glaube, die meisten können auch Copy-Paste.
Andrej: Da musst du halt nicht.
Thomas: Wenn du vom Mac aus RDP reden willst, das ist ja integriert in eine Mac-App, aber aus Gründen funktioniert das irgendwie nie.
Thomas: Du musst dann, Microsoft hat es ja wirklich Windows-App genannt, also du musst dir die Windows-App installieren und das ist nichts weiter als ein Remote-Desktop-Client.
Andrej: Ernsthaft?
Andrej: Ach nee.
Thomas: Wie kommt man auf die Idee? Google da mal nach Problemen, das ist so ein bisschen wie nach Nix-Language irgendwas googeln oder so.
Andrej: Ja genau, jetzt bin ich im Designprozess
Thomas: Ja, gut, aber lass uns nicht zu viel über Windows reden, da kriege ich wieder Gänsehaut.
Thomas: Negativ.
Andrej: und überlege, soll ich einfach eine
Andrej: unverschlüsselte und verschlüsselte Version anbieten?
Thomas: Man kann ja immer erstmal klein anfangen und unverschlüsselt.
Andrej: Ich finde, das Problem ist, Migration geht halt dann nicht.
Thomas: Das finde ich ja so für den allerersten Schritt, um mal was zu haben, was man schon mal shippen kann, ist ja schon mal viel wert.
Andrej: Du kommst nicht drum rum.
Thomas: Nö, das stimmt.
Thomas: Also wenn du wirklich ein Use Case hast, wo du verschlüsselt brauchst, dann musst du halt from scratch starten.
Thomas: Aber was heißt from scratch zu starten?
Andrej: Also für mich ist das keine Arbeit, aber
Thomas: Das ist ja am Ende alles irgendwie deklarativ, ne?
Andrej: du musst halt dann dein Tablet
Andrej: von der Wand nehmen im Notfall.
Thomas: Hm, das stimmt wohl.
Andrej: Du musst das flashen.
Andrej: Aber das ist auch easy. Download, Flash,
Andrej: Textdatei für den Token, fertig.
Andrej: Und in Theorie bräuchst du die Textdatei
Andrej: dann gar nicht mehr, wenn du VNC enablest. Doch,
Andrej: brauchst du, weil du kannst ja nicht VNC enablen
Andrej: oder ich lasse es enabled
Andrej: beim ersten Boot für x Minuten
Andrej: oder sowas. Also ein VNC
Andrej: oder RDP aufzulassen, ist halt nicht so geil eigentlich.
Andrej: Und den kann man
Andrej: beim ersten Boot vielleicht enablen, dass er dann startet,
Andrej: aber beim zweiten kannst du
Thomas: Oder so lange, bis der irgendwie mit einem MQTT konfiguriert wurde
Andrej: ihn dann halt, ja.
Thomas: oder mit einem Home Assistant direkt sich verbunden hat,
Thomas: bis du dann einmal das Signal hast, alles klar.
Thomas: Da ist eine Verbindung.
Thomas: Ab da kann es gesteuert werden per Flag.
Thomas: Das finde ich eine super Idee.
Andrej: Das auf jeden Fall, das baue ich. Ja, das ist
Thomas: VNC on off per Flag zu setzen, um darauf zugreifen zu können, ist total gut.
Andrej: auch nicht schwer. Und der andere,
Andrej: die Home-Assistant-Integration hat natürlich auch den
Andrej: Vorteil, muss ich halt über HACS machen,
Andrej: weil ich keinen Bock auf das Release von Home Assistant habe.
Andrej: Und wer weiß, ob die das mergen.
Andrej: Du hast halt den Config-Flow.
Andrej: Du flashst es
Andrej: und dann meldet sich das Gerät
Andrej: ja einfach an. Und du musst nichts mit
Andrej: Token und so machen. Du musst halt höchstens WiFi
Andrej: konfigurieren. Und WiFi kann man
Andrej: immer noch, das habe ich auch schon ausprobiert, das funktioniert.
Andrej: Dieses, hey, hier ist so ein
Andrej: wie heißt das, so ein Direct-Connect-WiFi,
Andrej: dann connectst du dich eben, machst nur eben das
Andrej: Improv Wi-Fi, tippst eben
Andrej: die SSID und das Passwort ein
Andrej: und dann startet es neu und geht dann
Andrej: in dein WiFi rein. Das typische von
Andrej: smarteren Geräten halt. Kann man auch mit
Andrej: so einem Dashboard machen. Das kennt halt jeder eigentlich
Thomas: Ja, genau, das kennt jeder.
Andrej: heutzutage, ne? Wi-Fi Improv heißt
Thomas: So ein Gedanke kam mir auch auf.
Andrej: das, glaube ich. Ja, ich denke, wenn du so
Thomas: Es ist halt die Frage, ob du das mit allen Devices machen könntest.
Thomas: Weil jetzt so ein Pi, es ist ein nerviger Prozess.
Andrej: wenn du eins machst, fair,
Andrej: wenn du aber mehrere Devices, dann hast du
Andrej: keinen Bock da jedes Mal zu scannen und zu tun.
Andrej: Keine Ahnung, wie viel. Ja, auch die Frage.
Thomas: Ich würde lieber einen Stick reinstecken, das Ding soll sich irgendwie provisionieren
Thomas: und sagen, ich bin erreichbar unter XY und ich halte, ich mache dann irgendwas an und
Thomas: gehe dann so drauf.
Thomas: Das wäre mir lieber persönlich.
Thomas: Und nicht jedes Device hat vielleicht Wi-Fi.
Thomas: Also, du hast vorhin von einem Pi gesprochen.
Thomas: Die neuen, haben Pis mittlerweile Onboard-Wi-Fi?
Andrej: Ja, schon lange, seit dem 3er schon.
Thomas: Ja.
Andrej: Alle.
Thomas: Jetzt wurde es das?
Thomas: Jetzt muss ich drüber nachdenken.
Thomas: Haben sie das wohl?
Thomas: Okay.
Thomas: Vergiss das.
Andrej: Ja,
Thomas: Na gut.
Andrej: muss man sich schon viele Gedanken für machen, ne?
Andrej: Das ist aber, vor allem habe ich jetzt schon so viel
Andrej: programmiert mit Claude und mir zusammen, dass
Andrej: das ist geil. Du kannst halt Sachen
Andrej: probierst es aus, machst mal den Flow
Andrej: und sagst so, ist gut,
Andrej: aber geht besser. Dann musst du halt die
Thomas: Ja, das ist wirklich einer der netten Aspekte von Vibe-Coding, so grundsätzlich.
Andrej: Integration schreiben.
Andrej: Ja, zum Beispiel, was habe ich
Thomas: Du kannst Dinge mal schnell prototypen und bei manchen Entwicklern ist das ein Problem.
Thomas: Du hast auch keine emotionale Bindung, du hast keinen Invest darin sozusagen.
Thomas: Du denkst dir vielleicht nicht, ach guck mal, das ist aber so technisch so geil, was ich hier gerade gebaut habe.
Thomas: allein schon deswegen möchte ich das behalten,
Thomas: sondern es ist ein separates Thema,
Thomas: was wir vielleicht mal aufmachen können und sollen,
Thomas: aber das ist für heute ein bisschen zu viel.
Thomas: Grundsätzlich, ne, Vibe-Coding,
Thomas: also ich meine, ich hatte ja mal gesagt,
Thomas: KI-Themen, die nerven mich,
Thomas: die sind eigentlich überall omnipräsent,
Thomas: aber auf der anderen Seite,
Thomas: gerade wird das wieder so thematisiert,
Thomas: zum Beispiel, dass eben Flathub jetzt eine neue Policy hat
Thomas: und im Grunde alle AI-Contributions,
Thomas: also auch wenn du nur AI benutzt hast als Assistent für Software,
Thomas: dass das denied, also nicht erlaubt wird.
Thomas: Und es sei denn, das Projekt ist schon irgendwie ein etabliertes Projekt,
Thomas: ich weiß nicht, wie genau sie es formuliert haben,
Thomas: aber sowas wie ein Firefox, der halt auch teils mit KI entwickelt wird,
Thomas: da ist es okay.
Thomas: Guck dir Ghostty an zum Beispiel von Hashimoto Mitchell,
Thomas: Mitchell Hashimoto, so rum, ist halt auch mit KI,
Thomas: also vieles wird halt mit KI entwickelt und finde ich,
Thomas: aber wie gesagt, anderes Thema. Wir sollten uns vielleicht mal
Thomas: unterhalten, was denkst du darüber
Thomas: und blablabla. Lass uns das beim nächsten Mal
Thomas: vielleicht aufmachen.
Thomas: Genau. Und du kannst auf jeden Fall mit den
Thomas: Tools natürlich ziemlich einfach
Thomas: Dinge testen, prototypen, validieren.
Thomas: Auch in die Reife
Thomas: treiben. Also
Thomas: im Fall
Andrej: jetzt rausgefunden? Das war für das Dashboard, also für mein
Andrej: NixOS Desktop interessant.
Andrej: Ich habe gesehen, dass
Andrej: in KDE kannst du eine Helligkeit ändern
Andrej: vom Bildschirm. Super praktisch.
Andrej: Und ich habe das geändert.
Andrej: Beim Bildschirm ging hoch und runter von der Helligkeit.
Andrej: Dann habe ich das Onscreen-Display
Andrej: absolut durch Zufall einfach mal geöffnet und wollte
Andrej: irgendwas nachgucken oder so. Ach, HDMI
Andrej: wollte ich wechseln, bin ins falsche Menü gegangen. Da sehe ich
Andrej: Brightness ist 44%. Ich so, hä?
Andrej: Ich hatte die doch auf 100,
Andrej: weil es war super sonnig hier in dem Raum.
Andrej: Kurz mal recherchiert. Ja, das
Andrej: NixOS Desktop-Version hat
Andrej: im Default fehlendem Dinge
Andrej: um mit diesem
Andrej: DDC-Util, ist das glaube ich,
Andrej: DDC-CI oder so heißt das Protokoll,
Andrej: mit dem Display zu sprechen. Und das heißt,
Andrej: der MG fällt dann weg auf Software,
Andrej: Gamma-basiertes Hoch- und Runtermachen
Andrej: der Helligkeit. Kurz installiert,
Andrej: Claude gefragt, kurz installiert,
Andrej: fünf Zeilen später lief alles perfekt.
Andrej: Und das brauchte ich fürs Dashboard
Andrej: als auch für den Desktop.
Andrej: Und dann kannst du das da durchgucken und du
Andrej: verstehst halt exakt, was das System macht.
Andrej: Es fehlt ein I2C-
Andrej: Paket irgendwie so. Du musst
Andrej: in einer bestimmten Gruppe sein. Das war super deklarativ
Andrej: und voll cool.
Andrej: Jetzt hätte ich es verstanden.
Andrej: Das merke ich mir jetzt auch, weil das hat ein echtes Problem
Andrej: von mich gelöst hat. Und das
Andrej: selber rauszufinden, weil das, das wirst du
Andrej: meistens gar nicht, weil entweder das ist drin oder du merkst es nicht.
Thomas: hartes Googeln,
Thomas: irgendwelche Community-Foren oder so
Andrej: Boah. Jetzt habe ich auf jeden Fall
Thomas: durchgucken und überhaupt, bis du es irgendwann hast.
Thomas: Ja, ja.
Thomas: Ja, ja. Großes,
Andrej: viele, viele Abende mit
Thomas: Große Dose. Interessant, das wusste
Andrej: Claude verbracht und
Andrej: habe jetzt Features von dem Ding.
Andrej: Flashen für Raspberry Pi als auch
Andrej: x86 mit hier Seed-File.
Andrej: Dann Dark-Mode kann ich enablen.
Andrej: Fun Fact, wenn du den
Andrej: Dark-Mode enablest für den User,
Andrej: wird das auf allen Geräten, wo der User ist,
Andrej: enabelt. Auch auf deinem Handy.
Andrej: Wusste ich gar nicht. Deswegen schon
Thomas: ich auch nicht. Aber ich wusste es
Andrej: Ich glaube, ich nutze auch das Theme
Thomas: tatsächlich beim Theme. Also
Thomas: es liegt schon nah. So ist es
Thomas: nicht.
Andrej: und da ein bisschen CSS, um das halt
Andrej: umzutütteln. Kann sein, dass es das
Andrej: gleiche ist, der gleiche Mechanismus.
Andrej: Dann konnte ich dann ausprobieren, kann ich
Andrej: das Display an- und ausschalten, cool, funktioniert.
Andrej: Kann ich das Display per Touch auch wieder wecken?
Andrej: Musste ich auch wieder was
Andrej: konfigurieren, dass das geht?
Andrej: Dann diese Geschichte, mit welchen Seiten
Andrej: ich konfigurieren kann, URLs,
Andrej: dann kann ich die weiterklicken
Andrej: im MQTT, also über Home Assistant,
Andrej: aber auch am Display selber. Da habe ich dann so eine
Andrej: kleine Taskbar gemacht. Reboot
Andrej: kann ich steuern. Shutdown kann ich
Andrej: steuern. System-Update habe ich auch
Andrej: schon ausprobiert. Ich habe mal ein Paket released und dann wieder
Andrej: gelöscht, um zu gucken, ob das Update poppt.
Thomas: Moment, ob das Update poppt? Ob
Andrej: Das funktioniert auch gut. Dann ein cooles Feature.
Andrej: Screenshot machen von dem
Andrej: aktuellen Bildschirm, einfach um zu gucken, was da drauf ist.
Thomas: sich das dann in Home Assistant sogar meldet
Andrej: Yeah, natürlich.
Thomas: mit Update? Oh nein, wie geil.
Andrej: Das ist ja der Clou. Ich will nicht,
Andrej: dass du da per SSH drauf gehst und irgendwie was
Andrej: installierst oder so. Einfach Appliance.
Thomas: Was ist denn das für eine Schnittstelle?
Thomas: Lass uns mal da ein bisschen eintauchen.
Thomas: Wie wird das? Nutzen ja auch viele.
Andrej: Das ist eine
Andrej: offizielle
Andrej: wie heißt das?
Andrej: Wahrscheinlich eine offizielle API von Home Assistant, die dann
Andrej: über MQTT halt angesprochen wird.
Andrej: Genau, das ist genau die gleiche.
Thomas: Ich meine, alles mögliche ist
Thomas: da ja schon drin. Selbst, keine Ahnung,
Thomas: hier, Matter-Geräte und weiß ich nicht was
Thomas: alles. Okay, das heißt, du hast
Andrej: Auch ESPHome nutzt exakt die gleiche.
Andrej: Update-Entity heißt das Ding einfach.
Thomas: dann einfach, okay.
Thomas: Aber wie hast du es jetzt
Thomas: exposed? Wie hast du es angeschlossen da dran?
Andrej: Genau, MQTT,
Thomas: Läuft das über deine MQTT-Anbindung,
Thomas: die du ja momentan schon hast?
Andrej: ich habe einen Ghost, einen Go-Daemon
Andrej: laufen, der macht die ganze
Andrej: Konfiguration und so und
Andrej: der nimmt die Sachen entgegen.
Andrej: So, wenn ich einen Reboot mache, dann
Andrej: geht er aufs OS runter und macht die Befehle.
Andrej: Und genau das gleiche mache ich mit der Update-Entity.
Andrej: Die Update-Entity hat ein bisschen Go-Code, die guckt
Andrej: nach einem GitHub-Release und
Andrej: guckt dann, existiert das?
Andrej: lädt dann auch das Changelog und alles
Andrej: runter. Da sind so Felder drin für die
Andrej: Update-Entity, die du ausfüllen kannst
Andrej: für das, was angezeigt wird in dem kleinen
Andrej: Fenster. Und dann kannst du Update drücken
Andrej: und dann passiert genau das, was du machen möchtest.
Andrej: Und wenn ich dann Update drücke, kann ich halt wieder
Andrej: den Go-Daemon benutzen, um
Andrej: Nix, OS, Rebuild, Switch, was auch immer
Andrej: irgendwelche Commandos zu zeigen,
Andrej: zu machen. Ja, das ist eigentlich
Thomas: Ja, ich hätte jetzt nicht gedacht,
Andrej: ziemlich geil von Home Assistant, dass die das alles
Andrej: so integriert haben, dass es so seamless ist,
Andrej: muss ich echt sagen. Das ist schon lange so.
Thomas: dass du das, also die haben das jetzt wirklich
Thomas: in dem, es gibt ja diese,
Thomas: dieses MQTT
Thomas: mittlerweile de facto Standard.
Thomas: Der ist ja eigentlich, das ist ja
Thomas: homisch, das ist nicht spezifisch, aber mittlerweile haben sich ja
Thomas: sehr viele Leute für Unternehmen
Andrej: Diese Discovery. Alles drin.
Thomas: angedingen und die machen genau diese Discovery.
Thomas: Und das ist Teil von der Discovery schon,
Thomas: von der Spezifikation? Mega.
Andrej: Ich weiß nicht, ob es der Discovery-Part ist.
Andrej: Müsste aber sein, weil die Discovery,
Thomas: Sonst müsstest du ja auf Home Assistant Seite
Thomas: irgendwas haben, was das interpretiert,
Andrej: das ist eine gute Frage, das kann ich dir gar nicht mal nennen.
Thomas: was geliefert wird und die Update
Thomas: Entity triggert, ne? Mega.
Andrej: Also es gibt eine Update-Entity definitiv,
Andrej: die auch mehrere Sachen kann.
Andrej: Install, Progress, Backup und so weiter.
Andrej: Release Notes, Release URL
Andrej: und zeigt dir auch die Percentage an, wie lange das dauert.
Andrej: Und dieser MQTT-Mechanismus funktioniert ja über das Topic.
Andrej: Wenn du das Home Assistant,
Andrej: ich glaube Home-Assistant ist, glaube ich, das Standard-Topic.
Andrej: Wenn du das hast,
Andrej: dann und diese bestimmten Entitäten in Home Assistant replizierst,
Andrej: Also die Felder ausfüllt, Licht, Display, Button, whatever, oder auch Update-Entity, dann werden die im Endeffekt zu den Entitäten gemerkt, die Home Assistant schon hat. Also, ja, es ist nur die spezifische MQTT-Implementierung. Genau, das heißt, man macht einfach nur das nach, was in der API spezifiziert ist im Endeffekt.
Thomas: Ja stimmt, du kannst ja dynamisch
Thomas: über dieses
Thomas: Discovery, über das Protokoll
Thomas: kannst du ja Entitäten definieren. Und wahrscheinlich
Thomas: kannst du dann einfach eine Update Entität
Thomas: definieren an der Stelle. Und dann
Thomas: setzt du einfach den Status der Entität auf
Thomas: updatable oder was weiß ich was.
Thomas: Ah, okay. Nicht drüber nachgedacht.
Thomas: Aber mega gut, weil das ist halt so ein wertvoller Mechanismus, die Updates zentral angezeigt zu bekommen.
Andrej: Und der Vorteil bei NixOS ist ja, ich habe das so konfiguriert, bei SystemD zumindest, bei Raspberry Pi mit U-Boot geht das nicht, wenn es bootet in eine neue Version und es kommt ein Kernel-Panic oder whatever und ich kann dann so einen Boot-Counter machen, nach dreimal fehlgeschlagenem Reboot bitte auf die letzte Generation wechseln, automatisch.
Thomas: Und dass das so einfach steuerbar ist am Ende.
Thomas: Ja, du hast mich auf jeden Fall auch mit dem ganzen Nix-Thema angefixt.
Andrej: Und ich denke mir so, wie geil ist das denn?
Andrej: Sieht sexy aus, kann man nicht kennen.
Thomas: Ich wollte ja Omarchy installieren, habe ich gesagt.
Thomas: Wegen Hyprland und Gedöns.
Thomas: Und aber auch wegen so ein bisschen dem Theming, was DHH da gemacht hat.
Thomas: Also das ist ja wirklich, es ist halt eine sehr tolle Experience, die er da gebaut hat.
Thomas: mit, du wechselst das Theme, es geht
Thomas: bis in die Applikationen runter und so weiter.
Thomas: Das sind ja so ein bisschen
Thomas: auch die Schwachstellen von Linux sonst.
Andrej: Das funktioniert aber auch nur mit seinen Applikationen.
Thomas: Das ist sehr
Thomas: viel. Ja, ja, natürlich.
Andrej: Also das wird schnell breaken, du.
Thomas: Ja, ist ja auch nicht alles
Thomas: rosig. Ich meine, der kommt da ja, keine Ahnung,
Thomas: mit Spotify vorinstalliert und so daher.
Thomas: Das heißt, du musst dann nach der Installation
Andrej: Ja, gucken kann man ja trotzdem mal, wie es so ist.
Thomas: erstmal aufräumen, aber
Thomas: ich bin total gespannt, aber irgendwie
Thomas: würde ich ja jetzt am liebsten irgendwas mit Nix
Thomas: machen. Mal gucken.
Thomas: Vielleicht gibt es ja auch einen Omarchy-Nix-Pendant oder so.
Thomas: Bestimmt.
Thomas: Gibt sehr viele alternative Dinge.
Thomas: Und wenn nicht, vielleicht mal Omarchy anschauen,
Thomas: kurz inspirieren lassen und dann
Thomas: vom Scratch starten. Genau.
Andrej: Eine Frage habe ich noch.
Thomas: Die Skripte sind ja auch alle verfügbar. Das heißt, du kannst ja
Thomas: im Grunde auch nachträglich alles
Thomas: dir zurecht
Thomas: schrauben.
Andrej: Da habe ich nämlich gestern drüber nachgedacht, habe noch keine Lösung für.
Andrej: Wie zum Geier kriege ich Infos, wenn mal was nicht funktioniert, aus Logs und so.
Andrej: Bei so einem geschlossenen System.
Thomas: Also wenns.
Andrej: Am liebsten würde ich die Logs auch in den RAM packen,
Thomas: Ja. Okay.
Andrej: damit die SD-Karte von Raspberry Pi und so nicht vollgeschrieben werden.
Andrej: aber das ist nebenbei. Ich kann
Thomas: Gute Frage. Lass mal überlegen.
Andrej: die natürlich auf dem Screen,
Andrej: ich nutze eine ziemlich coole
Andrej: Library Datastar, um
Andrej: das Frontend-Live-Reloading,
Andrej: also das ist halt, wie heißt das?
Andrej: Server-Side-Rendering?
Andrej: Nee, Server-Side-Rendering?
Andrej: Nee, das haben wir doch letztens.
Thomas: SSE – Server-Sent Events.
Andrej: SSE, Events, ja, Server-Sent Events, ja.
Andrej: Die Server-Side-Events sind ganz sehr
Thomas: Okay.
Andrej: push, das heißt, ich kann dem Stream auch folgen,
Andrej: aber es bringt mir nichts, wenn der User
Andrej: ein Foto von den blöden
Andrej: Logs macht oder Debugs
Andrej: oder so. Das ist ja auch kacke, ne?
Thomas: Ja. Schwierig.
Thomas: Also, das eine, was einem einfällt, ist ja, du könntest natürlich auch, keine Ahnung, einen Vector oder so installieren und Logstream, aber das Problem ist natürlich, die meisten Leute haben keinen Log-Server bei sich laufen, Loki, Victoria Metrics oder sonst was, ins Addon rein, einen Endpoint im Addon bereitstellen.
Andrej: Oh, das Add-on. Also da, wo ich meine
Andrej: potenzielle Verschlüsselung machen könnte,
Thomas: Ja, das würde ich nämlich eher sagen. Also ich fände es auch interessant, also ich finde es eine interessante Option zu sagen, ich aktiviere Log-Shipping grundsätzlich und lasse das automatisch irgendwo reinlaufen. Also das zu haben finde ich schon gut, genauso wie Metriken, irgendwie Prometheus oder so aktivieren und irgendwie konfigurierbar zu machen, dass du da rankommst, ist gut, aber das ist natürlich für Advanced-Use-Cases.
Andrej: könnte ich einfach auch ein Log-Sammeln
Andrej: machen. Kann ja auch ein On-Demand sein,
Andrej: Copy-Paste. Ja, ich habe
Thomas: Für den einfachen Fall von, irgendwas läuft nicht und ich brauche jetzt mal alle Logs vom aktuellen Boot oder von heute, das ist ja was anderes. Du hast gesagt, du hast einen Go-Daemon drauflaufen. Exposed hast du dich schon? Per Web? Ja, vielleicht auch da wieder? Togglebar oder so?
Andrej: ein Go-Daemon im Web-Server.
Andrej: Ich lasse den aktuell nur auf Local Host.
Andrej: Ich habe auch überlegt, soll ich den Exposen
Andrej: im LAN? Will ich das?
Andrej: Am Anfang hatte ich die Konfiguration
Andrej: auch theoretisch machbar über das Touchscreen. Das heißt,
Andrej: du konntest theoretisch WiFi
Andrej: und MQTT dort eintippen. Das habe ich alles wieder
Andrej: ausgebaut, weil wenn du das auf dem
Andrej: Lahnzugriff hast, dann kann halt
Andrej: irgendjemand in der Family, also das kann ja auch
Andrej: Kinder sein, kann das Ding einfach
Thomas: Genau. Du hast da ja Anwendungsfälle auch. Also du hast ja so ein Chaos-Äffchen im Haus sozusagen. Ja. Ja. Ja. Okay. Also Home Assistant als Relay ist ja eh schwierig. Also du kannst das nicht über MQTT machen, weil einfach zu viele Daten. Du willst ja nicht irgendwie den State einer Entity auf den Inhalt eines Logs setzen. Das kannst du knicken. Also das wird es nicht sein.
Andrej: glü, glü, glü, glü, man kennt das ja.
Andrej: Ich habe auch schon von vielen
Andrej: ein
Andrej: Kleinen, der die Welt
Andrej: brennen sehen möchte, genau. Oder
Andrej: wer war das denn? Oder bei YouTube
Andrej: oder so, wenn du, es gibt
Andrej: irgendjemand, der so Taster verbaut und wenn du
Andrej: die lang genug drückst, dann resetten die sich.
Andrej: Wie scheiße ist das denn?
Andrej: Sondern
Andrej: nee, das möchte ich halt verhindern.
Andrej: unabhängig von Security. Das ist einfach
Andrej: nur nervig. Auf keinen Fall. Und
Andrej: MQTT fliegt eh raus, weil
Thomas: Okay, okay. Das heißt, du brauchst irgendwas, um entweder über ein Interface, wie zum Beispiel ein Webinterface, was du auf Appseite hast, also die Integration alleine wird nicht reichen, das war mein Gedanke, weil die Integration integriert sich ja auch in Home Assistant, genau.
Andrej: anderes Thema. Ne, lass das mal
Andrej: Oxygen machen. Ne, die kann nur
Andrej: Home-Assistant-Entitäten, eine API sein
Thomas: Das heißt, du bräuchtest entweder eine App, die du laufen lässt, die ein eigenes Interface mitbringt, wo du dann vielleicht sagen kannst, hier requeste Logs von dem folgenden Device, die redet dann über was auch immer Schnittstelle mit dem Go-Daemon, der schickt, der öffnet vielleicht ein Port oder sonst was, das Ding holt sich das ab, irgendwie sowas.
Andrej: mit einem Token, ja. Also ein Add-on
Thomas: Genau, das wäre ja vielleicht ein Ansatz, aber da brauchst du auf jeden Fall noch eine App dazu, oder du? Ja, oder du könntest natürlich auch. Das Problem ist ja, was ist denn, ich meine, wann willst du debuggen, wenn vielleicht auch der Part nicht funktioniert, der Go-Daemon, ne?
Andrej: muss ich schreiben, damit es, also
Andrej: das Add-on müsste dann quasi nur für die
Andrej: Verschlüsselung sein und eventuell für
Andrej: Convenience. Genau.
Andrej: Ja. Das ist nicht doof.
Thomas: Da denke ich mir vielleicht gerade, wie wäre es denn, wenn du, also nur als Notfalllösung, weil die ist deutlich unbequemer, aber wie wäre es denn, wenn du zum Beispiel reagierst, wenn ein USB-Stick eingesteckt wird, mit einem gewissen Namen wird das Log einfach auf den Stick gedumpt und der wird danach gesynct und ejected und kannst rausziehen.
Andrej: Ich meine, ich habe den Mechanismus ja schon, indem ich diese Datei
Andrej: von dem USB-Stick nehme. Ich habe dem jetzt keinen Namen
Andrej: gegeben. Also man kann die C-Datei
Thomas: Und vielleicht könntest du sogar den Part von, der das triggert, irgendwo auf SystemD-Ebene ansiedeln, damit du halt quasi nicht die Notwendigkeit hast, dich darauf zu verlassen, dass dein Demon läuft, weil der ja eventuell das Problem ist gerade, kann ja sein.
Andrej: auf dem USB-Stick oder auf die SD-Karte
Andrej: oder auf das Speichermedium des
Andrej: Betriebssystems selber packen. Das geht beides.
Andrej: Also die Logik habe ich schon.
Andrej: Ja, das kann der udev-Rule sein.
Andrej: Das muss vielleicht sogar zweiseitig sein. Dann hast du
Thomas: Ja, genau. Damit hast du, glaube ich, alles abgedeckt. Außer vielleicht noch zusätzlich, wie gesagt, Log-Shipping im Sinne von streamen, einen Vector laufen lassen oder was auch immer. Ich meine, JournalD gibt es ja auch als, gibt es ja auch so einen Log-Shipping-Mechanismus, ich vergesse mal, wie der heißt, JournalD Remote oder sowas, aber ich hatte meine Schwierigkeiten, das ans Laufen zu kriegen.
Andrej: einmal die USB-Variante, dann kommst du halt zur Not
Andrej: noch dran, falls es nicht mehr geht.
Andrej: Und dann noch die Daemon-Variante,
Andrej: die mit dem Add-on spricht.
Andrej: Da kannst du einfach Klick machen.
Thomas: Ich glaube, du musst die Paare, du musst beide Seiten gegenseitig authentifizieren oder so.
Thomas: Das macht es ein bisschen komplex.
Andrej: Journal-DB-Mode, okay.
Thomas: Das ist mit Vector einfacher.
Thomas: Vector und Victoria Metrics oder was auch immer.
Andrej: Können wir mal recherchieren.
Thomas: Ja, wie gesagt, ich glaube, da standardmäßig zumindest musstest du die gegenseitig authentifizieren.
Andrej: Ja, einer muss auf jeden Fall akzeptieren.
Thomas: Und das war schwierig.
Thomas: Ne, Moment, wie war denn das?
Thomas: Gegenseitig bin ich mir nicht mehr sicher, aber da war eine Komplexität mit.
Thomas: Naja, es war also nicht so, dass du einfach nur einen HTTPS-Server angibst und alles funktioniert,
Andrej: Oder du musst...
Thomas: sondern du musstest irgendwas ganz Konkretes machen
Thomas: und das hatte mich für
Thomas: meinen Use Case gestört
Thomas: deswegen bin ich auf, weil es gibt halt
Thomas: auch ein, ich meine es gibt auch
Thomas: den dazugehörigen
Thomas: Input bei Victoria Metrics, das heißt
Thomas: es wäre eine Option gewesen einfach den
Thomas: Journal Deshipping Mechanismus zu verwenden, aber
Andrej: Ja, gar nicht so einfach, das Thema.
Thomas: der war irgendwie komplizierter und dann habe ich mir gedacht
Thomas: nee komm, dann mach lieber Vector
Thomas: ich erinnere mich nicht mehr an die Details
Thomas: aber das wäre natürlich die absolute
Thomas: Profilösung, Logs werden einfach
Thomas: eh immer dahin geschippt und dann
Thomas: dann ist gut. Ja, stimmt.
Andrej: Vor allem dann, wenn ich noch sage,
Andrej: die Logs liegen nur im RAM.
Andrej: Weil dann nach dem Reboot ist halt,
Andrej: der Reboot tut dann nicht mehr gut fürs Debugging.
Thomas: Ja, und auch beim RAM musst du natürlich schon wieder
Thomas: aufpassen. Also, JournalD
Thomas: lässt sich ja so konfigurieren, dass du sicherstellst,
Thomas: dass da nicht irgendwie
Thomas: der RAM vollgemüllt wird, komplett.
Andrej: Jaja, aber das System braucht nicht so viel.
Thomas: Aber du musst natürlich auch Limitierungen setzen, ne?
Thomas: Und alte Daten dann droppen, wenn er
Thomas: zu viel einnimmt.
Andrej: Also ich habe jetzt mal, das ist ein paar Tage gelaufen gelaufen,
Andrej: so 1,3 Gigabyte wegen dem Chrome halt.
Andrej: Davon weiß ich aber nicht,
Andrej: das Board hat 32 GB.
Andrej: Ich habe hier viel zu viel RAM rumliegen.
Andrej: Das sind die
Andrej: SO-DIMMs, diese Laptops-Rams.
Andrej: Ich weiß nicht, wie viel davon Cash ist und wie viel
Andrej: tatsächlich wirklich hart benötigt
Andrej: wird. Weil wenn du so viel RAM hast, dann nimmt sich das
Thomas: Zur Not kannst du noch auch nochmal, könntest du
Andrej: System natürlich auch dementsprechend viel.
Andrej: Aber mit einem 2 GB Pi sollte man
Andrej: damit klarkommen und einem 2 GB System.
Andrej: Das sieht völlig okay aus. Das geht nie höher
Andrej: als 1,7 aktuell.
Andrej: Update-Prozess noch nicht getestet.
Thomas: auch nochmal gucken, also zum einen gibt es hier noch Swap,
Thomas: so, aber das ist natürlich scheiße mit Systemen,
Andrej: Ich habe Z-RAM, also Compressed RAM.
Thomas: wo du, ja, okay, das wollte ich gerade ansprechen.
Andrej: Da muss ich vielleicht noch die Ratio erhöhen.
Thomas: Sehr gut.
Andrej: Aktuell ist die Default, glaube ich, 50%.
Andrej: Also der nimmt, wie war das nochmal?
Andrej: Wenn du 100% ein,
Andrej: wenn du sagst 100%,
Thomas: Ich habe es gestern erst gelesen tatsächlich, dass anscheinend die Prozentzahl, die du da angibst, ist der unkomprimierte Wert.
Andrej: dann nimmt er die Hälfte des RAMs.
Thomas: Das heißt, du kannst eventuell 200% angeben, wenn du halt eine Faktor-2-Kompression effektiv hinkriegst,
Thomas: dann hättest du bis zu 100%, die du effektiv belegst.
Thomas: Das ist natürlich schwierig, also ich finde das so rum zu definieren.
Andrej: Ja, das ist gar nicht so einfach, das Thema.
Thomas: Ich weiß ja nicht, wie die
Thomas: Kompressionsrate nachher ist. Das kann ich
Thomas: nicht beurteilen.
Thomas: Das war nämlich eines der Linux-Themen, die mir
Thomas: auf der, die mir irgendwie so im Hinterkopf waren.
Thomas: So von wegen wie, 32-Gig hast du
Thomas: genug RAM, so ist es nicht. Aber wie ist,
Thomas: wie wird das eigentlich unter Linux
Thomas: heutzutage gelöst, was MacOS
Thomas: ja so schön dynamisch mit
Thomas: Kompression und Unified Memory und alles so
Thomas: an Benefits gebracht hat.
Thomas: Ja, die IT-Distribution macht das natürlich anders,
Thomas: aber es gibt durchaus welche, die
Thomas: mit Z-RAM oder Z-Swap
Thomas: daherkommen.
Andrej: Ich meine, solange ich die Workload kontrolliere,
Andrej: ist das alles okay.
Andrej: Aber so ein Update kann halt auch mal
Andrej: vielleicht einen anderen Use Case haben,
Andrej: als so ein Standard-Betriebssystem,
Andrej: was einfach nur läuft und eine Webseite anzeigt.
Andrej: Und dann kommen da die Leute dazu,
Andrej: ich habe noch nicht getestet, was ein Webcam so zieht.
Andrej: Das müsste ich mal machen.
Andrej: Ich habe Gott sei Dank ja eine, eine kleine Reolink.
Thomas: Du hast ja noch ein paar Wochen Zeit, zwei oder so,
Andrej: Da haben wir viele Dinge zu tun, ne?
Andrej: Verdammt, ich dachte, ich wäre schon weit.
Thomas: bis du wieder auf Arbeit
Thomas: kommst. Oh Mann, oh Mann.
Andrej: Okay, war klar.
Thomas: Ich habe gerade meinen Browser gesehen, deswegen musste ich
Thomas: ein bisschen schmunzeln. Ich hatte ja vorhin nach
Thomas: Omarchy und NixOS
Thomas: kurzgesucht. Omnixi.
Thomas: Irgendjemand hat da was gebaut.
Thomas: Ob das nutzbar ist, man weiß das schon,
Thomas: aber lustig.
Thomas: Ja, das ist wirklich...
Andrej: Ja, ja.
Thomas: Das ist halt das Ding, wenn du ein Thema
Thomas: anfängst, isoliert
Thomas: das Problem betrachtet, ist
Thomas: Erstmal meistens gar nicht so groß.
Thomas: Aber wenn du das dann in eine Art Reife bringen möchtest, dann ändert sich das dann doch gleich.
Thomas: Für verschiedene Nutzergruppen und schön einfach und weiß ich nicht.
Andrej: Ich habe halt Bock, dass Leute das einfach flashen und nutzen.
Andrej: Ich will gar nicht wissen, wie viele Raspberry Pis und Raspberry Pi Touchscreens
Andrej: einfach nur in Schubladen rumliegen.
Andrej: Ich denke mir so, und ich verstehe das auch, warum,
Andrej: weil viele Sachen sind einfach ein bisschen Reibung.
Andrej: So wie du mit deinen Spaxschrauben.
Andrej: Jedes Mal die Spaxschrauben wegräumen, schockt halt nicht.
Andrej: Jedes Mal Linux zu installieren, User einzulegen, Passwort zu legen,
Andrej: SSH geht blablabla, das hört ja nicht auf.
Andrej: Aber wenn du sagst, ich flash einfach, genau, nix.
Thomas: Da hast du mich, weißt du?
Thomas: Genau diese Kombination.
Thomas: Irgendein kleines System läuft irgendwo in deinem Heimnetz oder sonst wo.
Thomas: Und du brauchst deinen User mit deinem SSH-Key drauf.
Thomas: Du brauchst deine Shell-Einstellung, deine Dot-Files, du brauchst gewisse Pakete einfach immer, weil htop will man halt haben oder btop. Genau. Und früher habe ich auch mal versucht, für diesen Scheiß Ansible anzufangen, aber das ist einfach nicht maintainbar.
Andrej: Sorry, vergiss es.
Thomas: Und vor allem, es ist halt, also allein schon aufgrund des Faktors, dass, wie nennt man das denn noch gleich, das mit den Zwischenschritten, das Problem, du hast halt deine Snowflakes, ne, und wenn du es anwendest auf einen bestehenden Zwischenstand, dann ist es halt nicht wie angewendet auf den Ursprungsstand.
Andrej: Nee, die sind so teuer.
Thomas: Und das ist alles eine Schweinerei.
Thomas: Und ich habe nämlich zum Beispiel im Heimkino, da ist, also ich bin in letzter Zeit mehrmals in der Situation gewesen, wo ich mir dachte, hm, da könnte ich so einen kleinen Pi brauchen.
Thomas: Habe ich vielleicht noch einen?
Thomas: Ja, ich habe noch einen.
Thomas: Total geil.
Thomas: Problem gelöst.
Thomas: War total happy, dass da noch eine Kiste rumlag, weil kaufen würde ich mir jetzt gerade keinen.
Andrej: Ich wollte mir ein 5er kaufen fürs Support, damit ich das testen kann.
Thomas: Ja.
Andrej: Vor allem, Raspberry Pi hat jetzt gestern ein neues Touchscreen rausgebracht, 10 Zoll.
Andrej: Mega geil.
Thomas: Oh, geil.
Andrej: Das Touchscreen, 80 Euro, mache ich,
Thomas: Na, verdammt.
Andrej: kaufe ich, das würde ich gerne supporten.
Andrej: Der Pi kostet halt
Andrej: 120 Euro. Das sind 200 Euro
Thomas: 200 Euro dafür.
Andrej: weg. Gut, ist immer noch okay für
Thomas: Das ist echt viel.
Andrej: ein Pi, ist das echt viel.
Andrej: Ich habe mir das,
Thomas: Ja, aber man muss dazu sagen, bis jetzt habe ich da noch kein Touchscreen gesehen,
Thomas: das, sagen wir mal, so richtig überzeugt hat.
Thomas: Das ist für gewisse Use Cases okay, aber ist halt nicht geil.
Andrej: bei Ebay habe ich mir eins für 30 Euro gekriegt,
Andrej: das 7 Zoll Raspberry Pi, das kam auch
Andrej: heute an. Das wird nachher getestet.
Thomas: Oh, okay. Berichten Sie.
Andrej: Ja, und das,
Andrej: vielleicht schreibe ich auch Raspberry Pi mal an und sage, hey,
Andrej: Leute, ich mache hier was Cooles, schickt
Andrej: mal bitte. Wird eh nicht passieren, aber
Andrej: ich habe hier noch 3 Einser rumliegen, boah,
Thomas: Ja, ich habe da auf jeden Fall wieder alte Pis in Einsatz gebracht.
Thomas: Und ich glaube teilweise, ich bin mir nicht sicher, ob das ein Einser sogar war.
Andrej: Die sind so langsam.
Thomas: Richtig.
Thomas: Allein schon deswegen werden die nie upgedatet, ne?
Thomas: Weil das Updaten dauert halt einfach ewig.
Andrej: Ja.
Andrej: Stunden.
Andrej: Allein den Cache abzudaten und nicht mal
Thomas: Ja, ja, Wahnsinn.
Andrej: die Pakete, sondern nur
Andrej: Update. Naja, ja, ja.
Thomas: Und diese Systeme, weißt du, die laufen da, keine Ahnung, was habe ich angeschlossen?
Thomas: Äh, ein Infrarot, nee, was habe ich da angeschlossen?
Thomas: Bluetooth, das Ding macht Bluetooth, meine Bluetooth-Fernbedienung, die ich selbst gebastelt, die ich irgendwann mal erwähnt habe.
Thomas: Demnächst soll dann auch Infrarot-Gedöns dazukommen, aber jetzt gerade ist halt nur Bluetooth.
Thomas: Und das Ding, sowas einzurichten, nervt, weil du immer vom Scratch startest, dann musst du die Pakete installieren, das dauert dann auf dem Pi ewig und du musst dich einloggen und es fehlt dieses, es fehlt jenes.
Thomas: Allein schon dafür hätte ich gerne
Thomas: einfach nur eine kleine
Andrej: NixOS.
Thomas: Config, die ich immer anwenden kann. Immer
Thomas: auf das Problem werfen. Als Basis
Thomas: allein schon. Aber vielleicht auch als mehr.
Andrej: Problem, NixOS
Andrej: wird supported auf
Andrej: Ab, warte, also 3, 4, 5
Andrej: auf jeden Fall, easy. Ich glaube,
Andrej: der 2er auch noch.
Andrej: Das Problem ist nämlich, es gibt den Binary Cache
Andrej: nicht für die
Andrej: alte Architektur, sondern nur für Arch
Thomas: Ja, okay. Aber an den,
Andrej: 64 und wenn du dann
Andrej: auf dem Pi
Andrej: warst, nee, vergiss es, das dauert
Andrej: Wochen. Der 3er ist,
Thomas: an den ich gerade denke, wer
Thomas: weiß, ich gucke gleich mal. Eventuell mit
Thomas: ein bisschen Glück ist das sogar ein Dreier.
Thomas: Und Dreier müsste unterstützt sein,
Thomas: hast du gesagt, ne? Okay. Ja,
Andrej: ja, das Problem ist nämlich,
Andrej: dass du AArch64 brauchst als Architektur,
Andrej: also die 64-Bit-Architektur.
Andrej: Den 3er kannst du auch in der ARM
Andrej: v7 machen, das ist glaube ich 32-Bit.
Andrej: Das ist nicht mehr im Cache drin,
Andrej: aber das heißt, die da drunter,
Andrej: also Pi 2 und Pi 1,
Andrej: die, also kannst du immer noch installieren,
Andrej: aber dauert eine Woche oder zwei,
Andrej: Das weiß man dann nicht.
Thomas: das lassen wir dann.
Andrej: Ich habe mal Chromium compiled.
Thomas: Ah, auf dem Framework.
Andrej: Das hat auch irgendwie zwei Tage gedauert.
Andrej: Auf meinem Framework.
Andrej: Das war krass.
Andrej: Oder anderthalb oder so.
Thomas: Ich war gerade, ich mache es noch nicht auf dem Pi.
Andrej: Nicht auf dem Desktop.
Andrej: Auf dem Desktop wäre es ein bisschen schneller gewesen.
Andrej: Auf dem Firebase, vergiss es dir bitte.
Andrej: Der hat gar nicht genug RAM.
Thomas: Ja. Wie finde ich denn jetzt raus,
Andrej: Das ist auch noch so ein Thema.
Thomas: was ich für ein Pi habe, weil LSHW
Thomas: ist nicht installiert und das zu installieren dauert
Andrej: Keine Ahnung.
Thomas: ja jetzt zu lange.
Thomas: Ich glaube, ich muss das installieren.
Andrej: Aber noch ein anderes Thema,
Thomas: Proc. Ja. Nö.
Andrej: weil wir noch nicht genug Nix gemacht haben.
Andrej: Der Nix Cache.
Andrej: Vielleicht muss ich auch einen eigenen hosten,
Andrej: falls ich dann tatsächlich doch mal
Andrej: irgendwie Sachen optimiere am Kernel,
Thomas: Ja. Das stimmt. Das ist gut.
Andrej: weil ich ein paar Module rausschmeiße.
Andrej: Und dann möchte ich natürlich nicht, dass die User
Andrej: den Piler
Andrej: zwei Wochen lang auf 100% laufen lassen
Andrej: und die SD-Karte geflasht wird.
Andrej: Dann möchte ich natürlich, dass sie...
Andrej: Das ist schon ein echt involviertes Projekt, aber ich habe da richtig
Andrej: Bock drauf. Das mache ich jetzt einfach.
Thomas: Ja, viele Teilprobleme.
Thomas: Das sind drei Pi 3B, aber das nur.
Thomas: Und Proc CPU Info. Da sieht man
Thomas: das. Egal. Das wollte ich
Andrej: Ah ja, da ist das Modell drin. Ja, gut.
Thomas: vorhin fragen und deswegen hatte ich den,
Thomas: meinte ich gerade noch so, noch eine
Thomas: Nix-Frage. Wenn jetzt
Thomas: Nix ja auf dem Dateisystem
Thomas: her schon jedes
Thomas: Paket, ist es der falsche
Thomas: Begriff, aber ich nenne es jetzt mal Sandboxed.
Thomas: Weil das halt alles isoliert
Thomas: installiert wird und dann nachher zusammengeklebt
Thomas: wird. Bringt NixOS
Thomas: auch noch andere Isolationsmechanismen
Andrej: Nicht, dass ich wüsste.
Thomas: mit? Also
Thomas: integriert in
Thomas: so von wegen, okay.
Andrej: Ich wüsste nichts von Sandboxing
Andrej: im Zuge von Security. Ich denke, da haben wir die
Andrej: Standard-Linux-Sachen. Weil im Endeffekt
Thomas: Okay, okay.
Andrej: ist...
Andrej: Du kannst da ja auch Container drauflaufen lassen,
Andrej: so wie alles andere auch.
Andrej: Anstatt, dann definierst du halt deine Container,
Andrej: machst die Port-Konfiguration, die ist das.
Andrej: Kannst du, glaube ich, auch Docker-Compose laufen lassen,
Andrej: das weiß ich gar nicht, habe ich noch nicht ausprobiert.
Andrej: Aber du kannst auch genauso gut System-D-Services
Andrej: einfach laufen lassen in ihren jeweiligen Usern.
Andrej: Postgres mit einem Postgres-User, MySQL.
Andrej: Dann wiederum hast du natürlich den Nachteil,
Andrej: wenn du einen Postgres hast und du folgst dem Channel,
Andrej: auch die Unstable ist ja egal,
Andrej: dann hast du halt die Version und updatet die sich,
Andrej: hast du das alte Problem,
Andrej: deine Applikation muss erst geupdatet werden,
Andrej: falls die mit der neuen Postgres-Version nicht klarkommt.
Thomas: Ja, okay. Ach, schön.
Andrej: Da hilft natürlich dann Docker oder
Andrej: Podman, ist ja egal, ne? Kannst dann
Andrej: irgendeinen Container nehmen und den
Andrej: dann in einer alten Version laufen lassen.
Andrej: Wir reden im Oktober, du hast da nichts drauf
Andrej: auf deinem Framework, ich sag's dir.
Thomas: Das wäre auf jeden Fall, also
Andrej: Und auf deinem Pi,
Thomas: von einem Extrem ins andere, ne?
Andrej: die breite Masse. Ja, aber ganz
Thomas: wäre das ja, also von einem extrem
Thomas: User-Friendly, ich nenne es jetzt mal
Thomas: User-Friendly, was ich aber damit meine ist
Thomas: auf den gemeinen End-User
Thomas: genau, gedingenste
Thomas: Plattform hin zu
Thomas: alles
Thomas: Text-Interface, alles deklarativ
Thomas: und ja.
Thomas: Ziehe ich mir eine Hacker-Kappe an
Thomas: und dann fühle ich mich nochmal richtig jung.
Andrej: ehrlich, für so ein Pi, also ich überlege
Andrej: mir, ob ich mir so einen Tang und Clevis
Andrej: Raspberry Pi 1 Server mache. Ich würde
Andrej: tatsächlich auch dann das compilen müssen, ne?
Andrej: Würde ich dann auf meinem Desktop mal
Andrej: laufen lassen. Dann würde ich das in meinen Nix-Cache packen.
Andrej: Würde mir so einen mit
Andrej: Cloudflare dreimal erstellen.
Andrej: Und ja, mal gucken, wie das so
Andrej: funktioniert, weil das wäre eigentlich geil. So ein Pi 1,
Andrej: die sind ja okay für so DNS,
Andrej: für so einen kleinen Client-Aufruf
Andrej: beim Boot. Bitte mal kurz
Andrej: hier Schlüssel geben. Völlig
Andrej: ausreichend. Du brauchst ja nicht viel. Die haben ja auch,
Andrej: was haben die, 500 MB RAM? Reicht
Andrej: für sowas. Völlig easy.
Andrej: Kannst du auch Pi-hole noch drauf? Na gut, das vielleicht ein bisschen.
Andrej: Na das, nee, es funktioniert auch noch. DNS ist auch
Andrej: schnell genug. Ja, aber das, ja gut,
Thomas: Ja, starten wird
Thomas: wahrscheinlich dauern, wenn es einmal läuft.
Andrej: das ist okay, aber das Problem ist, finde ich
Andrej: immer, du gehst dann da drauf, weißt nicht mehr, welche
Andrej: Konfigurierung liegt, was hast du da drauf installiert,
Andrej: wie genau und dann musst du noch updaten
Andrej: nach alle paar Jahre, weil Raspberry Pi
Thomas: Ja.
Andrej: OS ist ja auch nur Debian
Andrej: im Unterbau. Ich glaube,
Thomas: Ja, stimmt.
Andrej: genau, also wenn ihr mal Feedback habt
Andrej: zu dem Dashboard OS,
Andrej: wenn ihr es bis hierhin geschafft habt, Respekt,
Andrej: das war eine sehr lange Folge,
Andrej: aber wenn ihr dazu Feedback habt,
Andrej: nehme ich das gerne an. Ich bin da,
Andrej: ich bin noch hart am entwickeln, man kann es
Andrej: auch nicht ausprobieren, weil ich möchte nicht, dass
Andrej: jemand dann, ich möchte keine Migrationsfahne so
Andrej: früh haben. Ich möchte einfach ausprobieren und
Andrej: selber, und ich nutze das ja für mich, von daher.
Andrej: Es wird aber irgendwann öffentlich gemacht werden,
Andrej: dann könnt ihr das auch installieren. Oder gerne
Andrej: Feedback, falls ihr da sagt, nee, das ist total doof, wie du
Andrej: das denkst, oder. Mach aber
Thomas: Genau, den Use Case, mein Schild dann auch.
Thomas: Was macht man so damit?
Thomas: Und wie wird es eingebaut?
Thomas: Oder wie sollte es sein?
Thomas: Ganz kleines Minithema.
Thomas: 30 Sekunden, bevor wir...
Andrej: Kapitelmarke. No.
Thomas: Achso, ja, okay.
Thomas: Gut, genau.
Thomas: Ich bin zufällig auf eine Option gestoßen
Thomas: und habe mir gedacht, oh, wie geil.
Thomas: Das ist so harmlos, das ist so unwichtig.
Thomas: aber mein Arbeitsrechner, MacBook Pro und ein externes Trackpad, dieses Magic Trackpad.
Thomas: Und mir ist immer schon aufgefallen, dass das Magic Trackpad sich viel lauter anhört als das integrierte.
Thomas: Jetzt habe ich zufällig gesehen in den Settings, dass es eine Option gibt.
Thomas: Ich glaube, die ist neu. Ich weiß es nicht.
Thomas: Aber es gibt eine Option, die heißt Quiet Click.
Thomas: Wenn du das aktivierst, dann hast du immer noch das haptische Feedback, aber es knackt nicht so nervig.
Andrej: Moment mal, das Externe ist jetzt
Thomas: Ich bin total happy.
Andrej: leiser? Hä? Das heißt,
Thomas: Ja, genau, das ist eine Option fürs Externe, aber das Interne hat diese Option erst gar nicht, das ist einfach immer leiser.
Thomas: Aber das Externe, das hat immer so ein lautes Klacken gemacht.
Thomas: Es gab das haptische Feedback plus so ein lautes Klacken, also ein, wie so ein Mausklick-Klacken halt, ne?
Andrej: jaja, das heißt, die verballern
Thomas: Und da gibt es eine Quiet-Klick-Funktion und dann ist es einfach total leise.
Thomas: Warte, ich weiß nicht, ob man es hört. Das habe ich mir auch gedacht. Ob die Batterie jetzt länger hält. Wahnsinn, ne? Weil die Batterie hält ja insgesamt, also nicht wenig, aber alle paar Wochen musste ja schon mal ein Strom. So ist es nicht. Das frage ich mich auch, was das für eins ist. Ich habe keine Ahnung.
Andrej: Batterie, um es laut zu machen?
Andrej: Das ist, okay, witzig. Was für ein
Andrej: Magic, ach, wie viel gibt es denn von diesen Magic Trackpads?
Andrej: Version.
Andrej: Okay.
Thomas: Ich glaube, das ist, also ich weiß noch, dass damals, als mein erstes Arbeitsnotebook kam, also vom Arbeitgeber jetzt, das war ja 2018 und das war dieses Intel-Ding und da hatte ich noch eine Magic Mouse und diese Magic Mouse, die war noch extremer.
Thomas: die hat so laut geklickt, das ging mir
Andrej: Müssen wir übrigens auch machen.
Thomas: so auf die Nüsse. Das hat sich so
Thomas: beschissen angefühlt, muss ich sagen.
Thomas: Ansonsten fand ich die Maus ehrlich gesagt
Thomas: okay. Ich sehe auch, ich habe auch nicht die
Thomas: Beschwerde, die sich alle Leute irgendwie
Thomas: lustig machen, dass du die auf den Rücken legen musst, um sie
Thomas: zu laden, weil die meldet sich
Thomas: früh genug, dann lädt sie halt,
Thomas: wenn über Nacht. Was müssen wir auch
Andrej: Uns auf den Rücken legen. Schlafen.
Thomas: machen? Achso, genau.
Thomas: Ja, und dann habe ich
Thomas: irgendwann die Maus durch ein Trackpad getauscht
Thomas: und das ist jetzt aber auch schon mindestens vier Jahre
Thomas: her, dementsprechend ist es mit Sicherheit nicht
Thomas: das aktuelle Modell, aber
Thomas: ja, Quiet Click.
Thomas: Wer hätte das gedacht? Habe ich zufällig gesehen, als ich mich
Thomas: durch die Option... Ne, ich wollte gucken,
Thomas: ob man es schneller einstellen kann, als ich es eh schon eingestellt
Thomas: hatte. Ging nicht. Und dann sehe ich
Andrej: Das war lang. Du würdest ja jetzt schon
Thomas: Quiet Click, klicke drauf und denke mir, oh, wie geil.
Thomas: Endlich mal Ruhe hier.
Thomas: Ruhe im Karton.
Thomas: Schön. Na gut.
Thomas: Packen wir es, oder? Ja, aber schön.
Thomas: Das Nix-Thema hat mich total gefreut.
Thomas: Und ich musste meinem Framework-Ding auch
Thomas: einfach mal Luft lassen und diesen
Thomas: ganzen Preisgedöns und doch finde ich
Thomas: das, wenn ich am Anfang sehr unsicher war. Ich freue mich
Thomas: halt einfach tierisch auf die Linux-Kiste.
Thomas: Bin gespannt, was am Ende bleiben wird.
Thomas: Also ob ich eines der Geräte verkaufe, aber beim
Thomas: jetzigen Markt dürfte das
Thomas: funktionieren zu wahrscheinlich.
Andrej: Gewinn machen, weil das ja 900 Euro
Andrej: teurer ist.
Thomas: Ob man das will, ist dann eine andere Frage,
Andrej: Du bist dann einer dieser Scalper.
Thomas: aber ja, genau.
Thomas: Ach, nee, das ist...
Thomas: Wollte ich immer schon mal sein, nicht?
Thomas: Nee, auf jeden Fall, es fühlt
Thomas: sich ganz blöd an, heutzutage
Thomas: Hardware zu brauchen, also echt eine verrückte
Thomas: Situation. Naja, lass uns
Andrej: Nicht schlecht. Ich glaube es aber erst, wenn der Kabel
Thomas: irgendwie mit schönen Gedanken enden.
Thomas: Fällt jetzt gerade keiner ein.
Thomas: Doch, das wollte ich anbringen. Werden wir jetzt heute
Thomas: aber nicht mehr einsteigen. Hier wird Glasfaser
Thomas: ausgebaut. Tada. Schöner
Thomas: Gedanke. Jaja. Und man
Andrej: drin liegt. Tarif.
Thomas: muss auch mal checken, was die Konditionen sind.
Thomas: Also Konditionen im Sinne von
Thomas: Anbieterbindung und
Thomas: Open Roaming. Oder wie das
Andrej: Oder weitersagen.
Thomas: heißt. Oder Open Access heißt das, glaube ich.
Thomas: Anyway. Na dann.
Thomas: Schön war's. Hoffen, euch hat's
Thomas: auch gefallen. Wir hören immer wieder
Thomas: gerne von euch, auch wenn das
Thomas: Facepalm auslöst, wie
Thomas: Infrarotsensoren, die bei
Thomas: 39 Grad oder 35 nicht mehr so richtig
Thomas: funktionieren. Das könnt ihr gerne
Thomas: tun, podcast-at-smarthütte.de per E-Mail
Thomas: oder unter podcast-social,
Thomas: da ist unser Handel
Thomas: smarthütte.at-smarthütte. Genau.
Thomas: Beim Podcatcher eurer Wahl umso besser,
Thomas: weil das hat, glaube ich, einfach
Thomas: immer noch gewisse Reichweite.
Thomas: Das hilft vielleicht irgendwo,
Thomas: eventuell irgendeinem Algorithmus,
Thomas: der meint, dass
Thomas: Weitersagen ist auch gut.
Thomas: Ja, ich meine, ja.
Thomas: Der Name ist ja bei uns Programm.
Thomas: Smart Hütte, wir reden über NixOS, wir reden über Framework, wir reden über alles Mögliche.
Thomas: Nein, Quatsch. Also, alles dabei.
Andrej: Dashboards. Macht's gut. Ciao.
Thomas: Nerd-Thema. Nerd-Hütte hätten wir es vielleicht nennen sollen oder so.
Thomas: Wie auch immer, bis zum nächsten Mal.
Thomas: Mach's gut. Ciao.