Opensource hat nicht nur Nachteile ;-)

Aus­gangs­si­tua­ti­on: Ich habe einen Zab­bix-Ser­ver im Inter­net, der monit­ort auch mei­nen klei­nen Rech­ner­zoo zu Hau­se, dazu noch IOT wie Wall­box, Mäh­ro­bo­ter, Dru­cker usw.
Dafür steht ein Raspi im Kel­ler, auf dem ein Zab­bix-Pro­xy plus ein Wire­guard mit dem Zab­bix-Ser­ver lau­fen. Der Ser­ver greift über den Wire­guard-Tun­nel auf den Pro­xy zu. Vor­teil mit dem Tun­nel: Die IP im Tun­nel ändert sich nie, auch wenn mein Inter­net-Zugang eine neue IP bekommt, und ich muß mich nicht um Trans­port­ver­schlüs­se­lung küm­mern. Das hat immer gut funk­tio­niert, bis ich auf dem Ser­ver auf Zab­bix 7 LTS hoch­ge­gan­gen bin. Und der woll­te nicht mehr mit dem Pro­xy, der ein Zab­bix 6 LTS ist.
Man soll­te mei­nen: Auf dem Raspi das 7‑er Repo­si­to­ry ein­tra­gen, upgraden und fertig.
So ein­fach ist es dann aber lei­der nicht: Mein Raspi ist 32 Bit (armhf), es gibt aber nur noch 64 Bit (aarch64). Zwar habe ich einen 64-Bit Ker­nel, aber das gesam­te User­land ist 32 Bit. Und Hoch­zie­hen geht nicht, man muß neu instal­lie­ren. Das ist zwar kei­ne Rake­ten­wis­sen­schaft, aber aufwendig.

Und nun?

Ein­fach: Zab­bix ist ja Open Source, also habe ich mir die Sourcen gezo­gen, ./configure --enable-ipv6 --prefix=/usr/local/zabbix-7.0.0 --enable-proxy --with-net-snmp --with-mysql && make install — und natür­lich hat das erst­mal nicht funk­tio­niert, weil diver­se Hea­der gefehlt haben. Also muß man die ent­spre­chen­den *-dev Pake­te nach­in­stal­lie­ren — und: Läuft.
Jetzt noch ein Unit-File für sys­temd schrei­ben, und alles ist wie­der fein.

Und irgend­wann dann doch auf 64 Bit gehen, dann kann ich auch wie­der das offi­zel­le Zab­bix-Repo­si­to­ry verwenden

Warum eine zentrale DB nicht immer eine gute Idee ist

Ich ver­such­te, ein Zab­bix auf die aktu­el­le 7‑er Ver­si­on zu zie­hen und der Ver­such schlug fehl, das Front­end mecker­te, daß die DB-Ver­si­on zu alt sei.
Nach eini­ger Zeit fand ich im Log:

3888423:20240610:221530.805 current database version (mandatory/optional): 06040000/06040003
3888423:20240610:221530.805 required mandatory version: 07000000
3888423:20240610:221530.805 mandatory patches were found
3888423:20240610:221530.808 starting automatic database upgrade
3888423:20240610:221530.843 completed 0% of database upgrade
3888423:20240610:221530.905 completed 1% of database upgrade
3888423:20240610:221530.991 completed 2% of database upgrade
3888423:20240610:221531.038 completed 3% of database upgrade
3888423:20240610:221531.065 [Z3005] query failed: [1060] Duplicate column name 'allow_redirect' [alter table `dchecks` add `allow_redirect` integer default '0' not null]
3888423:20240610:221531.066 database upgrade failed on patch 06050012, exiting in 10 seconds

Auf einer ande­ren Kis­te hin­ge­gen hat­te es geklappt, ich glau­be aber, von einer 6.0 LTS eben auf 7.0 LTS. Die­ses hier war eine 6.4, und schein­bar soll­te erst zu 6.5 upge­gra­det wer­den, was fehl schlug, war­um auch immer. Kühn und bie­rer­mu­tigt habe ich dann ein­fach dchecks.allow_redirect gelöscht — mit mäßi­gem Erfolg: Folgefehler.
Der Zab­bix-Rech­ner ist eine VM im VMWare, da kann man (natür­lich vor Updates!) Snapshots anle­gen — und wenn das Update fehl schlägt, rollt man ein­fach zurück. Das ist eine Sache von ein paar Sekun­den. Doch wenn die DB auf einem ent­fern­ten Rech­ner liegt, mit eige­nem DBA, dann nützt ein Snapshot nichts.
So wer­de ich mor­gen den Kol­le­gen bit­ten müs­sen, einen Dump zurück zu spie­len. Und dabei die Daten von ca. 12 Stun­den ver­lie­ren (das ist aber nicht schlimm).
Erkennt­nis: Loka­le Daten­ban­ken sind schmerzfreier.

