<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>myl3z.me</title><link>https://myl3z.me/de/</link><description>Recent content on myl3z.me</description><generator>Hugo</generator><language>de</language><atom:link href="https://myl3z.me/de/index.xml" rel="self" type="application/rss+xml"/><item><title>Boot-Stick im Terminal</title><link>https://myl3z.me/de/docs/linux/bootable-usb/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://myl3z.me/de/docs/linux/bootable-usb/</guid><description>&lt;h1 id="boot-stick-im-terminal"&gt;Boot-Stick im Terminal&lt;a class="anchor" href="#boot-stick-im-terminal"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Ein bootfaehiger USB-Stick aus einer ISO — ohne Zusatzsoftware, nur mit &lt;code&gt;lsblk&lt;/code&gt;, &lt;code&gt;umount&lt;/code&gt;
und &lt;code&gt;dd&lt;/code&gt;. Das Beispiel schreibt einen Debian-Netinst-Installer, funktioniert aber mit jeder
Hybrid-ISO gleich. Was die einzelnen Befehle genau tun, steht unter
&lt;a href="https://myl3z.me/de/docs/linux/disk-commands/"&gt;lsblk, umount, dd, sync&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote class='book-hint warning'&gt;
&lt;p&gt;&lt;code&gt;dd&lt;/code&gt; fragt nicht nach und kennt kein Undo. Ein falscher Geraetename ueberschreibt die
Systemplatte. Das Ziel vor dem Ausfuehren zweimal pruefen.&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="book-steps"&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;h2 id="geraet-ermitteln"&gt;Geraet ermitteln&lt;a class="anchor" href="#geraet-ermitteln"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;lsblk -o NAME,SIZE,MODEL,TRAN,MOUNTPOINTS&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Beispielausgabe:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME SIZE MODEL TRAN MOUNTPOINTS
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nvme0n1 1.8T Samsung SSD
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├─nvme0n1p1 1G /boot
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;└─nvme0n1p2 1.8T /
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sdb 28.7G SanDisk Ultra usb
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;└─sdb1 28.7G /run/media/xander/USB&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;TRAN usb&lt;/code&gt;, die passende Groesse und der Modellname identifizieren den Stick: hier
&lt;code&gt;/dev/sdb&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Pi-hole per DHCP verteilen (UDM)</title><link>https://myl3z.me/de/docs/network/udm-dhcp-dns/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://myl3z.me/de/docs/network/udm-dhcp-dns/</guid><description>&lt;h1 id="pi-hole-per-dhcp-verteilen"&gt;Pi-hole per DHCP verteilen&lt;a class="anchor" href="#pi-hole-per-dhcp-verteilen"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Ein DNS-Server, den niemand fragt, filtert nichts. Nach der Installation von
&lt;a href="https://myl3z.me/de/docs/linux/pihole/"&gt;Pi-hole&lt;/a&gt; laeuft der Dienst zwar, aber jedes Geraet im
Haushalt bekommt beim Verbinden weiterhin die Adresse des Gateways als Nameserver genannt und
haelt sich daran. Der Filter steht daneben und sieht zu.&lt;/p&gt;
&lt;p&gt;Die Stelle, an der das entschieden wird, ist ein einziges Feld im DHCP-Server des Gateways —
bei einer UniFi Dream Machine also in der Netzwerk-Konfiguration, nicht auf dem Server, auf
dem Pi-hole liegt.&lt;/p&gt;</description></item><item><title>Was ist ddev</title><link>https://myl3z.me/de/docs/shopware/ddev-basics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://myl3z.me/de/docs/shopware/ddev-basics/</guid><description>&lt;h1 id="was-ist-ddev"&gt;Was ist ddev&lt;a class="anchor" href="#was-ist-ddev"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;ddev ist ein Open-Source-Werkzeug, das lokale Entwicklungsumgebungen in Docker-Containern
erzeugt und verwaltet. Statt PHP, MySQL, Node und nginx auf dem eigenen Rechner zu
installieren und zu pflegen, beschreibt man in einer Datei, was ein Projekt braucht — und ddev
baut daraus eine laufende Umgebung.&lt;/p&gt;
&lt;p&gt;Konkret: &lt;code&gt;ddev start&lt;/code&gt; in einem Projektverzeichnis, und wenige Sekunden spaeter laeuft der Shop
unter einer HTTPS-Adresse.&lt;/p&gt;
&lt;h2 id="das-problem-das-es-loest"&gt;Das Problem, das es loest&lt;a class="anchor" href="#das-problem-das-es-loest"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Ohne so ein Werkzeug hat jeder Entwickler eine andere Umgebung. Ein Shop verlangt PHP 8.2, der
naechste 8.4. Auf dem Server laeuft MySQL 8.4, lokal MariaDB 10.6. Der Kollege hat eine andere
Node-Version, deshalb sieht sein Storefront-Build anders aus. Das Ergebnis kennt jeder: &amp;ldquo;Bei
mir laeuft es.&amp;rdquo;&lt;/p&gt;</description></item><item><title>Wie diese Seite gebaut ist</title><link>https://myl3z.me/de/docs/tooling/site-setup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://myl3z.me/de/docs/tooling/site-setup/</guid><description>&lt;h1 id="wie-diese-seite-gebaut-ist"&gt;Wie diese Seite gebaut ist&lt;a class="anchor" href="#wie-diese-seite-gebaut-ist"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Die Seite laeuft auf &lt;a href="https://gohugo.io"&gt;Hugo&lt;/a&gt; mit dem Theme
&lt;a href="https://github.com/alex-shpak/hugo-book"&gt;hugo-book&lt;/a&gt; und wird auf GitHub Pages deployed.
Diese Seite ist gleichzeitig Referenz fuer das Setup und Demo der Theme-Shortcodes.&lt;/p&gt;
&lt;h2 id="struktur"&gt;Struktur&lt;a class="anchor" href="#struktur"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;myl3z.me/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── hugo.toml # eine Config, beide Sprachen
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── content.en/ # Standardsprache → myl3z.me/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── docs/ # Sidebar-Baum
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ └── posts/ # datierte Eintraege, ein Ordner je Projekt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── content.de/ # → myl3z.me/de/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── assets/_custom.scss # eigene Styles
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── layouts/posts/ # Blog-Liste und -Feed, siehe unten
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── themes/hugo-book/ # Git-Submodule, gepinnt auf v13
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;└── .github/workflows/hugo.yml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Uebersetzungen werden ueber den Pfad zugeordnet: &lt;code&gt;content.en/docs/tooling/site-setup.md&lt;/code&gt; und
&lt;code&gt;content.de/docs/tooling/site-setup.md&lt;/code&gt; sind dieselbe Seite in zwei Sprachen. Der
Sprachumschalter erscheint nur, wenn die Uebersetzung existiert — es muss also nicht alles
doppelt geschrieben werden.&lt;/p&gt;</description></item><item><title>VLANs verstehen</title><link>https://myl3z.me/de/docs/network/vlan-grundlagen/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://myl3z.me/de/docs/network/vlan-grundlagen/</guid><description>&lt;h1 id="vlans-verstehen"&gt;VLANs verstehen&lt;a class="anchor" href="#vlans-verstehen"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Ein Switch leitet Frames anhand von MAC-Adressen weiter und kennt keine Netze. Alles, was an
ihm haengt, liegt in derselben Broadcast-Domain: Ein ARP-Request erreicht jeden Port, jedes
Geraet sieht jedes andere. Genau das soll die Segmentierung beenden — und ein VLAN ist das
Mittel, mit dem ein einzelner Switch so tut, als waere er mehrere.&lt;/p&gt;
&lt;h2 id="das-tag"&gt;Das Tag&lt;a class="anchor" href="#das-tag"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Die Grundlage ist IEEE 802.1Q: vier zusaetzliche Bytes im Ethernet-Frame, direkt hinter der
Absender-MAC. Darin stehen unter anderem zwoelf Bit VLAN-ID, also 4094 nutzbare Nummern —
&lt;code&gt;0&lt;/code&gt; und &lt;code&gt;4095&lt;/code&gt; sind reserviert.&lt;/p&gt;</description></item><item><title>ddev installieren</title><link>https://myl3z.me/de/docs/shopware/ddev-install/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://myl3z.me/de/docs/shopware/ddev-install/</guid><description>&lt;h1 id="ddev-installieren"&gt;ddev installieren&lt;a class="anchor" href="#ddev-installieren"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Einmal pro Rechner. Danach ist jedes weitere Projekt eine Sache von Minuten.&lt;/p&gt;
&lt;p&gt;Es braucht genau zwei Dinge: &lt;strong&gt;Docker&lt;/strong&gt; und &lt;strong&gt;ddev&lt;/strong&gt;. Alles andere — PHP, Composer, Node,
MySQL — liefert ddev in Containern mit.&lt;/p&gt;
&lt;h2 id="schritt-1-docker"&gt;Schritt 1: Docker&lt;a class="anchor" href="#schritt-1-docker"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;ddev braucht einen Docker-Provider. Welcher, ist weitgehend egal, solange er laeuft.&lt;/p&gt;
&lt;div class="book-tabs"&gt;
&lt;input type="radio" class="toggle" name="tabs-0" id="tabs-0-0" checked="checked" /&gt;&lt;label for="tabs-0-0"&gt;Linux&lt;/label&gt;&lt;div class="book-tabs-content markdown-inner"&gt;
&lt;p&gt;Docker CE direkt aus der Distribution, das ist die schnellste Variante:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#78787e"&gt;# Arch&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo pacman -S docker docker-buildx
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl &lt;span style="color:#ff5c57"&gt;enable&lt;/span&gt; --now docker
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo usermod -aG docker &lt;span style="color:#5af78e"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#ff5c57"&gt;$USER&lt;/span&gt;&lt;span style="color:#5af78e"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#78787e"&gt;# Debian / Ubuntu&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -fsSL https://get.docker.com | sudo sh
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo usermod -aG docker &lt;span style="color:#5af78e"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#ff5c57"&gt;$USER&lt;/span&gt;&lt;span style="color:#5af78e"&gt;&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Nach &lt;code&gt;usermod&lt;/code&gt; einmal ab- und wieder anmelden, sonst fehlen die Rechte auf den Docker-Socket.&lt;/p&gt;</description></item><item><title>lsblk, umount, dd, sync</title><link>https://myl3z.me/de/docs/linux/disk-commands/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://myl3z.me/de/docs/linux/disk-commands/</guid><description>&lt;h1 id="lsblk-umount-dd-sync"&gt;lsblk, umount, dd, sync&lt;a class="anchor" href="#lsblk-umount-dd-sync"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Die vier Befehle, mit denen man unter Linux an Blockgeraete herangeht: eines finden, es
freigeben, es beschreiben und sicherstellen, dass die Daten wirklich drauf sind. Angewandt
werden sie unter &lt;a href="https://myl3z.me/de/docs/linux/bootable-usb/"&gt;Boot-Stick im Terminal&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="lsblk--blockgeraete-auflisten"&gt;lsblk — Blockgeraete auflisten&lt;a class="anchor" href="#lsblk--blockgeraete-auflisten"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;lsblk&lt;/code&gt; liest den Geraetebaum aus dem Kernel (&lt;code&gt;/sys/block&lt;/code&gt;) und stellt ihn als Baum dar:
physische Datentraeger als Wurzel, ihre Partitionen als Kinder. Es braucht keine
Root-Rechte und fasst nichts an.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;lsblk&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nvme0n1 259:0 0 1.8T 0 disk
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├─nvme0n1p1 259:1 0 1G 0 part /boot
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;└─nvme0n1p2 259:2 0 1.8T 0 part /
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sdb 8:16 1 28.7G 0 disk
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;└─sdb1 8:17 1 28.7G 0 part /run/media/xander/USB&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Die Standardspalten sagen wenig ueber die Herkunft eines Geraets. Mit &lt;code&gt;-o&lt;/code&gt; waehlt man selbst
aus:&lt;/p&gt;</description></item><item><title>Netz-Layout mit VLANs</title><link>https://myl3z.me/de/docs/network/vlan-layout/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://myl3z.me/de/docs/network/vlan-layout/</guid><description>&lt;h1 id="netz-layout-mit-vlans"&gt;Netz-Layout mit VLANs&lt;a class="anchor" href="#netz-layout-mit-vlans"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Das Netz bestand aus einem einzigen Segment: &lt;code&gt;10.10.0.0/16&lt;/code&gt;, alles darin, vom Gateway ueber den
Thin Client bis zum Fernsehgeraet. Das funktioniert, solange man nur eine Maschine hat. Es
bedeutet aber, dass jedes Geraet jedes andere direkt erreicht — der Saugroboter den
Arbeitsrechner, der Fernseher das Management der UDM.&lt;/p&gt;
&lt;p&gt;Seit dem 23. August 2026 sind es sechs Segmente. Diese Notiz beschreibt das Layout und die
Ueberlegungen dahinter; der Ablauf des Umbaus steht unter
&lt;a href="https://myl3z.me/de/docs/network/unifi-vlan-umbau/"&gt;VLANs auf der UDM einrichten&lt;/a&gt;, die Begriffe
unter &lt;a href="https://myl3z.me/de/docs/network/vlan-grundlagen/"&gt;VLANs verstehen&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Shopware 6 aufsetzen</title><link>https://myl3z.me/de/docs/shopware/shopware-setup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://myl3z.me/de/docs/shopware/shopware-setup/</guid><description>&lt;h1 id="shopware-6-aufsetzen"&gt;Shopware 6 aufsetzen&lt;a class="anchor" href="#shopware-6-aufsetzen"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Vom leeren Verzeichnis zum eingerichteten Shop. Als Beispiel dient &lt;strong&gt;tydace&lt;/strong&gt;, ein frisch
aufgesetzter Shopware-6.7-Shop.&lt;/p&gt;
&lt;p&gt;Zeitbedarf: knapp zehn Minuten, davon das meiste Warten auf Composer.&lt;/p&gt;
&lt;h2 id="grundgeruest"&gt;Grundgeruest&lt;a class="anchor" href="#grundgeruest"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="1-projekt-anlegen"&gt;1. Projekt anlegen&lt;a class="anchor" href="#1-projekt-anlegen"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir tydace &lt;span style="color:#ff6ac1"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#ff5c57"&gt;cd&lt;/span&gt; tydace
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ddev config --project-type&lt;span style="color:#ff6ac1"&gt;=&lt;/span&gt;shopware6 --docroot&lt;span style="color:#ff6ac1"&gt;=&lt;/span&gt;public&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;ddev config&lt;/code&gt; schreibt &lt;code&gt;.ddev/config.yaml&lt;/code&gt;. Der Projekttyp &lt;code&gt;shopware6&lt;/code&gt; setzt die passende
nginx-Konfiguration und die Umgebungsvariablen, die Shopware erwartet; &lt;code&gt;--docroot=public&lt;/code&gt; sagt
ddev, wo &lt;code&gt;index.php&lt;/code&gt; liegt.&lt;/p&gt;
&lt;p&gt;Der Projektname ergibt sich aus dem Verzeichnisnamen und bestimmt die spaetere Adresse:
&lt;code&gt;tydace&lt;/code&gt; -&amp;gt; &lt;code&gt;https://tydace.ddev.site&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Statische IP mit ifupdown</title><link>https://myl3z.me/de/docs/linux/static-ip/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://myl3z.me/de/docs/linux/static-ip/</guid><description>&lt;h1 id="statische-ip-mit-ifupdown"&gt;Statische IP mit ifupdown&lt;a class="anchor" href="#statische-ip-mit-ifupdown"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Ein Server, den andere Geraete ansprechen sollen, braucht eine Adresse, die sich nicht
aendert. Per DHCP bekommt er irgendeine — nach einem Neustart des Routers moeglicherweise eine
andere, und jede Konfiguration, die auf die alte zeigt, laeuft ins Leere. Besonders bei einem
DNS-Server ist das keine Option: dessen Adresse tragen alle Clients fest ein.&lt;/p&gt;
&lt;p&gt;Eine Debian-Installation ohne Desktop verwaltet das Netzwerk mit &lt;strong&gt;ifupdown&lt;/strong&gt; ueber
&lt;code&gt;/etc/network/interfaces&lt;/code&gt;. NetworkManager und &lt;code&gt;systemd-networkd&lt;/code&gt; loesen dieselbe Aufgabe, sind
auf einem Netinst-System aber nicht im Spiel.&lt;/p&gt;</description></item><item><title>VLANs auf der UDM einrichten</title><link>https://myl3z.me/de/docs/network/unifi-vlan-umbau/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://myl3z.me/de/docs/network/unifi-vlan-umbau/</guid><description>&lt;h1 id="vlans-auf-der-udm-einrichten"&gt;VLANs auf der UDM einrichten&lt;a class="anchor" href="#vlans-auf-der-udm-einrichten"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Der Ablauf, in dem der Umbau von einem flachen &lt;code&gt;10.10.0.0/16&lt;/code&gt; auf sechs Segmente tatsaechlich
funktioniert hat — inklusive der zwei Stellen, an denen der geplante Ablauf nicht funktioniert
hat. Das Layout dahinter steht unter
&lt;a href="https://myl3z.me/de/docs/network/vlan-layout/"&gt;Netz-Layout mit VLANs&lt;/a&gt;, die Begriffe unter
&lt;a href="https://myl3z.me/de/docs/network/vlan-grundlagen/"&gt;VLANs verstehen&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="zuerst-das-alte-netz-verkleinern"&gt;Zuerst: das alte Netz verkleinern&lt;a class="anchor" href="#zuerst-das-alte-netz-verkleinern"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Der Plan sah vor, die neuen Netze anzulegen, waehrend das bestehende unberuehrt bleibt, und das
alte Netz erst zum Schluss auf &lt;code&gt;/24&lt;/code&gt; zu verkleinern. Das laesst sich nicht durchhalten.&lt;/p&gt;</description></item><item><title>Firewall zwischen Segmenten</title><link>https://myl3z.me/de/docs/network/firewall-policies/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://myl3z.me/de/docs/network/firewall-policies/</guid><description>&lt;h1 id="firewall-zwischen-segmenten"&gt;Firewall zwischen Segmenten&lt;a class="anchor" href="#firewall-zwischen-segmenten"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Segmente allein trennen nichts. Sobald die Netze geroutet werden — und das tun sie, sonst kaeme
niemand ins Internet — entscheidet ausschliesslich das Regelwerk auf dem Gateway, wer wen
erreicht. Das VLAN sorgt nur dafuer, dass der Verkehr ueberhaupt am Gateway vorbeikommt und
dort bewertet werden kann.&lt;/p&gt;
&lt;h2 id="die-grundregel"&gt;Die Grundregel&lt;a class="anchor" href="#die-grundregel"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Verbot als Standard, Erlaubnis als Ausnahme. Jedes Segment darf ins Internet, keines
untereinander — und davon abweichend nur, was einen konkreten Anlass hat.&lt;/p&gt;</description></item><item><title>SSH-Config und Key-Login</title><link>https://myl3z.me/de/docs/linux/ssh-config/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://myl3z.me/de/docs/linux/ssh-config/</guid><description>&lt;h1 id="ssh-config-und-key-login"&gt;SSH-Config und Key-Login&lt;a class="anchor" href="#ssh-config-und-key-login"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Ohne Konfiguration besteht jede Verbindung aus derselben Tipparbeit:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ssh -i ~/.ssh/id_rsa xander@10.10.10.3&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Adresse, Benutzer und Schluessel gehoeren nicht in die Kommandozeile, sondern in die
Client-Konfiguration unter &lt;code&gt;~/.ssh/config&lt;/code&gt;. Dort steht pro Host, wie die Verbindung aussehen
soll — danach genuegt der Alias:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ssh dns01&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="der-eintrag"&gt;Der Eintrag&lt;a class="anchor" href="#der-eintrag"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Host dns01
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; HostName 10.10.10.3
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; IdentityFile /home/xander/.ssh/id_rsa
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; IdentitiesOnly yes&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Zeile&lt;/th&gt;
					&lt;th&gt;Bedeutung&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;Host dns01&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;der Name, den man auf der Kommandozeile tippt. Frei waehlbar und unabhaengig vom echten Hostnamen; alles bis zum naechsten &lt;code&gt;Host&lt;/code&gt; gehoert zu diesem Block&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;HostName 10.10.10.3&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;wohin tatsaechlich verbunden wird — IP oder DNS-Name&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;IdentityFile&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;der &lt;strong&gt;private&lt;/strong&gt; Schluessel fuer diese Verbindung. Der oeffentliche daneben (&lt;code&gt;.pub&lt;/code&gt;) liegt auf dem Server&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;IdentitiesOnly yes&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;nur diesen Schluessel anbieten, nichts anderes&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Der Datei-Abschnitt ist eine Sammlung von Defaults, keine Verbindung fuer sich. Er greift bei
