Archiv der Kategorie: Familie

Rund um uns 5

Platt

Bei Brittas E-Kick 20 ist hinten der Reifen platt und schon die Demontage desselben war eher unlustig. Denn: mensch hätte wissen sollen, dass die Plastikabdeckungen über den Muttern geschraubt sind – und nicht geklebt. Ich hätte auch hier gucken können – ja. Ist jetzt blöd gelaufen: eine Abdeckung ist mir beim Versuch diese zu entfernen zerbröselt und bei Thingiverse finde ich dazu nix.

Im Prinzip ganz einfach: Den Aufkleber abziehen:

Abdeckkappe mit Aufkleber nach Demontage

dann die Kreuzschlitzschrauben lösen. Für die Muttern wird ein 18er benötigt.

Radmuttern mit 18er Schlüssel lösen

Den Halter für das Kennzeichen („Schwinge“) ist im Bild oben noch mit einer Kreuzschlitzschraube befestigt.

Ist die kleine Schraube mal gelöst fummelt sich die Schwinge etwas hakelig von der Nabe, weil sie sich immer wieder verkantet.

Demontiertes Hinterrad

Das Rad selbst geht dann einfach raus.

Jetzt mal gucken, ob ich jemanden finde, der mir den Reifen repariert. In den Scooter-Foren klingt das mehr nach „kauf Dir ein neues Hinterrad“. Schön. Könnte ich ja machen – im Prinzip. Das ist aber gerade nicht lieferbar.

Elden Runes

https://www.elden-runes.de/

ELDEN RUNES is an action roguelike boss rush. Explore the ruins of the ancient temple in a 2.5D pixel art style, where each animation, mechanic and sound is lovingly made by hand. Each guardian has their individual fighting style, utilizing the elements of light and darkness. Use the powers of Vex and Lux to defeat them and get out of the temple!

Elden Runes [ C ] via ER

Ein Projekt, das IMHO einen Blick wert ist. Allein schon deswegen, weil es mit Liebe und auch viel Freude und Einsatz von Faik Dogar, Tim Scholl, Marc Seelmann, Aydeniz Sözbilir und Janis Weller erstellt wurde – und nun gemeinsam betüttelt wird. Die Quellenauszeichnung ist hier ebenso durchdacht wie die Datenschutzseite – und unterscheidet sich somit (leider!) heftig von vielen andern Projektseiten aus diesem Seminar. Ich tippe mal, die Profs merken das nicht einmal.

WiFi Heatmap

Ich war auf der Suche nach einer schnellen Möglichkeit, die Wifi Qualität hier im Haus (und später evtl. auch mal an der Schule) zu erfassen.

Geht via CLI mit den folgenden Methoden:

# nmcli
nmcli d wifi

# iw
sudo iw dev wlan0 link

# wpa_cli
sudo wpa_cli -i wlan0 scan_results

# wavemon
wavemon

mit den jeweiligen Vor- und Nachteilen bei der Interpretation und Darstellung. Für den Alltag reicht mir hier nmcli.

Eine Heatmap zu erstellen wäre dann die nächste Idee, jedoch will mensch die Ergebnisse ja in hübsch – und möglichst automatisiert. Dazu fand ich die folgenden Projekte:

https://github.com/jantman/python-wifi-survey-heatmap ist schon ein wenig älter und sah mir komplexer aus, als ich es haben wollte.

Das hier https://github.com/Nischay-Pro/wifi-heat-mapper schien der einfachere kleine Bruder zu sein – also getestet.

Die Installation geht mit pip auf einem Arch flott über die Bühne. Auf einem hausinternen Serverchen dann iperf3 gestartet, damit wir einen Endpoint für die Messungen haben. Es folgt die Erstellung einer groben Skizze des zu erfassenden Stockwerkes (z.B. mit Libreoffice Draw). Dieses als PNG oder JPG wegspeichern / exportieren. Die dann folgenden Schritte (die eigentliche Messung) sind auf der Seite bei Github ausführlich beschrieben und gehen einfach von der Hand.

Die Ergebnisse sind dann … nunja … abhängig von der eigenen Geduld, die an zwei Stellen hart auf die Probe gestellt wird: Erstens dauert eine Messung gefühlte Ewigkeiten – und zweitens stürzt whm öfter mal ab. Es speichert aber alle bisherigen Messergebnisse, so dass der Verlust vor allem deswegen nervt, weil die Messung wiederholt werden muss.

Im Ergebnis tauchen dann so Sonderbarkeiten wie im Bild oben auf: Der UDP Scan zeigt ein Loch an einem Messpunkt. Macht nicht wirklich Sinn für mich.

Aber nett anzusehen sind die Bildchen und manchmal bringen sie einen ja schon zum Nachdenken:

Signalstärke