Bald 37 Jahre verheiratet

Lie­be ist:

  • Wenn Du es nicht Lie­be nennst, son­dern: Ich kann nicht ohne Dich.
  • Wenn Du Dich vor Dir sel­ber schämst, den Part­ner ver­letzt zu haben.
  • Wenn Du es schaffst, um Ver­zei­hung zu bitten.
  • Wenn Du ver­zei­hen kannst.
  • Wenn Du nach 37 Jah­ren noch Sex haben möch­test mit dem Partner.
  • Wenn ein schö­ner Abend Mona­te schö­ner Erin­ne­run­gen generiert.
  • Wenn Du Respekt vor dem Tod hast, weil dann die Lie­be vor­bei ist.
  • Wenn Du lie­ben kannst.

Kunst und Zeitbezug

Ich lese gera­de — unter Anstren­gun­gen — Dan­tes Gött­li­che Komö­die. Bin noch weit am Anfang, 19 Gesän­ge habe ich hin­ter mir und muß ehr­lich (fr|s)agen: Warum?
Ja, vor dem Able­ben woll­te ich wenigs­tens hin­ein gese­hen haben.

Aber mir stellt sich eine gene­rel­le Fra­ge: Der Text ist 700 Jah­re alt, voll­ge­stopft mit Ver­wei­sen auf zwei­tau­send Jah­re Lite­ra­tur und Phi­lo­so­phie vor­her. In einer Über­set­zung, die hun­dert Jah­re alt ist.
Wie liest man so etwas heu­te, mit nur mini­ma­ler Kennt­nis des Hin­ter­grunds, den Dan­te hat­te? Schon am Vers­maß schei­tern wir. Aber soll man Dan­te des­we­gen nicht lesen? (Mir ist er ziem­lich beschwerlich)
Johann Sebas­ti­an Bach war tief reli­gi­ös. Müs­sen wir erst die Luther-Bibel lesen, auch die Apo­kry­phen, um sei­ne Ora­to­ri­en und Mes­sen hören zu dür­fen? Und die welt­li­chen Kan­ta­ten — ver­ste­hen wir die ein­fach so, weil sie ja nicht reli­gi­ös sind?
Kaum.

Rück­erts Toten­kin­der­lie­der — müs­sen wir erst eige­ne Kin­der ster­ben lassen?
Kaum.

Kön­nen oder dür­fen wir Din­ge genie­ßen, ein­fach weil wir sie schön fin­den? (Und die Ästhe­tik des Häß­li­chen las­se ich mal angst­voll außen vor) Oder müs­sen wir uns erst mit den Zeit­um­stän­den der Künst­ler beschäf­ti­gen, auch mit ihren per­sön­li­chen Umständen?

Neben­bei ver­su­che ich Mahler (6. Sin­fo­nie) zu hören. Ja, ich höre sie. Und fin­de sie eher häß­lich, was ganz sicher an mei­ner Unkennt­nis liegt. Wür­de ich wenigs­tens 200 Jah­re Musik­ge­schich­te vor Mahler ver­stan­den haben, könn­te ich ver­mut­lich auch sei­ne sechs­te verstehen.

Aber ich habe nicht mehr so viel Zeit und Kraft 🙁

Wir schießen uns in die Füße, erneut

Das Schö­ne an Linux ist ja, daß man als root über sämt­li­che Waf­fen vefügt, um sich gepflegt in die Füße zu schie­ßen, und nut­zer­freund­lich wie Linux nun mal ist, sind die­se Waf­fen auch schon gela­den, aus­ge­rich­tet und ent­si­chert — man muß nur noch abdrücken.

Vor ein paar Wochen: Ich woll­te ein Video mit nach AV1/Opus umco­die­ren und hat­te irgend­wie nicht begrif­fen, daß die Enco­der bei Debi­an im ganz nor­ma­len Repo­si­to­ry lie­gen und war also der Mei­nung, ich müs­se das selbst über­set­zen. Das ist ein ziem­lich dickes Brett, was man da boh­ren muß, zum Bei­spiel sind man­che Biblio­the­ken in golang geschrie­ben, so daß man noch ein go nach­in­stal­lie­ren muß. Ich fing also an, und natür­lich wur­den erst­mal ton­nen­wei­se Abhän­gig­kei­ten nach­in­stal­liert, bevor es über­haupt ans Bau­en ging. Am Ende hat­te es funk­tio­niert — und ich stell­te fest, daß das völ­lig umsonst war: Debi­ans ffmpeg lie­fert alles mit, was ich brau­che. Lehrgeld.

