• 🔗Wireguard in fünf Minuten

    Wireguard ist ein VPN mit direkter Integration in den Linux Kernel. Wireguard ist mit ca. 4000 Zeilen Code vergleichsweise übersichtlich und deshalb wartbarer als z.B. OpenVPN. Wireguard ist außerdem schneller und um Längen leichter aufzusetzen. Alle benötigten Werkzeuge zur Schlüsselverwaltung sind dabei

    In den meisten Distributionen ist Wireguard verfügbar. In CentOS 8 sollte man einfach Kernel 6.x nachinstallieren, denn das Wireguard Modul ist dort fest einkompiliert. Nach erfolgreicher Installation kann man das Kernelmodul testen.

    modinfo wireguard

    Server Grundkonfiguration

    Wenn diese Ausgabe nicht leer ist, kann man loslegen. Wir generieren einen privaten Schlüssel und schreiben ihn direkt in eine neue Konfigurationsdatei.

    sudo -i
    cd /etc/wireguard/
    wg genkey | tee wg0.conf
    vim wg0.conf
    

    Dann die Datei editieren und speichern.

    [Interface]
    PrivateKey = <privater Schlüssel>
    Address = 192.168.10.1/24
    ListenPort = 12345
    PostUp = iptables -A FORWARD -i wg1 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens11 -j MASQUERADE;
    PostDown = iptables -D FORWARD -i wg1 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o ens11 -j MASQUERADE;
    

    Den Service aktivieren und starten

    systemctl enable wg-quick@wg0.service --now
    

    Firewall

    Beispielkonfiguration für firewall-cmd

    <?xml version="1.0" encoding="utf-8"?>
    <service>
      <short>Wireguard</short>
      <description>Ports for currently configured Wireguard instances</description>
      <port protocol="udp" port="12345"/>
      ...
    </service>
    

    Konfigurationsdatei nach /etc/firewalld/services/wireguard.xml speichern. Dann den Service aktivieren und die …

  • 🔗Woke the dog

    Woke the dog

    The juvenile criminal in question

    Why saving a juvenile criminal dog in a city like Berlin can lead to serious harassment, threats and social cancellation.

    The dog

    Möritz was sold to me as an Australian Shepherd. I never believed that for a second and I really don’t care. I got him out of a complicated situation with ten month of age. He was constantly over-excited and subsequently disrespectful and violent. I got some bites for trying to break his bad habits and not all of them where playful ones. He growled at neighbors and guests and had tons of neurotic anxieties. The dog was seriously off. He couldn’t focus for a second and was trapped in an endless stream of events. He slept terrible, controlled me inside and ignored me on walks and dragged be around like whatnot.

    But he is a diamond inside. I am pretty sure, this dog has it all. And more.

    Me

    I had dogs that reacted on first call. Most of the time. I did circus tricks and parkour-ish tricks in the urban environment. These dogs knew where to shit and where not, how to behave off-leash in public transport and the city center. I earned me the attribute dog-whisperer without asking for it. My general approach is, that you should not have a dog …

  • 🔗Happy new year in den Worten von gpt4all

    Ein neues Jahr beginnt, und mit ihm kommen neue Möglichkeiten und Chancen. Wir haben alle die Macht in unseren Händen, um unsere Träume zu verwirklichen und unsere Ziele zu erreichen.

    Das Jahr vorige hat uns gebracht, unsere Stärken und Schwächen kennenzulernen und unsere Persönlichkeit weiterzuentwickeln. Wir haben gelernt, unsere Fehler anzusehen als Lektionen und aus ihnen zu wachsen.

    Das neue Jahr ist ein Blanklein, auf dem wir unser Leben schreiben können. Es ist die Zeit, unsere Träume in Realität umzusetzen und unsere Potenziale zu nutzen. Wir müssen sich entscheiden, was wichtig ist für uns und wie wir unsere Energie darauf verwenden möchten.

    Es gibt viele Menschen, die an den Anfängen sind und sich fragen, was sie tun sollen. Aber das einzige, was sie tun müssen, ist zu beginnen. Jeder Schritt zählt und bringt uns näher an unseren Zielen. Wir müssen auch Risiken einnehmen und unsere Komfortzone verlassen, um wirklich viel zu erreichen.

    Das neue Jahr ist eine Chance, alles neu zu beginnen und sich besser zu werden. Es ist die Zeit, unsere Träume in Realität umzusetzen und unsere Potenziale zu nutzen. Wir müssen nur entscheiden, was wichtig ist für uns und wie wir unsere Energie darauf verwenden möchten.

    Viel Erfolg im neuen Jahr!

  • 🔗Pyduin 0.6.4 Release

    Neue Version von pyduin verfügbar.

    Hauptsächlich Qualitätssicherung durch pytest, yamllint und pylint. Unter der Haube wurden Pinfiles zu Boardfiles. Das Wording emanzipiert sich zunehmend von der Arduino-Umgebung. Es macht mehr Sinn, von Devices zu sprechen.

    Bei den Tests setze ich erstmalig auf pytest und das funktioniert nach einigen Startschwierigkeiten sehr gut und spart tatsächlich eine Menge Code. Die coverage liegt derzeit bei 78% und deckt die neuralgischen Punkte ab.

    Es gibt jetzt eine Github-Pipeline. Alle Tests können nach wie vor lokal mit tests.sh lokal getestet werden.

    Mit dem sparkfun_promicro16 wird ein neues Gerät unterstützt. Kleine Firmwarebugs wurden beseitigt. Das Abrufen der gesetzten Modi bei einem Pin funktioniert nun korrekt. Das Protokoll zwischen Code und Mikrocontroller ist nun etwas weniger komplex und intuitiver.

    Im Boardfile können nun Zusatzfunktionen für Pins abgelegt werden.

    pins:
        [...]
        - physical_id: 12
          extra:
            - led1
            - mosi
            - miso
    

    Die erste Funktionalität, die damit arbeitet, erlaubt das Ansprechen der definierten LEDs über ihre Namen. Z.B.:

    pyduin -B buddy led1 on
    
  • 🔗Zu viele No-Shows? - Finger weg von Outlook!

    Heute hatte ich meinen ersten Arbeitgeberseitigen no-show in meiner gesamten IT-Karriere. Immerhin dreizehn Jahre.

    Zumindest war das mein erster Eindruck. Bei genauerem Hinsehen, kommt aber mal wieder der Versager vom Dienst - Microsoft - ins Spiel. Outlook versendet kaputte Termine. Und zwar derart kaputt, dass man sich nie treffen wird.

    Denn wenn man den Termin in seinen Kalender importiert, wird der unter einer falschen Zeit gespeichert. Das passiert offenbar nicht nur unter Android, sondern auch bei anderen Kalendern. Wenn Microsoft etwas anfasst, ist es danach kaputt.

    Wenn Du, liebe deutsche IT-Industrie, in Kontakt mit talentierten, fähigen und motivierten Fachkräften kommen willst, lass die Drogen! Microsoft macht krank, dumm und arm.

  • 🔗3D Drucker automatisch mit Octoprint in KVM VM verbinden.

    Der Gedanke, einen echten PC als zentralen Rechner mit vielen Octoprint-Instanzen zu nutzen, ist naheliegend und preiswert. Dabei will man jedoch nicht zwangsweise auf dem Host selbst installieren, sondern in eine virtuelle Maschine. Das hat zahlreiche Vorteile, wie z.B. Snapshots und vereinfachte Hostmigration, bringt aber auch Komplexität mit sich.

    uml diagram

    Die virtuelle Maschine kann die Drucker nun nicht mehr direkt sehen, weil /dev auf dem Host nicht gleich /dev in der virtuellen Maschine ist. Daher müssen die Drucker dynamisch und möglichst automatisch an die die virtuelle Maschine durch gereicht werden. Unter Linux kein Problem, dank udev.

    Udev-Regel im VM Host erstellen

    Die Regeln für udev sind leicht erstellt. Vorher braucht man aber den Identifikator des Gerätes. Ich nehme meist

    watch -n .1 lsusb

    und verbinde dann das Gerät. So sehe ich schnell, welches Gerät dazu kommt und welchen Identifikator es hat. Mein Drucker sieht dann so aus. Die ID ist die entscheidende Information.

    Bus 003 Device 007: ID 1a86:7523 QinHeng Electronics CH340 serial converter
    

    Nun die Konfigurationsdatei in /etc/udev/rules.d/20_3dprinter.rules erstellen. Meine sieht so aus.

    ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", ENV{DEVTYPE}=="usb_device", RUN+="/opt/scripts/attach_wanhaoi3plus.sh"
    

    Damit wird beim Anstecken des Gerätes ein Skript ausgeführt. Udev kann leider keine Argumente an die ausgeführten Skripte weitergeben. Daher braucht …

  • 🔗Bye, bye stackoverflow

    Today I quit stackoverflow after 12 Years and as part of the 17 Percent of the most active users on the platform. The amount gate keeping and the lack of professionalism, psychic hygiene and sanity was just not bearable anymore. The problem is of structural nature and that makes it an inseparable part of the platform. The idea is idiotic, thus the platform is.

    The idea of censoring questions is pure hate. To allow that anonymously is an invitation for bad behavior. And the invitation is taken by all sorts of antisocial individuals. I grew up being mistreated and misused, so I took that for a norm a substantial part of my life. But that time is over. Stackoverflow has no place in a sane life.

  • 🔗Pyduin 0.6.3 Release

    Neue Version von pyduin verfügbar.

    Die neue default_buddy-Option erlaubt das definieren eines Buddies aus der Buddylist. Damit werden Kommandozeileneingaben noch kürzer, wenn nur ein Gerät im Einsatz ist. Beispiel:

    pyduin p 13 h
    

    Es ist nun auch möglich Aliasnamen für Pins zu vergeben. Da viele Nutzer an Pinnamen wie A0 oder auch D1 gewöhnt sind, halte ich das für ein sinnvolles Feature. Last, but not least: Arbeiten an Unittests, Pinfiles refaktorieren, Pylint Action auf Github aktivieren, Badges ins Readme, Readme aktualisieren, Code aufräumen.

    Die Implementation von analogRead ist auch durch. Damit machen auch die Pinaliasnamen dann voll Sinn, wenn man in Arduino-Terminologie denkt.

    pyduin p A0 read
    
  • 🔗Pyduin 0.6.2 Release

    Neue Version von pyduin veröffentlicht. PWM ist jetzt bei allen entsprechenden Pins verfügbar. Nachfolgende Kommandos aktivieren zuerst den korrekten Pin-Modus und anschießend einen PWM wert von 125 (50% duty cycle).

    pyduin -B buddy pin 5 mode pwm
    pyduin -B buddy pin 5 pwm 125
    

    Außerdem wird die Firmware nun im Hintergrund für die unterstützten Geräte entsprechend angepasst. Die Firmware ist nun ein Template. Die neue Struktur des Buildumgebung erlaubt eine testweise Anpassung der Firmware oder das Hinterlegen einer komplett eigenen Implementation.

    Das Kommandozeileninterface wurde weiter verbessert und viele kleine Fehler korrigiert. Pylint hat fast nichts mehr zu meckern. Es gibt aber noch viel zu tun in puncto Tests und Testbarkeit.

  • 🔗Syntax Highlighting in Pelican

    Um in Pelican das Syntax-Highlighting zu aktivieren, sind eigentlich nur wenige Schritte notwendig. Die Dokumentation von Pelican ist nicht sehr aussagekräftig und offensichtlich sind auch schon andere an dem Thema gescheitert.

    So geht’s: Die pelicanconf.py muss folgenden Eintrag enthalten, damit das Markdown-Plugin codehilite aktiviert wird.

    # pelicanconf.py
    MARKDOWN = {
        'extension_configs': {
            'markdown.extensions.codehilite': {
                'css_class': 'codehilite',
            },
    }
    

    Es kann vorkommen, dass pygmentize installiert werden muss. Bei der Installation von Pelican mit pip, wird pygmentize als Abhängigkeit mit installiert. Andernfalls erfolgt die Installation mit pip.

    pip install pygmentize
    

    Mit folgendem Befehl kann man sich eine Liste der verfügbaren Stile anzeigen lassen. So lässt sich das Erscheinungsbild der Codeblöcke anpassen.

    pygmentize -L style
    

    Wenn man z.B. den zenburn-Stil aktivieren möchte, kann man mit nachfolgendem Befehl ein entsprechendes Stylesheet erzeugen. Wichtig ist, dass der der Wert von -a, (.codehilite) mit der in der pelicanconf.py angegebenen css_class übereinstimmt und von einem . angeführt wird.

    pygmentize -S zenburn -f html -a .codehilite > themes/simple/static/css/styles.css
    

    Das erzeuge Stylesheet anschließend in der base.html verlinken.

    <link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/styles.css" />
    
  • Page 1 / 2 »