Den AP hinter der Glotze zu verstauen ist selbstverständlich doof und das oben zu sehende Resultat auch zu erwarten. Aber! Die „Heatmap“, die ich erhalte, wenn der dauerblinkende, schwarze, hässliche AP nicht hinterm TV versteckt ist, will ich mir nicht zeichnen lassen. Das Programm erfasst halt nicht den WAF.

Heidenhöhlen

Kurz hinter Stockach in einem Buchenwald befinden sich die Heidenhöhlen. Wer den Anstieg nicht scheut, findet in der Berlingersiedlung am Fuß des Hanges einen Parkplatz – andere gesellen sich zu den Wohnmobilen auf dem Wanderparkplatz.

Der Rundweg um den Buckel dauert rund eine Stunde inklusive Besichtigung der hübschen Löcher im Sand. Im Sommer wird mensch im Wald von Stechmücken gefressen – aber das ist hier dann auch nicht anders als am Teich selbst.

Q4 auf Arch

Musste ich mal wieder anschauen, weil die Jungs die DVD im Keller fanden, auch wenn es das einst von mir am wenigsten gespielte Quake war.

Die Voraussetzungen dafür, dass das im Netz noch immer als Download zu findende quake4-linux-1.4.2.x86.run beim Start nicht Fehler dieser

error while loading shared libraries: libSDL-1.2.so.0: cannot open shared object file: No such file or directory

oder dieser Art