Der Rech­ner hat eine rela­tiv klei­ne Root-Par­ti­ti­on, und der gro­ße Rest wird für ZFS ver­wen­det. Alle Diens­te, die ins Inter­net expo­niert sind, lau­fen dort. Also jeden­falls / war arg voll, aber ich wuß­te nicht mehr, was ich alles sinn­lo­ser­wei­se nach­in­stal­liert hat­te. Da kam mir eine Idee: Ein­fach alle dev-Pake­te löschen und hin­ter­her noch ein autore­mo­ve, damit auch die Abhän­gig­kei­ten gelöscht wer­den. Hat gut funk­tio­niert, danach war wie­der eini­ger Platz frei. Das war vor ein paar Tagen.
Heu­te sehe ich mal wie­der ins Zab­bix. Da steht auf ein­mal, daß zfs-zed.service nicht lau­fen wür­de. Also ver­su­che ich ihn zu star­ten, doch systemctl meint, es gäbe ihn nicht, und in der Tat: es gibt ihn nicht. Ich ahne etwas:

Start-Date: 2024-05-05 20:58:18
Commandline: apt -y purge dpkg-dev
Purge: build-essential:amd64 (12.9), zfs-zed:amd64 (2.2.3-1~bpo12+1), zfs-dkms:amd64 (2.2.3-1~bpo12+1), dpkg-dev:amd64 (1.21.22), xtables-addons-dkms:amd64 (3.23-1), dkms:amd64 (3.0.10-8+deb12u1)
End-Date: 2024-05-05 20:58:53

ZFS-on-Linux ist aus Lizenz­grün­den als dyna­mi­sches Ker­nel­mo­dul rea­li­siert. Und muß mit dkms(8) gebaut wer­den, was diver­se Hea­der erwar­tet, die eben in dev-Pake­ten lie­gen. Die hat­te ich aber gelöscht, und mein tap­fe­res autore­mo­ve hat­te dann das kom­plet­te ZFS weg­ra­siert (aber nicht die Daten). Und solan­ge die Büch­se läuft, macht das auch nichts.
Heu­te dach­te ich dann, ich soll­te nicht län­ger war­ten mit einem Reboot. Code, der nur noch im RAM liegt, nee, muß nicht sein. Also reboot und tja, kein ZFS, kei­ne Dienste.

Die Lösung: Nach­se­hen, ob der Pool noch da ist (zpool import) und dann impor­tie­ren (zpool import <poolname>) Reboot, alles wie­der schön.

Und die Flin­ten nach­la­den nicht ver­ges­sen fürs nächs­te mal!

 

#Securitytheater

Wir haben wei­ße Ware, eine Wasch­ma­schi­ne und einen Trock­ner, bei­de von Hai­er. Bei­de gibt es mit und ohne Inter­net, wir haben die Inter­net-Ver­sio­nen gekauft.
Weil das Bedien-Panel bei bei­den Ver­sio­nen fast gleich ist, das heißt also: bei der ohne-Inter­net-Ver­si­on bricht man sich die Fin­ger beim “Pro­gram­mie­ren”, die ande­re Ver­si­on hat halt eine App. Die­se hat eine ähn­li­che Aus­wahl wie der Chi­na-Imbiß: Ente mit scharf, 69. Es gibt also end­los vie­le Pro­gram­me, bis hin zu “rech­te Socken aus Alpa­ca-Wol­le, stär­ker ver­schmutzt, Grö­ße M”.
Macht nix, man kann sich Favo­ri­ten defi­nie­ren, das geht dann.

Aber: es braucht immer Inter­net. Ohne Inter­net kann man die Maschi­nen zwar auch manu­ell bedie­nen, aber das wäre wirk­lich Emacs-like.

Also gibt es eine App auf dem Han­dy, und die muß sich beim Anbie­ter ein­log­gen, man benö­tigt also einen Account. Es gehen natür­lich Goog­le und Face­book, nein, das möch­ten wir nicht, also ver­wen­den wir klas­sisch einen dedi­zier­ten Account bestehend aus Email-Adres­se und Paß­wort. Das Paß­wort wird von Bit­war­den gene­riert und sieht etwa so aus: ^fM^k^A5R&dDsc#77bvsPp5q — das wird in end­li­cher Zeit nicht zu kna­cken sein. Doch Hai­er, #Secu­ri­ty­thea­ter, möch­te schein­bar, daß das Paß­wort alle 6 Mona­te geän­dert wird :-/ — es führt auch kein Weg dar­an vorbei.
Also ände­re ich das Paß­wort, und nun kommt der Paß­wort-Mana­ger ins Spiel: Ich kann die Zugangs­da­ten mit der Gat­tin tei­len (Bit­war­den, ver­mut­lich kann das jeder Paß­wort-Mana­ger) — und schwupps klappts auch bei der Gattin.

Firefox kann, Firefox kann nicht