allem, was auf den Alias passt — also auch bei &lt;code&gt;scp&lt;/code&gt;, &lt;code&gt;rsync&lt;/code&gt; und &lt;code&gt;git&lt;/code&gt;, die denselben
SSH-Client verwenden:&lt;/p&gt;</description></item><item><title>Taeglich damit arbeiten</title><link>https://myl3z.me/de/docs/shopware/ddev-daily/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://myl3z.me/de/docs/shopware/ddev-daily/</guid><description>&lt;h1 id="taeglich-damit-arbeiten"&gt;Taeglich damit arbeiten&lt;a class="anchor" href="#taeglich-damit-arbeiten"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Der Shop laeuft. Was jetzt zaehlt, sind die zehn Kommandos, die man wirklich taeglich benutzt —
und ein paar Gewohnheiten, die viel Zeit sparen.&lt;/p&gt;
&lt;h2 id="die-grundregel"&gt;Die Grundregel&lt;a class="anchor" href="#die-grundregel"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Alles, was den Shop betrifft, laeuft im Container.&lt;/strong&gt; Also &lt;code&gt;ddev composer&lt;/code&gt; statt &lt;code&gt;composer&lt;/code&gt;,
&lt;code&gt;ddev console&lt;/code&gt; statt &lt;code&gt;bin/console&lt;/code&gt;, &lt;code&gt;ddev npm&lt;/code&gt; statt &lt;code&gt;npm&lt;/code&gt;. Der Grund ist immer derselbe: im
Container gelten die PHP- und Node-Versionen des Projekts, auf dem Rechner die des Rechners.&lt;/p&gt;</description></item><item><title>sudo nachruesten</title><link>https://myl3z.me/de/docs/linux/sudo-setup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://myl3z.me/de/docs/linux/sudo-setup/</guid><description>&lt;h1 id="sudo-nachruesten"&gt;sudo nachruesten&lt;a class="anchor" href="#sudo-nachruesten"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Auf einer frischen Debian-Installation kann &lt;code&gt;sudo&lt;/code&gt; fehlen — und zwar abhaengig von einer
Entscheidung, die man beim Installieren getroffen hat, ohne die Folge zu sehen:&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Root-Passwort im Installer&lt;/th&gt;
					&lt;th&gt;Ergebnis&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;vergeben&lt;/td&gt;
					&lt;td&gt;root ist aktiv, &lt;code&gt;sudo&lt;/code&gt; wird &lt;strong&gt;nicht&lt;/strong&gt; installiert&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;leer gelassen&lt;/td&gt;
					&lt;td&gt;root ist gesperrt, &lt;code&gt;sudo&lt;/code&gt; wird installiert und der erste Benutzer in die Gruppe &lt;code&gt;sudo&lt;/code&gt; aufgenommen&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Wer also ein Root-Passwort gesetzt hat, steht anschliessend vor einem &lt;code&gt;sudo: command not found&lt;/code&gt; und muss nachruesten.&lt;/p&gt;</description></item><item><title>WLAN auf VLANs verteilen</title><link>https://myl3z.me/de/docs/network/wlan-ssid-vlan/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://myl3z.me/de/docs/network/wlan-ssid-vlan/</guid><description>&lt;h1 id="wlan-auf-vlans-verteilen"&gt;WLAN auf VLANs verteilen&lt;a class="anchor" href="#wlan-auf-vlans-verteilen"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Am Kabel entscheidet der Switch-Port, in welchem Segment ein Geraet landet. Im WLAN gibt es