MESA-LOADER: failed to open i965: libgcc_s.so.1: version `GCC_7.0.0' not found (required by /usr/lib32/dri/i965_dri.so) (search paths /usr/lib32/dri)

warf, war erstens die Installation von

sudo pacman -S lib32-sdl lib32-mesa

und zweitens ein

mv libgcc_s.so.1 libgcc_s.so.1.bak
mv libstdc++.so.6 libstdc++.so.6.bak

in /usr/local/games/quake4.

Alle weiteren Hinweise und Tipps sind hier zu finden:

https://www.gamingonlinux.com/articles/playing-quake-4-on-linux-in-2018.11017

Minecraftserver unter Docker

Ein richtig flotter gedockerter Minecraftserver (Forge) mit allen möglichen Mods wie

AdLods, appliedenergistics, astralsorcery, BiomesOPlenty, Botania, camera, cofh_core, corpse, curios-forge, ExtraArmor, ForgeEndertech, ftb-chunks, ftb-gui, greekfantasy, ironchest, jei, JustEnoughResources, minecolonies, Morpheus, observerlib, PackingTape, pamhc2crops, pamhc2foodcore, pamhc2foodextended, pamhc2trees, Patchouli, pneumaticcraft-repressurized, rare-ice, SereneSeasons, StorageDrawers, structurize, thermal, thermal_cultivation, thermal_expansion, thermal_innovation, thermal_locomotion, TravelersBackpack, Waystones

und einer ca. 1GB großen Welt frisst weitaus weniger Ressourcen auf dem Server, als ich dachte

und auch die Einrichtung selbst (docker-compose, rootless mode) läuft frisch von der Hand. Problemchen gab es nur kurz zu Beginn:

  • Docker legte das data/ Verzeichnis für den falschen Benutzer an. Da hilft die user Angabe in der docker-compose.yml.
  • Nicht vergessen, dass rcon in den data/server.properties enabled werden muss und ein Passwort will.

Nach den Einträgen im DNS für den Server sub.domain.tld sollte ein dig srv _minecraft._tcp.sub.domain.tld

_minecraft._tcp.sub.domain.tld. 3600 IN SRV 0 5 25565 sub.domain.tld.

liefern, dann muss in Minecraft kein Port mehr angegeben werden, was ein wenig eleganter ist.

Grubgefummel

Weil wireguard mit dem heute gekommenen Kernel für Ubuntu 18.04 nicht durch den Compiler ging

Unpacking wireguard-dkms (1.0.20200520-0ppa1~18.04) over (1.0.20200520-0ppa1~18.04) ...
Setting up wireguard-dkms (1.0.20200520-0ppa1~18.04) ...
Loading new wireguard-1.0.20200520 DKMS files...
Building for 4.15.0-106-generic
Building initial module for 4.15.0-106-generic
Error! Bad return status for module build on kernel: 4.15.0-106-generic (x86_64)
Consult /var/lib/dkms/wireguard/1.0.20200520/build/make.log for more information.
Setting up wireguard (1.0.20200513-1~18.04) ...

und dann in /var/lib/dkms/wireguard/1.0.20200520/build/make.log Derartiges hinterließ

DKMS make.log for wireguard-1.0.20200520 for kernel 4.15.0-106-generic (x86_64)
Wed Jun 10 07:49:21 CEST 2020
make: Entering directory '/usr/src/linux-headers-4.15.0-106-generic'
  CC [M]  /var/lib/dkms/wireguard/1.0.20200520/build/main.o
  CC [M]  /var/lib/dkms/wireguard/1.0.20200520/build/noise.o
  CC [M]  /var/lib/dkms/wireguard/1.0.20200520/build/device.o
  CC [M]  /var/lib/dkms/wireguard/1.0.20200520/build/peer.o
  CC [M]  /var/lib/dkms/wireguard/1.0.20200520/build/timers.o
  CC [M]  /var/lib/dkms/wireguard/1.0.20200520/build/queueing.o
  CC [M]  /var/lib/dkms/wireguard/1.0.20200520/build/send.o
  CC [M]  /var/lib/dkms/wireguard/1.0.20200520/build/receive.o
  CC [M]  /var/lib/dkms/wireguard/1.0.20200520/build/socket.o
In file included from <command-line>:0:0:
/var/lib/dkms/wireguard/1.0.20200520/build/socket.c: In function ‘send6’:
/var/lib/dkms/wireguard/1.0.20200520/build/compat/compat.h:102:42: error: ‘const struct ipv6_stub’ has no member named ‘ipv6_dst_lookup’; did you mean ‘ipv6_dst_lookup_flow’?
 #define ipv6_dst_lookup_flow(a, b, c, d) ipv6_dst_lookup(a, b, &dst, c) + (void *)0 ?: dst
                                          ^
/var/lib/dkms/wireguard/1.0.20200520/build/socket.c:139:20: note: in expansion of macro ‘ipv6_dst_lookup_flow’
   dst = ipv6_stub->ipv6_dst_lookup_flow(sock_net(sock), sock, &fl,
                    ^~~~~~~~~~~~~~~~~~~~
scripts/Makefile.build:330: recipe for target '/var/lib/dkms/wireguard/1.0.20200520/build/socket.o' failed
make[1]: *** [/var/lib/dkms/wireguard/1.0.20200520/build/socket.o] Error 1
Makefile:1577: recipe for target '_module_/var/lib/dkms/wireguard/1.0.20200520/build' failed
make: *** [_module_/var/lib/dkms/wireguard/1.0.20200520/build] Error 2
make: Leaving directory '/usr/src/linux-headers-4.15.0-106-generic'

wollte ich prüfen, ob ich um den Bug herumkomme, wenn ich den Server mit dem alten Kernel starte.

Ich dachte, das geht so:

Ein

grub-mkconfig | grep -E 'submenu |menuentry '

liefert den Menüeintrag für den älteren Kernel

menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-18a21bc3-6dd4-4d7a-a538-c7d935a00a63' {
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-18a21bc3-6dd4-4d7a-a538-c7d935a00a63' {
        menuentry 'Ubuntu, with Linux 4.15.0-106-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-106-generic-advanced-18a21bc3-6dd4-4d7a-a538-c7d935a00a63' {
        menuentry 'Ubuntu, with Linux 4.15.0-106-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-106-generic-recovery-18a21bc3-6dd4-4d7a-a538-c7d935a00a63' {
Found linux image: /boot/vmlinuz-4.15.0-101-generic
Found initrd image: /boot/initrd.img-4.15.0-101-generic
        menuentry 'Ubuntu, with Linux 4.15.0-101-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-101-generic-advanced-18a21bc3-6dd4-4d7a-a538-c7d935a00a63' {
        menuentry 'Ubuntu, with Linux 4.15.0-101-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-101-generic-recovery-18a21bc3-6dd4-4d7a-a538-c7d935a00a63' {

der dann beim Boot via /etc/default/grub (vorher wegsichern!) ausgewählt wird

GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 4.15.0-101-generic"

nachdem ein

update-grub

fehlerfrei durchläuft.

Doof gedacht: wireguard-dkms baut natürlich trotzdem für den neueren Kernel. Weil? Weil er da ist. So simpel.

Das Ergebnis ist also das gleiche wie oben: wireguard-dkms fällt beim Modulbau auf die Nase – obwohl der Server mit dem älteren Kernel läuft.

Eigentlich total klar – aber die Finger auf den Tasten sind manchmal schneller als das Hirn dazu.

Einfacher – und dazu noch fehlerfreier bei den Nacharbeiten mit DKMS zu handhaben – ist ein simpler apt-get purge auf den neueren Kernel.

apt-get purge linux-image-4.15.0-106-generic
apt-get clean ; apt-get autoremove

Dann evtl. noch die alten /etc/default/grub Inhalte wiederherstellen (falls mensch so blöd wie ich war), ein update-grub und nach einem Neustart ist wireguard wieder brav am Start.

Update

Was hier bezüglich Wireguard wunderbar funktioniert hat:

apt-get install --install-recommends linux-generic-hwe-18.04
apt-get install --reinstall wireguard-dkms wireguard-tools linux-headers-$(uname -r)

Ich hoffe, das hält nun eine Weile.

Videochat mit Conversations

Der neue Conversations Client kann nun auch Video- und Audioanrufe, wenn der XMPP-Server mitspielt.

Quick and Dirty Kurzanleitung für Prosody:

In /opt/prosody-moduls ein hg pull -u absetzen. Updates schaden ja nicht.

In der prosody.cfg.lua im Abschnitt modules_enabled

"turncredentials"; -- enable coturn module

eintragen und damit das Modul aktivieren.

Im Abschnitt darunter (noch über den VirtualHost Einträgen) die Angaben für den Coturn hinterlegen:

turncredentials_host = "mein.coturn.tld"
turncredentials_secret = "geheimessecret"
turncredentials_port = 443

Dann prosody neu starten und selbstverständlich auch den neuesten Client von Conversations installieren.

Literatur: [ 1 ] [ 2 ] [ 3 ]

Nextcloud … mal wieder

Ich warte ja immer gerne, bis die frischen NC Versionen einen gewissen Reifegrad erreichen, bevor ich diese einspiele. Beim Sprung von 17.x auf 18.x dachte ich, 18.0.3 müsste passen, erlebe hier aber eine kleine Hürde nach der anderen.

Ist Talk aktiviert, dann fliegt das Update via occ erst einmal komplett auf die Schnauze und meldet in schönem Rot:

Checking for update of app spreed in appstore
Checked for update of app "spreed" in appstore 
Repair error: Repair step 'OCA\Talk\Migration\FixNamespaceInDatabaseTables' is unknown
PHP Fatal error:  Cannot declare class OCA\Talk\Migration\Version8000Date20200331144101, because the name is already in use in /path/to/somedomain-tld/nextcloud/apps/spreed/lib/Migration/Version8000Date20200331144101.php on line 54

Das lässt sich beheben.

sudo -u www-data php occ app:disable "spreed"
Nextcloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
No such app enabled: spreed

Die letzte Meldung – No such app enabled: spreed – ist irreführend. Ja – eine App „Spreed“ ist nicht eingeschaltet, aber Talk. Und app:disable „Talk“ führt zu nix. Außerdem wirft ja NC beim Update selbst mit Checked for update of app „spreed“ in appstore den Fehler. Anyway. Es hilft. Der Dank geht an freedox.

Alternative: Talk vor dem Upgrade abschalten und dann wieder anschalten, wenn das Update durchgelaufen ist. Erzeugt weniger Puls.

Danach dann

sudo -u www-data php occ upgrade

erneut ausführen, Wartungsmodus wieder abschalten und einloggen, um auf die nächsten Fehler unter nextcloud/index.php/settings/admin/overview blicken zu können. Diese lassen sich weitgehend beheben mit

sudo -u www-data php occ db:add-missing-indices

was allerdings immer noch ranzt ist die dumme Meldung zu

- core
	- INVALID_HASH
		- core/js/mimetypelist.js
	- EXTRA_FILE
		- core/img/filetypes/mindmap.svg

die bezüglich mimetypelist.js schlicht nicht stimmt und sich – je nach Installation – aus dem exakt gleichen Paket auch nicht reproduzieren lässt. Einmal wirft NC diesen Fehler, das andere mal nicht. Toll. Ich ignoriere das nun ebenso wie den Fehler zu mindmap.svg und hoffe auf die nächste Runde.

Nextcloud Talk mit Coturn auf CX11

Einen eigenen Coturn für Videochats über die eigene Nextcloud zu betreiben ist nicht schwer. Gute Anleitungen für den Einstieg sind im Netz zu haben. Lauscht der Coturn auf Port 443, ist man gleich noch die Routerprobleme bei den Nutzern los.

In der Annahme, dass man da nicht genug Ressourcen hinwerfen kann, stellte ich Coturn bei meinen ersten Gehversuchen eine VM unter KVM mit 4 CPUs und 8GB RAM zur Verfügung. Heute weiß ich, dass das overkill ist, wenn das System nur gelegentlich und dann meist nur von wenigen Menschen parallel benutzt wird.

Die Grafik oben ist ein Screenshot aus OMD und zeigt die CPU Auslastung während eines Videotelefonats zwischen zwei Personen auf einem CX11 bei Hetzner (2,96€ / Monat). Top zeigte eine CPU Auslastung von rund 7% – OMD ein wenig mehr. Aber festhalten lässt sich, dass für eine NC-Talk-Familieninstanz der CX11 ausreichend ist – und vermutlich sogar für eine Schule, weil es sehr selten dazu kommen dürfte, dass mehrere L gleichzeitig ihren S Nachhilfe via Talk geben.

Jetzt hängen vier Nextcloud Instanzen am CX11 – zwei private und zwei Kollegien. Mal sehen, was passiert.