Der Sohn möch­te einen Film sehen von unse­rem Jel­ly­fin-Ser­ver. Der läuft auf einenm Raspi und ist mit Trans­co­die­ren natür­lich völ­lig über­for­dert. Der Cli­ent ist ein aktu­el­ler Firefox/Linux.
Die Stream-Infor­ma­ti­on sieht so aus:

Bei mir mit Firefox/MacOS gibt es kei­ne Probleme:

Wir ver­ste­hen das nicht. Kann FF/Linux etwa kein VP9 mit meh­re­ren Tonspuren?

Treideln ’24

Heu­te wur­de wie jedes Früh­jahr die Wei­ße Düne den Ryck run­ter­ge­trei­delt, vom Muse­ums­ha­fen bis zur Wiecker Brü­cke, ca. 4 Kilo­me­ter bei fri­schen 5 Grad, immer­hin trocken.

10 Män­ner machen das allein mit Mus­kel­kraft. Der Die­sel läuft zwar hör­bar mit, aber nur für die Ruderanlage.

Die Rot­hem­den zie­hen, der Rest sind Groupies 😉

10 Zög­lin­ge.

Begleit­schiff mit Publikum.

Das sind die Trecker.

Auch nicht mehr die jüngsten.

Hier sieht man schön die Seile.

Das Seil ist erkennbar.

Da oben ist es angeschlagen.

Ich hof­fe doch, daß die Her­ren dann noch ein küh­les Bier an Bord bekom­men haben!

 

Passkeys, viele Anbieter machen es falsch

Nach und nach, seit­dem Bit­war­den Pass­keys kann¹, spen­die­re ich mei­nen Accounts Pass­keys. Zwar füh­le ich mich recht sicher, jeder Account hat ein ande­res zufäl­li­ges Paß­wort und wo es geht, also fak­tisch über­all, habe ich 2FA via TOTP.
Aber Pass­keys sind wirk­lich char­mant und bequem.
Nur: Um wirk­lich sicher zu sein, muß natür­lich der Pass­key das Paß­wort erset­zen, sprich, eine Anmel­dung via Paß­wort muß unmög­lich sein. Denn wenn das geklau­te Paß­wort ver­wen­det wer­den kann, sind Pass­keys witz­los. Als wäre die Voder­tür best­mög­lich ver­ram­melt, die Hin­ter­tür aber aus Pappe.
Bei mir kann es nur WordPress:


Bei allen ande­ren Diens­ten funk­tio­niert die Anmal­dung mit Paß­wort wei­ter­hin und kann auch nicht deak­ti­viert wer­den. Das ent­wer­tet die Pass­keys, die sind dann prak­tisch nutzlos.

Hof­fent­lich ändert sich das noch.


¹ Bitwarden für IOS leider (noch) nicht.

DNS-Schmerzen

Wer kennt es nicht:

Ich habe die Domain example.com.
Mar­ke­ting will die Domain fancy.example.com bei einer Agen­tur hos­ten, weil Mar­ke­ting das eben kann.
Die Agen­tur ist natür­lich auch nur Kun­de bei einem der gro­ßen Cloud-Anbie­ter, und der möch­te für fixe IP-Adres­sen mehr Geld als für nicht-fixe haben. Die Agen­tur umgeht das, indem sie uns bit­tet, fancy.example.com mit einem CNAME auf irgend­was beim Cloud-Anbie­ter zu ver­se­hen. Ist halt billiger.
Für example.com habe ich einen CAA-Record im DNS, in dem die CA, die die Agen­tur ver­wen­det, nicht ent­hal­ten ist. Jetzt könn­te ich natür­lich die­se CA in mei­nen CAA auf­neh­men, aber dann hät­te die­se CA das Recht, für alles in example.com Zer­ti­fi­ka­te aus­zu­stel­len. Nein, das will ich nicht.
Also soll die Agen­tur-CA nicht an example.com geta­ckert wer­den, son­dern an fancy.example.com. In bind etwa so:

fancy.example.com. CNAME host.bei.cloud-anbieter.
                   CAA 0 issue "pki.goog"

Das geht aber nicht, bind beschwert sich: “CNAME and other data”. Zu Recht, der RfC ver­bie­tet das: Wenn CNAME, dann kein CAA. Nun ist guter Rat teuer.
Doch dafür gibt es seit Novem­ber 2023 einen RfC, der den HTTPS-Record ein­führt. Im bind steht dann:

fancy.example.com. HTTPS   0       host.bei.cloud-anbieter.
                   CAA 0 issue "pki.goog"

Das funk­tio­niert dann, lei­der schein­bar nur in der Apple-Welt. Safa­ri hat kei­ne Pro­ble­me, Chro­me und Mac fin­den fancy.example.com genau­so­we­nig wie curl.

Scha­de!