keinen Port — dort entscheidet die SSID. Jedes Funknetz wird genau einem VLAN zugeordnet, und
womit sich ein Geraet verbindet, bestimmt, wo es liegt.&lt;/p&gt;
&lt;h2 id="eine-ssid-je-segment"&gt;Eine SSID je Segment&lt;a class="anchor" href="#eine-ssid-je-segment"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;SSID&lt;/th&gt;
					&lt;th&gt;Netz&lt;/th&gt;
					&lt;th&gt;Besonderheit&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;xlab&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Clients (20)&lt;/td&gt;
					&lt;td&gt;WPA3/WPA2 gemischt, beide Baender&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;xlab-IoT&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;IoT (30)&lt;/td&gt;
					&lt;td&gt;nur 2,4 GHz, WPA2, PMF aus&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;xlab-Kids&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Kids (25)&lt;/td&gt;
					&lt;td&gt;wie Clients, zusaetzlich Zeitfenster&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;xlab-Guests&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Gaeste (40)&lt;/td&gt;
					&lt;td&gt;Client Device Isolation&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Die Zuordnung steht in UniFi unter &lt;em&gt;Settings → WiFi →&lt;/em&gt; SSID &lt;em&gt;→ Network&lt;/em&gt;. Das Feld heisst je
nach Version &lt;em&gt;Network&lt;/em&gt; oder &lt;em&gt;VLAN&lt;/em&gt;; gemeint ist immer dasselbe.&lt;/p&gt;</description></item><item><title>Grundausstattung nach der Installation</title><link>https://myl3z.me/de/docs/linux/base-packages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://myl3z.me/de/docs/linux/base-packages/</guid><description>&lt;h1 id="grundausstattung-nach-der-installation"&gt;Grundausstattung nach der Installation&lt;a class="anchor" href="#grundausstattung-nach-der-installation"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Eine Netinst-Installation ohne Desktop bringt bewusst wenig mit. Das ist die richtige
Ausgangslage fuer einen Server — es haelt Angriffsflaeche und Update-Aufwand klein —, hat aber
zur Folge, dass Werkzeuge erst dann auffallen, wenn man sie braucht. Diese Seite sammelt, was
auf dem Homelab-Rechner nachtraeglich dazugekommen ist.&lt;/p&gt;
&lt;p&gt;Ob ein Programm ueberhaupt fehlt, beantwortet:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff5c57"&gt;command&lt;/span&gt; -v curl &lt;span style="color:#78787e"&gt;# Pfad, wenn vorhanden; sonst leer und Exit-Code 1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dpkg -l curl &lt;span style="color:#78787e"&gt;# Paketstatus: ii = installiert und konfiguriert&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="curl"&gt;curl&lt;a class="anchor" href="#curl"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install curl&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;curl&lt;/code&gt; holt Daten ueber HTTP, HTTPS und ein Dutzend weiterer Protokolle und schreibt sie
standardmaessig nach stdout. Auf einem Server ohne Browser ist es das Standardwerkzeug fuer
alles, was ueber das Netz kommt: Installations-Skripte, API-Abfragen, der schnelle Test, ob
ein Dienst antwortet.&lt;/p&gt;</description></item><item><title>Pi-hole als DNS-Server</title><link>https://myl3z.me/de/docs/linux/pihole/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://myl3z.me/de/docs/linux/pihole/</guid><description>&lt;h1 id="pi-hole-als-dns-server"&gt;Pi-hole als DNS-Server&lt;a class="anchor" href="#pi-hole-als-dns-server"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Pi-hole ist ein DNS-Server mit Filter. Fragt ein Geraet nach einer Domain, die auf einer
Blockliste steht, reicht Pi-hole die Anfrage nicht an den Upstream weiter, sondern beantwortet
sie selbst — mit einer Adresse, die ins Leere zeigt. Der Vorteil gegenueber einem Blocker im
Browser ist die Stelle, an der gefiltert wird: die Namensaufloesung nutzt jedes Geraet im
Netz, auch das Fernsehgeraet und das Telefon des Besuchs, auf denen sich nichts installieren
laesst.&lt;/p&gt;</description></item><item><title>Upstream-DNS waehlen</title><link>https://myl3z.me/de/docs/linux/dns-upstream/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://myl3z.me/de/docs/linux/dns-upstream/</guid><description>&lt;h1 id="upstream-dns-waehlen"&gt;Upstream-DNS waehlen&lt;a class="anchor" href="#upstream-dns-waehlen"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://myl3z.me/de/docs/linux/pihole/"&gt;Pi-hole&lt;/a&gt; kennt die Adressen der Welt nicht. Es kennt
Blocklisten und einen Cache — alles andere reicht es weiter an einen &lt;strong&gt;Upstream&lt;/strong&gt;, und dessen
Antwort gibt es an den Client zurueck. Damit ist der Upstream die Stelle, an der die
Namensaufloesung des ganzen Haushalts das eigene Netz verlaesst.&lt;/p&gt;
&lt;p&gt;Der Installer stellt die Frage einmal, mit Google als erstem Vorschlag, und wer bestaetigt,
hat eine Entscheidung getroffen, ohne sie zu treffen.&lt;/p&gt;</description></item><item><title>Homelab, dritter Schritt — das Netz in Segmente schneiden</title><link>https://myl3z.me/de/posts/homelab/vlan-umbau/</link><pubDate>Sun, 23 Aug 2026 00:00:00 +0000</pubDate><guid>https://myl3z.me/de/posts/homelab/vlan-umbau/</guid><description>&lt;h1 id="homelab-dritter-schritt--das-netz-in-segmente-schneiden"&gt;Homelab, dritter Schritt — das Netz in Segmente schneiden&lt;a class="anchor" href="#homelab-dritter-schritt--das-netz-in-segmente-schneiden"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Der &lt;a href="https://myl3z.me/de/posts/homelab/dns-upstream/"&gt;zweite Teil&lt;/a&gt; endete mit einem sauberen
Aufbau und einem Plan fuer den naechsten Schritt: fuenf Segmente statt einem flachen &lt;code&gt;/16&lt;/code&gt;.
Der Plan lag seit Tagen fertig da, mit einer nummerierten Reihenfolge fuer den Umbau-Abend.&lt;/p&gt;
&lt;p&gt;Von dieser Reihenfolge hat Schritt eins funktioniert. Danach fing das Netz an,
zurueckzureden.&lt;/p&gt;
&lt;h2 id="warum-ueberhaupt-schneiden"&gt;Warum ueberhaupt schneiden&lt;a class="anchor" href="#warum-ueberhaupt-schneiden"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bis zu diesem Abend war das Heimnetz ein einziger Raum. Alles darin: die Dream Machine, der
Thin Client mit dem DNS-Filter, Telefone, der Arbeitsrechner, der Fernseher, der Drucker, ein
paar Smart-Home-Geraete. Jedes Geraet konnte jedes andere direkt erreichen. Nicht, weil das
irgendwo so eingestellt war, sondern weil nichts es verhinderte.&lt;/p&gt;</description></item><item><title>Homelab, zweiter Schritt — wem der DNS-Server vertraut</title><link>https://myl3z.me/de/posts/homelab/dns-upstream/</link><pubDate>Thu, 20 Aug 2026 00:00:00 +0000</pubDate><guid>https://myl3z.me/de/posts/homelab/dns-upstream/</guid><description>&lt;h1 id="homelab-zweiter-schritt--wem-der-dns-server-vertraut"&gt;Homelab, zweiter Schritt — wem der DNS-Server vertraut&lt;a class="anchor" href="#homelab-zweiter-schritt--wem-der-dns-server-vertraut"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Der &lt;a href="https://myl3z.me/de/posts/homelab/thin-client/"&gt;erste Teil&lt;/a&gt; endete mit einem laufenden
Pi-hole und dem Satz, dass ein laufender Dienst und ein benutzter Dienst zwei verschiedene
Dinge sind. Drei Punkte standen offen. Zwei davon sind jetzt erledigt, und der dritte ist es
bewusst nicht.&lt;/p&gt;
&lt;h2 id="der-eine-haken-im-router"&gt;Der eine Haken im Router&lt;a class="anchor" href="#der-eine-haken-im-router"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Der Filter lief seit Tagen und filterte nichts, weil ihn niemand fragte. Die UDM verteilte
per DHCP weiterhin ihre eigene Adresse als Nameserver, und jedes Geraet im Haushalt hielt
sich daran — ein Telefonbuch, das im Regal steht, waehrend alle beim alten nachschlagen.&lt;/p&gt;</description></item><item><title>Homelab, erster Schritt — Thin Client mit Debian 13</title><link>https://myl3z.me/de/posts/homelab/thin-client/</link><pubDate>Sun, 16 Aug 2026 00:00:00 +0000</pubDate><guid>https://myl3z.me/de/posts/homelab/thin-client/</guid><description>&lt;h1 id="homelab-erster-schritt--thin-client-mit-debian-13"&gt;Homelab, erster Schritt — Thin Client mit Debian 13&lt;a class="anchor" href="#homelab-erster-schritt--thin-client-mit-debian-13"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Ich baue mir ein Homelab. Nicht als Rack im Keller, sondern als etwas, das schrittweise
waechst: ein Geraet, ein Dienst, aufschreiben, weitermachen.&lt;/p&gt;
&lt;p&gt;Der erste Knoten ist ein Thin Client. Fuer den Anfang ist das die passende Klasse Hardware —
er laeuft lautlos, zieht im Dauerbetrieb kaum Strom und ist gebraucht guenstig zu bekommen.
Fuer die Dienste, die zuerst drauf sollen, reicht das mit Abstand.&lt;/p&gt;</description></item><item><title>Ueber mich</title><link>https://myl3z.me/de/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://myl3z.me/de/about/</guid><description>&lt;h1 id="ueber-mich"&gt;Ueber mich&lt;a class="anchor" href="#ueber-mich"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Ich bin Alexander Wolf, Co-Founder und CTO von &lt;a href="https://8mylez.com"&gt;8mylez&lt;/a&gt;, einer
Shopware-Agentur. Im Netz meist als &lt;code&gt;myl3z&lt;/code&gt; unterwegs, auf GitHub als
&lt;a href="https://github.com/xndrdev"&gt;xndrdev&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="diese-seite"&gt;Diese Seite&lt;a class="anchor" href="#diese-seite"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Kein Portfolio, sondern ein Notizbuch, das oeffentlich liegt.&lt;/p&gt;
&lt;p&gt;Der Grund ist eigennuetzig: Was man aufschreibt, versteht man besser, und was man erklaeren
muss, hat man vorher nicht so gut verstanden, wie man dachte. Beim Schreiben der Notiz zu
Pi-hole ist mir aufgefallen, dass der Server als einziges Geraet im Haus seinen eigenen
Filter nicht benutzte. Das faellt beim Konfigurieren nicht auf, beim Formulieren schon.&lt;/p&gt;</description></item></channel></rss>