<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SecretMine.de</title><link>https://secretmine.de/</link><description>Recent content on SecretMine.de</description><generator>Hugo -- gohugo.io</generator><language>de-DE</language><lastBuildDate>Sun, 08 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://secretmine.de/index.xml" rel="self" type="application/rss+xml"/><item><title>Planka - einfach nur Kanban</title><link>https://secretmine.de/blog/2026/2026-03-08-planka/</link><pubDate>Sun, 08 Mar 2026 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2026/2026-03-08-planka/</guid><description>&lt;p&gt;Ich war lange auf der Suche nach einer ToDo-Lösung für mich.&lt;/p&gt;
&lt;h2 id="ein-bisschen-historie"&gt;Ein bisschen Historie
&lt;/h2&gt;&lt;p&gt;Ganz früher habe ich Wunderlist verwendet (heute Microsoft Todo), das hat aber nicht sonderlich lange funktioniert. Dann hatte ich über mehrere Jahre einen eigenen Jira-Server - das lief soweit gut, war aber für den normalen Alltag so viel Overkill wie nur geht. Klar, die Integration mit Confluence und auch die mobilen Apps dazu waren gut, trotzdem ist Jira eher für größeres Projektmanagement als für die eigene ToDo gebaut. Und die Server-Lizenzen für wenige Dollar gibts auch schon lange nicht mehr, Atlassian stellt die selbst hostbaren Produkte ja nach und nach komplett ein. Also zurück zu Microsoft Todo. Das war aber irgendwie immernoch nicht das Wahre. Auf der Suche nach einer weiteren neuen Lösung habe ich mir dann einige Softwareprodukte angesehen. Und gelandet bin ich am Ende bei Planka.&lt;/p&gt;
&lt;h2 id="was-kann-planka"&gt;Was kann Planka?
&lt;/h2&gt;&lt;p&gt;Ganz ehrlich? Nicht viel. Planka kann Kanban-Boards, genau dafür ist es entwickelt worden. Und abseits davon gibts auch nicht viel zu sehen. Aber die Boards sind übersichtlich, Planka braucht eher wenig Ressourcen, lässt sich mit SSO gut integrieren, hat fürs Handy zumindest die Möglichkeit für eine PWA und &lt;em&gt;just works&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Im Vergleich zu anderen Kanban-Lösungen ist Planka minimalistisch gehalten und konzentriert sich auf den Kerngedanken. Gefällt mir gut.&lt;/p&gt;
&lt;h2 id="wie-nutze-ich-planka"&gt;Wie nutze ich Planka?
&lt;/h2&gt;&lt;p&gt;Ich habe ein großes Board, mit Spalten für Irgendwann, Zeitnahe, Morgen, Heute, In Arbeit, Blocked und Fertig. Das ist also angelehnt an klassisches Kanban, aber mehr auf die Nutzung als persönliche ToDo getrimmt. Das ganze ist mit einer eigenen Software (&lt;a class="link" href="https://secretmine.de/blog/2025/2025-09-20-plankaprinter-bondrucker/" &gt;Plankaprinter&lt;/a&gt;) auch halbwegs automatisiert und bindet z.B. meinen Kalender an (und druckt ToDos für heute automatisch auf einem Kassenbondrucker aus). Dadurch kann ich auch sagen, dass sich die API gut nutzen lässt.&lt;/p&gt;
&lt;p&gt;Ich habe Planka als Web-App auf allen Rechnern &amp;ldquo;installiert&amp;rdquo;, auf dem Handy genauso. Die mobile Nutzung ist nicht perfekt, aber brauchbar.&lt;/p&gt;
&lt;p&gt;Das ganze funktioniert so gut, dass meine Freundin jetzt ebenfalls von Microsoft Todo zu Planka gewechselt hat und Planka einer der zentralen Dienste neben Nextcloud und HomeAssistant geworden ist.&lt;/p&gt;
&lt;h2 id="was-fehlt-mir"&gt;Was fehlt mir?
&lt;/h2&gt;&lt;p&gt;Zugegeben, das neue Planka v2 habe ich mir noch nicht großartig angeschaut. Daher bezieht sich alles auf v1.&lt;/p&gt;
&lt;p&gt;Die mobile Nutzung ist nicht optimal. Vor allem die Meldung, dass die Serververbindung unterbrochen wurde, nachdem man die &amp;ldquo;App&amp;rdquo; eine Weile nicht benutzt hat, nervt. Verschieben von Karten funktioniert, teilweise scrollt der Ausschnitt aber zu weit zur Seite und man trifft nicht die korrekte Spalte.&lt;/p&gt;
&lt;p&gt;Auch das, was bei Jira die Epics sind, fehlt mir ein wenig. Also größere Aufgaben, zu der dann mehrere Karten gehören. Aber das ist eben nicht das Ziel von Planka, es ist kein volles Projektmanagement-Tool.&lt;/p&gt;
&lt;p&gt;Ansonsten wüsste ich aber nicht viel. Eigentlich funktioniert Planka wirklich solide.&lt;/p&gt;
&lt;h2 id="fazit"&gt;Fazit
&lt;/h2&gt;&lt;p&gt;Planka hat sich jetzt über mehrere Monate hinweg als hilfreich für die eigene Organisation erwiesen. Es kann genug (aber auch nicht zu viel), um als Kanban-Lösung für den Zweck ziemlich gut zu passen. Was will man mehr?&lt;/p&gt;</description></item><item><title>Storage-Cluster - der Plan</title><link>https://secretmine.de/blog/2026/2026-02-28-storage-cluster-der-plan/</link><pubDate>Sat, 28 Feb 2026 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2026/2026-02-28-storage-cluster-der-plan/</guid><description>&lt;h1 id="storage-cluster---der-plan"&gt;Storage-Cluster - der Plan
&lt;/h1&gt;&lt;p&gt;Wer regelmäßig mit Virtualisierung, Containern und Selfhosting arbeitet, kennt das Problem: der Storage wächst einem über den Kopf. Auch bei mir sind die bisherigen Nodes inzwischen so stark ausgelastet, dass für größere Storage-Aufgaben schlicht kein Platz mehr ist. Zeit also für den nächsten Ausbauschritt in meinem Homelab – ein (weitestgehend) dedizierter, energieeffizienter und möglichst robuster Storage-Cluster.&lt;/p&gt;
&lt;h2 id="das-ziel"&gt;Das Ziel
&lt;/h2&gt;&lt;p&gt;Wie auch in größeren IT-Projekten üblich, beginnt alles mit der Zielsetzung bzw. der Erfassung der Anforderungen.&lt;/p&gt;
&lt;p&gt;Ich brauche einerseits Storage, der schnell ist und den Ausfall einer von drei geplanten Nodes verkraftet, andererseits Massenspeicher für z.B. Medien, LXC-Templates, ISOs und co, der nicht hochverfügbar sein muss und auch nicht die selben Geschwindigkeiten erreichen muss. Auf dem schnellen Speicher sollen wichtige VMs/LXCs liegen (bspw. DNS und HomeAssistant), daneben soll dieser Bereich auch als Speicher für Docker Swarm dienen.&lt;/p&gt;
&lt;p&gt;Am liebsten hätte ich hier natürlich vollständige Hochverfügbarkeit, also keinen einzelnen Single-Point-of-Failure (redundantes Netzwerk, redundante Stromversorgung, &amp;hellip;). Das ist für Zuhause aber einerseits overkill und andererseits weder finanziell noch energetisch sinnvoll. Daher möchte ich eine möglichst gute Verfügbarkeit erreichen, ohne dabei komplett in den Enterprise-Bereich vorzudringen.&lt;/p&gt;
&lt;p&gt;Die bisherigen Nodes sind mit ihren eigentlichen Aufgaben zu stark ausgelastet, um hier sinnvoll auch noch Storage machen zu können. Das ist so gerade zwar im Einsatz, ich merke allerdings, dass ich mich damit zu nahe an der Grenze bewege.&lt;/p&gt;
&lt;h2 id="der-plan"&gt;Der Plan
&lt;/h2&gt;&lt;p&gt;Ich habe über die letzten Wochen einen Plan erarbeitet, PoCs aufgesetzt und vieles ausprobiert. Bisher ist der Cluster noch nicht aufgebaut, aber ich denke, dass ich mit der Auswahl an Hardware und Software mein Ziel erreiche.&lt;/p&gt;
&lt;h3 id="hardware-natürlich-thin-clients"&gt;Hardware. Natürlich Thin-Clients
&lt;/h3&gt;&lt;p&gt;Die Hardwarebasis bilden drei Fujitsu Futro S740 Thin Clients. Dass ich die Dinger mag, ist bekannt. Die Wahl fiel auf dieses Modell, da es günstig ist, sehr energieeffizient läuft und genügend Erweiterungsmöglichkeiten bietet. Der Plan ist hierbei, in der ersten Ausbaustufe den WiFi-Slot für einen SATA-Controller zu nutzen. Später soll der SATA-Controller dann in den SSD-Slot (der laut Internet neben SATA auch PCIe-Anbindung hat) wandern und der WiFi-Slot für eine 2,5 GBit/s Netzwerkkarte genutzt werden.&lt;/p&gt;
&lt;p&gt;Geplanter Ausbau pro Node:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;4 GB RAM&lt;/li&gt;
&lt;li&gt;1x 16/32GB für das OS (meistens dabei)&lt;/li&gt;
&lt;li&gt;1× 480 GB SSD (für Ceph)&lt;/li&gt;
&lt;li&gt;1× 1 TB HDD (für SaunaFS oder Alternativen)&lt;/li&gt;
&lt;li&gt;SATA-Controller über den WiFi-Slot (Adapterlösung)&lt;/li&gt;
&lt;li&gt;Später Upgrade auf 2,5 Gbit/s LAN&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Das Netzwerk wird anfangs über meine bestehende 1 GBit/s-Infrastruktur gelöst, später ist hier ein zusätzlicher 2,5 GBit/s Switch geplant. Ich rechne ohne Datenträger mit Kosten von ca 75 € pro Knoten, was ich für nicht viel halte. Ohne Datenträger bekomme ich damit für etwas über 200 € einen weitestgehend redundanten Storage-Cluster.&lt;/p&gt;
&lt;h3 id="software"&gt;Software
&lt;/h3&gt;&lt;p&gt;Für den Storage-Cluster sollen zwei Software-Lösungen zum Einsatz kommen. Ceph wird für den schnellen Speicher genutzt, der Massenspeicher wird nach aktuellem Stand auf SaunaFS aufbauen. Ceph habe ich ausgesucht, da es von Proxmox nativ unterstützt wird und dort sogar gut integriert ist. Neben Blockspeicher kann ich dort über CephFS auch Freigaben auf Dateiebene erzeugen, was ich für Docker Swarm benötige. Es ist zudem performant und im Enterprise-Bereich stark vertreten. Für den langsameren Speicher habe ich lange überlegt, was ich nutzen möchte. Erst hatte ich GlusterFS vorgesehen. Mittlerweile habe ich mich hier aber umentschieden und möchte SaunaFS einsetzen. Das ist ein Fork von LizardFS, was wiederum ein Fork von MooseFS ist. Es ist für verteilten Massenspeicher ausgelegt, hat eher wenig Overhead und bietet sogar die Option, die Anzahl der Replikas pro Ordner festzulegen.&lt;/p&gt;
&lt;p&gt;Auf jedem der Futros wird dementsprechend Proxmox VE installiert und die Nodes in den bisherigen Cluster eingefügt. Die SSDs werden als OSDs für Ceph genutzt, die zusätzlichen Datenträger dann als Mountpoints an einen LXC pro Node angebunden. Dort wird dann SaunaFS installiert. SaunaFS kann ich aufgrund der Voraussetzung von Ubuntu als OS leider nicht direkt auf den Knoten installieren, die Variante mit SaunaFS habe ich jetzt aber auch schon eine Weile im Haupt-Cluster im Testbetrieb erfolgreich genutzt.&lt;/p&gt;
&lt;p&gt;Das SaunaFS-Volume wird dann von einem Knoten via Samba und NFS freigegeben. Das hat den Hintergrund, dass es mit vielen Dingen kompatibel ist und sich so z.B. auch in Proxmox als Speicher für Templates und ISOs gut einbinden lässt.&lt;/p&gt;
&lt;h2 id="weitere-ideen-und-mögliche-dienste"&gt;Weitere Ideen und mögliche Dienste
&lt;/h2&gt;&lt;p&gt;Wenn die Performance passt, sollen auf dem Storage-Cluster später auch leichte Dienste laufen und damit die bestehenden Nodes etwas entlastet werden. Kandidaten dafür sind Dinge wie der Proxmox Backup Server oder auch Komponenten von meinem Monitoring-Stack.&lt;/p&gt;
&lt;p&gt;Ob das mit 4 GB RAM pro Node praktikabel ist, wird sich erst zeigen - mehr RAM kaufen ist aber aufgrund der Lage am Markt gerade keine Option.&lt;/p&gt;
&lt;h2 id="nächste-schritte"&gt;Nächste Schritte
&lt;/h2&gt;&lt;p&gt;Ich habe Hardware bestellt, um einen Futro mal mit einem SATA-Controller auszustatten und damit schonmal als Storage (ohne Ceph oder Replikation oder so) einzusetzen. Das dient als erster Test. Wenn das so funktioniert, wie ich mir das vorstelle, werden weitere Futro S740er gekauft und der Cluster aufgebaut.&lt;/p&gt;
&lt;p&gt;Ich nehme dafür den Futro, den ich eigentlich für den 3D-Drucker gekauft hatte. Dort kommt einfach wieder der S520 hin. Das bietet sich an, da ich für den 3D-Drucker wenig Leistung brauche, der Futro S520 eh nichts zu tun hat und ich so gut etwas Geld sparen kann.&lt;/p&gt;</description></item><item><title>Authentifizierung und Single-Sign-On im Homelab mit Authentik</title><link>https://secretmine.de/blog/2026/2026-02-22-authentifizierung-und-sso-im-homelab-mit-authentik/</link><pubDate>Sun, 22 Feb 2026 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2026/2026-02-22-authentifizierung-und-sso-im-homelab-mit-authentik/</guid><description>&lt;p&gt;Zentrale Authentifizierung bringt selbst im Homelab klare Vorteile: Einmalige Anmeldung spart Zeit, erhöht die Sicherheit durch weniger Passwörter und erleichtert die Verwaltung von Zugriffsrechten – perfekt für ein Homelab mit vielen Services. Nebenbei bekommt man damit auch Anwendungen, die zwar SSO können, aber keine Multifaktorauthentisierung beherrschen, mit MFA ausgestattet.&lt;/p&gt;
&lt;h2 id="vorteile-gegenüber-anderen-lösungen-keycloak"&gt;Vorteile gegenüber anderen Lösungen (Keycloak)
&lt;/h2&gt;&lt;p&gt;Ich hatte früher Keycloak im Einsatz, was mir aber aufgrund seiner Komplexität im Homelab einfach zu überladen war. Keycloak kann sicherlich mehr als Authentik (denke ich zumindest), ist für mich zuhause allerdings overkill. Authentik ist zwar auch nicht trivial, trotzdem empfinde ich die Konfiguration als angenehmer. Für mich ist der Hauptzweck im Homelab OpenID Connect (OIDC), andere Protokolle wie SAML spielen bei mir keine Rolle.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2026/2026-02-22-authentifizierung-und-sso-im-homelab-mit-authentik/images/admin.png"
width="1534"
height="800"
srcset="https://secretmine.de/blog/2026/2026-02-22-authentifizierung-und-sso-im-homelab-mit-authentik/images/admin_hu_8bbd9fe862309c1f.png 480w, https://secretmine.de/blog/2026/2026-02-22-authentifizierung-und-sso-im-homelab-mit-authentik/images/admin_hu_34a9d478f49f07ef.png 1024w"
loading="lazy"
alt="Admin-Oberfläche von Authentik"
class="gallery-image"
data-flex-grow="191"
data-flex-basis="460px"
&gt;&lt;/p&gt;
&lt;h2 id="outposts"&gt;Outposts
&lt;/h2&gt;&lt;p&gt;Ein weiterer großer Vorteil von Authentik sind die sogenannten Outposts, mit denen neben SSO-Protokollen auch LDAP-Dienste, Remotedesktop-Zugriff und Proxy-Authentifizierung angeboten werden.&lt;/p&gt;
&lt;p&gt;Über den Proxy-Outpost kann man die Authentifizierung direkt in einem Reverse-Proxy bzw. Webserver integrieren. Dadurch lassen sich interne Anwendungen sehr sicher über das Internet erreichbar machen. Bei mir laufen viele Anwendungen mit OIDC-Anbindung, einige interne Dienste sind zudem über Caddy mit Forward-Auth abgesichert. Mein Proxmox-Cluster ist sogar direkt per LDAP-Outpost an Authentik angebunden, was den Sync von Usern und Gruppen einfach macht.​ Ob das sinnvoll ist, ist allerdings eine andere Sache, immerhin bin ich der einzige Benutzer. Andere Services wie beispielsweise Nextcloud oder Planka nutze ich hingegen nicht nur alleine.&lt;/p&gt;
&lt;p&gt;Relativ neu ist der Remote Access Control (RAC) Outpost, womit sich Remotedesktop-Dienste anbinden lassen. Die Technik dahinter ist am Ende allerdings &amp;ldquo;nur&amp;rdquo; ein Apache Guacamole, den ich schon &lt;a class="link" href="https://secretmine.de/blog/2025/2025-06-09-guacamole/" &gt;anderweitig betreibe&lt;/a&gt; und durch den getrennten Betrieb bessere Kontrolle und mehr Konfigurationsmöglichkeiten erhalte.&lt;/p&gt;
&lt;h3 id="konfiguration-für-forward-auth-mit-caddy"&gt;Konfiguration für Forward-Auth mit Caddy
&lt;/h3&gt;&lt;p&gt;Hier ein kurzes Config-Snippet für Auth mit Caddy:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(authentik_forwardauth) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; reverse_proxy /outpost.goauthentik.io/* http://proxy-outpost:9000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; forward_auth http://proxy-outpost:9000 {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; uri /outpost.goauthentik.io/auth/caddy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; copy_headers X-Authentik-Username X-Authentik-Groups X-Authentik-Entitlements X-Authentik-Email X-Authentik-Name X-Authentik-Uid X-Authentik-Jwt X-Authentik-Meta-Jwks X-Authentik-Meta-Outpost X-Authentik-Meta-Provider X-Authentik-Meta-App X-Authentik-Meta-Version
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; trusted_proxies private_ranges
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;proxmox.example.com {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; import authentik_forwardauth
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; reverse_proxy 192.168.0.2:8006 {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; transport http {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; tls_insecure_skip_verify
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;In Authentik muss Proxmox mit der entsprechenden Domain als Proxy-Provider angelegt werden, mit dem Modus &amp;ldquo;Forward Auth&amp;rdquo;. Beim Outpost selbst muss dieser Provider dann noch zugewiesen werden, danach sollte alles schon funktionieren.&lt;/p&gt;
&lt;p&gt;Der Proxy Outpost kann wohl auch direkt Proxy spielen - mit der Lösung via Caddy und Forward-Auth kann ich allerdings mehrere Anwendungen anbinden, ohne mehrere Outposts zu benötigen.&lt;/p&gt;
&lt;h2 id="weitere-praktische-features"&gt;Weitere praktische Features
&lt;/h2&gt;&lt;p&gt;Neben der eigentlichen Authentifizierung zeigt Authentik die eingerichteten Anwendungen auch auf einer übersichtlichen Hub-Oberfläche an. Die Anwendungen lassen sich in Gruppen ordnen, es werden auch nur die Anwendungen angezeigt, die zu denen der entsprechende Benutzer Zugang hat. Das erspart den Betrieb von einer getrennten Homepage bzw. Hub-Oberfläche.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2026/2026-02-22-authentifizierung-und-sso-im-homelab-mit-authentik/images/hub.png"
width="1350"
height="672"
srcset="https://secretmine.de/blog/2026/2026-02-22-authentifizierung-und-sso-im-homelab-mit-authentik/images/hub_hu_fd728db87c712876.png 480w, https://secretmine.de/blog/2026/2026-02-22-authentifizierung-und-sso-im-homelab-mit-authentik/images/hub_hu_3bd08e56ae345eab.png 1024w"
loading="lazy"
alt="Authentik Hub"
class="gallery-image"
data-flex-grow="200"
data-flex-basis="482px"
&gt;&lt;/p&gt;
&lt;h2 id="fazit"&gt;Fazit
&lt;/h2&gt;&lt;p&gt;Nach mehreren Jahren im Betrieb funktioniert Authentik zuverlässig und stabil. Es ist eine empfehlenswerte Alternative zu Keycloak, wenn man eine sichere, moderne Authentifizierungslösung mit erträglichem Konfigurationsaufwand im Homelab sucht.​ Vor allem die Outposts sind ein klarer Vorteil von Authentik gegenüber anderer Lösungen.&lt;/p&gt;</description></item><item><title>Ein neues (bzw. altes) Mainboard für das NAS</title><link>https://secretmine.de/blog/2026/2026-02-14-nas-neues-mainboard/</link><pubDate>Sat, 14 Feb 2026 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2026/2026-02-14-nas-neues-mainboard/</guid><description>&lt;p&gt;Mein NAS läuft nun seit vielen Jahren mit einem i3 4130. Das ist eine Haswell-CPU von ca 2013. Das NAS ist meistens im Standby und wird nur bei Bedarf via HomeAssistant eingeschaltet und kann von dort aus auch wieder in den Standby gesetzt werden.&lt;/p&gt;
&lt;h2 id="das-problem"&gt;Das Problem
&lt;/h2&gt;&lt;p&gt;Seit diversen Monaten kommt es vor, dass das NAS nach einiger Zeit beim Aufwecken hängen bleibt, teilweise auch bei größeren Transfers. Das Gerät ist an, aber via Ping (und auch auf allen anderen Wegen) nicht mehr erreichbar. Eine Kernel-Panic ist dann auch auf dem Bildschirm zu sehen. Ich weiß, dass das Mainboard einen Defekt hat, die USB-Ports funktionieren nicht mehr sauber. Von daher vermute ich dort irgendwo ein Problem.&lt;/p&gt;
&lt;h2 id="die-mögliche-lösung"&gt;Die mögliche Lösung
&lt;/h2&gt;&lt;p&gt;Ich habe ein gebrauchtes Bundle mit einem i3 6100, einem Mainboard (Gigabyte H110M-S03) und 8GB DDR4-RAM bestellt. Da die CPU ähnlich alt (ca 2015) ist, war das ganze mit unter 40 € auch entsprechend preiswert. Die Wahl fiel auch primär aufgrund des Preises auf so ein Bundle. Besondere Ansprüche an die CPU-Leistung oder den RAM habe ich nicht, da das Teil nur als Dateiserver dient und dort keine weiteren Services laufen. Daher ist das Downgrade von 16 GB auf 9 GB RAM auch okay.&lt;/p&gt;
&lt;p&gt;Laut Benchmarks ist der i3 6100 etwa 20% schneller als der i3 4130, vor allem kann aber die Encoding-Engine der iGPU neben h.264 auch h.265 bzw. HEVC in Hardware kodieren. Das ist vor allem für einen Mediasever mit Transcoding hilfreich. Neuere Hardware wäre zwar nett, aber die zusätzliche Leistung brauche ich nicht, der geringere Stromverbrauch ist durch die nicht dauerhafte Nutzung nicht so relevant und Lust auf die deutlich höheren Kosten habe ich auch nicht. Von daher genügt Skylake.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2026/2026-02-14-nas-neues-mainboard/images/mainboard.jpg"
width="2000"
height="2087"
srcset="https://secretmine.de/blog/2026/2026-02-14-nas-neues-mainboard/images/mainboard_hu_d3eb07f3bc6716a4.jpg 480w, https://secretmine.de/blog/2026/2026-02-14-nas-neues-mainboard/images/mainboard_hu_59e7a5e7f65fe9fa.jpg 1024w"
loading="lazy"
alt="Das “neue” Mainboard"
class="gallery-image"
data-flex-grow="95"
data-flex-basis="229px"
&gt;&lt;/p&gt;
&lt;h2 id="umbau"&gt;Umbau
&lt;/h2&gt;&lt;p&gt;Hardware abseits von Mainboard/CPU/RAM:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SATA-HBA mit 6 Ports (günstiges Modell mit einem ASM1166-Chip)&lt;/li&gt;
&lt;li&gt;2,5 GBit/s Netzwerkkarte (günstiges Modell mit einem RTL8125B-Chip)&lt;/li&gt;
&lt;li&gt;Samsung 850 Evo mit 120 GB als Cache (hauptsächlich genutzt für Daten von Docker-Containern)&lt;/li&gt;
&lt;li&gt;1x 4 TB HDD als Parity&lt;/li&gt;
&lt;li&gt;3x 3 TB HDD als Datenplatten&lt;/li&gt;
&lt;li&gt;1x 4 TB HDD als Datenplatte&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Damit kommt eine nutzbare Kapazität von 13 TB zustande.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2026/2026-02-14-nas-neues-mainboard/images/nas_pre.jpg"
width="2778"
height="2000"
srcset="https://secretmine.de/blog/2026/2026-02-14-nas-neues-mainboard/images/nas_pre_hu_acb979d8964e1bf1.jpg 480w, https://secretmine.de/blog/2026/2026-02-14-nas-neues-mainboard/images/nas_pre_hu_663b3b443242f005.jpg 1024w"
loading="lazy"
alt="NAS vor dem Umbau"
class="gallery-image"
data-flex-grow="138"
data-flex-basis="333px"
&gt; &lt;img src="https://secretmine.de/blog/2026/2026-02-14-nas-neues-mainboard/images/nas_post.jpg"
width="2500"
height="2774"
srcset="https://secretmine.de/blog/2026/2026-02-14-nas-neues-mainboard/images/nas_post_hu_57731f1b72ad496.jpg 480w, https://secretmine.de/blog/2026/2026-02-14-nas-neues-mainboard/images/nas_post_hu_75cce1395b4e0a2c.jpg 1024w"
loading="lazy"
alt="NAS nach dem Umbau"
class="gallery-image"
data-flex-grow="90"
data-flex-basis="216px"
&gt;&lt;/p&gt;
&lt;p&gt;Der Umbau war höchst unkompliziert. Altes Mainboard raus, neues Mainboard rein, alles wieder verkabeln, fertig. unRAID ist weitestgehend egal, auf was für Hardware es gerade läuft, solange alle Festplatten noch da sind. An der Stelle war also nichts weiter zu tun, ich musste nur noch die neue MAC-Adresse im Router für die DHCP-Zuweisung und in HomeAssistant für Wake-on-LAN anpassen.&lt;/p&gt;
&lt;p&gt;Parallel habe ich auch den USB-Stick für das unRAID OS getauscht. Vorher war es ein Transcend JetFlash 700 mit 16 GB, nun ist es ein Samsung BAR Plus mit 32 GB. Die Wahl fiel auf diesen Stick, da der im unRAID-Forum und auch im entsprechenden Subreddit empfohlen wurde. unRAID inkl. Lizenz auf den neuen Stick zu migrieren war auch recht einfach. Ich habe einfach mit &lt;code&gt;dd&lt;/code&gt; den alten Stick auf den neuen kopiert, die Partition vergrößert und wieder bootbar gemacht. Die Lizenz lässt sich über unRAID bzw. deren Kundencenter auch recht einfach auf einen neuen Stick migrieren, da hatte ich allerdings kurz das Problem, dass zwei alte Keys (der ursprüngliche Trial-Key sowie ein Key von vor einem Lizenzupgrade) noch auf dem Stick waren. Die musste ich natürlich löschen.&lt;/p&gt;
&lt;h2 id="hat-es-geholfen"&gt;Hat es geholfen?
&lt;/h2&gt;&lt;p&gt;Den Tausch habe ich Anfang Januar durchgeführt, das ist jetzt etwa 6 Wochen her. Seit dem ist der Fall nur noch ein einziges Mal eingetreten, spürbar seltener als vorher. Auch die Probleme bei größeren Transfers (oder teilweise auch nur Container-Updates) sind seit dem nicht mehr aufgetreten. Den fehlenden Arbeitsspeicher spüre ich nicht, die zusätzliche CPU-Leistung allerdings auch nicht.&lt;/p&gt;
&lt;p&gt;Das es einen weiteren Crash gab ist natürlich nicht erfreulich. Daher werde ich mein IP-KVM an das NAS anschließen, um mir im Bedarfsfall zumindest die Kernel-Panic ansehen zu können. Falls es dabei Erkenntnisse gibt, werde ich einen weiteren Post schreiben.&lt;/p&gt;
&lt;p&gt;Als weitere Ursache fällt mir eigentlich nur noch der HBA ein. Die Probleme sind älter als die Netzwerkkarte, daher denke ich nicht, dass dort ein Problem liegt. Theoretisch kann auch die SSD oder eine der HDDs einen Fehler haben, der zu Lesefehlern führt, aber das ist wahrscheinlich schwer zu diagnostizieren.&lt;/p&gt;
&lt;h2 id="fazit"&gt;Fazit
&lt;/h2&gt;&lt;p&gt;Der Tausch war notwendig und durch die gebrauchte Hardware günstig. Das Endergebnis sieht gut aus, es läuft stabiler als vorher. Perfekt ist es allerdings weiterhin nicht. Vermutlich wäre es sinnvoll, das NAS dauerhaft laufen zu lassen; das möchte ich aber aufgrund des Stromverbrauchs und auch der Wärme- und Geräuschentwicklung nicht. Von daher werde ich mit dem neuen Stand erst einmal leben.&lt;/p&gt;</description></item><item><title>Harbor als lokale Container-Registry</title><link>https://secretmine.de/blog/2026/2026-02-06-harbor-als-lokale-container-registry/</link><pubDate>Fri, 06 Feb 2026 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2026/2026-02-06-harbor-als-lokale-container-registry/</guid><description>&lt;p&gt;Harbor ist eine Open-Source-Container-Registry-Plattform, die Docker-Images und Helm-Charts speichert und verwaltet. Neben der Nutzung als normale Registry zum Speichern von Images kann Harbor auch als Proxy-Registry dienen. Das ist bei mir der primäre Einsatzzweck. Nebenbei kann Harbor auch die Images mit Trivy auf bekannte Schwachstellen scannen. Die Übersichtsseite leuchtet leider schnell wie ein Weihnachtsbaum - man sieht schnell, welche Images lange nicht mehr aktualisiert wurden oder veraltete Softwareversionen nutzen. Trivy ist hierbei einer der gängigen Scanner, der die im Image vorhandenen Komponenten gegen Datenbanken mit bekannten Schwachstellen prüft (nicht nur normale Pakete, es werden bei diversen Programmiersprachen auch die verwendeten Libraries geprüft).&lt;/p&gt;
&lt;p&gt;Registries wie Docker Hub haben oft Pull-Limits, besonders bei häufigen Updates im Homelab ist das schnell nervig. Mit Harbor dazwischen reduziere ich die Anzahl der Pulls direkt von Docker Hub und kann auch schon gespeicherte Images oder Layer schneller ausliefern. Vor allem durch meine Verwendung von Docker Swarm ist das von Vorteil, da sonst bei der Migration eines Services von einer Node zu einer anderen das Image neu von der Quelle heruntergeladen wird. Mit Harbor als Proxy bzw. Cache kommt das Image dann direkt aus dem lokalen Netz.&lt;/p&gt;
&lt;h2 id="installation"&gt;Installation
&lt;/h2&gt;&lt;p&gt;Die Einrichtung ist unkompliziert, allerdings etwas anders, als man es von anderen containerisierten Diensten kennt. Man benötigt den Harbor-Installer von z.B. Github. Dann muss noch die harbor.yml erstellt bzw. angepasst werden (Hostname, HTTPS, Admin-Passwort), dann wird der Installer ausgeführt. Die Services sind am Ende ein normaler Docker Compose Stack.&lt;/p&gt;
&lt;p&gt;Sinnvoll ist hier auch die Nutzung eines Reverse-Proxies mit SSL, da Docker (und auch andere Container-Runtimes) Pulls aus unsicheren (=http) Registries ohne weitere Konfiguration verweigern. Am einfachsten ist ein Zertifikat von bspw. Lets Encrypt, mit der DNS-Verifizierungsmethode geht das dann auch, ohne dass Harbor von außen erreichbar ist. Selbstsignierte Zertifikate (z.B. via ACME von [Step-CA]({&amp;laquo; ref &amp;ldquo;/blog/2025/2025-02-28-lokale-ssl-zertifikate-mit-caddy-und-step-ca/index.md&amp;rdquo; &amp;raquo;})) sind möglich, dann muss das entsprechende Root-Zertifikat allerdings auf jedem System, das die lokale Registry nutzen soll, hinterlegt werden.&lt;/p&gt;
&lt;h2 id="cache-repo-einrichten"&gt;Cache-Repo einrichten
&lt;/h2&gt;&lt;p&gt;Damit man ein Cache-Repository einrichten kann, muss zuerst die Upstream-Registry unter Administration -&amp;gt; Registries hinzugefügt werden. Wenn ein Cache für Docker Hub angelegt werden soll, ist es hierbei empfehlenswert, Zugangsdaten mit anzugeben, um von den höheren Pull-Limits zu profitieren.&lt;/p&gt;
&lt;p&gt;Danach kann unter Projekte ein neues Projekt mit aktivem &lt;code&gt;Proxy Cache&lt;/code&gt; eingerichtet werden und der entsprechende Upstream (z.B. die angelegte Docker-Hub-Registry) ausgewählt werden.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2026/2026-02-06-harbor-als-lokale-container-registry/images/cache_repo.png"
width="1464"
height="763"
srcset="https://secretmine.de/blog/2026/2026-02-06-harbor-als-lokale-container-registry/images/cache_repo_hu_b76220c68ee9198e.png 480w, https://secretmine.de/blog/2026/2026-02-06-harbor-als-lokale-container-registry/images/cache_repo_hu_2299311374729a41.png 1024w"
loading="lazy"
alt="Cache-Repository"
class="gallery-image"
data-flex-grow="191"
data-flex-basis="460px"
&gt;&lt;/p&gt;
&lt;h2 id="client-einrichten"&gt;Client einrichten
&lt;/h2&gt;&lt;p&gt;In Harbor lassen sich Robot-Zugänge unter Administration anlegen. Bei den Berechtigungen habe ich folgendes vergeben:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Artifact: Auflisten, Lesen&lt;/li&gt;
&lt;li&gt;Repository: Auflisten, Pull, Lesen&lt;/li&gt;
&lt;li&gt;Tag: Auflisten&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Danach muss nur noch der Client (hier Docker) angemeldet werden.&lt;/p&gt;
&lt;p&gt;Im Fall von Docker ist das schnell gemacht:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker login harbor.local
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Danach zieht man Images einfach über &lt;code&gt;harbor.local/dockerhub-cache/image:tag&lt;/code&gt; (natürlich mit korrektem Hostnamen und Registry-Namen) - Harbor übernimmt den Rest automatisch. In Compose-Dateien lässt sich die Cache-Registry dann natürlich auch nutzen.&lt;/p&gt;
&lt;h2 id="fazit"&gt;Fazit
&lt;/h2&gt;&lt;p&gt;Harbor funktioniert bei mir ziemlich gut, allerdings waren auch schon 1-2 Mal die Container morgens nicht mehr gestartet. Man schafft sich damit leider auch einen Single Point of Failure, da der Betrieb von allen Containern im Lab von der Registry abhängt. Vor allem beim Betrieb von vielen Containern oder bei Nutzung eines Orchestrators (wie Kubernetes oder Docker Swarm) ist ein lokaler Cache zur Verminderung von Pulls aber definitiv sinnvoll und verringert die Startzeiten von Containern auf neuen Nodes spürbar.&lt;/p&gt;</description></item><item><title>Outline als (persönliches) Wiki</title><link>https://secretmine.de/blog/2026/2026-01-31-outline/</link><pubDate>Sat, 31 Jan 2026 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2026/2026-01-31-outline/</guid><description>&lt;p&gt;Lange Zeit habe ich Confluence als Wiki genutzt. Funktionsreich, hübsch und mit Jira integriert. Aber irgendwann kamen die bekannten Punkte: hoher Ressourcenbedarf und aktiver Rückbau der selbstgehosteten Version durch Entfernung der günstigen Lizenzen (und zukünftig auch aller selbsthostbaren Varianten). Also begann die Suche nach einer Alternative, die möglichst schlank, aber trotzdem gut nutzbar sein sollte.&lt;/p&gt;
&lt;p&gt;Ich habe mir dabei diverses angesehen. XWiki kannte ich von der Arbeit, gefiel mir aber weder optisch noch von der Bedienung her. Von den Ressourcen war es auch eher auf dem Level von Confluence. MediaWiki hat für nicht funktioniert - als Wiki generell nicht schlecht, für &amp;ldquo;mal eben&amp;rdquo; aber irgendwie unhandlich. Wiki.js habe ich mir ebenfalls angesehen, aber auch damit bin ich nicht so wirklich warm geworden. Die Bedienung ging nicht so von der Hand, wie ich mir das vorgestellt habe.&lt;/p&gt;
&lt;p&gt;Dann hat mir mein Bruder Outline gezeigt. Was für mich ziemlich perfekt aussah. Minimalistisch, schnell, gute und intuitive Bedienung. Es fühlt sich modern an, ohne überladen zu sein. Und ist auch noch Markdown-basiert. Eine native App gibt es zwar nicht, die PWA funktioniert aber gut.&lt;/p&gt;
&lt;p&gt;Der Funktionsumfang und auch Gestaltungsmöglichkeiten sind natürlich deutlich unter dem, was Confluence kann, aber davon vermisse ich auch nach vielen Jahren wenig.&lt;/p&gt;
&lt;h2 id="betrieb"&gt;Betrieb
&lt;/h2&gt;&lt;p&gt;Selfhosting bei Outline ist nicht so einfach wie bei anderen Softwareprodukten. Neben einer Postgres-Datenbank wird Redis benötigt - soweit so gut. Zwingend erforderlich ist aber auch ein externer Auth-Provider - in meinem Fall OIDC via Authentik. Früher war auch ein S3-Bucket als Speicher für Anhänge erforderlich, die Anforderung ist aber dank dem neu hinzugekommenen lokalen Storage nicht mehr verpflichtend. Trotzdem fühlt es sich so an, als ob Selfhosting zwar offiziell unterstützt wird, der Hersteller aber den Fokus klar auf dem eigenen SaaS-Angebot in der Cloud hat.&lt;/p&gt;
&lt;p&gt;Hat man das Setup aber einmal laufen, ist Outline sehr stabil. Ich nutze es nun seit gut drei Jahren in meiner Umgebung, und es ist dabei geblieben – einfach, weil es funktioniert.&lt;/p&gt;
&lt;h2 id="fazit"&gt;Fazit
&lt;/h2&gt;&lt;p&gt;Outline hat sich bei mir nun wirklich bewährt. Minimalistisch, aber trotzdem genügend Features; selbst hostbar, gute Bedienung. Alternativ lohnt sich ein Blick auf Bookstack. Das habe ich mir zwar lange nicht mehr angesehen, war aber der Alternativkandidat, falls Outline mir nicht gefallen hätte.&lt;/p&gt;</description></item><item><title>Minecraft-Server - meine Best Practises</title><link>https://secretmine.de/blog/2026/2026-01-24-minecraft-server-best-practises/</link><pubDate>Sat, 24 Jan 2026 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2026/2026-01-24-minecraft-server-best-practises/</guid><description>&lt;p&gt;Da ich über 10 Jahre Erfahrung im Betrieb von Minecraft-Servern habe und das zwischenzeitlich auch im größeren Stil gemacht habe, möchte ich hier einmal meine Best Practises dokumentieren.&lt;/p&gt;
&lt;p&gt;Vieles werde ich hier anhand meines eigenen Servers beschreiben. Dabei handelt es sich um einen Survival-Server, der seit bald 6 Jahren aktiv ist (gestartet während der ersten Corona-Zeiten). Der Server hat einige Plugins, das meiste davon aber rein serverseitig und ohne direkten Einfluss auf das Spielerlebnis.&lt;/p&gt;
&lt;p&gt;Dieser Post bezieht sich komplett auf die Java-Edition. Mit der Bedrock-Edition habe ich wenig Erfahrung, da ich diese selbst nicht spiele.&lt;/p&gt;
&lt;h2 id="nutzungsprofil-erstellen"&gt;Nutzungsprofil erstellen
&lt;/h2&gt;&lt;p&gt;Bevor man überhaupt mit der genaueren Planung bzw. Umsetzung beginnt, sollte feststehen, was überhaupt das Ziel ist, wie viele Spieler erwartet werden (Gesamt/Peak/Durchschnitt). Auch ist es ein großer Unterschied, ob die Spieler in einem recht kleinen Bereich aktiv sind (bspw. bei Minigames) oder verteilt auf einer großen Welt spielen. Ich habe auch häufig beobachtet, dass der Ressourcenbedarf bei einem Server z.B. in einer Freundesgruppe in den ersten Tagen deutlich höher ist als in der darauf folgenden Zeit. Dort kann es sinnvoll sein, erst kurzzeitig einen größeren virtuellen Server bei einem Anbieter zu mieten, der stundenweise bzw. tagesweise abrechnet und danach für den längerfristigen Betrieb auf einen günstigeren Server oder z.B. auch den Betrieb im Homelab zu wechseln.&lt;/p&gt;
&lt;h2 id="hardware-bzw-plattform"&gt;Hardware bzw. Plattform
&lt;/h2&gt;&lt;h3 id="cpu"&gt;CPU
&lt;/h3&gt;&lt;p&gt;Bei Minecraft läuft, wie bei vielen anderen Spielen auch, ein großer Teil der Spiellogik in einem Haupt-Thread ab. Das heißt, dass man eher wenige schelle CPU-Kerne benötigt als viele. Große Server-CPUs mit vielen Kernen sind hier meistens eher weniger geeignet, außer man möchte viele Minecraft-Server parallel betreiben. Die (halbwegs) aktuellen Desktop-CPUs von Intel und AMD mit min. 4 (Performance) Cores sind hier meistens eine solide Wahl.&lt;/p&gt;
&lt;h3 id="ram"&gt;RAM
&lt;/h3&gt;&lt;p&gt;Als Minimum sehe ich 4GB, darunter kommt es schnell zu Problemen. Mehr ist bis zu einem gewissen Punkt besser, über ca 30GB RAM würde ich unter normalen Umständen nicht gehen. Mehr Mods und Plugins benötigen mehr RAM, die Sichtweite und Verteilung der Spieler (und damit die Zahl der geladenen Chunks) ist hier auch relevant. Mein eigener Server läuft normalerweise mit 8GB.&lt;/p&gt;
&lt;h3 id="ssd-vs-hdd"&gt;SSD vs HDD
&lt;/h3&gt;&lt;p&gt;Minecraft profitiert von schnellem Speicher. SSD ist in meinen Augen ein Muss, NVMe ist zu bevorzugen. Die benötigte Größe hängt hauptsächlich von der Weltgröße und eingesetzten Plugins (bspw. Dynmap) ab, 20GB reichen meistens aber mehr als aus.&lt;/p&gt;
&lt;h3 id="internetanbindung"&gt;Internetanbindung
&lt;/h3&gt;&lt;p&gt;Ein Punkt, der beim Betrieb zuhause öfter mal übersehen wird. Leistungsstarke Hardware bringt wenig, wenn nicht genügend Bandbreite zur Verfügung steht. Ich kalkuliere normalerweise mit ca 2-5 MBit/s pro gleichtzeitigem Spieler. Wenn keine Chunks geladen werden, ist der Bedarf an Bandbreite niedriger, bei einem Weltwechsel oder schnellem Bewegen auf der Karte entstehen deutlich größere Peaks. Mit ca 50 MBit/s an verfügbarer Upload-Bandbreite kann man aber schon einige Spieler bedienen.&lt;/p&gt;
&lt;p&gt;Wenn man zuhause hostet, ist aus verschiedenen Gründen das Tunneln über einen Server in einem Rechenzentrum hilfreich. Einerseits gibt man damit seine Heim-IP nicht preis, andererseits ist durch bessere Peerings von Rechenzentren im Vergleich zu ISPs untereinander auch die Verbindungsqualität höher. Nebenbei kann man damit auch Einschränkungen durch CGNAT umgehen und den Server auch bei Nutzung einer zweiten Internetleitung für Failover erreichbar halten.&lt;/p&gt;
&lt;h2 id="software"&gt;Software
&lt;/h2&gt;&lt;h3 id="betriebssystem"&gt;Betriebssystem
&lt;/h3&gt;&lt;p&gt;Hier ist irgendeine gängige Linux-Distribution, die Docker-Support hat, sinnvoll. Ich verwende meistens Debian oder Ubuntu. Docker benötige ich für die verwendete Verwaltungssoftware, aber auch ohne ist der Betrieb von einem MC-Server in Docker häufig angenehmer als direkt auf dem Server.&lt;/p&gt;
&lt;h3 id="management-tool"&gt;Management-Tool
&lt;/h3&gt;&lt;p&gt;Ich nutze bisher Pterodactyl (&lt;a class="link" href="https://pterodactyl.io/" target="_blank" rel="noopener"
&gt;pterodactyl.io&lt;/a&gt;) als webbasiertes Gameserver-Panel. Lange Jahre kam bei mir Multicraft zum Einsatz - da ist allerdings das letzte Release von Februar 2022 und die letzte Preview-Version von November 2023. Alternativ zu Pterodactyl möchte ich zeitnahe Pelican (&lt;a class="link" href="https://pelican.dev/" target="_blank" rel="noopener"
&gt;pelican.dev&lt;/a&gt;) testen. Pelican ist ein Fork von Pterodactyl und soll trotz Beta-Stadiums sehr gut nutzbar sein. Daneben gibt es noch einige weitere erwähnenswerte Panels:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Crafty (&lt;a class="link" href="https://craftycontrol.com/" target="_blank" rel="noopener"
&gt;craftycontrol.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;PufferPanel (&lt;a class="link" href="https://www.pufferpanel.com/" target="_blank" rel="noopener"
&gt;pufferpanel.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;AMP (kommerziell, &lt;a class="link" href="https://cubecoders.com/AMP" target="_blank" rel="noopener"
&gt;cubecoders.com&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vor ein paar Jahren hätte ich noch Multicraft empfohlen, das fand ich insgesamt am angenehmsten in der Nutzung; aber da dieses Produkt scheinbar nicht mehr gepflegt wird, würde ich es nicht mehr einsetzen.&lt;/p&gt;
&lt;h3 id="server-software"&gt;Server-Software
&lt;/h3&gt;&lt;p&gt;Kommen wir zum Kernpart. Hier ist erst einmal entscheidend, ob Mods, Plugins oder keins von beidem zum Einsatz kommen sollen. Plugins sind hierbei rein serverseitige Modifikationen bzw. Erweiterungen, normalerweise basierend auf der Spigot-API. Mods sind client- und/oder serverseitige Erweiterungen/Modifikationen, meistens geht es dabei mehr um Erweiterung des Spielinhalts (neue Blöcke, Biome, Kreaturen, Spielmechaniken, &amp;hellip;).&lt;/p&gt;
&lt;h4 id="server-mit-mods"&gt;Server mit Mods
&lt;/h4&gt;&lt;p&gt;Hier wird meistens Fabric (&lt;a class="link" href="https://fabricmc.net/" target="_blank" rel="noopener"
&gt;fabricmc.net&lt;/a&gt;) als Modloader verwendet, dieser startet dann den eigentlichen Server.&lt;/p&gt;
&lt;h4 id="server-mit-plugins"&gt;Server mit Plugins
&lt;/h4&gt;&lt;p&gt;Für Plugins und generell als Serversoftware ist PaperMC (&lt;a class="link" href="https://papermc.io/" target="_blank" rel="noopener"
&gt;papermc.io&lt;/a&gt;) der Quasi-Standard. Es fing mit Bukkit an (Vanilla-Server mit Pluginfähigkeit), daraus entstand dann SpigotMC (optimiertes Bukkit), wovon dann wieder PaperMC geforkt wurde. Auch unterhalb von PaperMC geht die Fork-Kette weiter, wobei PaperMC als guter Kompromiss von Performance und akkuraten Spielmechaniken gilt und meistens empfohlen wird. Es gibt im Wiki von PaperMC auch einen Artikel, der beschreibt, wie man PaperMC vom Gameplay-Verhalten möglichst nahe an Vanilla annähern kann.&lt;/p&gt;
&lt;p&gt;Kurz erwähnen möchte ich hier auch Folia, eine weitere Serversoftware von PaperMC - allerdings ausgelegt auf wirklich große survival-artige Server. Die Besonderheit bei Folia ist, dass es den einen großen Haupt-Game-Thread gibt, in dem alle Aktionen passieren. Folia teilt die Welt in distinkte Regionen auf, die getrennt voneinander arbeiten. Dadurch gibt es einen Game-Thread pro Region, wodurch sich die Last deutlich besser auf viele CPU-kerne verteilen lässt. Relevant wird das aber erst bei großen Spielerzahlen, Folia hat zudem auch viele Nachteile (Plugin-Kompatibilität, Entwicklungsstadium der Software, Bugs in Spielmechaniken, &amp;hellip;).&lt;/p&gt;
&lt;h3 id="proxies"&gt;Proxies
&lt;/h3&gt;&lt;p&gt;Es gibt für Minecraft spezielle Proxy-Software. Damit lassen sich mehrere Server zu einem &amp;ldquo;Netzwerk&amp;rdquo; verbinden und Spieler können via Commands oder andere Wege zwischen den Servern wechseln. Seit einiger Zeit gibt es im originalen Minecraft auch den Befehl &lt;code&gt;/transfer&lt;/code&gt;, mit dem Spieler zu einem anderen Server transferiert werden können.&lt;/p&gt;
&lt;p&gt;Ein Proxy ist sinnvoll, wenn man z.B. mehrere Minecraft-Server betreibt und zwischen diesen nahtlos wechseln können möchte oder auch dann, wenn man den eigentlichen Server zuhause betreibt, die Spieler aber über einen vServer beitreten sollen.&lt;/p&gt;
&lt;p&gt;Wenn nur ein einzelner Server hinter einem Proxy betrieben werden soll, kann auch einfach eine Software wie HAProxy eingesetzt werden; PaperMC unterstützt bspw. das Proxy-Protokoll, mit dem die originale Client-IP erhalten bleibt.&lt;/p&gt;
&lt;p&gt;Von den Entwicklern von SpigotMC gibt es hier Bungeecord, von den Entwicklern von PaperMC Velocity. Ich selbst nutze Velocity, da es die modernere Software ist und viele Plugins dafür existieren.&lt;/p&gt;
&lt;h4 id="geysermc"&gt;GeyserMC
&lt;/h4&gt;&lt;p&gt;Ein Spezialfall bei den Proxies ist Geyser. Das ist eine Software, die es Client mit der Bedrock Edition erlaubt, auf einem Server der Java-Edition zu spielen. Dazu werden fehlende Blöcke und Features möglichst nahe mit dem angehähert, was die Bedrock Edition bietet. Spieler verbinden sich mit Geyser, der dann wiederum die Verbindung zum eigentlichen Server aufbaut und übersetzt.
Geyser läuft entweder als Plugin/Mod direkt auf dem Server, als Plugin auf dem Proxy oder Standalone, ich selbst habe es als Plugin auf dem Proxy installiert.&lt;/p&gt;
&lt;h3 id="empfohlene-plugins"&gt;Empfohlene Plugins
&lt;/h3&gt;&lt;p&gt;Sofern der Server mit Plugins betrieben wird, habe ich hier einige Empfehlungen für Plugins, die ich fast immer installiere. Für Fabric gibt es diverse der genannten Plugins allerdings auch.&lt;/p&gt;
&lt;h4 id="chunky-plugin-und-mod"&gt;Chunky (Plugin und Mod)
&lt;/h4&gt;&lt;p&gt;Chunky gibt es für alle relevanten Modloader und Servertypen, also sowohl PaperMC als auch Fabric (und weitere). Das ist ein Tool, mit dem man Weltteile bzw. Chunks vorgenerieren kann. Vor dem Start eines neuen Servers generiere ich meistens mindestens 1000 Blöcke um den Spawn herum vor, da das Generieren von Chunks einer der rechenintensiveren Vorgänge auf einem Minecraft-Server ist. Vor allem am Anfang, wenn noch viele Spieler aktiv sind, merkt man einen Unterschied. Auch im Nether sollte man Weltteile vorgenerieren. Im End geht das auch, bringt aber aufgrund der Verteilung der End-Cities meiner Erfahrung nach nicht ganz so viel.&lt;/p&gt;
&lt;h4 id="worldedit-bzw-fastasyncworldedit"&gt;WorldEdit (bzw. FastAsyncWorldEdit)
&lt;/h4&gt;&lt;p&gt;Einer der Klassiker, das Plugin gibt es gefühlt schon immer. Wer es nicht kennt: Damit kann man schnell große Teile der Welt bearbeiten, Blöcke ersetzen, neu generieren usw.&lt;/p&gt;
&lt;p&gt;FastAsyncWorldEdit ist für Server die bessere Wahl, da die Änderungen an der Welt asynchron ausgeführt werden und damit der Server nicht einfriert.&lt;/p&gt;
&lt;h4 id="worldguard"&gt;WorldGuard
&lt;/h4&gt;&lt;p&gt;Auch ein Klassiker. Damit kann z.B. festgelegt werden, dass nur bestimmte Spieler/Gruppen in einem Bereich bauen dürfen, auch Mob-Spawning lässt sich damit für einzelne Bereiche deaktiveren.&lt;/p&gt;
&lt;h4 id="dynmap"&gt;Dynmap
&lt;/h4&gt;&lt;p&gt;Das ist auch ein eher altes Plugin, allerdings bis heute gut gepflegt. Es erlaubt das Generieren einer webbasierten Karte des Servers, und das in 2D und auch in 3D. Das Plugin benötigt (vor allem bei den höheren Detailstufen) viel Rechenpower zum Rendern und auch einiges an Speicher bei größeren Welten. Ein Webserver ist integriert, es lässt sich allerdings auch ein externer Webserver dafür nutzen. Ich habe &lt;code&gt;lowres&lt;/code&gt; als Qualitätslevel einstellt, das genügt mir. Wer etwas leichtgewichtigeres sucht, ist beim nächsten Plugin besser aufgehoben.&lt;/p&gt;
&lt;h4 id="squaremap"&gt;squaremap
&lt;/h4&gt;&lt;p&gt;squaremap bietet, ähnlich wie Dynmap, auch eine webbasierte Karte des Servers mit integriertem Webserver an, allerdings in geringerer Auflösung und ausschließlich in 2D. Dafür geht das Rendern sehr viel schneller und das Plugin ist generell auch leichtgewichtiger. Für einen kleinen privaten Server genügt squaremap vollkommen.&lt;/p&gt;
&lt;h4 id="bluemap"&gt;BlueMap
&lt;/h4&gt;&lt;p&gt;Das nächste Tool für eine webbasierte Karte. Bluemap hat die große Besonderheit, dass die Karte als 3D-Modelle gespeichert wird und sich die Welt im Browser daher frei erkunden lässt. Man kann beliebig zoomen, drehen usw, da die 3D-Modelle an den Browser übertragen werden und erst dort gerendet werden. BlueMap lässt sich zudem auch komplett unabhängig vom Server benutzen, so habe ich es auch im Einsatz. Ein kleines Script kopiert in regelmäßigen Abständen die Welt des Servers, führt BlueMap-CLI aus und stellt die generierten Daten über einen Webserver (Caddy, was auch sonst) bereit. Damit belastet es den Server selbst nicht, trotzdem finde ich es eine schöne Ergänzung zu Dynmap oder squaremap. Vor allem, um &amp;ldquo;mal eben&amp;rdquo; Freunden eigene Bauten auf dem Server auf dem Handy zeigen zu können, ist BlueMap wirklich super.&lt;/p&gt;
&lt;h4 id="plan"&gt;Plan
&lt;/h4&gt;&lt;p&gt;Plan ist ein Statistikplugin, das Einblicke in die Nutzung des Servers bietet. Man erfährt damit beispielsweise, wie die Auslastung des Servers aussieht, wann meistens gespielt wird und kann auch erkennen, ob neue Spieler erhalten bleiben oder eine hohe Fluktuation herrscht. Plan unterstützt auch diverse Plugins, um zusätzliche Daten anzuzeigen.&lt;/p&gt;
&lt;h4 id="viaversion-und-viabackwards"&gt;ViaVersion (und ViaBackwards)
&lt;/h4&gt;&lt;p&gt;Mit ViaVersion können Spieler mit neueren Minecraft-Versionen als der Server trotzdem beitreten. ViaBackwards hingegen erlaubt das Beitreten mit älteren Client-Versionen als der Server. Es gibt zusätzlich auch noch ViaRewind, damit können selbst Clients mit Version 1.7 und 1.8 noch beitreten - ob das sinnvoll ist, sei mal dahingestellt.&lt;/p&gt;
&lt;h4 id="luckperms"&gt;LuckPerms
&lt;/h4&gt;&lt;p&gt;LuckPerms ist so mit das bekannteste Plugin, um Permissions und Benutzergruppen zu verwalten. Mit MySQL oder einer anderen Datenbank als Backend lassen sich damit Berechtigungen auch über mehrere Server hinweg synchronisieren. Es gibt davon auch Versionen für Velocity, Fabric, Forge und weitere Server.&lt;/p&gt;
&lt;h4 id="discordsrv"&gt;DiscordSRV
&lt;/h4&gt;&lt;p&gt;DiscordSRV ist eine Verbindung zwischen Discord und einem Minecraft-Server. Damit lässt sich bspw. der Ingame-Chat mit einem Discord-Channel verbinden. Auch lassen sich Discord-Rollen mit Permissions-Gruppen koppeln.&lt;/p&gt;
&lt;h4 id="distant-horizons-server-plugin"&gt;Distant Horizons server plugin
&lt;/h4&gt;&lt;p&gt;Distant Horizons ist eine Client-Mod, die eine deutlich höhere Sichtweite erlaubt. Dafür werden Versionen der Karte mit niedrigeren &amp;ldquo;Auflösungen&amp;rdquo; (LODs) generiert und alles außerhalb der gerade normal geladenen Chunks damit aufgefüllt. Damit ist der Performance-Einfluss eher gering. Distant Horizons braucht an sich keinen serverseitigen Support, die Mod speichert einfach Weltteile vom Server zwischen und generiert die LODs lokal.&lt;/p&gt;
&lt;p&gt;Seit einiger Zeit gibt es ein Plugin für Server, womit die LOD-Dateien serverseitig generiert und vorgehalten werden können. Damit muss man nicht mehr jeden Weltteil besucht haben, um LODs dafür zu sehen. Es ist allerdings empfehlenswert, in der Config &lt;code&gt;generate_new_chunks: false&lt;/code&gt; zu setzen, da sonst für die LODs neue Chunks generiert werden, was deutlich Ressourcen kostet.&lt;/p&gt;
&lt;h3 id="weitere-plugins"&gt;Weitere Plugins
&lt;/h3&gt;&lt;h4 id="tabtps"&gt;TabTPS
&lt;/h4&gt;&lt;p&gt;Damit lässt sich die aktuelle Performance des Servers (TPS, MSPT und weitere) an verschiedenen Positionen (Tabliste, Bossbar, Actionbar) anzeigen. Ich nutze das Plugin gerne, um die Leistung beim Spielen laufend im Auge zu behalten.&lt;/p&gt;
&lt;h4 id="multiverse-core"&gt;Multiverse-Core
&lt;/h4&gt;&lt;p&gt;Damit lassen sich mehrere Welten anlegen und verwalten, Spieler können auch zwischen den Welten wechseln. Ich habe auf meinem Server beispielsweise eine Kreativwelt, wo Spieler Gebäude vorbauen oder mit Redstone experimentieren können.&lt;/p&gt;
&lt;p&gt;Mit weiteren Addons wie Multiverse-Inventories lassen sich die Features von Multiverse-Core noch erweitern.&lt;/p&gt;
&lt;h4 id="simplevoicechat"&gt;SimpleVoiceChat
&lt;/h4&gt;&lt;p&gt;Das ist ein Plugin, was Ingame Voicechat hinzufügt. Dieser ist auf die direkte Umgebung des Spielers begrenzt und ermöglicht ein realistischeres Spielerlebnis. Es wird allerdings auch Client-Seitig eine Mod benötigt.&lt;/p&gt;
&lt;h4 id="coreprotect"&gt;CoreProtect
&lt;/h4&gt;&lt;p&gt;Mit CoreProtect werden alle Aktionen auf dem Server geloggt und können damit auch rückgängig gemacht werden. Das ist vor allem für Survival-Server ohne ein System für &amp;ldquo;Grundstücke&amp;rdquo; praktisch und hat sich bei vergangenen Projekten bewährt.&lt;/p&gt;
&lt;h4 id="essentialsx"&gt;EssentialsX
&lt;/h4&gt;&lt;p&gt;Ein Plugin, was viele kleinere Features (z.B. Befehle für Home oder Teleport-Anfragen) bündelt. Den Vorgänger habe ich früher viel genutzt, heutzutage installiere ich die benötigten Features als einzelne Plugins.&lt;/p&gt;</description></item><item><title>Gastbeitrag: Einführung in Anaglyph 3D</title><link>https://secretmine.de/blog/2026/2016-01-18-hiradur-anaglyph-3d/</link><pubDate>Sun, 18 Jan 2026 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2026/2016-01-18-hiradur-anaglyph-3d/</guid><description>&lt;p&gt;&lt;em&gt;Ein Gastbeitrag von &lt;strong&gt;&lt;a class="link" href="https://github.com/Hiradur" target="_blank" rel="noopener"
&gt;Hiradur&lt;/a&gt;&lt;/strong&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In diesem Beitrag möchte ich über meine Erfahrungen und Erkenntnisse zu einem Thema berichten, welches bei mir regelmäßig Wellen der Faszination auslöst. Es geht um anaglyphisches 3D. Es fasziniert mich deswegen, weil man im Vergleich zu anderen 3D-Technologien mit sehr geringem finanziellen Aufwand brauchbare 3D-Erlebnisse erzielen kann. Eine passende Brille aus Pappe mit Filterfolien kostet unter einem Euro, eine qualitativ hochwertige Brille aus Plastik und Acrylglas kostet weniger als 10€. Benötigt wird ansonsten nur noch ein RGB-Farbdisplay oder ein Farbdrucker, denn Anaglyph funktioniert auch mit Gedrucktem.
Anaglyph ist zudem sehr portabel, eine Brille lässt sich einfach mitnehmen und Anzeigegeräte findet man überall, notfalls reicht auch ein Smartphone oder ein Ausdruck.&lt;/p&gt;
&lt;p&gt;Die Grundidee stammt bereits aus dem 19. Jahrhundert. Dass diese Technologie aber auch heute noch Relevanz hat, zeigt sich unter anderem daran, dass bis heute an der &lt;a class="link" href="https://onlinelibrary.wiley.com/doi/10.1155/2021/1285712" target="_blank" rel="noopener"
&gt;Optimierung des Verfahrens geforscht wird&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="wie-entsteht-der-3d-effekt-bei-anaglyph"&gt;Wie entsteht der 3D-Effekt bei Anaglyph?
&lt;/h2&gt;&lt;p&gt;Wie bei anderen Technologien &lt;a class="link" href="https://de.wikipedia.org/wiki/Stereoskopie" target="_blank" rel="noopener"
&gt;müssen linkes und rechtes Auge jeweils perspektivisch verschobene Bilder zu sehen bekommen&lt;/a&gt;. Bei Anaglyph wird dies durch Farbfilter erreicht. Bspw. wird das Bild für das linke Auge auf den roten Farbkanal reduziert, während das Bild für das rechte Auge nur noch die Farben Blau und Grün enthält. Diese beiden Teilbilder werden dann in einem einzigen Bild unter Beibehaltung der perspektivischen Verschiebung zusammengefügt. Daraus ergibt sich das charakteristische Erscheinungsbild von anaglyphen Bildern, wenn man diese ohne passende Brille betrachtet. Mit entsprechenden Filterfarben einer Brille (für dieses Beispiel Rot/Cyan) kann das linke Auge dann nur den roten Teil des Bildes sehen und das rechte den blau-grünen Teil, welche vom Gehirn zu einem Bild mit Tiefeneffekt zusammengesetzt werden.&lt;/p&gt;
&lt;h2 id="was-kann-man-von-anaglyph-erwarten"&gt;Was kann man von Anaglyph erwarten?
&lt;/h2&gt;&lt;p&gt;Meinem subjektivem Eindruck nach kann Anaglyph eine sehr gute Tiefenwirkung erzeugen. Nachteilig bei Anaglyph ist, dass die Farbdarstellung leidet und die Anstrengung höher als bei manch anderen Technologien ist.
Insbesondere die Filterkombinationen Rot/Cyan und Grün/Magenta schränken meiner Erfahrung nach den stabil möglichen Farbbereich stark ein.&lt;/p&gt;
&lt;p&gt;Die Kombination Bernstein/Blau (amber-blue) kann deutlich mehr Farben darstellen. Allerdings ist hier für eine optimale Wiedergabe eine Vorverarbeitung der Bilder notwendig. Der proprietäre ColorCode-3D Algorithmus bietet hier wirklich gute Ergebnisse. Leider gibt es kaum damit produzierte Inhalte.
Auch das &lt;a class="link" href="https://en.wikipedia.org/wiki/Anaglyph_3D#Inficolor_3D" target="_blank" rel="noopener"
&gt;Magenta/Grün-basierte TrioViz Verfahren&lt;/a&gt; kann deutlich mehr Farben darstellen. Dieses sieht auf den ersten Blick aus, als ob einfach nur die Seiten einer Grün/Magenta Brille vertauscht wurden. Tatsächlich nutzt es aber abgetönte Filterfarben in Kombination mit einer Bildvorverarbeitung, um eine besser Farbdarstellung zu ermöglichen.
Ich kann für diese beiden Verfahren bestätigen, dass sie die Farbwahrnehmung tatsächlich deutlich verbessern. Subjektiv empfinde ich beide auch vom Augenkomfort her angenehmer als Rot/Cyan. Nachteilig ist die geringe Anzahl an Inhalten und dass die Bildvorverarbeitungsalgorithmen teils proprietär sind.&lt;/p&gt;
&lt;p&gt;Es gibt zudem einen Vorschlag, die Filterfarben &lt;a class="link" href="https://www.divideconcept.net/papers/MCA-RL09.pdf" target="_blank" rel="noopener"
&gt;Magenta/Cyan&lt;/a&gt; in Kombination mit einer Bildvorverarbeitung für eine erweiterte Farbdarstellung zu nutzen. Mit diesem habe ich mangels passender Brille aber noch keine Erfahrungen machen können. Der Bildvorverarbeitungsalgorithmus wird im Dokument beschrieben, ist also kein Geheimnis.&lt;/p&gt;
&lt;h2 id="was-kann-man-mit-anaglyph-betrachten"&gt;Was kann man mit Anaglyph betrachten?
&lt;/h2&gt;&lt;p&gt;Es gibt zahlreiche Gemeinschaften, die anaglyphische Bilder und Videos veröffentlichen. Zudem veröffentlichen diverse Raumfahrtinstitutionen Bilder ihrer Missionen. Des Weiteren wurden einige Filme insbesondere auf DVD mit Anaglyph veröffentlicht. Außerdem gibt es Bücher mit Anaglyphen und &lt;a class="link" href="https://en.wikipedia.org/wiki/List_of_stereoscopic_video_games" target="_blank" rel="noopener"
&gt;einige&lt;/a&gt; &lt;a class="link" href="https://www.mobygames.com/group/1937/anaglyph-3-d-support-3-d-glasses/" target="_blank" rel="noopener"
&gt;Spiele&lt;/a&gt; mit nativem Anaglyph Modus.&lt;/p&gt;
&lt;p&gt;Meiner Meinung nach lebt Anaglyph bzw. 3D ganz allgemein von Bildern und Bewegtbildern, die Sachverhalte darstellen, die wirklich von der Darstellung mit Tiefeneffekt profitieren. Das können z.B. Vergleiche von Größenverhältnissen oder interessante natürliche und künstliche Strukturen sein.&lt;/p&gt;
&lt;h3 id="empfehlenswerte-inhalte"&gt;Empfehlenswerte Inhalte
&lt;/h3&gt;&lt;p&gt;Für den Einstieg empfehle ich folgende Inhalte, da sie von hoher Qualität sind und das Potenzial gut repräsentieren:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.esa.int/ESA_Multimedia/Search/%28offset%29/150/%28sortBy%29/published?result_type=images&amp;amp;SearchText=anaglyph" target="_blank" rel="noopener"
&gt;Bilder der ESA&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Diese Bilder sind sehr hochauflösend und tadellos verarbeitet. Sie sind meine Referenz bzgl. der Darstellungsqualität.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;den anaglyphischen Modus der Spiele &lt;a class="link" href="https://wiki.flightgear.org/Anaglyph_%283D%29" target="_blank" rel="noopener"
&gt;FlightGear&lt;/a&gt; und &lt;a class="link" href="https://www.luanti.org/de/" target="_blank" rel="noopener"
&gt;Luanti&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;hier sollte man sich unbedingt die Zeit nehmen, den eigenen Pupillenabstand zu messen bzw. messen zu lassen und die Werte entsprechend in den Spielen konfigurieren&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Anschließend kann man sich auf die Suche nach eigenen Interessengebieten begeben. So gibt es bspw. Bilder zu antiken Tempeln, Aufnahmen von Großstädten mit ihren Hochhäusern, Bilder aus der Vogelperspektive, Bilder von Bergen und Hügellandschaften, Comics, Mikroskopaufnahmen, makroskopische Aufnahmen von Pflanzen und Tieren, topografische Karten, Darstellungen von chemischen Molekülen und mathematischen Graphen usw.&lt;/p&gt;
&lt;p&gt;Auch lassen sich stereoskopische (nicht-anaglyphische) 3D Videos z.B. von YouTube mit &lt;code&gt;mpv&lt;/code&gt; als Anaglyph darstellen. Dies geht über folgenden Befehl:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mpv --hwdec&lt;span class="o"&gt;=&lt;/span&gt;no --vf&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;stereo3d=sbsl&amp;#34;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;lt;Link zum Video&amp;gt;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Auf ganz ähnliche Weise kann mpv auch einzelne stereoskopische Bilder als Anaglyph darstellen:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mpv --keep-open&lt;span class="o"&gt;=&lt;/span&gt;yes --hwdec&lt;span class="o"&gt;=&lt;/span&gt;no --vf&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;stereo3d=sbsl&amp;#34;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;lt;Link zum Bild&amp;gt;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Für weitere Optionen, insbesondere, für den Fall, dass ein Video oder Bild nicht im Side-By-Side-Left-View-First Format vorliegen sollte, siehe die &lt;a class="link" href="https://ffmpeg.org/ffmpeg-filters.html#stereo3d" target="_blank" rel="noopener"
&gt;FFMPEG Filterdokumentation&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="probleme-von-und-mit-anaglyph"&gt;Probleme von und mit Anaglyph
&lt;/h2&gt;&lt;p&gt;Anaglyph kann schnell zu einer unangenehmen Erfahrung führen und dann als unbrauchbar abgetan werden. Auch wenn Anaglyph vielleicht nie den Komfort und die Darstellungsqualität manch anderer 3D-Technologien erreichen wird, kann man dennoch gute Erfahrungen damit machen, wenn man einige Dinge beachtet. Aus diesem Grund erläutere ich zunächst die grundsätzlichen Probleme, die ich bisher beobachten konnte und mögliche Ursachen dafür.&lt;/p&gt;
&lt;p&gt;Folgende Probleme können auftreten:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Starke &lt;a class="link" href="https://de.wikipedia.org/wiki/Binokulare_Rivalit%C3%A4t" target="_blank" rel="noopener"
&gt;binokulare Rivalität&lt;/a&gt;, was zu Augenschmerzen und schneller Ermüdung der Augen führen kann. Binokulare Rivalität erkennt man üblicherweise an sog. Schimmerartefakten. Ein Objekt scheint nicht klar definiert zu sein und die Farbe zu schimmern, da die beiden Augen bedingt durch die Farbfilter unterschiedliche Farbinformationen erhalten.&lt;/li&gt;
&lt;li&gt;mangelnde Farbdarstellung: Leider ein der Technologie inhärentes Problem. Der Einsatz von Farbfiltern bedingt, dass Farben in Richtung der Komplementärfarbe eines Filters zu einem Auge nicht durchgelassen werden. Jede Filterkombination hat unterschiedliche Stärken und Schwächen bei der Farbwiedergabe, wobei Bernstein/Blau (amber/blue) und TrioViz diesbezüglich am vielversprechendsten zu sein scheinen.&lt;/li&gt;
&lt;li&gt;Geisterbilder: Diese entstehen dadurch, dass z.B. vom für das linke Auge gedachte Bild Inhalte in das rechte Auge gelangen.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ursachen-für-eine-problematische-darstellung"&gt;Ursachen für eine problematische Darstellung
&lt;/h3&gt;&lt;p&gt;Im Folgenden eine Auflistung der Ursachen für Probleme, die mir bei Anaglyph 3D bisher begegnet sind.&lt;/p&gt;
&lt;h4 id="probleme-auf-seiten-der-inhalte"&gt;Probleme auf Seiten der Inhalte
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;Bilder und Videos aus dem Internet sind teilweise zu stark komprimiert, sodass sich Kompressionsartefakte negativ auswirken&lt;/li&gt;
&lt;li&gt;Bilder und Videos aus dem Internet sind teilweise suboptimal produziert:
&lt;ul&gt;
&lt;li&gt;Die Stereobasis ist nicht gut gewählt (z.B. extremer Pop-Out Effekt)&lt;/li&gt;
&lt;li&gt;Die Konvergenz ist nicht gut gewählt&lt;/li&gt;
&lt;li&gt;Die beiden Teilbilder haben einen Höhenversatz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Die Bilder sind &lt;em&gt;pures&lt;/em&gt; Anaglyph ohne Farbfilter, wie z.B. dem &lt;a class="link" href="https://www.site.uottawa.ca/~edubois/icassp01/anaglyphdubois.pdf" target="_blank" rel="noopener"
&gt;Dubois&lt;/a&gt; oder &lt;a class="link" href="https://cybereality.com/rendepth-red-cyan-anaglyph-filter-optimized-for-stereoscopic-3d-on-lcd-monitors/" target="_blank" rel="noopener"
&gt;Rendepth&lt;/a&gt; Filter. Die Farbfilter reduzieren den Kontrastunterschied zwischen linkem und rechtem Auge, um sog. Schimmer-Artefakte und damit die binokulare Rivalität zu vermeiden bzw. zu senken. &lt;a class="link" href="https://www.david-romeuf.fr/3D/Anaglyphes/TCAnaglypheLSDubois/TransformationCouleursPourAnaglyphe.html" target="_blank" rel="noopener"
&gt;Dies verzerrt die Farben etwas&lt;/a&gt;, ist aber meiner Meinung nach das &lt;a class="link" href="https://swell3d.com/color-anaglyph-methods-compare.html" target="_blank" rel="noopener"
&gt;geringere Übel&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Die Filterfarbenangabe für das Anaglyph stimmt nicht: Oft werden Bilder als z.B. für Rot/Blau oder Grün/Rot erstellt bezeichnet. Die Kombinationen Rot/Blau und Grün/Rot gibt es tatsächlich, allerdings können diese nur monochrome Bilder darstellen. Diverse Bilder sind aber tatsächlich für Rot/Cyan oder Grün/Magenta produziert worden. Es kommt gelegentlich zu Verwechslungen zwischen den Bezeichnungen, was dazu führen könnte, dass man nicht die passende Brille nutzt.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Meine Empfehlung: Normalerweise merkt man sofort, wenn mit einem Bild bzw. Bewegtbild etwas nicht stimmt. Sollte das der Fall sein, empfehle ich, den Inhalt maximal nur kurz zu betrachten. Ansonsten ermüden die Augen sehr schnell.&lt;/p&gt;
&lt;h4 id="probleme-auf-seiten-der-wiedergabekette"&gt;Probleme auf Seiten der Wiedergabekette
&lt;/h4&gt;&lt;p&gt;Auf Seiten der Wiedergabekette kann man selbst einige Optimierungen vornehmen, die sich aus den folgenden Problemschilderungen ergeben können.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Die Brille ist von mangelhafter Qualität&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://cmst.curtin.edu.au/wp-content/uploads/sites/4/2016/05/2010-11.pdf" target="_blank" rel="noopener"
&gt;Brille und Emissionsspektrum des Monitors passen nicht zusammen&lt;/a&gt;. Jede Bildschirmtechnologie erzeugt unterschiedliche Emissionsspektra. &lt;a class="link" href="https://www.david-romeuf.fr/3D/Anaglyphes/BonCoupleEL/GoodCoupleMonitorGlassesAnaglyph.html" target="_blank" rel="noopener"
&gt;Leider kann man mehr oder weniger nur durch ausprobieren herausfinden, welche Brille gut zu welchem Monitor passt&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Das Anzeigegerät wird nicht im optimalen Bildmodus betrieben. Mein Fernseher hat z.B. einen größeren Farbraum als sRGB. Aktiviere ich im Fernseher die Reduzierung auf den sRGB-Farbraum, so habe ich sichtbare Geisterbilder. Belasse ich ihn im nativen Farbraum, habe ich keine Geisterbilder. Meine Vermutung ist, dass die Farbraumreduktion die Emissionsspektra der Primärfarben verändert und die Brille-Fernseher Kombination darunter leidet.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="die-wahl-der-brille"&gt;Die Wahl der Brille
&lt;/h2&gt;&lt;p&gt;Für den Beginn würde ich empfehlen, eine hochwertige &lt;em&gt;Rot/Cyan&lt;/em&gt; Brille aus Plastik und Acrylglas zu kaufen. Für Rot/Cyan scheint es die meisten Inhalte zu geben. Es ist darauf zu achten, dass man eine Brille kauft, die wirklich einen &lt;em&gt;Cyan&lt;/em&gt; und keinen &lt;em&gt;Blau&lt;/em&gt; Filter enthält, da es auch solche Brillen gibt.
Für Brillenträger empfiehlt sich stattdessen vielleicht die Investition in einen Rot/Cyan Aufsatz für Brillen. Ich sage vielleicht, da ich damit keinerlei Erfahrung habe.&lt;/p&gt;
&lt;p&gt;Wie oben geschildert, sollten Filter der Brille und Anzeigegerät zusammenpassen, was man aber beim Kauf vorher nur schwer beurteilen kann. Darüber hinaus spielen aber auch andere Qualitätsfaktoren eine Rolle, bspw. wie viel Licht die Filter durchlassen, ob die Gläser einen Dioptrinausgleich für die unterschiedlichen Wellenlängen der Filterfarben enthalten, wie die Filter von der Durchlässigkeit her zueinander ausbalanciert sind usw. Leider werden quasi keine technischen Spezifikationen zu den Brillen veröffentlicht, sodass man nie so genau weiß, was man eigentlich kauft. Es scheint momentan also ein Glücksspiel zu sein, ob man eine gute und passende Brille erhält.
Ich habe selbst zwei unterschiedliche Acrylglasbrillen und kann bestätigen, dass es definitiv qualitative Unterschiede zwischen diesen gibt. Diese Brillen sind aber auch mittlerweile nicht mehr erhältlich, jedenfalls nicht mehr dort, woher ich sie bezog.&lt;/p&gt;
&lt;p&gt;Ich empfehle außerdem, eine ColorCode-3D Brille aus Pappe gleich mit zu kaufen, sofern erhältlich. Diese kostet i.d.R. weniger als einen Euro. Auch wenn es derzeit nur eine vergleichsweise geringe Anzahl an Inhalten dafür gibt, kann sie dennoch zeigen, welches Potenzial in der Anaglyph Technologie steckt.
Alternativ könnte man sich auch eine original TrioViz Acryglasbrille aus den USA bestellen, da diese dort aktuell sehr günstig erhältlich sind (die Versandkosten sind höher als der Preis der Brille). Allerdings gibt es hierfür scheinbar am wenigstens Inhalte mit offizieller Unterstützung, sodass sich die Investition wahrscheinlich nur lohnen würde, wenn man bereits &lt;a class="link" href="https://en.wikipedia.org/wiki/TriOviz_for_Games" target="_blank" rel="noopener"
&gt;entsprechende Videospiele&lt;/a&gt; vorrätig haben sollte.&lt;/p&gt;
&lt;h2 id="fazit"&gt;Fazit
&lt;/h2&gt;&lt;p&gt;Anaglyph 3D ist auch noch über 150 Jahre nach der erstmaligen Entdeckung als 3D Technologie relevant und interessant. Anaglyph 3D ist nicht perfekt, aber es eignet sich insbesondere für alle, die ein bisschen mit 3D experimentieren wollen oder auch 3D Inhalte kostengünstig einer größeren Zuschauermenge zeigen wollen.
Interessant sein kann es auch für diejenigen, die gerne ihren Horizont erweitern.
Die Tiefenwirkung kann durchaus einen Mehrwert bieten und im wahrsten Sinne des Wortes neue Perspektiven eröffnen oder die Immersion steigern.&lt;/p&gt;</description></item><item><title>Mein neuer Schreibtisch - FlexiSpot E5 Lite plus IKEA SKÅLSTA</title><link>https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/</link><pubDate>Fri, 09 Jan 2026 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/</guid><description>&lt;p&gt;Heute gibts mal was anderes.&lt;/p&gt;
&lt;h2 id="intro"&gt;Intro
&lt;/h2&gt;&lt;p&gt;Ich achte zunehmend darauf, meinen Arbeitsplatz möglichst ergonomisch zu gestalten. Ich verbringe hier abseits vom HomeOffice auch privat sehr viel Zeit, mein Schreibtisch bzw. generell das Arbeitszimmer zuhause ist nach dem Bett wahrscheinlich der Platz, wo ich mit Abstand am meisten Zeit verbringe. Der Schreibtisch ist jetzt auch nur ein Teil von mehreren Dingen, die ich für die Ergonomie tue.&lt;/p&gt;
&lt;h2 id="meine-wahl"&gt;Meine Wahl
&lt;/h2&gt;&lt;p&gt;Ich habe seit Jahren einen ganz einfachen Schreibtisch. Tischplatte, zwei Seitenplatten, eine Querstrebe, fertig. Ich arbeite allerdings seit mehreren Jahren bei einem IT-Dienstleister, der HomeOffice (ja, ich weiß, heißt eigentlich &lt;em&gt;Mobiles Arbeiten&lt;/em&gt;) befürwortet. Einen neuen Schreibtisch hatte ich schon länger vorgesehen, vor allem weil bei der Arbeit alle Schreibtische höhenverstellbar sind und mir das sehr gut gefällt. Gestell und Platte wollte ich dabei getrennt halten, um die Kosten möglichst weit zu senken.&lt;/p&gt;
&lt;h3 id="gestell"&gt;Gestell
&lt;/h3&gt;&lt;p&gt;Beim Gestell habe ich während der Black Week auf passende Angebote gewartet (eins, wo mir der Hersteller halbwegs bekannt ist) und bin dann bei FlexiSpot fündig geworden. Es ist das E5 Lite in Weiß geworden, ein eher einfaches, höhenverstellbares Gestell mit zwei Motoren, genügend Power und ohne viel Schnickschnack. Die Lieferung erfolgte dann Anfang Dezember, das war aber auch auf der Website von FlexiSpot so angekündigt.&lt;/p&gt;
&lt;p&gt;Fehlte also noch eine passende Platte.&lt;/p&gt;
&lt;h3 id="tischplatte"&gt;Tischplatte
&lt;/h3&gt;&lt;p&gt;Die Platten von FlexiSpot selbst waren mir zu teuer. Und weil meine Freundin und ich eh zu IKEA wollten, habe ich mich dort umgesehen. Ich hatte zwei verschiedene Modelle im Auge, geworden ist es am Ende dann die SKÅLSTA Esstischplatte in 140x80 cm. Ja, richtig gelesen. Aber welchen Unterschied macht es am Ende, wofür eine Tischplatte gedacht ist?
Ich muss dazu auch klar sagen, dass die Platte von IKEA natürlich nicht für das Gestell vorgesehen ist, das ist mehr oder weniger &amp;ldquo;Off-Label-Use&amp;rdquo;. Bei IKEA (und auch anderen Möbelherstellern) muss man allerdings aufpassen, wie das Innere der Platte aussieht. Dieses konkrete Modell hat innen nur eine Wabenstruktur, die wohl mit einzelnen Holzleisten verstärkt ist, laut Reddit lässt sich SKÅLSTA allerdings trotzdem mit einem anderen Gestell sinnvoll nutzen und bleibt dabei stabil und fest.&lt;/p&gt;
&lt;p&gt;Die große Tischplatte in einem Twingo unterzubringen war zwar etwas lustig, wir hatten aber vorher nachgemessen und sichergestellt, dass das alles passt.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/auto.jpg"
width="2040"
height="1530"
srcset="https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/auto_hu_5d29822bf77d801e.jpg 480w, https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/auto_hu_a1afa36f8187b4db.jpg 1024w"
loading="lazy"
alt="Unterschätze nie das Fassungsvermögen eines Twingos"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="320px"
&gt;&lt;/p&gt;
&lt;h2 id="zusammenbau"&gt;Zusammenbau
&lt;/h2&gt;&lt;p&gt;Nun lagen also zwei große bzw. schwere Kartons im Wohnzimmer. Fehlte nur noch Zeit zum Zusammenbau.&lt;/p&gt;
&lt;p&gt;Zwischen den Jahren hat man ja so viel Zeit (&lt;em&gt;ha ha&lt;/em&gt;), um sich auch um sowas zu kümmern.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/flexispot_inhalt_1.jpg"
width="2000"
height="1371"
srcset="https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/flexispot_inhalt_1_hu_f86eaef336582cc7.jpg 480w, https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/flexispot_inhalt_1_hu_7824d137a07d8d10.jpg 1024w"
loading="lazy"
alt="FlexiSpot E5 Lite Paketinhalt 1"
class="gallery-image"
data-flex-grow="145"
data-flex-basis="350px"
&gt; &lt;img src="https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/flexispot_inhalt_2.jpg"
width="2000"
height="1500"
srcset="https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/flexispot_inhalt_2_hu_1fc385eed3f3e758.jpg 480w, https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/flexispot_inhalt_2_hu_bfa5d131d6e6d2b2.jpg 1024w"
loading="lazy"
alt="FlexiSpot E5 Lite Paketinhalt 2"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="320px"
&gt;&lt;/p&gt;
&lt;p&gt;Für den Zusammenbau ist die Anleitung tatsächlich brauchbar, das hatte ich bei Non-IKEA-Dingen auch schon anders.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/flexispot_querstrebe.jpg"
width="2000"
height="1070"
srcset="https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/flexispot_querstrebe_hu_3bda63e675d4121d.jpg 480w, https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/flexispot_querstrebe_hu_2e7d074b71f4d1a4.jpg 1024w"
loading="lazy"
alt="Querstreben"
class="gallery-image"
data-flex-grow="186"
data-flex-basis="448px"
&gt; &lt;img src="https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/flexispot_mit_beinen.jpg"
width="2000"
height="983"
srcset="https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/flexispot_mit_beinen_hu_598eabdaacf63209.jpg 480w, https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/flexispot_mit_beinen_hu_16c8c12f4a3dd8d6.jpg 1024w"
loading="lazy"
alt="Beine montiert"
class="gallery-image"
data-flex-grow="203"
data-flex-basis="488px"
&gt; &lt;img src="https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/flexispot_mit_fuessen.jpg"
width="2000"
height="1174"
srcset="https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/flexispot_mit_fuessen_hu_1652cf932928cbd4.jpg 480w, https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/flexispot_mit_fuessen_hu_5ac66b8602f63981.jpg 1024w"
loading="lazy"
alt="Füße montiert"
class="gallery-image"
data-flex-grow="170"
data-flex-basis="408px"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/flexispot_fertig.jpg"
width="2000"
height="1500"
srcset="https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/flexispot_fertig_hu_ecb57a271ac3ea1.jpg 480w, https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/flexispot_fertig_hu_faf48c429efa03c2.jpg 1024w"
loading="lazy"
alt="Das fertige Gestell"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="320px"
&gt; &lt;img src="https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/schreibtisch_montiert.jpg"
width="2000"
height="1500"
srcset="https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/schreibtisch_montiert_hu_26435690326748a5.jpg 480w, https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/schreibtisch_montiert_hu_a1f761d57c9979b8.jpg 1024w"
loading="lazy"
alt="Montage der Platte auf dem Gestell"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="320px"
&gt;&lt;/p&gt;
&lt;p&gt;Das Werkzeug, was FlexiSpot mitliefert, ist von geringer Qualität. Der Schraubenschlüssel bzw. Schraubendreher ist während des Aufbaus kaputt gegangen. Wie üblich sind das aber alles Standardschrauben, von daher nicht so wild.&lt;/p&gt;
&lt;!-- ![Defektes Werkzeug](images/werkzeug_kaputt.jpg) ---&gt;
&lt;h2 id="aufbau-im-arbeitszimmer"&gt;Aufbau im Arbeitszimmer
&lt;/h2&gt;&lt;p&gt;Nach der Montage vom Schreibtisch fehlte natürlich noch der Aufbau im Arbeitszimmer. Da mein Arbeitsplatz unter einer Dachschräge ist, musste ich hier etwas kreativ werden und einiges umstellen. Die Monitore sind auf dem Schreibtisch weiter nach links gewandert, das Kallax-Regal neben dem Schreibtisch musste weichen. Das Regal, wo das Homelab drin ist, ist jetzt seitlich an der Wand. Der alte Schreibtisch war 20cm breiter und durch das Verschieben der Möbel ist trotzdem noch genügend Platz vorhanden, um an alles heranzukommen. Für die Kabel habe ich eine zweite Kabelaufhängung bei IKEA gekauft, eine hatte ich schon am bisherigen Schreibtisch. Auch Kabelschläuche sind neu, das muss ja durch die Höhenverstellbarkeit alles etwas flexibler sein jetzt. Kabel musste ich dadurch natürlich auch noch einige nachkaufen, das war am Ende aber eher überschaubar.&lt;/p&gt;
&lt;p&gt;Alle Geräte neu zu verkabeln bzw. generell den Schreibtisch zu tauschen hat um die 4 Stunden gedauert. Man unterschätzt schnell, wie viele Kabel man eigentlich so verbaut hat.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/vorher.jpg"
width="2500"
height="1875"
srcset="https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/vorher_hu_f6ca64dc4164701a.jpg 480w, https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/vorher_hu_8d66999e86504783.jpg 1024w"
loading="lazy"
alt="Schreibtisch vorher"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="320px"
&gt; &lt;img src="https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/fertig.jpg"
width="2500"
height="1875"
srcset="https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/fertig_hu_69041408923ca19.jpg 480w, https://secretmine.de/blog/2026/2026-01-09-neuer-schreibtisch/images/fertig_hu_471ae16b6445777.jpg 1024w"
loading="lazy"
alt="Schreibtisch nachher"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="320px"
&gt;&lt;/p&gt;
&lt;h2 id="was-mir-aufgefallen-ist-bzw-was-mir-fehlt"&gt;Was mir aufgefallen ist bzw. was mir fehlt
&lt;/h2&gt;&lt;p&gt;Bisher eigentlich nichts. Der Schreibtisch ist natürlich minimal wackeliger als der vorherige, das kenne ich aber von der Arbeit nicht anders. Bei der Platte merkt man, dass die recht hohl ist, trotzdem ist die mehr als stabil genug. Die Geschwindigkeit, in der der Schreibtisch sich bewegt, könnte auch etwas höher sein. Nett wäre auch ein USB-Port am Bedienpanel, um bspw. ein Handy damit zu laden. Das Feature gibt es bei höherpreisigen Gestellen auch. Und ich habe vor, ein USB-C-Ladegerät (was auch für Laptops geeignet ist) fix am Schreibtisch zu montieren, um sowohl Laptops als auch Handys und andere Geräte laden zu können.&lt;/p&gt;
&lt;h2 id="fazit"&gt;Fazit
&lt;/h2&gt;&lt;p&gt;Ich bin mit dem neuen Setup ziemlich glücklich. Arbeiten im Stehen ist eine sinnvolle Abwechslung und gut für die Gesundheit. Mit den Dachschrägen war das hier alles nicht so ganz einfach, machbar war es aber dennoch. Ich habe hier auch Platz für Änderungen/Erweiterungen des Homelabs gewonnen, dazu folgt dann irgendwann auch noch ein Post.&lt;/p&gt;
&lt;p&gt;Ich frage mich hauptsächlich, warum ich das jetzt erst gemacht habe.&lt;/p&gt;</description></item><item><title>Docker Swarm nach zwei Monaten</title><link>https://secretmine.de/blog/2026/2026-01-03-docker-swarm-nach-einem-monat/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2026/2026-01-03-docker-swarm-nach-einem-monat/</guid><description>&lt;p&gt;Auch, wenn der &lt;a class="link" href="https://secretmine.de/blog/2025/2025-12-17-containerorchestrierung-im-homelab/" &gt;Blog-Post zu Docker Swarm&lt;/a&gt; noch keinen Monat her ist, ist Swarm jetzt seit November bei mir im Einsatz. Ich möchte hier einmal ein Zwischenfazit geben.&lt;/p&gt;
&lt;h2 id="wie-das-setup-aussieht"&gt;Wie das Setup aussieht
&lt;/h2&gt;&lt;p&gt;Ich habe pro physischem Host eine Swarm-VM, die drei VMs sind auch alle als mögliche Master-Nodes konfiguriert. Damit findet die Auswahl eines neuen Masters statt, sobald der bisherige Master nicht mehr erreichbar sein sollte. Storage ist über NFS abgebildet, das basiert auf zwei VMs (plus eine Witness-Node) mit Pacemaker, Corosync und DRBD. Das läuft soweit auch stabil, auch wenn die Performance etwas besser sein könnte. Vor allem bei Random Access merkt man doch deutlich den Unterschied zu lokalem Storage. Fairerweise muss ich dazu aber auch sagen, dass das wahrscheinlich primär an der verwendeten Hardware liegt, die Kombination aus Thin Client und günstiger SSD ist da sicherlich nicht hilfreich. Ich muss leider auch die Verzeichnisse auf dem NFS-Server händisch anlegen, damit ich diese in Volumes referenzieren kann. Das geht besser, bin ich von Kubernetes mit dem NFS-Provisioner auch anders gewohnt. Alternative Storage-Lösungen wie Ceph oder ähnliche sind mir fürs Homelab allerdings auch zu komplex. Mit dem Punkt kann ich aber generell gut leben.&lt;/p&gt;
&lt;p&gt;Zum Management nutze ich Portainer CE. Das ist eins der wenigen Tools, die auch mit Swarm umgehen können, wobei wohl bei Komodo in einer zukünftigen Version Swarm auch unterstützt werden soll. Zwecks Monitoring läuft auf den Nodes jeweils der Node-Exporter und ein Docker-Exporter. Der Docker-Exporter kann zwar nicht nativ mit Swarm umgehen, erfasst aber trotzdem dann pro Node die laufenden Container inkl. der benötigten Ressourcen. Das reicht mir.&lt;/p&gt;
&lt;h2 id="was-mir-im-betrieb-aufgefallen-ist"&gt;Was mir im Betrieb aufgefallen ist
&lt;/h2&gt;&lt;p&gt;Der Scheduler ist sehr grundlegend. Nach dem, was ich im Internet finden konnte, wird aus den Nodes, die die Constraints und die Ressourcen-Requirements erfüllen, die Node mit den wenigsten Containern ausgewählt und der Task dort gestartet. Wirklich gut steuern lässt sich das auch nicht, es gibt nur harte Constraints und keine weichen. Das kann Kubernetes sehr viel besser. By Design werden Service auch nach dem Joinen einer neuen Node (oder eine bestehende Node war z.B. wegen Wartungsarbeiten offline) nicht neu verteilt, das machen andere Lösungen wie Kubernetes aber auch nicht anders. Um das auszugleichen bin ich aktuell dabei, einen Rebalancer zu entwickeln, der diesen Zustand erkennt und gezielt Services neu startet, um ein Rescheduling zu erzwingen. Das ist aber noch nicht fertig.&lt;/p&gt;
&lt;h2 id="wie-es-weitergeht"&gt;Wie es weitergeht
&lt;/h2&gt;&lt;p&gt;Ich bin weiterhin dabei, Services zum Swarm-Cluster zu migrieren, insgesamt bin ich mit der Lösung soweit glücklich. Storage wird von der Performance her irgendwann wahrscheinlich zum Flaschenhals, aber darum mache ich mir dann Gedanken, wenn es soweit ist.&lt;/p&gt;
&lt;p&gt;Ich trauere tatsächlich noch ein wenig Kubernetes hinterher, vor allem weil ich es beruflich gewohnt bin. Für Zuhause ist es allerdings meiner Meinung nach komplett overkill.&lt;/p&gt;</description></item><item><title>Jahresrückblick 2025</title><link>https://secretmine.de/blog/2025/2025-12-31-jahresrueckblick/</link><pubDate>Wed, 31 Dec 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-12-31-jahresrueckblick/</guid><description>&lt;p&gt;Einen Jahresrückblick gabs bisher nicht, aber nach der Fülle an Beiträgen dieses Jahr fand ich es sinnvoll.&lt;/p&gt;
&lt;h2 id="homelab-und-hardware"&gt;Homelab und Hardware
&lt;/h2&gt;&lt;p&gt;Hauptsächlich habe ich einige Server mit mehr Hardware ausgestattet, vor allem mehr RAM und mehr Speicherplatz. Das größte, was ich geändert habe, war der Umzug der Hardware in ein selbstgebautes 10-Zoll-Rack. Das hat sich auch wirklich gelohnt, das Setup sieht sehr viel ordentlicher aus jetzt.&lt;/p&gt;
&lt;p&gt;Außerhalb der eigentlichen Lab-Hardware ist auch ein Kassenbondrucker dazugekommen. Diese Lösung zur Selbstorganisation funktioniert tatsächlich bis heute recht gut und ist die erste Variante, die sich länger als 4 Tage gehalten hat. Ich habe auch noch Pläne, um PlankaPrinter zu erweitern - davor muss allerdings die Library &lt;code&gt;plankapy&lt;/code&gt; zu Planka 2.0 passen. Vielleicht mache ich da auch einiges selbst und erstelle einen MR.&lt;/p&gt;
&lt;h2 id="software-und-services"&gt;Software und Services
&lt;/h2&gt;&lt;p&gt;Da hat sich deutlich mehr getan. Lokale SSL-Zertifikate, Umstellung von meinem DNS-Setup auf Blocky (läuft übrigens super!) und jetzt zum Jahresende noch die Migration zu Docker Swarm mit redundantem Storage. Da wirds auch noch weitergehen, das Setup ist so noch nicht fertig. Hinter den Kulissen löse ich nach und nach meine alte CI/CD-Lösung ab. Jenkins habe ich nun viele Jahre benutzt, für meine Zwecke genügen die Gitea Actions allerdings vollkommen. Seit ein paar Wochen wird beispielsweise dieser Blog auch via Gitea Actions deployed und nicht mehr per Jenkins.&lt;/p&gt;
&lt;p&gt;Ein zentrales Thema in 2025 waren auch definitiv Backups. Und zwar in allen Hinsichten - sowohl vom NAS als auch von allem anderen (Proxmox, Nextcloud, &amp;hellip;). Das habe ich hier auch schön runtergeschrieben.&lt;/p&gt;
&lt;h2 id="ausblick"&gt;Ausblick
&lt;/h2&gt;&lt;p&gt;Dieses Jahr war mit 31 Posts das bisher umfangreichste. Die Jahre vorher waren mit 11 bzw. 12 Beiträgen deutlich darunter. Ob ich das nächstes Jahr so beibehalte weiß ich nicht, die Motivation hier zu schreiben ist allerdings so hoch wie noch nie. Ich habe tatsächlich zwischenzeitlich auch Rückmeldungen von einigen Lesern bekommen, der eine oder andere Post basiert auf einer entsprechenden Anregung.&lt;/p&gt;
&lt;p&gt;Ich habe jetzt schon mehrere Posts für das nächste Jahr fertig, die werden in den kommenden Wochen dann nach und nach veröffentlicht. Erstmal wird es um Software, vor allem Themen zum Docker Swarm und drum herum geben, mein Monitoring, Logging und Alerting kann auch mal einen frischen Anstrich vertragen.&lt;/p&gt;
&lt;p&gt;Von der Hardware her werden ich vielleicht einen der Futros durch was stärkeres ersetzen. Ich betreibe einfach viel zu viel zuhause&amp;hellip; Eine Art Notfall-Cloud, die im Rechenzentrum läuft, wäre auch mal eine Idee. Mal schauen. Leider sind die Preise für RAM und auch SSDs ins unermessliche gestiegen, ich war leider auch zu langsam, mir noch einen Vorrat anzulegen. Von daher muss ich da primär das nutzen, was ich eh habe.&lt;/p&gt;
&lt;p&gt;Ich nehme generell auch gerne Themenwünsche entgegen, dafür kannst du dich gerne unter &lt;code&gt;blog [ät] secretmine [punkt] de&lt;/code&gt; melden (die Mailadresse so zu schreiben ist tatsächlich halbwegs effektiv gegen Spam und im Gegensatz zu Bildern sogar barrierearm).&lt;/p&gt;
&lt;p&gt;Bleibt eigentlich nur noch, einen guten Rutsch (bzw. ein frohes neues Jahr, je nach Lesezeitpunkt) zu wünschen!&lt;/p&gt;</description></item><item><title>Netzwerk-Fail - Fehlersuche mit Erfolg</title><link>https://secretmine.de/blog/2025/2025-12-27-netzwerk-fail/</link><pubDate>Sat, 27 Dec 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-12-27-netzwerk-fail/</guid><description>&lt;p&gt;Ich hatte seit mehreren Monaten das Problem, dass die Verbindung zum zweiten Lab im Keller auf ~10 MBit/s begrenzt war. Früher waren hier eher 30-40 MBit/s möglich, aber schon länger nur diese 10 MBit/s. Grob draufgeschaut hatte ich da vor einer Weile schon mal, hatte jetzt über Weihnachten aber die Zeit, um mir das genauer anzusehen. Wie die Verbindung aussieht:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[Router Wohnung]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ LAN-Kabel [1]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [Switch]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ LAN-Kabel [2]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [Powerline-Adapter]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ══ Powerline-Verbindung [3] ══
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [Powerline-Adapter]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ LAN-Kabel [4]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [Router Keller]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;[1] brauchte ich nicht zu prüfen, da über die Verbindung genug anderer Traffic läuft und es da keine Probleme gibt.&lt;/li&gt;
&lt;li&gt;[2] hatte ich zumindest im Switch gepüft, dass der Link mit Gigabit verbunden ist&lt;/li&gt;
&lt;li&gt;[3] und [4] hatte ich bisher nicht geprüft&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;An der Stelle habe ich also angesetzt. Das Powerline-Tool von TP-Link hat den Link mit einer Datenrate angezeigt, die hinkam. Da lag also kein Fehler.&lt;/p&gt;
&lt;p&gt;Durch Zufall habe ich aber auf die LAN-Anschlüsse vom Adapter im Keller geschaut. Und dort gesehen, dass der Link zum Router im Keller nur mit 10 MBit/s zustande gekommen ist.&lt;/p&gt;
&lt;p&gt;Kabel getauscht, zack, wieder die normalen 30-40 MBit/s. Und mit der geringeren Bandbreite habe ich jetzt über Monate gelebt, weil ich davon ausgegangen bin, dass irgendwas die Powerline-Verbindung stört.&lt;/p&gt;
&lt;p&gt;Man sollte genau hinsehen&amp;hellip;&lt;/p&gt;</description></item><item><title>Mein Backupkonzept - 2025 Edition</title><link>https://secretmine.de/blog/2025/2025-12-24-mein-backupkonzept-2025-edition/</link><pubDate>Wed, 24 Dec 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-12-24-mein-backupkonzept-2025-edition/</guid><description>&lt;p&gt;Ein kleines Weihnachtsgeschenk? Naja. Wie dem auch sei.&lt;/p&gt;
&lt;p&gt;Ich habe in den letzten Monaten immer wieder an meinem Backupkonzept gefeilt, bis es in der jetzigen Form stabil und weitestgehend automatisiert läuft. Das Ganze ist ein Mix aus Proxmox-Backups und Datei-Backups mit Restic - mit Fokus auf Verschlüsselung und Praktikabilität.&lt;/p&gt;
&lt;h2 id="proxmox-cluster-zuhause"&gt;Proxmox-Cluster zuhause
&lt;/h2&gt;&lt;p&gt;Mein Haupt-Homelab läuft als Proxmox-Cluster. Alle VMs und LXC-Container werden täglich mit dem &lt;a class="link" href="https://secretmine.de/blog/2025/2025-03-30-proxmox-backup-server-fuer-den-hauptcluster/" &gt;Proxmox Backup Server&lt;/a&gt; gesichert. Das Ziel ist eine billige große SSD im Cluster. Für kritische Systeme (Nextcloud, DNS, Reverse Proxy etc.) gibt es zusätzlich ein &lt;a class="link" href="https://secretmine.de/blog/2025/2025-09-25-proxmox-backup-server-via-s3-in-richtig/" &gt;Offsite-Backup&lt;/a&gt; über S3 zu Backblaze B2. Der Part läuft verschlüsselt, da ich keinem Anbieter 100%ig vertraue. Wichtig war mir, dass der Backup-Server dedupliziert und komprimiert, um die Kosten für den S3-Storage möglichst gering zu halten. Da Proxmox Backup Server das inzwischen nativ kann, war der Aufwand überschaubar.&lt;/p&gt;
&lt;p&gt;Neben dem automatischen täglichen Backup gibt es außerdem einen manuellen Sync auf eine externe Festplatte, die normalerweise im Keller lagert. Diese ist als &amp;ldquo;Removable Storage&amp;rdquo; im Backup Server eingehängt und dient als zusätzliche Offline-Kopie im Worst-Case. Ich habe auch einen Thin Client mit einer Festplatte und Proxmox Backup Server im Keller, zu dem ich unregelmäßig die Backups spiegele. Aufgrund der geringen Bandbreite in den Keller will ich diese Variante aber ablösen, dafür habe ich mit der externen Festplatte begonnen.&lt;/p&gt;
&lt;h2 id="nutzerdaten-nextcloud-gameserver-usw"&gt;Nutzerdaten (Nextcloud, Gameserver usw.)
&lt;/h2&gt;&lt;p&gt;Für Dienste, die viele Nutzerdaten enthalten, setze ich zusätzlich auf Restic. Nextcloud-Daten und Backups der Gameserver werden etwa alle acht Stunden auf eine Hetzner Storage Box geladen. Auch hier läuft alles verschlüsselt, und die Snapshots lassen sich im Notfall granular wiederherstellen. Restic erfüllt neben der Verschlüsselung auch hier wieder die Kriterien mit Deduplizierung und Komprimierung, damit ich möglichst effizient viele Snapshots speichern kann.&lt;/p&gt;
&lt;p&gt;Bei der Nextcloud gibt es generell die Besonderheit, dass ich alle Daten, um die Nextcloud wiederherzustellen (&lt;code&gt;www&lt;/code&gt;-Verzeichnis, Datenverzeichnis, Dump der Datenbank) via Restic sichere, die virtuelle Festplatte mit den Nextcloud-Daten wird via Proxmox Backup Server aktuell wegen des Speicherbedarfs tatsächlich nicht gesichert.&lt;/p&gt;
&lt;h2 id="nas"&gt;NAS
&lt;/h2&gt;&lt;p&gt;Im Keller steht ein &lt;a class="link" href="https://secretmine.de/blog/2025/2025-04-27-backup-server-fuer-das-nas/" &gt;Backup-NAS&lt;/a&gt; mit TrueNAS. Hier laufen in unregelmäßigen Abständen manuelle rsync-Jobs, die Daten vom Haupt-NAS kopieren. Über ZFS-Snapshots sind ältere Stände ebenfalls abrufbar. Die Variante mit einem zusätzlichen NAS hat hauptsächlich Kostengründe, da das Speichern von über 10TB inkl. Snapshots sonst sehr viel teurer gewesen wäre.&lt;/p&gt;
&lt;h2 id="vserver-backups"&gt;vServer-Backups
&lt;/h2&gt;&lt;p&gt;Auf meinen externen vServern (hauptsächlich Docker-Dienste, diese Website und mein Mailserver) verwende ich ebenfalls Restic mit einer Hetzner Storage Box als Ziel.&lt;/p&gt;
&lt;h2 id="sicherung-der-keys-und-monitoring"&gt;Sicherung der Keys und Monitoring
&lt;/h2&gt;&lt;p&gt;Ich hatte zwischenzeitlich die Situation, dass die Keys für alle Offsite-Backups nur in einer Keepass-Datei in meiner Nextcloud gespeichert waren - die wiederum Teil genau dieser Offsite-Backups sind. Da ich alles verschlüssele, was offsite landet, hätte ich im Worst-Case zwar Backups, aber keinen Zugang mehr zu diesen Backups gehabt. Deshalb lagern die Keys mittlerweile zusätzlich auf einem USB-Stick bei meinen Eltern, just in case.&lt;/p&gt;
&lt;p&gt;Die Backup-Scripte werden mittels &lt;a class="link" href="https://secretmine.de/blog/2025/2025-10-31-scriptausfuehrung-mit-healthchecks-ueberwachen/" &gt;Healthchecks&lt;/a&gt; auf ihre Ausführung überwacht, damit nicht (schon wieder) monatelang keine Backups passieren.&lt;/p&gt;
&lt;h2 id="offene-punkte"&gt;Offene Punkte
&lt;/h2&gt;&lt;p&gt;Was ich bisher zu selten mache sind Restore-Tests. Ich habe zwar bei jeder verwendeten Technik irgendwann mal einen Test-Restore gemacht und geprüft, aber seitdem nicht wieder getestet. Ich möchte für einige wichtige Dinge wie z.B. die Nextcloud auch Langzeitbackups einführen, die einen monatlichen Stand für mehrere Jahre effizient und günstig vorhalten können. Restic nutze ich aktuell nur mit &lt;code&gt;--keep-last n&lt;/code&gt;, hier sollte ich eine bessere Retention Policy einsetzen. Mein Backup-Script loggt aktuell auch zu wenig - das ist generell ein offener Punkt.&lt;/p&gt;
&lt;p&gt;Auch eine Dokumentation, wie Dinge wiederhergestellt werden können, fehlt komplett. An dem Thema bin ich aber aktuell dran. Basis wird eine möglichst automatische Datensammlung mit Ansible, Ergänzung mit eigenen Informationen und dann Erzeugen eines Wikis mittels MKDocs. Wenn ich das irgendwann mal fertig habe, gibt es dazu auch wieder einen Post.&lt;/p&gt;
&lt;p&gt;Eine Ansible-Rolle zum Deployen vom Backup-Script wäre auch noch angenehm, aktuell passiert das komplett händisch.&lt;/p&gt;
&lt;h2 id="fazit"&gt;Fazit
&lt;/h2&gt;&lt;p&gt;Das Setup ist über die Zeit gewachsen und sicher nicht perfekt - aber es deckt die wichtigsten Fälle ab: Hardwaredefekt, Ransomware, versehentliches Löschen und kompletten Verlust vom Cluster (bspw. durch einen Brand). Und das ganze wie üblich in möglichst kosteneffizient. Einige Dinge muss ich allerdings noch nachbessern.&lt;/p&gt;</description></item><item><title>Containerorchestrierung im Homelab</title><link>https://secretmine.de/blog/2025/2025-12-17-containerorchestrierung-im-homelab/</link><pubDate>Wed, 17 Dec 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-12-17-containerorchestrierung-im-homelab/</guid><description>&lt;p&gt;Wie die meisten anderen auch habe ich in meinem Homelab einiges an Containern mit Docker in Betrieb. Bisher verwalte ich das in mehreren VMs in Form von Docker-Compose-Stacks händisch - was eher unbequem ist und auch für Ausfallsicherheit und ähnliches nicht förderlich ist. Es ist außerdem aufwändig, Services zwischen den Nodes zu verschieben.&lt;/p&gt;
&lt;h2 id="orchestrierungstools"&gt;Orchestrierungstools
&lt;/h2&gt;&lt;p&gt;Das hier ist natürlich keine vollständige Auflistung, es sind nur die Optionen, die ich in Betracht gezogen habe.&lt;/p&gt;
&lt;h3 id="docker-compose-stacks"&gt;Docker Compose Stacks
&lt;/h3&gt;&lt;p&gt;&amp;hellip;also die bisherige Lösung.&lt;/p&gt;
&lt;p&gt;Letztendlich einfach nur ein Ordner mit Unterordnern pro Compose-Stack bzw. pro Service.&lt;/p&gt;
&lt;p&gt;Vorteile:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;leicht verwaltbar&lt;/li&gt;
&lt;li&gt;Tools wie Watchtower funktionieren problemlos&lt;/li&gt;
&lt;li&gt;viele Softwareprodukte bieten fertige Compose-Files an&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nachteile:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Keine Redundanz bzw. Failover&lt;/li&gt;
&lt;li&gt;Unübersichtlich, was wo läuft&lt;/li&gt;
&lt;li&gt;Traffic muss von außen an die korrekte VM geleitet werden&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="kubernetes"&gt;Kubernetes
&lt;/h3&gt;&lt;p&gt;Beruflich hantiere ich täglich mit Kubernetes, ich bin also mit der Funktionsweise und auch den Tools vertraut. Ausprobiert habe ich k3s und Talos, sowohl mit Longhorn als auch mit NFS als Storage. Compose-Stacks lassen sich mit dem Tool Kompose leicht konvertieren. Mich hat hier allerdings der Overhead gestört. Eine Worker-Node ohne jegliche Workload hat ~10 % CPU-Auslastung erzeugt, was vor allem bei den Thin Clients einfach zu viel ist. Auch ist mir die Verwaltung für zuhause eigentlich zu komplex.&lt;/p&gt;
&lt;p&gt;Vorteile:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;gängiges Orchestrierungstool&lt;/li&gt;
&lt;li&gt;Helm-Charts für viele gängige Softwareprodukte verfügbar&lt;/li&gt;
&lt;li&gt;gutes Scheduling bzw. Lastmanagement, Scheduling auch sehr gut beeinflussbar&lt;/li&gt;
&lt;li&gt;Kompatibel mit vielen Storage-Lösungen&lt;/li&gt;
&lt;li&gt;hohe Anzahl an Tools (GUIs und andere Lösungen)&lt;/li&gt;
&lt;li&gt;Ingress bzw. Overlay-Netzwerk - Services lassen sich problemlos auf allen Nodes erreichbar schalten, intern wird zur korrekten Node geroutet&lt;/li&gt;
&lt;li&gt;Secret-Management mit vielen Optionen&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nachteile:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Komplex in der Verwaltung&lt;/li&gt;
&lt;li&gt;Hoher Ressourcenoverhead&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="docker-swarm"&gt;Docker Swarm
&lt;/h3&gt;&lt;p&gt;Docker Swarm ist eine Möglichkeit, mehrere Docker-Daemons miteinander zu vernetzen und zu einer Einheit zu kombinieren. Es ist von der Komplexität her irgendwo zwischen einfachem Docker und Kubernetes, bietet dabei aber auch längst nicht so viele Optionen wie Kubernetes. Der Ressourcenverbrauch ist erfreulich niedrig und die Arbeit mit dem Tool fällt recht leicht, wenn man Compose gewohnt ist. Die Migration von Services ist auch einfach - die Compose-File minimal modifizieren, Storage anlegen und Inhalte übertragen und deployen.&lt;/p&gt;
&lt;p&gt;Vorteile:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Simpel zu nutzen, ähnlich zu Docker Compose&lt;/li&gt;
&lt;li&gt;Compose-Files lassen sich nahezu unverändert einsetzen&lt;/li&gt;
&lt;li&gt;Overlay-Netzwerk - Services sind auf allen Nodes erreichbar, intern wird zur korrekten Node geroutet&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nachteile:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;wenig verbreitet, wenig Tools&lt;/li&gt;
&lt;li&gt;Scheduling ist rudimentär (nur harte Constraints möglich, keine Präferenzen bzw. weiche Constraints)&lt;/li&gt;
&lt;li&gt;Weniger Support für verschiedene Storage-Lösungen&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="meine-entscheidung"&gt;Meine Entscheidung
&lt;/h2&gt;&lt;p&gt;Bisher läuft eigentlich alles mit normalen Compose-Stacks. Ich habe erst Kubernetes mit verschiedene Distributionen evaluiert (Talos und k3s) - und obwohl mir das eigentlich gut gefällt und für mich gewohnte Tools sind, ist mir der CPU-Overhead für meinen Wunsch nach Energieeffizienz einfach zu groß; auch wenn die Vorteile ansonsten überwiegen.&lt;/p&gt;
&lt;p&gt;Am Ende fühlt sich Docker Swarm für meinen Einsatzzweck ideal an:
leichtgewichtig, bekanntes Compose-Ökosystem, dazu Clustering und Failover. Durch den zentralen NFS-Storage (DRBD-basiert) kann ich Workloads problemlos verschieben, und das Deployment neuer Stacks ist sehr unkompliziert.&lt;/p&gt;
&lt;p&gt;Der größte Nachteil ist tatsächlich die Tool-Landschaft. Portainer ist aktuell praktisch das einzige gepflegte GUI-Tool – aber es deckt alles ab, was ich brauche. Früher habe ich Swarmpit genutzt, aber dort passiert im Repo leider kaum noch etwas.&lt;/p&gt;
&lt;p&gt;Alles in allem ist Swarm für mein Homelab der beste Kompromiss aus Redundanz, Energieeffizienz und administrativem Aufwand. Ich werde jetzt nach und nach meine Services migrieren, mal schauen, ob ich dabei noch auf Probleme stoße.&lt;/p&gt;</description></item><item><title>Proxmox Backup Server 4 mit S3 Storage - ein Update nach einigen Wochen</title><link>https://secretmine.de/blog/2025/2025-12-09-proxmox-backup-server-mit-s3-aktueller-stand/</link><pubDate>Tue, 09 Dec 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-12-09-proxmox-backup-server-mit-s3-aktueller-stand/</guid><description>&lt;p&gt;Vor einiger Zeit habe ich ja &lt;a class="link" href="https://secretmine.de/blog/2025/2025-09-25-proxmox-backup-server-via-s3-in-richtig/" &gt;Proxmox Backup Server 4 mit S3 Storage&lt;/a&gt; als Offsite-Backup eingerichtet. Hier nun also ein kleiner Zwischenbericht zur Speicherbelegung.&lt;/p&gt;
&lt;p&gt;Ich sichere aktuell 8 LXCs zu dem Backup-Repo, pro CT werden jeweils drei Backups behalten. Im Bucket liegen 11,5 GB und etwa 7500 Dateien. PBS scheint aber im Bucket nur eher wenige Aktionen durchzuführen - auf der Abrechnung von Backblaze ist nur der belegte Speicher relevant, die S3-Operationen liegen bei mir komplett im kostenfreien Bereich. Proxmox Backup Server zeigt bei dem Repo eine Belegung von 8 GB an, das scheint nur der lokal zwischengespeicherte Part zu sein. Der Deduplizierungsfaktor liegt bei etwas über 7, das entspricht grob dem Faktor, den ich auch sonst erreiche.&lt;/p&gt;
&lt;p&gt;Insgesamt sieht es für mich bisher so aus, als ob das ganze gut funktioniert. Große Restore-Tests habe ich allerdings weiterhin nicht gemacht und Stand heute ist das S3-Feature auch weiterhin nur eine Tech-Preview - also mit Vorsicht zu genießen und sollte nicht das einzige Backup sein.&lt;/p&gt;</description></item><item><title>Nutzung alter Hardware als Minecraft-Server</title><link>https://secretmine.de/blog/2025/2025-12-01-nutzung-alter-hardware-als-minecraft-server/</link><pubDate>Mon, 01 Dec 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-12-01-nutzung-alter-hardware-als-minecraft-server/</guid><description>&lt;p&gt;Für ein temporäres Projekt brauchte ich genügend Ressourcen für einen Modded Minecraft Server. Auf dem &lt;a class="link" href="https://secretmine.de/blog/2024/2024-12-16-lenovo-thinkcentre-m715q-tiny/" &gt;Mini-PC&lt;/a&gt;, den ich für meinen Hauptserver gekauft hatte, habe ich allerdings nicht genügend freie Ressourcen. Dementsprechend habe ich mich im Keller umgesehen und passende Hardware gefunden - ein PC mit einem i5 4440, 16GB RAM und genügend SSD-Platz. Eine GPU war auch noch verbaut, die habe ich entfernt. Der PC diente zwischenzeitlich als Experimentierumgebung mit Ollama, genutzt habe ich den aber tatsächlich jetzt fast ein Jahr lang nicht mehr.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-12-01-nutzung-alter-hardware-als-minecraft-server/images/pc.jpg"
width="1500"
height="1206"
srcset="https://secretmine.de/blog/2025/2025-12-01-nutzung-alter-hardware-als-minecraft-server/images/pc_hu_79c574eaa7f2375d.jpg 480w, https://secretmine.de/blog/2025/2025-12-01-nutzung-alter-hardware-als-minecraft-server/images/pc_hu_6c2b1ab478fa29c2.jpg 1024w"
loading="lazy"
alt="Der Server-Rechner"
class="gallery-image"
data-flex-grow="124"
data-flex-basis="298px"
&gt;&lt;/p&gt;
&lt;h2 id="hardware"&gt;Hardware
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Intel Core i5 4440 (4x 3,1 GHz, Haswell)&lt;/li&gt;
&lt;li&gt;2x 8GB DDR3 RAM&lt;/li&gt;
&lt;li&gt;16GB SSD (OS)&lt;/li&gt;
&lt;li&gt;240GB SSD (MC-Server)&lt;/li&gt;
&lt;li&gt;OS: Debian&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="software"&gt;Software
&lt;/h2&gt;&lt;p&gt;Als OS habe ich Debian installiert, hier geht aber auch fast jedes beliebige andere Linux. Letztendlich läuft auf dem Rechner eigentlich nur Wings für Pterodactyl. Installiert habe ich Debian über mein &lt;a class="link" href="https://secretmine.de/blog/2025/2025-11-21-iodd-st400/" &gt;IODD ST400&lt;/a&gt;, das war jetzt der erste richtige und erfolgreiche Praxistest für das Gerät.&lt;/p&gt;
&lt;p&gt;Auf dem Debian ist ansonsten Docker installiert, das benötigt Wings zum Ausführen der eigentlichen Gameserver. Daneben ist ansonsten noch der Prometheus Node Exporter installiert, damit ich Metriken für mein Monitoring abgreifen kann.&lt;/p&gt;
&lt;h2 id="stromverbrauch"&gt;Stromverbrauch
&lt;/h2&gt;&lt;p&gt;Der Stromverbrauch liegt deutlich höher als beim Mini-PC: Im Idle ca 25 Watt, unter Last auch bis zu ca 60 Watt. Wie groß der Verbrauch in der Praxis dann ist weiß ich natürlich noch nicht. Das kostet auf Dauer natürlich mehr Geld, aber da ich diesen Server vermutlich nur wenige Wochen so benötige, ist es die wirtschaftlichste Option. Im Vergleich zu einem gemieteten vServer hat dieser Rechner auch den Vorteil, dass der Minecraft-Server die CPU vollständig für sich hat und es keine &amp;ldquo;noisy neighbors&amp;rdquo; gibt. Ein vServer mit diesen Leistungseckdaten ist bei den gängigen Anbietern auch etwas teurer als mich der Strom hier kostet.&lt;/p&gt;
&lt;h2 id="benchmark"&gt;Benchmark
&lt;/h2&gt;&lt;p&gt;Die Benchmarks sind in einem ähnlichen Bereich wie beim &lt;a class="link" href="https://secretmine.de/blog/2024/2024-12-16-lenovo-thinkcentre-m715q-tiny/" &gt;Lenovo ThinkCentre M715q Tiny&lt;/a&gt;, an einigen Stellen trotz des Alters besser.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;span class="lnt"&gt;37
&lt;/span&gt;&lt;span class="lnt"&gt;38
&lt;/span&gt;&lt;span class="lnt"&gt;39
&lt;/span&gt;&lt;span class="lnt"&gt;40
&lt;/span&gt;&lt;span class="lnt"&gt;41
&lt;/span&gt;&lt;span class="lnt"&gt;42
&lt;/span&gt;&lt;span class="lnt"&gt;43
&lt;/span&gt;&lt;span class="lnt"&gt;44
&lt;/span&gt;&lt;span class="lnt"&gt;45
&lt;/span&gt;&lt;span class="lnt"&gt;46
&lt;/span&gt;&lt;span class="lnt"&gt;47
&lt;/span&gt;&lt;span class="lnt"&gt;48
&lt;/span&gt;&lt;span class="lnt"&gt;49
&lt;/span&gt;&lt;span class="lnt"&gt;50
&lt;/span&gt;&lt;span class="lnt"&gt;51
&lt;/span&gt;&lt;span class="lnt"&gt;52
&lt;/span&gt;&lt;span class="lnt"&gt;53
&lt;/span&gt;&lt;span class="lnt"&gt;54
&lt;/span&gt;&lt;span class="lnt"&gt;55
&lt;/span&gt;&lt;span class="lnt"&gt;56
&lt;/span&gt;&lt;span class="lnt"&gt;57
&lt;/span&gt;&lt;span class="lnt"&gt;58
&lt;/span&gt;&lt;span class="lnt"&gt;59
&lt;/span&gt;&lt;span class="lnt"&gt;60
&lt;/span&gt;&lt;span class="lnt"&gt;61
&lt;/span&gt;&lt;span class="lnt"&gt;62
&lt;/span&gt;&lt;span class="lnt"&gt;63
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;root@mc:~# curl -sL yabs.sh | bash -s -- -r -5 -6
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Yet-Another-Bench-Script #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# v2025-04-20 #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# https://github.com/masonr/yet-another-bench-script #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Mon Nov 17 08:34:30 PM CET 2025
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Basic System Information:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Uptime : 0 days, 0 hours, 0 minutes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Processor : Intel(R) Core(TM) i5-4440 CPU @ 3.10GHz
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CPU cores : 4 @ 3093.207 MHz
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AES-NI : ✔ Enabled
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;VM-x/AMD-V : ✔ Enabled
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;RAM : 15.5 GiB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Swap : 953.0 MiB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Disk : 232.7 GiB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Distro : Debian GNU/Linux 13 (trixie)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Kernel : 6.12.57+deb13-amd64
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;VM Type : NONE
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;IPv4/IPv6 : ✔ Online / ❌ Offline
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;IPv4 Network Information:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ISP : Vodafone Kabel Deutschland
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ASN : AS3209 Vodafone GmbH
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Host : Vodafone Kabel Deutschland GmbH
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Location : Cadenberge, Lower Saxony (NI)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Country : Germany
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/sdb2):
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Block Size | 4k (IOPS) | 64k (IOPS)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ------ | --- ---- | ---- ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Read | 22.98 MB/s (5.7k) | 31.36 MB/s (490)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Write | 22.98 MB/s (5.7k) | 31.74 MB/s (495)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Total | 45.96 MB/s (11.4k) | 63.10 MB/s (985)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; | |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Block Size | 512k (IOPS) | 1m (IOPS)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ------ | --- ---- | ---- ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Read | 32.14 MB/s (62) | 32.97 MB/s (32)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Write | 34.56 MB/s (67) | 35.51 MB/s (34)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Total | 66.71 MB/s (129) | 68.49 MB/s (66)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Geekbench 5 Benchmark Test:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Test | Value
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Single Core | 918
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Multi Core | 3049
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Full Test | https://browser.geekbench.com/v5/cpu/23910060
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Geekbench 6 Benchmark Test:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Test | Value
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Single Core | 1194
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Multi Core | 3614
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Full Test | https://browser.geekbench.com/v6/cpu/15090984
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;YABS completed in 13 min 41 sec
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Der Fujitsu Futro S740 im Homelab – Der ideale Server?</title><link>https://secretmine.de/blog/2025/2025-11-27-der-fujitsu-futro-s740-der-ideale-server/</link><pubDate>Thu, 27 Nov 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-11-27-der-fujitsu-futro-s740-der-ideale-server/</guid><description>&lt;p&gt;Der Fujitsu Futro S740 ist nun seit fast drei Jahren zentraler Bestandteil meines Homelabs und ist auch hier im Blog regelmäßig Thema. Es wird Zeit, mal Bilanz zu ziehen und etwas zu meinen Langzeiterfahrungen zu schreiben.&lt;/p&gt;
&lt;h2 id="leistung-und-einsatz-im-cluster"&gt;Leistung und Einsatz im Cluster
&lt;/h2&gt;&lt;p&gt;Die Leistung des Futro S740 reicht für viele Homelab-Anwendungen aus, ist jedoch begrenzt. Aber gut, was erwartet man auch von einem Gerät, das als Thin Client konzipiert wurde und einen passiv gekühlten Intel Celeron verbaut hat. Gerade bei Single-Thread-Anwendungen und virtuellen Maschinen merkt man schnell den Overhead und die begrenzte CPU-Power. Deshalb bevorzuge ich Proxmox LXC-Container, die deutlich ressourcenschonender sind, schneller starten und effizienter laufen. Für wirklich rechenintensive Anwendungen ist der S740 einfach nicht gebaut.&lt;/p&gt;
&lt;p&gt;Neben zwei Futro S740 läuft in meinem Proxmox-Cluster auch ein leistungsstärkerer Mini-PC. Auf diesem laufen Workloads, die mehr CPU-Leistung brauchen, wie Gameserver, Windows-VMs und Linux-Workstation-VMs. So verteile ich die Last passend und nutze die Hardware im Cluster optimal.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-11-27-der-fujitsu-futro-s740-der-ideale-server/images/lab-2025-2.jpg"
width="1500"
height="1799"
srcset="https://secretmine.de/blog/2025/2025-11-27-der-fujitsu-futro-s740-der-ideale-server/images/lab-2025-2_hu_20e5599c1cbe7a9c.jpg 480w, https://secretmine.de/blog/2025/2025-11-27-der-fujitsu-futro-s740-der-ideale-server/images/lab-2025-2_hu_eefaa90d2704da4e.jpg 1024w"
loading="lazy"
alt="Mein Lab - zwei Fujitsu Futro S740 und ein Lenovo ThinkCentre M715q Tiny"
class="gallery-image"
data-flex-grow="83"
data-flex-basis="200px"
&gt;&lt;/p&gt;
&lt;h2 id="hardwareerweiterungen"&gt;Hardwareerweiterungen
&lt;/h2&gt;&lt;p&gt;Meistens kommt der Futro S740 mit 8/16 GB EMMC-Speicher und 4 GB RAM. Das lässt sich aber deutlich aufrüsten.&lt;/p&gt;
&lt;h3 id="speicher"&gt;Speicher
&lt;/h3&gt;&lt;p&gt;Eine gute SATA-SSD ist für den Futro Pflicht, um vernünftige I/O-Performance zu gewährleisten. Ich habe zusätzlich eine NVMe-SSD im M.2-Slot für Wifi mit einem simplen Adapter eingebaut. Der Einbau erfordert etwas unorthodoxe Maßnahmen, funktioniert aber auch auf Dauer stabil. Obwohl dieser Slot technisch nicht die volle NVMe-Bandbreite bietet, spürt man die geringeren Latenzen und deutlich höheren IOPS trotzdem. Wichtig ist, hier auf gute Qualität zu achten und lieber kein QLC-Modell zu verwenden. Auch wenn der Slot limitiert ist, lohnt sich die Investition in eine zuverlässige und langlebige SSD, damit der Storage nicht zum Flaschenhals wird.&lt;/p&gt;
&lt;p&gt;Auf ZFS habe ich bei den Futros verzichtet, auch wenn ich sonst wegen der transparenten Komprimierung und dem integrierten Volume-Manager ein großer Fan bin. Auf den Thin Clients hat sich Thin LVM als deutlich schlanker und von den Features her ausreichend bewiesen.&lt;/p&gt;
&lt;h3 id="ram"&gt;RAM
&lt;/h3&gt;&lt;p&gt;Der maximale RAM-Ausbau liegt bei 16 GB, was für die meisten Homelab-Nutzer ausreicht. Damit lässt sich auf jeden Fall einiges erreichen. Wer mehr will, muss sich nach anderer Hardware umsehen. Es empfiehlt sich auch, möglichst gleich 16 GB zu verbauen, um genug Reserven zu haben und nicht später noch wieder neuen RAM kaufen zu müssen.&lt;/p&gt;
&lt;h2 id="stromverbrauch-und-lautstärke"&gt;Stromverbrauch und Lautstärke
&lt;/h2&gt;&lt;p&gt;Das Highlight ist der sehr niedrige Stromverbrauch: Der Futro benötigt im Alltag oft nur um die 5 Watt, was ihn ideal für den Dauerbetrieb macht. Die passive Kühlung macht ihn auch komplett lautlos, wobei man beim Betrieb von mehreren Futros auf eine gute Belüftung achten sollte. Ich habe bei mir einen 120mm-Lüfter, der für Kühlung sorgt.&lt;/p&gt;
&lt;h2 id="was-ich-auf-den-futros-betreibe"&gt;Was ich auf den Futros betreibe
&lt;/h2&gt;&lt;p&gt;Die Liste ist tatsächlich recht lang.&lt;/p&gt;
&lt;p&gt;Zentral ist HomeAssistant, dazu ist am ersten Futro S740 auch ein Zigbee-Stick angeschlossen. Außerdem habe ich einen ADSB-Empfänger, womit ich Daten an z.B. FlightRadar24 übertrage. Dazu folgt vielleicht auch mal ein Post.&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://secretmine.de/blog/2024/2024-10-19-zweiter-futro-s740/" &gt;Nextcloud&lt;/a&gt; mit Collabora ist ein weiterer sehr zentraler Dienst, das ist die Hauptaufgabe vom zweiten Futro. Dazu (und auch zu diversen anderen Services) gehört natürlich auch ein Reverse-Proxy, wofür Caddy in einem weiteren LXC läuft.&lt;/p&gt;
&lt;p&gt;Ansonsten laufen zwei &lt;a class="link" href="https://secretmine.de/blog/2025/2025-05-18-blocky-eine-alternative-zu-adguard-home-und-pihhole/" &gt;Blocky-Instanzen&lt;/a&gt; für redundantes DNS, Bind als authoritativer DNS-Server für lokale DNS-Zonen, der Unifi-Controller für meinen Access Point und Smokeping für Latenz-Monitoring. Prometheus, Alertmanager und Grafana darf natürlich auch nicht fehlen. Harbor als lokale Registry (dazu könnte ich auch mal schreiben), &lt;a class="link" href="https://secretmine.de/blog/2025/2025-07-29-lyrion-music-server-und-squeezelite/" &gt;Lyrion Music Server&lt;/a&gt;, Memos als Notizbuch, Code-Server als Blog-Editor und Firefly3 für die Haushaltsfinanzen. Uptime-Kuma darf natürlich auch nicht fehlen.&lt;/p&gt;
&lt;p&gt;Und das ist mit Sicherheit noch nicht alles, das ist nur das, was ich gerade im Kopf habe. Generell lässt sich sagen, dass man mit den Futros mehr machen kann, als man so denkt. Die meisten der Services benötigen im Normalbetrieb fast keine Rechenleistung, damit lande ich bei um die 40 % konstante CPU-Last auf beiden Hosts. Beim RAM sind jeweils 11-12GB voll.&lt;/p&gt;
&lt;p&gt;Generell kann man eigentlich alles auf den Dingern betreiben, nur von Dingen wie einer Windows-Workstation-VM oder einem Minecraft-Server würde ich wegen der fehlenden Single-Core-Performance eher absehen.&lt;/p&gt;
&lt;h2 id="weitere-mögliche-szenarien"&gt;Weitere mögliche Szenarien
&lt;/h2&gt;&lt;p&gt;Mit einem DAS, also einem per USB angebundenen Gehäuse für mehrere Festplatten, lässt sich der S740 mit einem OS wie TrueNAS oder unRAID auch sicherlich gut als NAS verwenden. Die integrierte Intel-GPU kann hier bei einem Mediaserver wie Plex auch Transcoding durchführen. Über den Wifi-Slot lässt sich statt der SSD laut dem Internet auch eine zweite Netzwerkkarte (mit z.B. auch 2,5 GBit/s) verbauen, damit wäre auch der Einsatz als Router denkbar.&lt;/p&gt;
&lt;p&gt;Ein effizienter Kubernetes-Cluster ist auch möglich. Zu Container-Orchestrierung folgt auch in den nächsten Wochen noch ein Post.&lt;/p&gt;
&lt;p&gt;Klar, als klassischer Thin Client - wofür der Futro eigentlich auch gebaut wurde - ist der auch geeignet, ein modernes Desktop-OS (egal ob Windows oder Linux) dürfte auch für einfache Aufgaben brauchbar und flüssig laufen. Als Mediaplayer am Fernseher oder Retro-Spielekonsolen-Emulator taugt der Thin Client sicherlich auch.&lt;/p&gt;
&lt;p&gt;Ich selbst setze einen Futro als Printserver für einen 3D-Drucker ein, funktioniert super.&lt;/p&gt;
&lt;p&gt;Ich finde es erstaunlich, wie vielseitig sich dieses Gerät einsetzen lässt, vor allem bei dem Preis, zu dem man den Futro heutzutage bekommt. Bei mehreren Händlern für Refurbished Hardware gibt es immer mal wieder Angebote mit etwa 40 € pro Stück.&lt;/p&gt;
&lt;h2 id="alter-der-hardware"&gt;Alter der Hardware
&lt;/h2&gt;&lt;p&gt;Auch, wenn ich fast nur positives berichten kann:&lt;/p&gt;
&lt;p&gt;Ich denke, die Hauptzeit des Fujitu Futro S740 ist langsam vorbei. Die CPU ist von 2017 und geht damit langsam auf die 10 Jahre zu und es gibt zunehmend mehr Alternativen.&lt;/p&gt;
&lt;p&gt;Wenn man myDealz und ähnliche Plattformen ansieht, taucht der HP T740 zunehmend häufiger auf. Für mittlerweile unter 100 € bekommt man deutlich mehr Leistung und etwas bessere Aufrüstoptionen. Die CPU-Leistung vom T740 liegt grob beim Dreifachen der des S740. Wenn ich etwas Spielgeld über habe, werde ich mir davon vermutlich auch mal einen zulegen.&lt;/p&gt;
&lt;p&gt;Ansonsten sind Mini-PCs mit dem Intel N100 recht weit verbreitet, ich selbst hatte davon allerdings noch keinen in der Hand. Mini-PCs wie der Lenovo oder auch diverse Modelle von HP oder Dell sind für ein Homelab ebenfalls eine gute Wahl - benötigen aber deutlich mehr Strom.&lt;/p&gt;
&lt;p&gt;Trotz der Alternativen bleibt der Futro S740 auch heute noch eine gute Wahl, vor allem bei den Preisen, zu dem die Geräte mittlerweile erhältlich sind.&lt;/p&gt;
&lt;h2 id="fazit"&gt;Fazit
&lt;/h2&gt;&lt;p&gt;Der Fujitsu Futro S740 ist seit fast drei Jahren ein zuverlässiger, stromsparender Baustein in meinem Homelab. Für leichte bis mittlere Aufgaben reicht die Leistung gut. Vor allem im Cluster mit mehreren Geräten lässt sich viel machen, sogar hochverfügbarkeit mit Ceph ist denkbar. Vor allem als Smart-Home-Zentrale und für leichte bis mittelschwere Services wie Nextcloud, Immich und die anderen üblichen Verdächtigen zum selbst hosten ist der S740 gut geeignet.&lt;/p&gt;
&lt;p&gt;Das größte Argument für mich ist aber tatsächlich die Kombination aus Preis, Leistung und dem Stromverbrauch von um die 5 Watt, das ist einfach kaum schlagbar.&lt;/p&gt;</description></item><item><title>Review: IODD ST400</title><link>https://secretmine.de/blog/2025/2025-11-21-iodd-st400/</link><pubDate>Fri, 21 Nov 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-11-21-iodd-st400/</guid><description>&lt;p&gt;Ich habe kürzlich meine Werkzeugsammlung um ein IODD ST400 ergänzt. Ich hatte mir vor ein paar Jahren das IODD Mini mal angesehen, dort passte für mich aber Kosten/Nutzen nicht so wirklich. Das ST400 ist im Vergleich zum IODD Mini &amp;ldquo;nur&amp;rdquo; ein Gehäuse für 2,5-Zoll-Laufwerke, man kann dort also eine eigene SSD (oder auch HDD, wenn man unbedingt möchte) einbauen.&lt;/p&gt;
&lt;h2 id="was-ist-das"&gt;Was ist das?
&lt;/h2&gt;&lt;p&gt;Aktuell um die 100-120 € für ein USB-Gehäuse für SSDs ist viel, grob Faktor 10 im Vergleich zu &amp;ldquo;normalen&amp;rdquo; Gehäusen. Man bezahlt hierbei aber primär für ein paar sehr spezielle Features, die das Gerät hat.&lt;/p&gt;
&lt;p&gt;Es kann nämlich ISOs als virtuelle DVD-Laufwerke oder VHDs als virtuelle Festplatten bereitstellen. Außerdem bietet es auch noch zusätzlich Hardwareverschlüsselung an. Das ist auch der große Unterschied zum ähnlichen Modell ST300, das Gerät hat keine Verschlüsselung.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-11-21-iodd-st400/images/package.jpg"
width="1500"
height="1783"
srcset="https://secretmine.de/blog/2025/2025-11-21-iodd-st400/images/package_hu_e556d8b753d4a67e.jpg 480w, https://secretmine.de/blog/2025/2025-11-21-iodd-st400/images/package_hu_cc1c3ba5518e0079.jpg 1024w"
loading="lazy"
alt="Verpackung"
class="gallery-image"
data-flex-grow="84"
data-flex-basis="201px"
&gt; &lt;img src="https://secretmine.de/blog/2025/2025-11-21-iodd-st400/images/package_content.jpg"
width="4080"
height="3060"
srcset="https://secretmine.de/blog/2025/2025-11-21-iodd-st400/images/package_content_hu_8904970ef609ce83.jpg 480w, https://secretmine.de/blog/2025/2025-11-21-iodd-st400/images/package_content_hu_ff299b75a00e82c.jpg 1024w"
loading="lazy"
alt="Packungsinhalt"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="320px"
&gt; &lt;img src="https://secretmine.de/blog/2025/2025-11-21-iodd-st400/images/device.jpg"
width="2000"
height="1231"
srcset="https://secretmine.de/blog/2025/2025-11-21-iodd-st400/images/device_hu_c65eeca252726034.jpg 480w, https://secretmine.de/blog/2025/2025-11-21-iodd-st400/images/device_hu_a2a35eca71ef8ca7.jpg 1024w"
loading="lazy"
alt="Das IODD ST400"
class="gallery-image"
data-flex-grow="162"
data-flex-basis="389px"
&gt; &lt;img src="https://secretmine.de/blog/2025/2025-11-21-iodd-st400/images/device_open.jpg"
width="2000"
height="1212"
srcset="https://secretmine.de/blog/2025/2025-11-21-iodd-st400/images/device_open_hu_9436b51f9bf18d58.jpg 480w, https://secretmine.de/blog/2025/2025-11-21-iodd-st400/images/device_open_hu_f8f729804f61e5c0.jpg 1024w"
loading="lazy"
alt="Verbaute SSD"
class="gallery-image"
data-flex-grow="165"
data-flex-basis="396px"
&gt;&lt;/p&gt;
&lt;p&gt;Netterweise kommt das Gerät direkt mit einer kleinen Neopren-Hülle, damit das Display im Rucksack nicht zerkratzt.&lt;/p&gt;
&lt;p&gt;Ich hatte noch eine Crucial MX500 mit 500GB herumliegen, diese lebt nun im IODD.&lt;/p&gt;
&lt;h2 id="was-macht-man-damit"&gt;Was macht man damit?
&lt;/h2&gt;&lt;p&gt;Einer der nützlichsten Einsatzzwecke ist das Booten von Rechnern mit den ISOs vom IODD. Einfach die ISO am Gerät auswählen und den Rechner booten lassen. Das ist erheblich bequemer, als ständig neue Boot-Stickts zu erstellen, um Rechner davon booten zu lassen.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-11-21-iodd-st400/images/mounted.jpg"
width="2000"
height="1242"
srcset="https://secretmine.de/blog/2025/2025-11-21-iodd-st400/images/mounted_hu_9bd92091f76373cc.jpg 480w, https://secretmine.de/blog/2025/2025-11-21-iodd-st400/images/mounted_hu_596b46120e1ba711.jpg 1024w"
loading="lazy"
alt="Debian-ISO ausgewählt"
class="gallery-image"
data-flex-grow="161"
data-flex-basis="386px"
&gt;
&lt;img src="https://secretmine.de/blog/2025/2025-11-21-iodd-st400/images/mounted_win.png"
width="777"
height="146"
srcset="https://secretmine.de/blog/2025/2025-11-21-iodd-st400/images/mounted_win_hu_1e82368b8d020790.png 480w, https://secretmine.de/blog/2025/2025-11-21-iodd-st400/images/mounted_win_hu_7ee990ed2a0a6c64.png 1024w"
loading="lazy"
alt="Virtuelles Laufwerk am Rechner"
class="gallery-image"
data-flex-grow="532"
data-flex-basis="1277px"
&gt;&lt;/p&gt;
&lt;p&gt;Ich selbst nutze es z.B. zum Debuggen von Problemen mit Computern. Ich habe eine Handvoll ISOs (wie z.B. Memtest), mit denen ich den Rechner starten kann und kann darüber dann nach und nach die Hardware checken. Oder auch fehlerhafte Windows-Dateien mit dem Windows-Installer beheben, Daten mit Linux retten, Festplatten mit Gparted neu partitionieren oder mit DBAN gleich alles löschen. Ich habe auch eine Acronis-ISO sowie Clonezilla für Backups bzw. generell Disk-Management mit auf dem Gerät.&lt;/p&gt;
&lt;p&gt;Auch die virtuellen Festplatten nutze ich. Ich besitze einen HP Thin Client mit HP ThinPro. Das Update-Tool kann, soweit ich weiß, keine ISOs erzeugen, deswegen nutze ich dafür ein virtuelles Laufwerk. Ich habe also ziemlich viele USB-Sticks jetzt zu einem Gerät zusammengefasst.&lt;/p&gt;
&lt;p&gt;Das Gerät bewegt sich in einer Nische, das sollte klar sein. Daraus folgen vermutlich eher geringe Stückzahlen. Das wiederum erklärt dann auch den vergleichsweise hohen Preis von aktuell 110-120 €. Der Hersteller hat auch kleinere Geräte mit verbauter SSD, diese sind dann etwas teurer. Auf dem Gebrauchtmarkt habe ich die Geräte bisher kaum gesehen, ich habe da jetzt bei einem Angebot eines Händlers zugeschlagen.&lt;/p&gt;
&lt;h2 id="fazit"&gt;Fazit
&lt;/h2&gt;&lt;p&gt;Mich überzeugt insbesondere das Feature des virtuellen CD-Laufwerks. Das ist schließlich auch das große Alleinstellungsmerkmal dieses Gehäuses. Die Bedienung geht recht gut von der Hand, größere Probleme sind mir nicht aufgefallen.&lt;/p&gt;
&lt;p&gt;Der Preis ist hoch, aber vor allem das ST300 ist regelmäßig für unter 100€ zu bekommen, das finde ich dann schon vertretbar. Irgendeine SSD, die man verbauen kann, hat man als ITler ja meistens noch herumliegen. Günstiger ist eine Sammlung mit diversen USB-Sticks vermutlich weiterhin, aber einerseits unhandlicher und andererseits schwieriger zu pflegen. Im Vergleich zu den älteren Geräten haben die modernen auch einen USB-C-Anschluss, das finde ich für die Langlebigkeit sehr gut.&lt;/p&gt;</description></item><item><title>Neues Theme: Hugo Theme Stack</title><link>https://secretmine.de/blog/2025/2025-11-15-neues-theme/</link><pubDate>Sat, 15 Nov 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-11-15-neues-theme/</guid><description>&lt;p&gt;Das bisherige Theme (Hugo Papermod, &lt;a class="link" href="https://github.com/adityatelange/hugo-PaperMod" target="_blank" rel="noopener"
&gt;https://github.com/adityatelange/hugo-PaperMod&lt;/a&gt;) ist zwar schlicht und erfüllt seinen Zweck, ich habe mich aber einerseits an dem Theme sattgesehen und möchte andererseits auch die Lesbarkeit vom Blog verbessern. Vor allem am Desktop wird der Bildschirm zu wenig ausgefüllt und zu viel Platz leer gelassen.&lt;/p&gt;
&lt;p&gt;Das neue Theme ist Hugo Theme Stack (&lt;a class="link" href="https://github.com/CaiJimmy/hugo-theme-stack%29" target="_blank" rel="noopener"
&gt;https://github.com/CaiJimmy/hugo-theme-stack)&lt;/a&gt;. Wie auch das bisherige habe ich es leicht an meine Bedarfe angepasst, aber keine großen Änderungen vorgenommen. Geändert habe ich hauptsächlich das Handling von externen Ressourcen, diese werden im Unterschied zum originalen Theme komplett lokal vom Server ausgeliefert und nicht von externen Services eingebunden. Das reduziert einerseits die Abhängigkeit zu externen Services, andererseits bin ich auch aus Gründen des Datenschutzes ein großer Fan davon.&lt;/p&gt;
&lt;p&gt;Das neue Theme zeigt vor allem Kategorien und Tags besser an, hat ein schönes Inhaltsverzeichnis der Posts an der Seite und ist auch bei Bildern ansprechender. Bilder können jetzt angeklickt werden, damit diese im Vollbild angezeigt werden. Das Theme unterstützt auch kleine Gallerien, die ich in neueren Posts vermutlich auch nutzen werde.&lt;/p&gt;
&lt;p&gt;Auch eine Suche ist neu.&lt;/p&gt;
&lt;p&gt;Die URLs der Seiten und Posts habe ich so gelassen wie sie waren, auch die RSS-Feed-URL ist identisch. Ansonsten ändert sich generell auch bis auf das Theme nichts weiter, die Unregelmäßigkeit und Umfang der Posts bleibt wie sie ist. Ich plane allerdings, bei den Tags und Kategorien ein einheitlicheres Schema zu integrieren, um die Auffindbarkeit von Posts zu verbessern.&lt;/p&gt;
&lt;p&gt;Nebenbei sind solche Anpassungen ein riesiger Vorteil von Static Site Generatoren. Ich habe über die letzte Zeit einfach auf einem anderen Branch im Git das neue Theme integriert, konfiguriert und auch die Posts angepasst, konnte nebenbei aber auf den normalen Branches wie bisher weitermachen und neue Posts veröffentlichen. Zur Liveschaltung vom neuen Theme musste ich dann nur zurück auf &lt;code&gt;main&lt;/code&gt; mergen und war fertig. Das kenne ich von Wordpress anders bzw. das war dort schwieriger in der Umsetzung. Generell bin ich das Arbeiten mit Git und Branches gewohnt, da fühlt sich das für den eigenen Blog auch sehr natürlich an.&lt;/p&gt;</description></item><item><title>Der dritte Fujitsu Futro S740</title><link>https://secretmine.de/blog/2025/2025-11-08-dritter-futro-s740/</link><pubDate>Sat, 08 Nov 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-11-08-dritter-futro-s740/</guid><description>&lt;p&gt;Der dritte Fujitsu Futro S740 ist da&amp;hellip; Diesmal allerdings tatsächlich nicht als Proxmox-Host bzw. generell als reiner Server. Trotzdem ist es der 6. Thin Client.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-11-08-dritter-futro-s740/images/futro_1.jpg"
width="1460"
height="1226"
srcset="https://secretmine.de/blog/2025/2025-11-08-dritter-futro-s740/images/futro_1_hu_d4cc9dcac15b5a32.jpg 480w, https://secretmine.de/blog/2025/2025-11-08-dritter-futro-s740/images/futro_1_hu_2cc230c039bd3683.jpg 1024w"
loading="lazy"
alt="Der dritte Futro S740"
class="gallery-image"
data-flex-grow="119"
data-flex-basis="285px"
&gt;&lt;/p&gt;
&lt;h2 id="einsatzzweck"&gt;Einsatzzweck
&lt;/h2&gt;&lt;p&gt;Ich hab beim 3D-Drucker bisher Octoprint auf einem Futro S520 am Laufen gehabt. Das lief soweit okay, aber eher langsam. Die 4GB an verlötetem internen Speicher sind auch keine Hilfe. Außerdem wollte ich beim Drucker eine kleine Workstation haben, um zumindest den Drucker direkt vor Ort zu steuern.&lt;/p&gt;
&lt;p&gt;Passend hierbei ist der S740. IO ist ausreichend, viele Angebote kommen mit 4GB RAM und 16GB Speicher. Die CPU-Leistung reicht auch für das, was ich brauche.&lt;/p&gt;
&lt;p&gt;Ich habe den Futro beim 3D-Drucker platziert und mit einem Adapter einen alten Monitor, Maus und Tastatur angeschlossen.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-11-08-dritter-futro-s740/images/futro_2.jpg"
width="1243"
height="1500"
srcset="https://secretmine.de/blog/2025/2025-11-08-dritter-futro-s740/images/futro_2_hu_36f92512ff02af47.jpg 480w, https://secretmine.de/blog/2025/2025-11-08-dritter-futro-s740/images/futro_2_hu_41aaf1fb118c1ee7.jpg 1024w"
loading="lazy"
alt="Das fertige Setup"
class="gallery-image"
data-flex-grow="82"
data-flex-basis="198px"
&gt;&lt;/p&gt;
&lt;h2 id="software"&gt;Software
&lt;/h2&gt;&lt;p&gt;Installiert ist ein Debian (noch 12), mit XFCE als Desktop. Via Docker ist Octoprint drauf, zusätzlich auch go2rtc als Proxy für die IP-Kamera. Ansonsten ist eigentlich nur Firefox installiert, um auf Octoprint zuzugreifen. Viel mehr ist nicht installiert, da ich auch nicht mehr benötige.&lt;/p&gt;</description></item><item><title>Scriptausführung mit Healthchecks überwachen</title><link>https://secretmine.de/blog/2025/2025-10-31-scriptausfuehrung-mit-healthchecks-ueberwachen/</link><pubDate>Fri, 31 Oct 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-10-31-scriptausfuehrung-mit-healthchecks-ueberwachen/</guid><description>&lt;p&gt;Ich nutze für regelmäßige Backups von Daten (z.B. Nextcloud) ein kleines Script, das Restic verwendet. Ich hatte allerdings schon mehrfach den Fall, dass ein Backup nicht sauber durchlief und das Backup-Repository damit gesperrt war und weitere Backups fehlschlugen, was ich dann natürlich erst Wochen (okay, Monate) später bemerkt habe.&lt;/p&gt;
&lt;p&gt;Abhilfe schafft hier das Tool Healthchecks (&lt;a class="link" href="https://github.com/healthchecks/healthchecks%29" target="_blank" rel="noopener"
&gt;https://github.com/healthchecks/healthchecks)&lt;/a&gt;. Das funktioniert so, dass man Checks einrichtet und dafür eine Webhook-URL bekommt. In einem Script ruft man dann diese URL auf und setzt damit den Timer zurück. Sofern der Webhook nicht innerhalb der richtigen Zeit aufgerufen wird, wird ein Alert ausgelöst. Insgesamt also recht simpel.&lt;/p&gt;
&lt;h2 id="installation"&gt;Installation
&lt;/h2&gt;&lt;p&gt;Ich nutze hier, wie üblich, Docker. Hier meine &lt;code&gt;docker-compose.yml&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;services&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;healthchecks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;healthchecks/healthchecks:latest&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;container_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;healthchecks&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;DB=sqlite&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;DB_NAME=/data/hc.sqlite&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;DEBUG=False&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;DEFAULT_FROM_EMAIL=me@example.com&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;EMAIL_HOST=smtp.example.com&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;EMAIL_HOST_PASSWORD=MyMailPassword&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;EMAIL_HOST_USER=me@example.com&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;EMAIL_PORT=587&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;EMAIL_USE_TLS=True&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;SECRET_KEY=Hok4K0Va6EwaYltk4ah7muc223rUVmz3&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;SITE_ROOT=https://checks.example.com&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;DISCORD_CLIENT_ID=123123&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;DISCORD_CLIENT_SECRET=123123&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;REGISTRATION_OPEN=False&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="m"&gt;8000&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;8000&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;./data:/data&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;unless-stopped&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;REGISTRATION_OPEN&lt;/code&gt; muss initial auf &lt;code&gt;True&lt;/code&gt; gestellt werden, damit man sich selbst registrieren kann, danach sollte das allerdings wieder auf &lt;code&gt;False&lt;/code&gt; gesetzt werden, damit sich keine fremden User registrieren können. Ich habe hier direkt die Discord-Integration eingerichtet, damit ich auf dem Weg auch Notifications verschicken kann. Die beiden Variablen sind aber natürlich optional.&lt;/p&gt;
&lt;p&gt;Das Datenverzeichnis muss die richtigen Zugriffsrechte haben, damit der Container starten kann. Das geht schnell mittels&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir ./data
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chown -R 999:999 ./data
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Danach lässt sich der Stack mit &lt;code&gt;docker compose up -d&lt;/code&gt; starten und die Seite aufrufen. Dort kann man sich dann mit einer E-Mail-Adresse registrieren.&lt;/p&gt;
&lt;h2 id="einbindung-in-ein-script"&gt;Einbindung in ein Script
&lt;/h2&gt;&lt;p&gt;Um jetzt einen Check einzurichten, muss zuerst im Webinterface ein neuer Check erstellt werden. Dabei wird auch das normale Intervall (z.B. täglich) sowie eine Karenzzeit eingestellt.&lt;/p&gt;
&lt;p&gt;Nun wird eine Check-URL angezeigt, ich nehme hier &lt;code&gt;https://checks.example.com/ping/bla-bla-blub&lt;/code&gt; als Beispiel.&lt;/p&gt;
&lt;h3 id="simpler-check"&gt;Simpler Check
&lt;/h3&gt;&lt;p&gt;Für einen einfachen Check, ob das Script gelaufen ist, reicht es, einen Befehl wie z.B.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsS -m &lt;span class="m"&gt;10&lt;/span&gt; --retry &lt;span class="m"&gt;5&lt;/span&gt; https://checks.example.com/ping/bla-bla-blub
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;mit der Check-URL auszuführen. Der Befehl sollte im Script als letztes ausgeführt werden, damit er erst ausgeführt wird, wenn alles andere funktioniert hat.&lt;/p&gt;
&lt;h3 id="check-mit-laufzeitberechnung"&gt;Check mit Laufzeitberechnung
&lt;/h3&gt;&lt;p&gt;Healthchecks kann auch die Laufzeit eines Scripts mit prüfen. Dazu wird erst der Endpunkt &lt;code&gt;https://checks.example.com/ping/bla-bla-blub/start&lt;/code&gt; aufgerufen und nach Fertigstellung dann &lt;code&gt;https://checks.example.com/ping/bla-bla-blub&lt;/code&gt;. Hierbei sollte auch noch eine Request-ID mitgegeben werden, um die einzelnen Ausführungen voneinander unterscheiden zu können.&lt;/p&gt;
&lt;p&gt;Ich habe das bspw. so umgesetzt:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; -e
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;RID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;uuidgen&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;HEALTHCHECK_ID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;bla-bla-blub
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsS -m &lt;span class="m"&gt;10&lt;/span&gt; --retry &lt;span class="m"&gt;5&lt;/span&gt; https://checks.example.com/ping/&lt;span class="nv"&gt;$HEALTHCHECK_ID&lt;/span&gt;/start?rid&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$RID&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# do backup&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsS -m &lt;span class="m"&gt;10&lt;/span&gt; --retry &lt;span class="m"&gt;5&lt;/span&gt; https://checks.example.com/ping/&lt;span class="nv"&gt;$HEALTHCHECK_ID&lt;/span&gt;?rid&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$RID&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Nachdem das Script ausgeführt wurde, sieht das im Webinterface so aus:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-10-31-scriptausfuehrung-mit-healthchecks-ueberwachen/images/check.png"
width="1027"
height="573"
srcset="https://secretmine.de/blog/2025/2025-10-31-scriptausfuehrung-mit-healthchecks-ueberwachen/images/check_hu_87db15dc69e25b51.png 480w, https://secretmine.de/blog/2025/2025-10-31-scriptausfuehrung-mit-healthchecks-ueberwachen/images/check_hu_9a0b484430f1fd49.png 1024w"
loading="lazy"
alt="Ausgeführter Check"
class="gallery-image"
data-flex-grow="179"
data-flex-basis="430px"
&gt;&lt;/p&gt;
&lt;p&gt;Sollte ein Check nicht innerhalb der eingestellten Zeit aufgerufen werden, wird eine Notification ausgelöst. So sollte ich in Zukunft fehlschlagende Backups schneller bemerken.&lt;/p&gt;</description></item><item><title>Die Historie meines Labs (2016 bis Q3 2025)</title><link>https://secretmine.de/blog/2025/2025-10-22-homelab-historie/</link><pubDate>Wed, 22 Oct 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-10-22-homelab-historie/</guid><description>&lt;p&gt;Mein Homelab existiert seit 2016 - wenn man es als dauerhaften Betrieb von irgendwelchen Servern/Services zu Hause
definiert. Wenn die Definition auch nur temporär aktive Server beinhaltet, geht es sogar noch weiter zurück, wobei ich dann das
Jahr nicht einmal genau definieren kann. Mein Lab hat generell viele Iterationen durch, wobei das auch mehr ein kontinulierlicher Prozess ist. Ich habe hier einmal die bisherigen nennenswerten Iterationen einmal aufgelistet.&lt;/p&gt;
&lt;h2 id="vor-2016"&gt;Vor 2016
&lt;/h2&gt;&lt;p&gt;Ich habe auf einem alten Laptop erst versucht, mit ESXi herumzuspielen, dann aber festgestellt, dass die CPU noch keine Hardwarevirtualisierung kann. Daher habe ich dann Debian und openVZ installiert, um zumindest mit Containern arbeiten zu können. Das lief auch soweit brauchbar.&lt;/p&gt;
&lt;h2 id="2016---erste-richtige-anfänge"&gt;2016 - erste richtige Anfänge
&lt;/h2&gt;&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2016.jpg"
width="1500"
height="2000"
srcset="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2016_hu_8a9a0bce71d8b857.jpg 480w, https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2016_hu_fb88032e269b544.jpg 1024w"
loading="lazy"
alt="Lab 2016"
class="gallery-image"
data-flex-grow="75"
data-flex-basis="180px"
&gt;&lt;/p&gt;
&lt;p&gt;2016 habe ich bei meinen Eltern den ersten Server dauerhaft betrieben. Es war ein Server mit einem AMD Sempron 3850
(kleine CPU mit 4 Kernen von AMD, ziemlich leistungsschwach). Der Standort im Haus war nur über Powerline zu erreichen,
das hat mich aber damals nicht nennenswert gestört. Ich habe dort mit Proxmox verschiedene VMs betrieben, welche
Software genau in den VMs und Containern lief weiß ich gar nicht mehr so genau.&lt;/p&gt;
&lt;h2 id="2017"&gt;2017
&lt;/h2&gt;&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2017.jpg"
width="1546"
height="1500"
srcset="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2017_hu_bb61fdc82c616d0e.jpg 480w, https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2017_hu_8ffe30b9f8b770fd.jpg 1024w"
loading="lazy"
alt="Lab 2017"
class="gallery-image"
data-flex-grow="103"
data-flex-basis="247px"
&gt;&lt;/p&gt;
&lt;p&gt;Im Laufe des Jahres kamen dann zwei weitere Server dazu. Einerseits ein alter Dell Poweredge (mit einem Xeon X3220),
andererseits ein alter PC mit einem Core2Duo. Beide Maschinen liefen nicht dauerhaft, diese habe ich nur bei Bedarf mit
hochgefahren. Für den Dauerbetrieb wäre der Stromverbrauch viel zu hoch gewesen. Ich habe auch am Netzwerk Änderungen
vorgenommen, konkret den bisherigen 100M-Switch durch ein Gigabit-Fähiges Modell ausgetauscht.&lt;/p&gt;
&lt;h2 id="2018"&gt;2018
&lt;/h2&gt;&lt;p&gt;Hiervon habe ich leider kein Bild. Ich habe allerdings in meinem Zimmer im Studentenwohnheim hinter einem Regal einen kleinen Server betrieben. Dieser lief erst mit einem Intel Celeron G1820, dann habe ich via Ebay günstig ein Bundle mit einem Supermicro-Mainboard, einem Intel Xeon E3-1230v3 und 32GB ECC-RAM gekauft und in das Gehäuse gesetzt. Auf dem Server lief u.A. pfSense als Router, daneben noch diverse andere Services - auch hier habe ich leider keine Übersicht mehr, was das genau war. Irgendwann in dem Zeitraum habe ich auch eine einfache USV gekauft.&lt;/p&gt;
&lt;h2 id="2019"&gt;2019
&lt;/h2&gt;&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2019-1.jpg"
width="1500"
height="1644"
srcset="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2019-1_hu_3e73187ccd8d96a6.jpg 480w, https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2019-1_hu_1270c83379912b06.jpg 1024w"
loading="lazy"
alt="Lab 2019 - Server"
class="gallery-image"
data-flex-grow="91"
data-flex-basis="218px"
&gt;&lt;/p&gt;
&lt;p&gt;Nachdem ich umgezogen war, hatte ich etwas mehr Möglichkeiten, ab hier habe ich auch für meinen Strom dann vollkommen selbst bezahlt. Der Server ist in ein schickeres Gehäuse gewandert, im Rahmen von dem Umzug habe ich auch das NAS, das bis dahin bei meinen Eltern stand, mit in die Wohnung geholt. Das NAS dürfte zu dem Zeitpunkt noch einen AMD Sempron 3850 als CPU gehabt haben, auch das kann ich leider nicht mehr wirklich rekonstruieren.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2019-2.jpg"
width="3016"
height="2656"
srcset="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2019-2_hu_6fe5db14cd24d12d.jpg 480w, https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2019-2_hu_7c4cf7959f5a2ff0.jpg 1024w"
loading="lazy"
alt="Lab 2019 - Netzwerk"
class="gallery-image"
data-flex-grow="113"
data-flex-basis="272px"
&gt;&lt;/p&gt;
&lt;p&gt;Das Netzwerk habe ich beim Umzug auch vollkommen neu gestrickt. Zentrum war ab dann ein Unifi USG mit einem Unifi AP AC Lite (man sieht links den PoE-Injector) als Access Point. Der 8-Port-Switch war vorher schon im Einsatz. Als Modem kam vor dem USG eine ältere Fritzbox zum Einsatz, die ist auch bis heute noch aktiv. Heutzutage ist die allerdings nur noch Basisstation für ein Schnurlostelefon sowie einige Thermostate. Das USG habe ich nach dem nächsten Umzug (2022) verkauft.&lt;/p&gt;
&lt;h2 id="2020"&gt;2020
&lt;/h2&gt;&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2020.jpg"
width="1500"
height="2005"
srcset="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2020_hu_65c8c1e8da8f6457.jpg 480w, https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2020_hu_bd3bebb55e40c49c.jpg 1024w"
loading="lazy"
alt="Lab 2020"
class="gallery-image"
data-flex-grow="74"
data-flex-basis="179px"
&gt;&lt;/p&gt;
&lt;p&gt;Ich hatte den Plan, mir irgendwann mal ein Rack zuzulegen. Deswegen habe ich mehr oder weniger &amp;ldquo;einfach so&amp;rdquo; ein Rack-Gehäuse von Inter-Tech gekauft und den Server in dieses Case verschoben. Ich musste auch noch ein passendes Netzteil dazu kaufen, da die meisten ATX-Netzteile unten ansaugen und nach hinten rausblasen - von unten/oben Luft ansaugen geht bei so einem Case allerdings schlecht. Das Case habe ich auch bis heute, ein Rack bislang aber nicht. Vielleicht kommt das irgendwann dann doch noch mal&amp;hellip;&lt;/p&gt;
&lt;p&gt;Die USV ist auf dem Bild außer Betrieb, das habe ich irgendwann aus Stromgründen getan.&lt;/p&gt;
&lt;h2 id="2021"&gt;2021
&lt;/h2&gt;&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2021.jpg"
width="2664"
height="2000"
srcset="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2021_hu_1c3c6d4a43e2ab58.jpg 480w, https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2021_hu_486511971969014a.jpg 1024w"
loading="lazy"
alt="Lab 2021"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="319px"
&gt;&lt;/p&gt;
&lt;p&gt;Der Unterschied zu vorher ist kaum sichtbar, der Server steht nun allerdings auf Styropor und das NAS darauf. In dem weißen Kasten sind Module von Tinkerforge, der Temperatursensor hängt sichtbar vorne raus.&lt;/p&gt;
&lt;p&gt;Hier kann man auch sehen, dass im NAS irgendeine Intel-CPU arbeitet und den Sempron 3850 abgelöst hat. Welche das ist weiß ich nicht, entweder der Celeron G1820 oder ein Core i3 4130; wahrscheinlicher ist allerdings der Celeron.&lt;/p&gt;
&lt;p&gt;Das USG von Unifi ist hier auch schon nicht mehr in Betrieb, der Router ist nun ein Mikrotik hAP AC². Der Unif-Accesspoint dürfte allerdings zu dem Zeitpunkt noch aktiv gewesen sein, zumindest sehe ich auf dem Bild einen schwarzen Block hinten im Regal, der wahrscheinlich der PoE-Injektor ist. Später habe ich den Switch durch einen 24-Port-Switch von TP-Link getauscht, da ich mit 8 Ports nicht mehr hinkam. Ich habe nämlich immer mal wieder einen zweiten Server mit meiner alten Desktop-CPU (Intel Core i5 4440) betrieben, worauf dann mein Minecraft-Server lief. Zeitweise habe ich auch mit einem reinen SSD-NAS experimentiert - ein weiterer Tower.&lt;/p&gt;
&lt;h2 id="2022"&gt;2022
&lt;/h2&gt;&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2022.jpg"
width="2000"
height="2784"
srcset="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2022_hu_309fa705ca8f8aed.jpg 480w, https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2022_hu_149ef5619809655a.jpg 1024w"
loading="lazy"
alt="Lab 2022"
class="gallery-image"
data-flex-grow="71"
data-flex-basis="172px"
&gt;&lt;/p&gt;
&lt;p&gt;Ende 2022 bin ich erneut umgezogen, in dem Zuge habe ich das Lab wieder weiter verändert. Der dauerhaft laufende Server ist komplett entfallen und durch zwei Raspberry Pis ersetzt worden. Das Netzwerk hat sich auch stark geändert - Basis ist nun ein Mikrotik hAP AC2. Als Modem ist eine Vodafone Station sowie ein LTE-Router von TP-Link dazugekommen. Auch ein zweiter Switch ist neu.&lt;/p&gt;
&lt;p&gt;Das NAS sowie der Server auf Supermicro-Basis (zurück in einem Tower-Case) haben einen anderen Ort innerhalb vom Arbeitszimmer bekommen - die Bilder von 2023 zeigen das gut.&lt;/p&gt;
&lt;h2 id="2023"&gt;2023
&lt;/h2&gt;&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2023-1.jpg"
width="2000"
height="2762"
srcset="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2023-1_hu_9dd5b3c9930b20f1.jpg 480w, https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2023-1_hu_9dffc7087c67cf05.jpg 1024w"
loading="lazy"
alt="Lab 2023 - Produktivbereich"
class="gallery-image"
data-flex-grow="72"
data-flex-basis="173px"
&gt;&lt;/p&gt;
&lt;p&gt;Die Raspberry Pis waren dann schneller zu klein als gedacht - es musste wieder mehr Hardware her. Deshalb kam hier der erste Futro S740 dazu. Das Regal habe ich in dem Zuge auch gleich getauscht.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2023-2.jpg"
width="2000"
height="2569"
srcset="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2023-2_hu_b3451025aca51b9.jpg 480w, https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2023-2_hu_c1327d27f5d4cfe3.jpg 1024w"
loading="lazy"
alt="Lab 2023 - NAS und Lab-Bereich"
class="gallery-image"
data-flex-grow="77"
data-flex-basis="186px"
&gt;&lt;/p&gt;
&lt;p&gt;Der Server auf Supermicro-Basis ist wieder in ein normales Tower-Case gewandert und in einer anderen Ecke im Arbeitszimmer hinter einem Regal verschwunden (man sieht es hinten auf dem Bild). Das NAS steht auf dem genannten Regal. Das hing alles hinter einer WLAN-Steckdose, um den Standby-Verbrauch möglichst weit zu reduzieren.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/keller-2023.jpg"
width="2000"
height="1592"
srcset="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/keller-2023_hu_f68ea7a22cb0b1be.jpg 480w, https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/keller-2023_hu_304bfbb49f5e0eb1.jpg 1024w"
loading="lazy"
alt="Keller-Lab Ende 2023"
class="gallery-image"
data-flex-grow="125"
data-flex-basis="301px"
&gt;&lt;/p&gt;
&lt;p&gt;Später im Jahr habe ich dann den Supermicro-Server doch wieder in das Rack-Case umgebaut und zusammen mit dem großen Switch im Keller platziert. Die Anbindung vom Keller ging leider nur per Powerline, aber das lässt sich auch nicht ändern.&lt;/p&gt;
&lt;h2 id="2024"&gt;2024
&lt;/h2&gt;&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2024.jpg"
width="2000"
height="2667"
srcset="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2024_hu_3703b1cbfc0d7896.jpg 480w, https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2024_hu_a0d5916edccc36fa.jpg 1024w"
loading="lazy"
alt="Lab 2024"
class="gallery-image"
data-flex-grow="74"
data-flex-basis="179px"
&gt;&lt;/p&gt;
&lt;p&gt;Herbst 2024 kam der zweite Fujitsu Futro S740 und auch ein Lenovo Tinkcenter M715q Tiny dazu, auch habe ich den 5-Port-Switch durch einen 8-Port-Switch ausgetauscht, der neue Switch ist auch VLAN-fähig. Der Lüfter, der auf den Thin Clients liegt, ist auch neu - der war notwendig, da die SSDs bei beiden Thin Clients mit der Zeit zu warum wurden.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/keller-2024.jpg"
width="2000"
height="2007"
srcset="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/keller-2024_hu_6d1bd5cf42244b8e.jpg 480w, https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/keller-2024_hu_84907426e70a7205.jpg 1024w"
loading="lazy"
alt="Keller-Lab 2024"
class="gallery-image"
data-flex-grow="99"
data-flex-basis="239px"
&gt;&lt;/p&gt;
&lt;p&gt;Im Keller ist der HP-Server dazugekommen, auch ein zweiter Thin-Client (Futro S520) ist hier neu. Der Keller hat zwischenzeitlich auch einen eigenen Mikrotik hAP AC2 bekommen, damit ich Routen via BGP austauschen kann, WLAN im Keller habe und die Netze zwecks Reduzierung von Broadcast auch soweit getrennt laufen.&lt;/p&gt;
&lt;h2 id="2025"&gt;2025
&lt;/h2&gt;&lt;p&gt;Anfang des Jahres sind einige Hardware-Upgrades passiert, aber wenig sichtbares. Im Sommer habe ich allerdings beschlossen, mir ein 10-Zoll-Rack zu bauen. Die Rahmen sind mit dem 3D-Drucker gedruckt, die Schienen zum Festschrauben als fertige Teile gekauft.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2025-1.jpg"
width="1500"
height="2537"
srcset="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2025-1_hu_4afcbb138627fb2a.jpg 480w, https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2025-1_hu_c9ba2d5b640607f1.jpg 1024w"
loading="lazy"
alt="Lab 2025"
class="gallery-image"
data-flex-grow="59"
data-flex-basis="141px"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2025-2.jpg"
width="1500"
height="1799"
srcset="https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2025-2_hu_20e5599c1cbe7a9c.jpg 480w, https://secretmine.de/blog/2025/2025-10-22-homelab-historie/images/lab-2025-2_hu_eefaa90d2704da4e.jpg 1024w"
loading="lazy"
alt="Lab 2025"
class="gallery-image"
data-flex-grow="83"
data-flex-basis="200px"
&gt;&lt;/p&gt;
&lt;h2 id="was-geplant-ist"&gt;Was geplant ist
&lt;/h2&gt;&lt;p&gt;&amp;hellip;das ist eine gute Frage. Gerade wenig konkretes. Ich habe viele Ideen, aber was davon ich wann umsetze, weiß ich tatsächlich nicht. Der Router ist für manches zu schwach (und hat auch wenig Speicher), ein Switch mit PoE wäre schön (damit der Injektor wegfällt), mehr Mini-PCs statt Thin-Clients wären eine Idee, ein NAS für VMs und co wäre cool, ein Server mit GPU fände ich auch nett&amp;hellip;&lt;/p&gt;
&lt;p&gt;Als nächstes wird vielleicht einer der Thin Clients noch gegen einen Mini-PC getauscht. Ich habe mittlerweile teilweise zu wenig RAM, vor allem wenn gerade ein LLM aktiv ist. Welche und wofür ich LLMs nutze, schreibe ich vielleicht irgendwann auch mal auf.&lt;/p&gt;</description></item><item><title>Proxmox Backup Server 4 mit S3 Storage - diesmal in Richtig</title><link>https://secretmine.de/blog/2025/2025-09-25-proxmox-backup-server-via-s3-in-richtig/</link><pubDate>Thu, 25 Sep 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-09-25-proxmox-backup-server-via-s3-in-richtig/</guid><description>&lt;p&gt;Proxmox Backup Server 4 hat eine erste tech preview für S3-Speicher mit drin, um offsite Backups zu speichern. Das ist durch die Deduplizierung und Komprimierung ideal, um günstig Backups zu machen. Als S3-Provider nutze ich Backblaze B2, da der Storage hier recht günstig ist (okay, ich hab auch einfach schon einen Account da). Die Backups werden auch lokal zwischengespeichert, es bedeutet also einiges an Schreibvorgängen auf der SSD/HDD.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Achtung!&lt;/strong&gt; Das ganze ist noch im Preview-Stadium und ist mit Vorsicht zu genießen!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="bucket-erstellen"&gt;Bucket erstellen
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Im Backblaze B2 Webinterface einen neuen Bucket anlegen.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bucket-Name: &lt;strong&gt;lowercase&lt;/strong&gt; (z. B. &lt;code&gt;pbsoffsite&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Endpunkt notieren, z. B.: &lt;code&gt;s3.eu-central-002.backblazeb2.com&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Lifecycle-Einstellungen&lt;/strong&gt; für den Bucket setzen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Nur die letzte Version der Datei aufbewahren&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="application-keys-erstellen"&gt;Application Keys erstellen
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Im Menü &lt;code&gt;Application Keys&lt;/code&gt; → &lt;code&gt;Add New&lt;/code&gt; wählen.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Namen definieren, z. B.: &lt;code&gt;PBSOffsiteKey&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Im Feld &lt;code&gt;Allow access to Bucket(s)&lt;/code&gt; den eben erstellten Bucket auswählen.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Haken setzen bei &lt;code&gt;Allow List All Bucket Names&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Die Ausgabe enthält die benötigten Werte:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;keyID: keyIDblablablub
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;applicationKey: blablablub
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="s3-endpoint-im-pbs-hinzufügen"&gt;S3 Endpoint im PBS hinzufügen
&lt;/h3&gt;&lt;p&gt;Im PBS-Webinterface einen S3-Endpoint hinzufügen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ID: bspw. &lt;code&gt;backblaze&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Endpoint: ``{{bucket}}.s3.{{region}}.backblazeb2.com`&lt;/li&gt;
&lt;li&gt;Region aus dem Endpunkt ableiten, z. B. &lt;code&gt;eu-central-002&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Access Key (&lt;code&gt;keyID&lt;/code&gt;) und Secret Key (&lt;code&gt;applicationKey&lt;/code&gt;) eintragen&lt;/li&gt;
&lt;li&gt;Advanced → Provider Quirks: &lt;code&gt;Skip If-None-Match header&lt;/code&gt; aktivieren&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="cache-verzeichnis-erstellen"&gt;Cache-Verzeichnis erstellen
&lt;/h3&gt;&lt;p&gt;Die Doku empfiehlt hier 64-128GB Speicher. Ich nutze LVM-Thin und habe dementsprechend auf dem Host ein neues Volume erstellt und gemountet. Das Anlegen eines neuen logischen Volumes bei LVM geht mit folgendem Befehl:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;lvcreate -V 100G -T vg-data/thinpool -n pbs-s3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Gemountet habe ich das unter &lt;code&gt;/mnt/pbs-s3&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="datastore-hinzufügen"&gt;Datastore hinzufügen
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Name: &lt;code&gt;backblaze&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Local Cache: &lt;code&gt;/mnt/pbs-s3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;S3 Endpoint ID: passenden Endpoint auswählen&lt;/li&gt;
&lt;li&gt;Bucket: den angelegten Bucket auswählen. Wenn hier nichts auftaucht oder ein Fehler erscheint, stimmt was mit den Zugangsdaten nicht oder der Bucketname ist z.B. nicht kleingeschrieben.&lt;/li&gt;
&lt;li&gt;Prune Options: &lt;em&gt;nach Bedarf konfigurieren&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="datastore-nutzen"&gt;Datastore nutzen
&lt;/h3&gt;&lt;p&gt;Ich habe nun also in Proxmox einen zweiten Proxmox Backup Server als Storage eingefügt und einen zweiten Backup-Job mit dem Offsite-Storage und nur den wichtigsten Containern und VMs angelegt. Ich lasse das aktuell erstmal nur mit eher kleinen Backups laufen, bis ich ein Gefühl dafür bekommen habe, was mich das dann am Ende so kostet. Irgendwann wird dementsprechend ein Update-Post folgen.&lt;/p&gt;
&lt;p&gt;Ein Restore-Test steht auch noch aus&amp;hellip;&lt;/p&gt;</description></item><item><title>PlankaPrinter - oder auch: Ich habe mir einen Bondrucker gekauft</title><link>https://secretmine.de/blog/2025/2025-09-20-plankaprinter-bondrucker/</link><pubDate>Sat, 20 Sep 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-09-20-plankaprinter-bondrucker/</guid><description>&lt;p&gt;Ich neige manchmal dazu, unkonventionelle Ideen zu haben und diese auch umzusetzen. In diesem Fall ist die Idee nicht komplett von mir, es passt trotzdem gut ins Bild.&lt;/p&gt;
&lt;p&gt;Aber der Reihe nach.&lt;/p&gt;
&lt;h2 id="die-idee"&gt;Die Idee
&lt;/h2&gt;&lt;p&gt;Ich habe bisher eine normale ToDo-App benutzt, aber das Problem, dass ich da wenig drauf schaue und daher auch eher wenig abarbeite. Durch Zufalll bin ich im Internet auf ein Video gestoßen, wo jemand einen Kassenbondrucker für ToDo-Tickets in Verbindung mit einer Pinnwand nutzt, um die zu erledigenden Aufgaben nicht aus dem Auge zu verlieren (wortwörtlich in dem Fall). Ich fand das so gut, dass ich recht schnell bei eBay unterwegs war und auch ein passendes Angebot gefunden hab, auch die Pläne für eine Software hatte ich ziemlich schnell im Kopf.&lt;/p&gt;
&lt;h2 id="der-drucker"&gt;Der Drucker
&lt;/h2&gt;&lt;p&gt;Ich habe mich umgeschaut, was es an Druckern gibt. Bei Kassen sind Geräte von Epson recht weit verbreitet, dementsprechend gibt es hier auch einen guten Gebrauchtmarkt. Ich wollte ein Gerät haben, was halbwegs aktuell ist und auch ans Netzwerk angebunden werden kann (ob LAN oder WLAN war mir egal). Auch musste es von gängigen Bibliotheken für Python (bei mir &lt;code&gt;python-escpos&lt;/code&gt; - auch wenn es für dieses spezielle Modell keinen direkten Support gibt; vergleichbare Modelle werden aber unterstützt und andere Profile (ich nutze &lt;code&gt;TM-T20II&lt;/code&gt;) funktionieren fehlerfrei).&lt;/p&gt;
&lt;p&gt;Gefunden habe ich einen Epson TM-m30II-S. Das ist ein Kassendrucker, der für den Einsatz bei Tabletkassen vorgesehen ist und dementsprechend auf der Oberseite auch eine Halterung für Tablets hat. Die Halterung brauche ich zwar nicht, aber das Angebot war wirklich gut (um die 25€ für ein Gerät in ordentlichem Zustand). Ich hab den dann auch bestellt.&lt;/p&gt;
&lt;p&gt;Der Drucker war ein wenig staubig, aber ansonsten einwandfrei. Die &amp;ldquo;Abnutzung&amp;rdquo; (also gedruckte Kilometer und Schnittvorgänge) passten zwar nicht zu den Verkäuferangaben, waren aber trotzdem brauchbar - der Käufer hatte angegeben, dass das Gerät keine 5 Bonrollen gedruckt hat, mit 80m-Rollen waren das allerdings eher 35 Rollen. Und knapp 10000 Schnitte. Beides sind aber trotzdem Werte, die vollkommen im Rahmen liegen dürften und eher geringe Nutzung sein dürften. Ich will nicht wissen, wie viele Rollen und Schnitte ein Drucker in einem gut besuchten Supermarkt an der Kasse so auf dem Zähler haben&amp;hellip;&lt;/p&gt;
&lt;p&gt;An Schnittstellen hat dieses Modell USB, LAN und Bluetooth direkt an Board, über ein (teures) Dongle lässt sich theoretisch auch WLAN nachrüsten. Mir genügt LAN vollkommen bzw. es ist sogar meine bevorzugte Anschlussmethode.&lt;/p&gt;
&lt;h2 id="die-software"&gt;Die Software
&lt;/h2&gt;&lt;h3 id="planka"&gt;Planka
&lt;/h3&gt;&lt;p&gt;Ich habe mich dazu entschlossen, für die Software keine reine ToDo-Liste, sondern ein Kanban-Board zu nutzen. Die Wahl fiel hierbei auf Planka, da es Open Source ist, OIDC enthalten ist und die API gut beschrieben ist und gute Bibliotheken für Python existieren.&lt;/p&gt;
&lt;p&gt;Planka läuft einfach als Docker, der User für den API-Zugriff ist ein normaler, lokaler Benutzer. Ansonsten hat das Board folgende Spalten:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Irgendwann&lt;/strong&gt;: Für ToDo-Einträge, die noch nicht zu erledigen sind, aber irgendwann gemacht werden sollten/müssen&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zeitnahe&lt;/strong&gt;: ToDos, die grob in den nächsten 1-2 Wochen zu erledigen sind&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Morgen&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Heute&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;In Arbeit&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blocked&lt;/strong&gt;: Aufgaben, die angefangen oder noch anzufangen sind, die aber noch nicht gemach twerden können. Beispielsweise, wenn noch andere Dinge zu erledigen sind, Teile fehlen oder ich auf Dinge warten muss.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Done&lt;/strong&gt;: Fertige Aufgaben von heute&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Archiv&lt;/strong&gt;: Ältere fertige Aufgaben&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="plankaprinter"&gt;PlankaPrinter
&lt;/h3&gt;&lt;p&gt;Mein Python-Script sortiert täglich die Tickets. Dabei werden Tickets von Morgen nach Heute verschoben, Termine von Google importiert und in die passenden Spalten (Heute bzw. Morgen) verschoben, Aufgaben mit Zieldatum werden auch automatisch in die passende Spalte verschoben. Alles von Done wird dabei auch ins Archiv verschoben.&lt;/p&gt;
&lt;h4 id="termine"&gt;Termine
&lt;/h4&gt;&lt;p&gt;Ich importiere meine Kalender via ICS-URLs, mit einer passenden Library werden auch wiederkehrende Termine korrekt ausgewertet. Termine haben dabei ein eigenes Tag, um sie in der Übersicht direkt erkennen zu können.&lt;/p&gt;
&lt;h4 id="drucken"&gt;Drucken
&lt;/h4&gt;&lt;p&gt;Die Tickets, die heute zu erledigen sind und noch nicht gedruckt sind, werden an den Drucker geschickt. Bereits gedruckte Aufgaben haben ein &lt;code&gt;Printed&lt;/code&gt;-Tag.&lt;/p&gt;
&lt;h4 id="aufwandsschätzungen"&gt;Aufwandsschätzungen
&lt;/h4&gt;&lt;p&gt;Ich habe mir Tags mit geschätzten Zeitaufwänden (XS bis XL) erstellt. Der Tickettitel und die Beschreibung werden an ein lokal betriebenes LLM (konkret &lt;code&gt;gemma3n&lt;/code&gt;) geschickt und von diesem der Aufwand geschätzt. Die Schätzungen sind nicht perfekt, aber gehen meistens zumindest in die richtige Richtung. Braucht man wahrscheinlich nicht wirklich, aber ist ein cooles Zusatzfeature.&lt;/p&gt;
&lt;h4 id="homeassistant-integration"&gt;HomeAssistant-Integration
&lt;/h4&gt;&lt;p&gt;Die Aktionen (täglicher Durchlauf mit Import, Sortieren und co sowie das Drucken von den Tickets) werden via MQTT von HomeAssistant aus getriggert, damit dies in Abhängigkeit von meiner Anwesenheit zuhause und auch der Tageszeit passieren kann. Via MQTT lassen sich auch direkt Dinge mit Titel und Nachricht drucken, das nutze ich bisher allerdings noch nicht.&lt;/p&gt;
&lt;h4 id="sonstige-features"&gt;Sonstige Features
&lt;/h4&gt;&lt;p&gt;Ich habe ein kleines Script gebaut, was Bilder ausdrucken kann. Sehr simpel, aber funktioniert. Das muss allerdings noch irgendwie an den Rest mit angebunden werden, da das bisher nur ein eigenständiges Python-Script ist.&lt;/p&gt;
&lt;h2 id="mein-aufbau"&gt;Mein Aufbau
&lt;/h2&gt;&lt;p&gt;Ich habe den Drucker in einem Regal stehen, daneben dann ein Glas für die fertigen Aufgaben und oben drauf die Pinnwand für die aktuellen Aufgaben.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-09-20-plankaprinter-bondrucker/images/setup.jpg"
width="2000"
height="2650"
srcset="https://secretmine.de/blog/2025/2025-09-20-plankaprinter-bondrucker/images/setup_hu_44d7274f8d0961ac.jpg 480w, https://secretmine.de/blog/2025/2025-09-20-plankaprinter-bondrucker/images/setup_hu_63a13ddb69e95d41.jpg 1024w"
loading="lazy"
alt="Der Gesamtaufbau"
class="gallery-image"
data-flex-grow="75"
data-flex-basis="181px"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-09-20-plankaprinter-bondrucker/images/printer.jpg"
width="2356"
height="2000"
srcset="https://secretmine.de/blog/2025/2025-09-20-plankaprinter-bondrucker/images/printer_hu_752f11fcf1426e4c.jpg 480w, https://secretmine.de/blog/2025/2025-09-20-plankaprinter-bondrucker/images/printer_hu_40cc77293dced775.jpg 1024w"
loading="lazy"
alt="Der Epson TM-m30II-S mit dem Glas für erledigte Aufgaben"
class="gallery-image"
data-flex-grow="117"
data-flex-basis="282px"
&gt;&lt;/p&gt;
&lt;p&gt;Um die Pinnadeln aufzubewahren, habe ich für die Tablethalterung eine kleine Schlade zum darüberstecken designed und gedruckt. Damit sieht man auch die offenen Metallflächen für die Halterung nicht mehr, was nebenbei auch noch schicker ist.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-09-20-plankaprinter-bondrucker/images/printer_bin.jpg"
width="2667"
height="2000"
srcset="https://secretmine.de/blog/2025/2025-09-20-plankaprinter-bondrucker/images/printer_bin_hu_24e1f1cc505a82ad.jpg 480w, https://secretmine.de/blog/2025/2025-09-20-plankaprinter-bondrucker/images/printer_bin_hu_1eb1121b1ce7bc5d.jpg 1024w"
loading="lazy"
alt="Fach für Pinnadeln"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="320px"
&gt;&lt;/p&gt;
&lt;p&gt;Der Drucker hängt per LAN am Netzwerk und läuft durchgängig. Der Stromverbrauch liegt tatsächlich nur bei etwas über 1 Watt, also nur etwas mehr als eine WLAN-Steckdose braucht; es lohnt sich also gar nicht, den Drucker abzuschalten bzw. über eine WLAN-Steckdose steuerbar zu machen.&lt;/p&gt;
&lt;h2 id="wie-es-weitergeht"&gt;Wie es weitergeht
&lt;/h2&gt;&lt;p&gt;Ich bin aktuell noch dabei, diverse kleinere Bugs zu beheben, dazu gehört beispielsweise das Erzeugen von neuen Tickets für wiederkehrende Termine - bisher verschiebt die Software dann das bestehende Ticket vom Archiv wieder auf Heute, behält dabei aber das &lt;code&gt;Printed&lt;/code&gt;-Tag bei&amp;hellip; Ansonsten läuft das meiste ziemlich gut, nur den Code könnte ich noch etwas aufräumen.&lt;/p&gt;
&lt;p&gt;Dokumentieren muss ich hier auch noch viel. Aber wer hat auf Doku schon Lust?&lt;/p&gt;
&lt;p&gt;Am Ende soll PlankaPrinter &lt;em&gt;irgendwann&lt;/em&gt; auch Open Source werden, damit andere sich hier etwas abschauen können oder die Software direkt so einsetzen können.&lt;/p&gt;</description></item><item><title>Fritz!Box in HomeAssistant via WAN einbinden</title><link>https://secretmine.de/blog/2025/2025-09-14-fritzbox-homeassistant-via-wan/</link><pubDate>Sun, 14 Sep 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-09-14-fritzbox-homeassistant-via-wan/</guid><description>&lt;p&gt;Ich habe eine alte Fritz!Box 7360, die als DECT-Basisstation für ein schnurloses Telefon sowie vier Thermostate dient. Die Fritz!Box ist bei mir außerdem nicht als Router im Einsatz, was den Zugriff via HomeAssistant erschwert.&lt;/p&gt;
&lt;h2 id="zugriff-via-wan-erlauben"&gt;Zugriff via WAN erlauben
&lt;/h2&gt;&lt;p&gt;Die Fritzbox hängt normal hinter meinem eigentlichen Router und ist dabei so konfiguriert, dass der Internetzugang über LAN1 erfolgt. Standardmäßig ist allerdings das Interface der Fritz!Box nur vom LAN der Fritz!Box erreichbar, also nicht von meinen normalen Netzwerken aus. Dafür gibt es in den Einstellungen (bei mir unter Internet -&amp;gt; Freigaben im Tab &amp;ldquo;Fritz!Box-Dienste&amp;rdquo;) eine möglichkeit, den Zugang zur Fritz!Box-Overfläche via HTTPS aus dem Internet zu erlauben.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-09-14-fritzbox-homeassistant-via-wan/images/fritz-allow-wan.png"
width="1057"
height="362"
srcset="https://secretmine.de/blog/2025/2025-09-14-fritzbox-homeassistant-via-wan/images/fritz-allow-wan_hu_d476bb39186a51a8.png 480w, https://secretmine.de/blog/2025/2025-09-14-fritzbox-homeassistant-via-wan/images/fritz-allow-wan_hu_dd32069cd7f8490.png 1024w"
loading="lazy"
alt="Fritz!Box Einstellungen für Zugriff auf die Oberfläche via WAN"
class="gallery-image"
data-flex-grow="291"
data-flex-basis="700px"
&gt;&lt;/p&gt;
&lt;h2 id="caddy-als-proxy-zur-umgehung-vom-zertifikatsfehler"&gt;Caddy als Proxy zur Umgehung vom Zertifikatsfehler
&lt;/h2&gt;&lt;p&gt;Die Fritz!Box erlaubt den Zugriff auf die Oberfläche vom Internet aus nur via HTTPS. Das ist ein Problem, weil hierbei natürlich ein selbst signiertes Zertifikat zum Einsatz kommt, was HomeAssistant nicht validieren kann. Um das Problem zum umgehen, habe ich Caddy als Reverse-Proxy eingesetzt, der dann die Fritz!Box via HTTP erreichbar macht und das nicht signierte Zertifikat ignoriert.&lt;/p&gt;
&lt;p&gt;Dazu habe ich einfach das Addon &amp;ldquo;Caddy 2&amp;rdquo; installiert und in der Config (ich nutze für den Zugriff auf die Configs das Addon &amp;ldquo;Samba share&amp;rdquo;, um via Netzlaufwerk auf die Dateien zuzugreifen) dann folgendes eingetragen:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;:8400 {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; reverse_proxy {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; to https://192.168.176.4
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; transport http {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; tls_insecure_skip_verify
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Angepasst werden muss hierbei nur die Ziel-IP und vielleicht noch der Listening-Port. Mit der Einstellung &lt;code&gt;tls_insecure_skip_verify&lt;/code&gt; wird das Zertifikat vom Ziel nicht geprüft - genau das, was wir erreichen wollen.&lt;/p&gt;
&lt;p&gt;Nach einem Neustart von Caddy sollte die Fritz!Box-Oberfläche nun unter &lt;code&gt;http://homeassistant:8400&lt;/code&gt; erreichbar sein.&lt;/p&gt;
&lt;h2 id="konfiguration-homeassistant"&gt;Konfiguration HomeAssistant
&lt;/h2&gt;&lt;p&gt;Nun kann ganz normal die Integration &amp;ldquo;AVM FRITZ!SmartHome&amp;rdquo; genutzt werden, als Host wird jetzt die IP von HomeAssistant mit HTTP und dem Port 8400 eingetragen. Damit greift HomeAssistant via Caddy auf die Fritz!Box zu und sollte keine Fehler werfen.&lt;/p&gt;
&lt;p&gt;Das Setup ist bei mir nun seit 2-3 Jahren genau so im Einsatz und funktioniert absolut problemlos.&lt;/p&gt;</description></item><item><title>Lokaler APT-Cache mit Apt-Cacher NG</title><link>https://secretmine.de/blog/2025/2025-09-08-lokaler-apt-cache-mit-apt-cacher-ng/</link><pubDate>Mon, 08 Sep 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-09-08-lokaler-apt-cache-mit-apt-cacher-ng/</guid><description>&lt;p&gt;Caching ist ein alter Hut - früher vor allem genutzt, um bei vielen Clients hinter einem Internetanschluss Assets wie Bilder und Videos möglichst nur einmal herunterzuladen und dann bei weiteren Aufrufen das Bild aus dem Cache auszuliefern. Kurz gesagt, um Bandbreite zu sparen bzw. die Auslieferung von Daten an mehrere Clients zu beschleunigen.&lt;/p&gt;
&lt;p&gt;Das Ganze lässt sich auch für APT (den Paketmanager, den bspw. Debian und Ubuntu einsetzen) umsetzen - das ist tatsächlich auch einer der Gründe, warum APT-Repos heutzutage immer noch meistens via &lt;code&gt;http&lt;/code&gt; und nicht &lt;code&gt;https&lt;/code&gt; ausgeliefert werden. Mit &lt;code&gt;https&lt;/code&gt; kommt Verschlüsselung dazu, was Caching ungemein erschwert.&lt;/p&gt;
&lt;h2 id="was-bringt-das"&gt;Was bringt das?
&lt;/h2&gt;&lt;p&gt;Ich habe bekanntlich mehrere physische Server sowie irgendwas um die 30-40 virtuellen Server (sowohl virtuelle Maschinen als auch containerbasiert, z. B. LXC), die regelmäßig mit Updates versorgt werden wollen. Bisher hat sich dann jeder Server seine Pakete direkt aus dem Internet gezogen, was natürlich für eine gute Menge an Traffic gesorgt hat. Mit einem Cache lädt jeweils nur der erste Server ein bestimmtes Paket durch den Cache aus dem Internet herunter, die anderen Server ziehen sich das Paket dann vom Cache. Der Cache funktioniert dabei als Proxy, bis auf die Einstellungen für den Proxy muss bei APT nichts angepasst werden. Der Cache spart bei mir primär ein wenig Zeit, da vor allem bei größeren Paketen dann alle weiteren Server mit Geschwindigkeiten nahe an 1 GBit/s die Pakete herunterladen können.&lt;/p&gt;
&lt;h2 id="automatische-nutzung-mittels-auto-apt-proxy"&gt;Automatische Nutzung mittels auto-apt-proxy
&lt;/h2&gt;&lt;p&gt;Es gibt für Debian und Ubuntu (und diverse weitere Distros) das Tool &lt;code&gt;auto-apt-proxy&lt;/code&gt; (Paketname ist identisch). Damit lässt sich ein Apt-Proxy (was der Cache ja auch ist) im Netzwerk automatisch erkennen und nutzen. Ich habe die dafür notwendigen DNS-Einträge lokal hinzugefügt und via Ansible das Paket auf allen Servern installiert, damit nutzt jeder Server direkt den Proxy, ohne weitere manuelle Einstellungen vornehmen zu müssen. Neben DNS gibt es allerdings auch andere Methoden, um &lt;code&gt;auto-apt-proxy&lt;/code&gt; den korrenten Proxy zu signalisieren.&lt;/p&gt;
&lt;h2 id="wie-viel-bringt-das"&gt;Wie viel bringt das?
&lt;/h2&gt;&lt;p&gt;Apt-Cacher NG hat eine Statistikseite (&lt;code&gt;http://ip-vom-cache:3142/acng-report.html&lt;/code&gt;), die einige Einblicke in den Cache erlauben. Ich erreiche insgesamt eine Bandbreitenersparnis von über 70%, das kann sich schon sehen lassen. Hier einmal die Details:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-09-08-lokaler-apt-cache-mit-apt-cacher-ng/images/stats.png"
width="681"
height="311"
srcset="https://secretmine.de/blog/2025/2025-09-08-lokaler-apt-cache-mit-apt-cacher-ng/images/stats_hu_913cfa560c0de6c.png 480w, https://secretmine.de/blog/2025/2025-09-08-lokaler-apt-cache-mit-apt-cacher-ng/images/stats_hu_ec55f22da8ed4398.png 1024w"
loading="lazy"
alt="Apt-Cacher NG Statistiken"
class="gallery-image"
data-flex-grow="218"
data-flex-basis="525px"
&gt;&lt;/p&gt;
&lt;h2 id="meine-config"&gt;Meine Config
&lt;/h2&gt;&lt;p&gt;Die Datei befindet sich unter &lt;code&gt;/etc/apt-cacher-ng/acng.conf&lt;/code&gt;. Relevant ist vor allem das &lt;code&gt;CacheDir&lt;/code&gt;, darin werden die zwischengespeicherten Pakete abgelegt.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;CacheDir&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mnt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;cacher&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;ng&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;LogDir&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nb"&gt;log&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;cacher&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;ng&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;SupportDir&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;cacher&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;ng&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Remap&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;debrep&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;deb_mirror&lt;/span&gt;&lt;span class="o"&gt;*.&lt;/span&gt;&lt;span class="n"&gt;gz&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;debian&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;backends_debian&lt;/span&gt; &lt;span class="c1"&gt;# Debian Archives&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Remap&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;uburep&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;ubuntu_mirrors&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ubuntu&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;backends_ubuntu&lt;/span&gt; &lt;span class="c1"&gt;# Ubuntu Archives&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Remap&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;klxrep&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;kali_mirrors&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;kali&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;backends_kali&lt;/span&gt; &lt;span class="c1"&gt;# Kali Linux Archives&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Remap&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;cygwin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;cygwin_mirrors&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;cygwin&lt;/span&gt; &lt;span class="c1"&gt;# ; file:backends_cygwin # incomplete, please create this file or specify preferred mirrors here&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Remap&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;sfnet&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;sfnet_mirrors&lt;/span&gt; &lt;span class="c1"&gt;# ; file:backends_sfnet # incomplete, please create this file or specify preferred mirrors here&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Remap&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;alxrep&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;archlx_mirrors&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;archlinux&lt;/span&gt; &lt;span class="c1"&gt;# ; file:backend_archlx # Arch Linux&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Remap&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;fedora&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;fedora_mirrors&lt;/span&gt; &lt;span class="c1"&gt;# Fedora Linux&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Remap&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;epel&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;epel_mirrors&lt;/span&gt; &lt;span class="c1"&gt;# Fedora EPEL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Remap&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;slrep&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;sl_mirrors&lt;/span&gt; &lt;span class="c1"&gt;# Scientific Linux&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Remap&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;gentoo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;gentoo_mirrors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gz&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;gentoo&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;backends_gentoo&lt;/span&gt; &lt;span class="c1"&gt;# Gentoo Archives&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;debian&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;security&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;deb&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;debian&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;org&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;debian&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;security&lt;/span&gt; &lt;span class="n"&gt;security&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;debian&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;org&lt;/span&gt; &lt;span class="n"&gt;cdn&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;fastly&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;deb&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;debian&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;org&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;debian&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;security&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;ReportPage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;acng&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;report&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;html&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;ExThreshold&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;FollowIndexFileRemoval&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;LocalDirs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;acng&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;doc&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;share&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;doc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;cacher&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;ng&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;AllowUserPorts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt; &lt;span class="mi"&gt;443&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;PassThroughPattern&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;.*&lt;/span&gt; &lt;span class="c1"&gt;# this would allow CONNECT to everything&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Das meiste davon ist Standard, ich habe vor allem PassThroughPattern ergänzt, damit auch Fremd-Repos mit https, die ja nicht ohne weiteres gecached werden können, weiterhin funktionieren. Was die Optionen konkret machen ist in der Default-Config gut erklärt. Wenn man mehrere Apt-Cacher-NG hintereinander schalten möchte (ich habe einen zweiten im Keller) sollte noch folgende Option gesetzt werden:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;VfileUseRangeOps: 0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Stromverbrauch im Homelab optimieren</title><link>https://secretmine.de/blog/2025/2025-08-16-stromverbrauch-optimieren/</link><pubDate>Sat, 16 Aug 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-08-16-stromverbrauch-optimieren/</guid><description>&lt;p&gt;Ich achte bekanntlich stark darauf, den Stromverbrauch meines Homelabs im Idle-Zustand möglichst gering zu halten. Ich möchte hier einmal sammeln, worauf ich dabei achte und wie ich meine Hardware auswähle. Alles sind Tipps und nicht unbedingt allgemeingültig.&lt;/p&gt;
&lt;h2 id="monitoring"&gt;Monitoring
&lt;/h2&gt;&lt;p&gt;Der Stromverbrauch sollte mit z.B. einem Smart Plug überwacht werden, das ermöglicht auch das Erkennen von unerwarteten Erhöhungen
Bisher messe ich den Stromverbrauch für das gesamte Lab, schöner wäre hier der Verbrauch pro Gerät. Dann könnte man z.B. anhand der CPU-Last sogar grob den Stromverbrauch pro Dienst berechnen. Ob ich das umsetze, weiß ich allerdings noch nicht, da jede weitere WLAN-Steckdose den Gesamtverbrauch wieder um ~1 Watt erhöht.&lt;/p&gt;
&lt;h2 id="hardware"&gt;Hardware
&lt;/h2&gt;&lt;p&gt;Bevor zum Energie einsparen zusätzliche Hardware angeschafft werden soll, sollte man immer prüfen, ob sich die Stromersparnis im Vergleich zu den Anschaffungskosten überhaupt rechnet. Es kann sich auch lohnen, nicht ganz topaktuelle Hardware für deutlich weniger Geld zu kaufen. Bei einer Nutzungsdauer von x Jahren kann neuere Hardware durch den höheren Preis schnell mal die Stromersparnisse komplett aufheben bzw. auch übertreffen.&lt;/p&gt;
&lt;h3 id="weniger-ist-mehr"&gt;Weniger ist mehr
&lt;/h3&gt;&lt;p&gt;Jedes zusätzliche Gerät - also sowohl größere Geräte wie Router/Switch/Mini-PC als auch kleinere Geräte wie SSDs/HDDs - verbraucht Strom. Bei einem einzelnen RAM-Riegel oder einer NVMe-SSD ist der Unterschied marginal, bei einer HDD können das aber schnell mehrere Watt werden. Sofern hier z.B. mehrere HDDs zwecks Redundanz oder Kapazität benötigt werden, könnte man entweder möglichst große HDDs verwenden (um die Anzahl zu reduzieren), auf SSDs umsteigen oder z.B. ein externes NAS, das meistens im Standby ist, benutzen.&lt;/p&gt;
&lt;p&gt;Auch ist es häufig besser, einen stärkeren Mini-PC als mehrere schwächere zu nutzen, das reduziert den &amp;ldquo;Overhead-Verbrauch&amp;rdquo; durch z.B. Mainboards, Netzteile, NICs und die weitere zusätzliche Hardware. Zwecks Redundanz können allerdings trotzdem mehrere Geräte sehr sinnvoll sein.&lt;/p&gt;
&lt;p&gt;Generell sollte so wenig Hardware wie möglich verbaut werden, ich deaktiviere z.B. bei den Thin Clients auch den Audiochip. Das macht nicht viel aus, aber ist simpel zu machen.&lt;/p&gt;
&lt;h3 id="auf-severhardware-eher-verzichten"&gt;Auf Severhardware eher verzichten
&lt;/h3&gt;&lt;p&gt;Serverhardware bringt meistens Management-Features wie eine integrierte KVM-Lösung (IPMI, ILO, IDRAC, &amp;hellip;) mit. Das ist letztendlich ein kompletter weiterer Rechner, der im Server läuft, was natürlich wieder mehrere Watt an Strom zusätzlich verbraucht.&lt;/p&gt;
&lt;h3 id="passend-dimensionieren"&gt;Passend dimensionieren
&lt;/h3&gt;&lt;p&gt;Beispielsweise benötigt ein Switch mit 48 Ports deutlich mehr Strom als ein Switch mit 8 Ports Das selbe gilt auch für Router und Server - alles sollte angemessen sein (im Zweifelsfall zum Ausbauen allerdings lieber etwas größer/leistungsstärker als eigentlich notwendig).&lt;/p&gt;
&lt;h3 id="neuer-ist-meistens-besser-oder-zumindest-effizienter"&gt;Neuer ist meistens besser (oder zumindest effizienter)
&lt;/h3&gt;&lt;p&gt;Vor allem bei Computern (und damit auch Servern bzw. Mini-PCs/Thin-Clients) sind modernere Geräte meistens energieeffizienter. Der Fujitsu Futro S740 braucht z.B. grob die Hälfte an Strom wie der Futro S720, obwohl der S740 deutlich mehr Rechenleistung besitzt. Bei Desktop-Hardware sollte man allerdings beachten, dass Mainboards und Netzteile alleine schon mehrere Watt verbrauchen, weshalb Mini-PCs häufig die bessere Wahl sind, wenn man auf den IO verzichten kann.&lt;/p&gt;
&lt;h3 id="effiziente-netzteile-nutzen"&gt;Effiziente Netzteile nutzen
&lt;/h3&gt;&lt;p&gt;Selbsterklärend.&lt;/p&gt;
&lt;h3 id="10g-ethernet-via-rj45-vermeiden"&gt;10G Ethernet via RJ45 vermeiden
&lt;/h3&gt;&lt;p&gt;Für Netzwerkverbindungen mit 10G sollten bevorzugt entweder DACs verwendet werden, alternativ ist auch Glasfaser deutlich effizienter als 10G über RJ45.&lt;/p&gt;
&lt;h3 id="switches-mit-integriertem-poe-nutzen"&gt;Switches mit integriertem POE nutzen
&lt;/h3&gt;&lt;p&gt;&amp;ldquo;Sofern mehrere PoE-Geräte genutzt werden, ist es meistens besser, einen Switch mit PoE zu nutzen, statt jedes Gerät mit einem eigenen Injektor zu versehen.&lt;/p&gt;
&lt;h3 id="geräte-nicht-dauerhaft-betreiben"&gt;Geräte nicht dauerhaft betreiben
&lt;/h3&gt;&lt;p&gt;Wenn ein NAS z.B. nur sporadisch genutzt wird, muss es auch nicht dauerhaft laufen. Automatischer Standby plus Wake on LAN hat sich bei mir als Betriebsmodus bewährt. Ein Rechner im Standby verbraucht natürlich auch einige wenige Watt, aber dafür ist das Gerät nach dem Aufwecken auch innerhalb von Sekunden verfügbar.&lt;/p&gt;
&lt;p&gt;Auch kann man überlegen, ob man im Homelab permanent die komplette Power braucht oder einzelne Hosts nur bei Bedarf einschaltet.&lt;/p&gt;
&lt;h3 id="displays-abstecken"&gt;Displays abstecken
&lt;/h3&gt;&lt;p&gt;Sofern ein Display am Server angeschlossen ist (selbst wenn es hinter einem KVM-Switch o.ä. ist), ist die integrierte GPU aktiv. Das kostet Strom.&lt;/p&gt;
&lt;h2 id="software"&gt;Software
&lt;/h2&gt;&lt;h3 id="cpu-governor"&gt;CPU-Governor
&lt;/h3&gt;&lt;p&gt;Der Govenor gibt an, anhand welcher Parameter und wie schnell der CPU-Takt angepasst wird. Die gängigsten sind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;powersave&lt;/code&gt;: Nutzt dauerhaft niedrigsten Takt, nicht empfohlen&lt;/li&gt;
&lt;li&gt;&lt;code&gt;performance&lt;/code&gt;: Nutzt dauerhaft höchsten Takt, nicht empfohlen&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ondemand&lt;/code&gt;: Passt den Takt laufend an die aktuelle CPU-Auslastung an&lt;/li&gt;
&lt;li&gt;&lt;code&gt;conservative&lt;/code&gt;: Ähnlich zu &lt;code&gt;ondemand&lt;/code&gt;, allerdings etwas &amp;ldquo;ruhiger&amp;rdquo; im Scaling-Verhalten&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="c-states"&gt;C-States
&lt;/h3&gt;&lt;p&gt;Moderne CPUs können die Leistung und damit auch die Stromaufnahme senken, das sind sogenannte C-States. Höhere States sind dabei effizientere Betriebsmodi. Mit Tools wie &lt;code&gt;powertop&lt;/code&gt; lässt sich prüfen, ob die CPU C-States außerhalb von 0 erreicht. Wenn nicht, sollte einerseits im BIOS geprüft werden, ob C-States (teilweise versteckt sich das hinter Einstellungen bzgl. Energieverwaltung) aktiv sind, andererseits müssen auch die angeschlossenen Geräte auf die Unterstützung geprüft werden. Bei PCIe ist das beispielsweise &lt;code&gt;ASPM&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="container-statt-vms"&gt;Container statt VMs
&lt;/h3&gt;&lt;p&gt;Container (Docker oder auch LXC in Proxmox) sind leichtgewichtiger als VMs, sorgen dadurch für eine geringere CPU-Auslastung, was wiederum den Stromverbrauch geringer hält.&lt;/p&gt;
&lt;h3 id="proxmox-vms"&gt;Proxmox-VMs
&lt;/h3&gt;&lt;p&gt;Bei VMs in Proxmox ist es sinnvoll, &lt;code&gt;use tablet as pointer&lt;/code&gt; in den Optionen zu deaktivieren. Das erschwert die Bedienung über die Webkonsole deutlich, lässt sich aber auch jederzeit ohne Neustart wieder aktivieren. Das Deaktivieren der Option spart CPU-Last ein.&lt;/p&gt;
&lt;h3 id="generelle-cpu-last"&gt;Generelle CPU-Last
&lt;/h3&gt;&lt;p&gt;Höhere CPU-Last bedeutet mehr Stromverbrauch. Ganz einfach. Je geringer die durchschnittliche Auslastung ist, desto besser. Mehr laufende Dienste bedeuten also eigentlich immer einen höheren Stromverbrauch.&lt;/p&gt;
&lt;h3 id="effiziente-software-auswählen"&gt;Effiziente Software auswählen
&lt;/h3&gt;&lt;p&gt;Ich habe dazu gerade kein konkretes Beispiel. Ich achte aber auch auf den Ressourcenbedarf, wenn ich Software zum Selbsthosten auswähle.&lt;/p&gt;
&lt;h3 id="zram-nutzen"&gt;ZRAM nutzen
&lt;/h3&gt;&lt;p&gt;ZRAM ist im Grunde komprimierter SWAP im RAM, was einerseits performanter ist und andererseits Lese-/Schreiboperationen auf dem Datenträger einspart.&lt;/p&gt;
&lt;h3 id="inkrementelle-backups-statt-vollbackups"&gt;Inkrementelle Backups statt Vollbackups
&lt;/h3&gt;&lt;p&gt;Viele Backuplösungen (z.B. Proxmox Backup Server, restic, …) können inkrementelle Sicherungen erstellen, also nur die seit dem letzten Snapshot geänderten Daten sichern. Das spart Zeit und Rechenleistung ein.&lt;/p&gt;
&lt;h3 id="dienste-im-rechenzentrum-betreiben"&gt;Dienste im Rechenzentrum betreiben
&lt;/h3&gt;&lt;p&gt;Manche Dienste lassen sich auf einem günstigen vServer effizienter betreiben als zuhause dafür Hardware und Strom zu bezahlen. Das ist allerdings immer eine Abwägungssache.&lt;/p&gt;</description></item><item><title>Proxmox VE 9</title><link>https://secretmine.de/blog/2025/2025-08-08-proxmox-ve-9/</link><pubDate>Fri, 08 Aug 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-08-08-proxmox-ve-9/</guid><description>&lt;h2 id="inhalt-der-neuen-version"&gt;Inhalt der neuen Version
&lt;/h2&gt;&lt;p&gt;Proxmox VE 9 ist vor ein paar Tagen veröffentlicht (Roadmap und Changelog hier: &lt;a class="link" href="https://pve.proxmox.com/wiki/Roadmap%29" target="_blank" rel="noopener"
&gt;https://pve.proxmox.com/wiki/Roadmap)&lt;/a&gt;. Die wichtigsten Features in Kürze:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Debian 13 (Trixie) als Basis statt Debian 12 (Bookworm)&lt;/li&gt;
&lt;li&gt;VM Snapshots bei tick-provisioned LVM&lt;/li&gt;
&lt;li&gt;HA-Rules&lt;/li&gt;
&lt;li&gt;Mehr Features für SDN&lt;/li&gt;
&lt;li&gt;Neues mobiles Webinterface&lt;/li&gt;
&lt;li&gt;Bei ZFS können neue Devices hinzugefügt werden&lt;/li&gt;
&lt;li&gt;Hotplug von Devices bei LXC&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Das volle Changelog ist auf der verlinkten Seite zu finden.&lt;/p&gt;
&lt;h2 id="das-upgrade"&gt;Das Upgrade
&lt;/h2&gt;&lt;p&gt;Ein Proxmox-Update ist generell kein Hexenwerk. Ich aktualisiere vorerst nur den Cluster im Keller, mit dem Production-Part warte ich noch etwas.&lt;/p&gt;
&lt;p&gt;Da auf dem ersten PVE-Knoten auch Proxmox Backup Server installiert ist, aktualisiere ich diesen parallel. Das ist eigentlich genauso einfach - man ändert einfach den Distro-Eintrag in der entsprechenden Datei unter &lt;code&gt;/etc/apt/sources.list.d/&lt;/code&gt; von &lt;code&gt;bookworm&lt;/code&gt; zu &lt;code&gt;trixie&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Ich halte mich beim Upgrade an die Anleitung von Proxmox: &lt;a class="link" href="https://pve.proxmox.com/wiki/Upgrade_from_8_to_9" target="_blank" rel="noopener"
&gt;https://pve.proxmox.com/wiki/Upgrade_from_8_to_9&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="voraussetzungen-prüfen"&gt;Voraussetzungen prüfen
&lt;/h3&gt;&lt;p&gt;Es gibt das Script &lt;code&gt;pve8to9&lt;/code&gt;. Damit lässt sich schnell prüfen, ob der Cluster generell bereit für ein Update ist.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;= SUMMARY =
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;TOTAL: 52
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PASSED: 40
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SKIPPED: 11
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;WARNINGS: 1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FAILURES: 0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Bei mir kam eine Warnung, die sich darauf bezog, dass noch eine VM auf dem Host lief. Die habe ich auch einfach weiterlaufen lassen - das hat auch bei vorherigen Upgrades problemlos funktioniert. Generell ist es allerdings empfehlenswert, alle VMs und LXCs vollständig herunterzufahren.&lt;/p&gt;
&lt;h3 id="upgrade-durchführen"&gt;Upgrade durchführen
&lt;/h3&gt;&lt;p&gt;Nach einem vollen Update von PVE 8 mittels&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt dist-upgrade
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;reboot # optional, wenn neuer Kernel verfügbar
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt autoremove # nicht mehr benötigte Pakete entfernen
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;habe ich dann das eigentliche Upgrade gestartet. Dazu werden die APT-Sourcen angepasst. Ich habe den Befehl aus der Anleitung von Proxmox bei mir leicht modifiziert, weil bei mir die Dateien anders heißen und ich parallel auch PBS aktualisieren muss:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sed -i &amp;#39;s/bookworm/trixie/g&amp;#39; /etc/apt/sources.list
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sed -i &amp;#39;s/bookworm/trixie/g&amp;#39; /etc/apt/sources.list.d/pve*.list
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sed -i &amp;#39;s/bookworm/trixie/g&amp;#39; /etc/apt/sources.list.d/pbs*.list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Theoretisch geht auch&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sed -i &amp;#39;s/bookworm/trixie/g&amp;#39; /etc/apt/sources.list
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sed -i &amp;#39;s/bookworm/trixie/g&amp;#39; /etc/apt/sources.list.d/*.list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Dabei sollte man allerdings aufpassen, ob alle Einträge korrekt sind.&lt;/p&gt;
&lt;p&gt;Danach die Paketlisten aktualisieren:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Und das eigentliche Update starten, ich empfehle das in z.B. &lt;code&gt;screen&lt;/code&gt; zu machen, falls die SSH-Verbindung abbricht:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt dist-upgrade
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Zwischendurch kommen einige Abfragen bezüglich erneuterter Konfigurationsdateien. Auch dazu findet man in der Anleitung von Proxmox einiges, hier einmal die Kurzfassung (bitte aber nachlesen, welche Effekte das hat):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/etc/issue&lt;/code&gt;: Neue Version übernehmen&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/etc/lvm/lvm.conf&lt;/code&gt;: Neue Version übernehmen&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/etc/ssh/sshd_config&lt;/code&gt;: Habe ich verneint bzw. die bestehende Version belassen&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sofern alles durch ist, muss nur noch neu gestartet werden:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Danach kann man noch nicht mehr benötigte Pakete entfernen:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt autoremove
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Damit sollte das Upgrade schon fertig und das Webinterface wieder verfügbar sein. Bei mir lief das Upgrade auf allen drei Hosts problemlos durch, nach einem Reboot war alles wie immer - nur eben mit der neuen Version.&lt;/p&gt;
&lt;p&gt;Proxmox Backup Server muss ich noch testen, der Storage wurde allerdings in Proxmox VE schon als Verfügbar angezeigt - ich gehe also davon aus, dass auch da alles okay ist.&lt;/p&gt;</description></item><item><title>Script: Bilder in Ordner sortieren</title><link>https://secretmine.de/blog/2025/2025-07-30-script-bilder-sortieren/</link><pubDate>Wed, 30 Jul 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-07-30-script-bilder-sortieren/</guid><description>&lt;p&gt;Ich brauchte spontan ein Script, was mir Dateien (konkret Bilder und Videos aus einem Ordner vom Handy, wo die Timestamps der Dateien nicht korrekt sind) nach Jahr und Monat anhand des Dateinamens in eine Ordnerstruktur einsortiert.&lt;/p&gt;
&lt;p&gt;Das Script listet die Dateien im Eingangsverzeichnis, prüft ob es sich um ein bekanntes Muster handelt und verschiebt, sofern das Muster bekannt ist, die Dateien in den passenden Ordner. Der Zielordner wird bei Bedarf auch erstellt.&lt;/p&gt;
&lt;p&gt;Im Vergleich zu Unix-Standardtools wie &lt;code&gt;rename&lt;/code&gt; werden hier die Ordner vorher explizit angelegt, auch finde ich Python lesbarer als Bash. Die benötigten Module sollten bei den allermeisten Python-Installationen bereits vorhanden sein.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;span class="lnt"&gt;37
&lt;/span&gt;&lt;span class="lnt"&gt;38
&lt;/span&gt;&lt;span class="lnt"&gt;39
&lt;/span&gt;&lt;span class="lnt"&gt;40
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;argparse&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;os&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;re&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;parser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;argparse&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ArgumentParser&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;parser&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add_argument&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;input&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;help&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Directory with images/videos to be sorted&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;parser&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add_argument&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;output&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;help&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Directory with year/month structure&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;args&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;parser&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parse_args&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;input_dir&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;output_dir&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;output&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;files&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input_dir&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;listdir&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input_dir&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isfile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Format: regex, capture group for year, capture group for month&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;regex_list&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;IMG[-_]([0-9]&lt;/span&gt;&lt;span class="si"&gt;{4}&lt;/span&gt;&lt;span class="s2"&gt;)([0-9]&lt;/span&gt;&lt;span class="si"&gt;{2}&lt;/span&gt;&lt;span class="s2"&gt;)[0-9]&lt;/span&gt;&lt;span class="si"&gt;{2}&lt;/span&gt;&lt;span class="s2"&gt;.*\.(jpe?g|JE?PG)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;VID[-_]([0-9]&lt;/span&gt;&lt;span class="si"&gt;{4}&lt;/span&gt;&lt;span class="s2"&gt;)([0-9]&lt;/span&gt;&lt;span class="si"&gt;{2}&lt;/span&gt;&lt;span class="s2"&gt;)[0-9]&lt;/span&gt;&lt;span class="si"&gt;{2}&lt;/span&gt;&lt;span class="s2"&gt;.*\.(mp4)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Parsing &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;year&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;month&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;regex_list&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;match&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="k"&gt;match&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;match&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;groups&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;year&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;match&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;group&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;month&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;match&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;group&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;year&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;month&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Could not parse filename&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;f_output_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;output_dir&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;month&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;makedirs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f_output_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;exist_ok&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rename&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f_output_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;basename&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Lokales Multiroom-Audio mit dem Lyrion Music Server und Squeezelite</title><link>https://secretmine.de/blog/2025/2025-07-29-lyrion-music-server-und-squeezelite/</link><pubDate>Tue, 29 Jul 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-07-29-lyrion-music-server-und-squeezelite/</guid><description>&lt;p&gt;Ich bin vor einer Weile über Lyrion Music Server (&lt;a class="link" href="https://lyrion.org/" target="_blank" rel="noopener"
&gt;https://lyrion.org/&lt;/a&gt;) gestolpert und fand das Konzept sehr spannend. Lyrion Music Server ist die Weiterentwicklung von Logitech Media Server, einem lokalen Musikserver für die Verwendung mit dafür gebauten Abspielgeräten (Squeezeboxen). Squeezeboxen gibt es abseits vom Gebrauchtmarkt nicht mehr, einen Softwarenachbau für die Player in Form von beispielsweise Squeezelite jedoch bereits vorhanden.&lt;/p&gt;
&lt;p&gt;Was die Software besonders macht ist das Feature, dass mehrere Player synchron bespielt werden können, wie es mit Multiroom-Setups von anderen Herstellern möglich ist. Primär ist Lyrion dafür gebaut, lokale Mediatheken und auch Radio abzuspielen, es gibt jedoch auch ein Plugin, mit dem das ganze über Spotify Connect direkt via Spotify ansteuerbar ist.&lt;/p&gt;
&lt;h2 id="hardware"&gt;Hardware
&lt;/h2&gt;&lt;p&gt;Ich habe aktuell in vier Räumen Player installiert. In einem weiteren Raum ist geplant, zumindest eine Buchse zum Anschluss von z.B. einer Bluetooth-Box izu installieren.&lt;/p&gt;
&lt;h3 id="arbeitszimmer"&gt;Arbeitszimmer
&lt;/h3&gt;&lt;p&gt;Hier stecken meine PC-Lautsprecher einfach über ein Klinke-Y-Kabel sowohl an meinem PC als auch an dem Thin Client, der LMS beherbergt. Dort läuft Squeezelite als Docker in LXC, das Audiogerät ist vom Host an den LXC und Docker durchgereicht und wird von dort bespielt.&lt;/p&gt;
&lt;h3 id="wohnzimmer"&gt;Wohnzimmer
&lt;/h3&gt;&lt;p&gt;Im Wohnzimmer ist ein Raspberry Pi 1b mit piCorePlayer wie im Arbeitszimmer, ebenfalls mit einem Y-Kabel, an das Soundsystem des Fernsehers angeschlossen. Via Homeassistant wird automatisch das Soundsystem eingeschaltet, sobald Musik abgespielt wird.&lt;/p&gt;
&lt;h3 id="schlafzimmer"&gt;Schlafzimmer
&lt;/h3&gt;&lt;p&gt;Hier befindet sich ein selbstgebauter Player. Dieser besteht aus einem Raspberry Pi 1b mit piCorePlayer, einem Verstärker-Board und Regallautsprechern. Der Verstärker kann über ein Relais vom Pi aus ein- und ausgeschaltet werden, um Grundrauschen oder andere Geräusche auf den Lautsprechern zu vermeiden, wenn keine Musik abgespielt wird. Nebenbei spart das natürlich auch Strom. Angetrieben wird das ganze von einem 19V Laptop-Netzteil.&lt;/p&gt;
&lt;h3 id="küche"&gt;Küche
&lt;/h3&gt;&lt;p&gt;Hier ist ähnlich wie im Schlafzimmer ein selbstgebauerter Player platziert, hier allerdings mit einem Raspberry Pi 3. Auch hier ist es ein günstiges Verstärker-Board, schaltbar über ein Relais. Ich hatte auch für diesen Pi erst einen WLAN-Stick bestellt und erst beim Einrichten von piCorePlayer festgestellt, dass der Pi 3 WLAN integriert hat und ich den Stick gar nicht brauche.&lt;/p&gt;
&lt;h2 id="software"&gt;Software
&lt;/h2&gt;&lt;p&gt;Der Lyrion Music Server läuft als Docker, hier ist einmal meine Compose-Datei inkl. des Squeezelite-Players:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;services&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;lms&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;lmscommunity/lyrionmusicserver:dev&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;network_mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;host&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;./config:/config:rw&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;./music:/music:ro&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;./playlist:/playlist:rw&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;/etc/localtime:/etc/localtime:ro&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;/etc/timezone:/etc/timezone:ro&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;HTTP_PORT=9000&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;unless-stopped&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;squeezelite&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;giof71/squeezelite:latest-alsa&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;devices&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;/dev/snd:/dev/snd&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;USER_MODE=yes&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;PUID=0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;PGID=0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;AUDIO_GID=29&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;SQUEEZELITE_NAME=Arbeitszimmer&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;SQUEEZELITE_AUDIO_DEVICE=&amp;#34;hw:CARD=PCH,DEV=0&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;./sl-config/:/config/&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;unless-stopped&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Bei den Plugins habe ich einerseits Spotty für Spotify Connect installiert, andererseits auch ein Plugin, um Gruppen vordefinieren zu können. Ich habe hierbei hauptsächlich eine Gruppe mit allen Lautsprechern definiert, ansonsten werden die Räume in der Regel nur einzeln genutzt.&lt;/p&gt;
&lt;h2 id="soundqualität-und-generelle-erfahrung"&gt;Soundqualität und generelle Erfahrung
&lt;/h2&gt;&lt;p&gt;Die Player mit eigenem Verstärker haben leider ein gutes Maß an Grundgeräuschen, hauptsächlich dürfte das von Spannungswandlern von 19V auf 5V für die Pis kommen. Bei den Playern, wo Soundsysteme angeschlossen sind, habe ich damit keine Probleme.&lt;/p&gt;
&lt;p&gt;Ich (bzw. wir) nutze das System hauptsächlich mit Spotify Connect. Das funktioniert nicht unbedingt perfekt - die Wiedergabe bleibt leider regelmäßig nach Ende eines Songs hängen und muss dann erstmal händisch wieder gestartet werden. Eine Lösung dafür habe ich bislang noch nicht, das Problem beim Spotty-Plugin ist allerdings bekannt. Playlists über die Integration in LMS und nicht via Spotify Connect zu starten soll das Problem beheben, ist für uns allerdings eher unpraktisch.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update&lt;/em&gt;: Beim Plugin, was für Spotify zum Einsatz kommt, wurde aufgrund von API-Änderungen bei Spotify der Connect-Modus vorerst entfernt, seit dem nutzen wir die Integration. Das funktioniert auch fehlerfrei, das System spielt stundenlang ohne einen einzigen Fehler Musik ab.&lt;/p&gt;
&lt;p&gt;Ansonsten funktioniert das System gut, die Lautsprecher laufen weitestgehend synchron. Zeitweise gab es mal mit einem Lautsprecher Probleme, weil aus irgendeinem Grund der WLAN-Empfang in der genauen Position des Players schlecht war, das hat dann dazu geführt, dass das gesamte System regelmäßig out of sync war und die Wiedergabe kurz unterbrochen wurde. Verschieben des Players um einige Zentimeter hat das beseitigt.&lt;/p&gt;</description></item><item><title>Webbasierter Remotezugriff mit Guacamole</title><link>https://secretmine.de/blog/2025/2025-06-09-guacamole/</link><pubDate>Mon, 09 Jun 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-06-09-guacamole/</guid><description>&lt;p&gt;Ich habe schon eine ganze Weile mit verschiedenen Möglichkeiten experimentiert, von unterwegs und ohne dabei einen eigenen Client zu benötigen. Dabei bin ich irgendwann auf &lt;strong&gt;Apache Guacamole&lt;/strong&gt; gestoßen, einem webbasierten Remotedesktop-Tool, das im Browser läuft und RDP, VNC und SSH unterstützt. Und sich mit 2FA sichern lässt. Also alles abdeckt, was ich benötige.&lt;/p&gt;
&lt;p&gt;Guacamole läuft bei mir als Docker-Container im Homelab und bietet mir über einen gesicherten Webzugang die Möglichkeit, sowohl meine Windows- als auch meine Linux-VMs zu nutzen. Ein Browser (und Internet) reicht, und ich habe Zugriff auf eine vollständige Desktop-Umgebung – mit gewohnter Software, Dateiablage und allem Drum und Dran. Das funktioniert in den meisten Fällen auch mit restriktiven Firewalls/Proxies, da alles über HTTPS und Websockets abgewickelt wird. Durch Zwei-Faktor-Authentifizierung und restriktive Firewall-Regeln ist das Ganze auch sicher genug, um es von außen erreichbar zu machen. Und es funktioniert meistens sogar hinter restriktiven Firewalls, solange Websockets funktionieren, und eignet sich damit auch für den Zugriff von z.B. der Arbeit oder der Schule/Uni - vorausgesetzt, die vorliegenden Regelungen lassen es zu.&lt;/p&gt;
&lt;h2 id="schematischer-aufbau"&gt;Schematischer Aufbau
&lt;/h2&gt;&lt;p&gt;Technisch ist das ganze eigentlich recht simpel aufgebaut:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-06-09-guacamole/images/guacamole.png"
width="1062"
height="644"
srcset="https://secretmine.de/blog/2025/2025-06-09-guacamole/images/guacamole_hu_ce73b79f30f0b808.png 480w, https://secretmine.de/blog/2025/2025-06-09-guacamole/images/guacamole_hu_9175ba385c360d25.png 1024w"
loading="lazy"
alt="Grober Aufbau"
class="gallery-image"
data-flex-grow="164"
data-flex-basis="395px"
&gt;&lt;/p&gt;
&lt;p&gt;Guacamole ist das Herzstück vom ganzen, es stellt das Webinterface bereit, kümmert sich um das Benutzermanagement und verwaltet auch die Verbindungen. Guacamole wiederum steuert Guacd an, das ist ein Dienst, der diverse Protokolle wie RDP und VNC in ein allgemeineres Format übersetzt. Für die Benutzer- und Verbindungsverwaltung wird auch noch eine MySQL-Datenbank benötigt. Davor steht bei mir ein Caddy, aber jeder beliebige andere Reverse-Proxy tut es auch.&lt;/p&gt;
&lt;h2 id="einrichtung"&gt;Einrichtung
&lt;/h2&gt;&lt;h3 id="docker-compose"&gt;Docker-Compose
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="nt"&gt;services&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;guacdb&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;container_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;guacamoledb&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;mariadb:latest&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;unless-stopped&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;MYSQL_ROOT_PASSWORD&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;9ngmZtFToD3Ll4ncBA6V&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;MYSQL_DATABASE&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;guacamole_db&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;MYSQL_USER&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;guacamole_user&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;MYSQL_PASSWORD&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;qi1tqoSTRGx5eD4ghCAG&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;./db-data:/var/lib/mysql&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;./initdb.sql:/docker-entrypoint-initdb.d/initdb.sql&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;guacd&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;container_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;guacd&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;guacamole/guacd:latest&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;unless-stopped&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;guacamole&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;container_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;guacamole&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;guacamole/guacamole:latest&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;unless-stopped&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="m"&gt;8080&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;8080&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;GUACD_HOSTNAME&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;guacd&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;MYSQL_HOSTNAME&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;guacdb&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;MYSQL_DATABASE&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;guacamole_db&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;MYSQL_USER&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;guacamole_user&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;MYSQL_PASSWORD&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;qi1tqoSTRGx5eD4ghCAG&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;TOTP_ENABLED&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;true&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# optional, forciert 2FA&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;depends_on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;guacdb&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;guacd&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Vor dem Start muss allerdings die Datenbank noch befüllt werden. Das Container-Image bringt ein Script mit, um den nötigen Dump zu erzeugen:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql &amp;gt; initdb.sql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Nun kann mit &lt;code&gt;docker compose up -d&lt;/code&gt; der Stack gestartet werden. Der MariaDB-Container importiert beim ersten Start alles, was unter &lt;code&gt;/docker-entrypoint-initdb.d/&lt;/code&gt; liegt in alphabetischer Reihenfolge - und damit auch den Dump, den wir eben angelegt haben.&lt;/p&gt;
&lt;h3 id="reverse-proxy"&gt;Reverse Proxy
&lt;/h3&gt;&lt;p&gt;Guacamole müsste nun unter dem angegebenen Port (hier 8080) erreichbar sein, es muss der Pfad &lt;code&gt;/guacamole&lt;/code&gt; aufgerufen werden. Jetzt kann noch ein beliebiger Reverse-Proxy auf Guacamole verwiesen werden, beispielsweise Caddy:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;guacamole.example.com {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; rewrite / /guacamole
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; reverse_proxy http://192.168.1.2:8080
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Ich habe hierbei auch einen Rewrite von &lt;code&gt;/&lt;/code&gt; zu &lt;code&gt;/guacamole&lt;/code&gt; hinzugefügt, damit man den Pfad nicht händisch angeben muss.&lt;/p&gt;
&lt;h3 id="konfiguration"&gt;Konfiguration
&lt;/h3&gt;&lt;p&gt;Die initialen Logindaten sind &lt;code&gt;guacadmin&lt;/code&gt;/&lt;code&gt;guacadmin&lt;/code&gt;. Sofern TOTP über die Umgebungsvariablen aktiviert wurde, wird nun direkt nach einem zweiten Faktor gefragt. Oben rechts unter Einstellungen lässt sich dann eine Verbindung anlegen. Bei RDP lohnt es sich, den Haken bei &lt;code&gt;Grössenänderungs-Methode: Display Update&lt;/code&gt; zu setzen. Die Haken unten bei Geschwindigkeit kann man setzen, wie man möchte - ich hab hier &lt;code&gt;Desktophintergrund aktivieren&lt;/code&gt; und &lt;code&gt;Schriftartglättung (ClearType) aktivieren&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="nutzung"&gt;Nutzung
&lt;/h2&gt;&lt;p&gt;Auf der Startseite sollte nun die Verbindung angezeigt werden. Nach einem Klick sollte die Verbindung stehen und sich auch mit Änderung der Fenstergröße automatisch anpassen.&lt;/p&gt;
&lt;h3 id="performance"&gt;Performance
&lt;/h3&gt;&lt;p&gt;Nach meiner Erfahrung ist die Performance primär von der Single-Thread-Performance des Hosts abhängig - auf den Futros läuft Guacamole langsamer als auf dem Mini-PC mit Ryzen-Prozessor. Aber beides ist definitiv nutzbar, auch wenn ich nicht 24/7 darüber arbeiten wollen würde.&lt;/p&gt;</description></item><item><title>Blocky - eine Alternative zu AdGuard Home und Pi-hole</title><link>https://secretmine.de/blog/2025/2025-05-18-blocky-eine-alternative-zu-adguard-home-und-pihhole/</link><pubDate>Sun, 18 May 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-05-18-blocky-eine-alternative-zu-adguard-home-und-pihhole/</guid><description>&lt;p&gt;Bisher habe ich als internen DNS-Resolver AdGuard Home eingesetzt. Das ist eine Alternative zu Pi-hole, die ebenfalls DNS-Blocking unterstützt. Die Wahl fiel damals auf AdGuard Home, da Pi-hole für eigene lokale Domains (die über einen anderen DNS-Server aufgelöst werden - das ist ein simpler &lt;code&gt;bind9&lt;/code&gt;-Server) eher hakelig war und sich AdGuard Home einfach runder angefühlt hat.&lt;/p&gt;
&lt;p&gt;Mit der Zeit gefiel mir aber die Ressourcenauslastung von AdGuard Home nicht, sowohl CPU als auch RAM waren etwas höher, als ich es mochte. Außerdem fielen mir teilweise längere Antwortzeiten beim DNS auf, wobei ich da nicht hundertprozentig sagen kann, ob es an AdGuard Home lag oder etwas anderes dahinter steckte. Außerdem wollte ich bessere Metriken bekommen, am besten über einen Prometheus-kompatiblen Metrikendpunkt.&lt;/p&gt;
&lt;h1 id="suche-nach-einer-alternative"&gt;Suche nach einer Alternative
&lt;/h1&gt;&lt;p&gt;Bei der Recherche nach einer Alternative zu AdGuard Home habe ich mir Pi-hole noch einmal angesehen, hatte dort aber Probleme, meine beiden lokalen Zonen über einen anderen Server aufzulösen. Den Technitium DNS-Server habe ich mir auch angesehen, aber der gefiel mir von der Konfiguration her nicht und auch hier habe ich nicht sofort herausfinden können, wie ich eine lokale Domain anders auflöse. Ein Setup mit einem Server wie Bind oder dnsmasq wollte ich ebenfalls nicht, da mir das von der Konfiguration her für die Blocklisten (benötigt ja dann Skripte, die die blockierten Einträge importieren) nicht gefallen hat. Bei den meisten Lösungen war auch die Herstellung einer Redundanz über einen zweiten Resolver nicht einfach.&lt;/p&gt;
&lt;h1 id="meine-anforderungen"&gt;Meine Anforderungen
&lt;/h1&gt;&lt;p&gt;Hier einmal meine Anforderungen als Liste:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Normale DNS-Auflösung und Caching&lt;/li&gt;
&lt;li&gt;Unterstützung von Block- und Allowlists, möglichst in einem der gängigen Formate, damit die bekannten Listen funktionieren&lt;/li&gt;
&lt;li&gt;Unterstützung von verschiedenen DNS-Servern für einzelne Domains, um lokale Domains an einen anderen Resolver weiterzuleiten&lt;/li&gt;
&lt;li&gt;Metriken als Prometheus-Endpunkt&lt;/li&gt;
&lt;li&gt;Redundanz über zweite Instanz auf anderem Host&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="blocky---eine-schlanke-alternative"&gt;Blocky - eine schlanke Alternative
&lt;/h1&gt;&lt;p&gt;Bei der Suche bin ich irgendwann auf Blocky gestoßen - das ist ein schlanker, in Go geschriebener DNS-Resolver, der als Alternative zu Pi-hole, AdGuard Home und co gedacht ist. Es gibt kein Webinterface, die Konfiguration findet über eine simple Yaml-Datei statt. Alle Features, die ich haben wollte, waren auch simpel einzurichten und funktionierten sofort. Die Performance ist ebenfalls super, gefühlt auch etwas flotter als AdGuard Home. Redundanz lässt sich simpel über das Kopieren der Config und Neustart vom Container lösen, das macht ein ganz einfaches Script alle x Stunden. Theoretisch könnte ich über Redis auch den Cache zentral halten, aber dafür müsste ich auch hier einen redundanten Redis-Service aufbauen - was ich hier auch einfach für Overkill halte.&lt;/p&gt;
&lt;h2 id="mein-erfahrung"&gt;Mein Erfahrung
&lt;/h2&gt;&lt;p&gt;Ich wollte Blocky erst einmal nur temporär zum Testen aktiv schalten - habe das dann aber vergessen. Nach ein paar Tagen fiel mir dann wieder ein, dass ich ja auf Blocky umgestellt hatte - bemerkt habe ich es ansonsten nicht. Was in diesem Fall ein wirklich gutes Zeichen ist. Blocky läuft bislang störungsfrei, liefert gute Metriken und benötigt wenig Ressourcen. Wir reden hier über ca 20MB RAM und vielleicht 0,1 % CPU-Auslastung von dem Container. AdGuard Home braucht, ohne aktive Clients seit einigen Tagen (aber auch ohne Neustart seit dem) grob 200MB RAM und hat immer wieder kurze Spikes auf &amp;gt;10 % CPU-Last, etwas was ich bei Blocky so überhaupt nicht wahrnehme.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update:&lt;/em&gt; Die Ressourcenauslastung im Livebetrieb ist jetzt doch etwas höher, mit ein paar Blocklisten und als primärer DNS-Server ist die Auslastung vom Container bei 50-70MB bei allerdings weiterhin im Schnitt deutlich unter 1 % CPU-Auslastung (mit kurzen Spikes auf einige wenige Prozent).
+&lt;/p&gt;
&lt;h2 id="meine-konfiguration"&gt;Meine Konfiguration
&lt;/h2&gt;&lt;p&gt;Hier einmal die Konfiguration, wie sie bei mir jetzt seit einiger Zeit im Einsatz ist:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;span class="lnt"&gt;37
&lt;/span&gt;&lt;span class="lnt"&gt;38
&lt;/span&gt;&lt;span class="lnt"&gt;39
&lt;/span&gt;&lt;span class="lnt"&gt;40
&lt;/span&gt;&lt;span class="lnt"&gt;41
&lt;/span&gt;&lt;span class="lnt"&gt;42
&lt;/span&gt;&lt;span class="lnt"&gt;43
&lt;/span&gt;&lt;span class="lnt"&gt;44
&lt;/span&gt;&lt;span class="lnt"&gt;45
&lt;/span&gt;&lt;span class="lnt"&gt;46
&lt;/span&gt;&lt;span class="lnt"&gt;47
&lt;/span&gt;&lt;span class="lnt"&gt;48
&lt;/span&gt;&lt;span class="lnt"&gt;49
&lt;/span&gt;&lt;span class="lnt"&gt;50
&lt;/span&gt;&lt;span class="lnt"&gt;51
&lt;/span&gt;&lt;span class="lnt"&gt;52
&lt;/span&gt;&lt;span class="lnt"&gt;53
&lt;/span&gt;&lt;span class="lnt"&gt;54
&lt;/span&gt;&lt;span class="lnt"&gt;55
&lt;/span&gt;&lt;span class="lnt"&gt;56
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# ich habe leider kein ipv6, daher habe ich hier v6 vollständig deaktiviert und weiter unten auch AAAA-Records gefiltert.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="nt"&gt;connectIPVersion&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;v4&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="nt"&gt;upstream&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;default&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="m"&gt;1.1.1.1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="m"&gt;8.8.8.8&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="nt"&gt;blocking&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;blockType&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;nxDomain&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;blackLists&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ads&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;https://raw.githubusercontent.com/RPiList/specials/master/Blocklisten/Win10Telemetry&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;https://raw.githubusercontent.com/RPiList/specials/master/Blocklisten/Phishing-Angriffe&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;https://raw.githubusercontent.com/RPiList/specials/master/Blocklisten/malware&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;https://raw.githubusercontent.com/RPiList/specials/master/Blocklisten/easylist&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;https://raw.githubusercontent.com/RPiList/specials/master/Blocklisten/MS-Office-Telemetry&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;whiteLists&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ads&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;https://raw.githubusercontent.com/m0zgen/dns-hole/master/whitelist.txt&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;https://raw.githubusercontent.com/m0zgen/dns-hole/master/vendors-wl/microsoft.txt&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;https://raw.githubusercontent.com/m0zgen/dns-hole/master/vendors-wl/google.txt&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;https://raw.githubusercontent.com/m0zgen/dns-hole/master/regex/common-wl.txt&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;clientGroupsBlock&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;default&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;ads&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="nt"&gt;caching&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;cacheTimeNegative&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;1m&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="nt"&gt;filtering&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;queryTypes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;AAAA&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="c"&gt;# Konfiguration der lokalen Domains und Reverse-IP-Lookups zum DNS-Server unter 192.168.1.15&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="nt"&gt;conditional&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;fallbackUpstream&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;mapping&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;home.local&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;192.168.1.15&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;homelab.local&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;192.168.1.15&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;179.168.192.in-addr.arpa&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;192.168.1.15&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;178.168.192.in-addr.arpa&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;192.168.1.15&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="nt"&gt;ports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;dns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;53&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;http&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4000&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="nt"&gt;bootstrapDns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1.1.1.1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="nt"&gt;prometheus&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;enable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;/metrics&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="nt"&gt;queryLog&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;none&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>HP EliteDesk 705 G5 - ein weiterer Mini-PC</title><link>https://secretmine.de/blog/2025/2025-05-11-hp-elitedesk-705-g5/</link><pubDate>Sun, 11 May 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-05-11-hp-elitedesk-705-g5/</guid><description>&lt;p&gt;Ausnahmsweise ist dieser Mini-PC mal nicht für mich selbst, sondern für eine bekannte. Ich war auf der Suche nach einem günstigen Rechner, der die Voraussetzungen für Windows 11 erfüllt, da Microsoft ja den regulären Support für Windows 10 dieses Jahr einstellt und der bisherige PC aus dem Jahr 2009 ist. Die CPU ist beim bisherigen PC auch nur vom bloßen Anschauen schon gefühlt auf 100%. Daher musste etwas neues her. Und für reines Surfen plus Mails plus ein bisschen Office braucht es nicht unbedingt aktuelle Hardware, da funktionieren refurbished Geräte wirklich gut.&lt;/p&gt;
&lt;p&gt;Ich habe vor allem via MyDealz gesucht und nach einer Weile ein Angebot für einen HP EliteDesk 705 G5 inkl. 8GB RAM und 240GB NVMe-SSD für etwa 110€ gefunden - ein guter Preis für Windows-11-kompatible Hardware. Einziger Nachteil an dem Gerät ist, dass es nur drei Displayports und kein HDMI gibt, aber das ist mit einem Adapter ja schnell gelöst.&lt;/p&gt;
&lt;h2 id="die-hardware"&gt;Die Hardware
&lt;/h2&gt;&lt;p&gt;Der EliteDesk 705 G5 hat bei mir nun folgende Ausstattung:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AMD Ryzen 3 Pro 3200GE (4 Cores, 4 Threads)&lt;/li&gt;
&lt;li&gt;8GB RAM&lt;/li&gt;
&lt;li&gt;240GB NVMe-SSD&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-05-11-hp-elitedesk-705-g5/images/elitedesk_1.jpg"
width="1500"
height="1500"
srcset="https://secretmine.de/blog/2025/2025-05-11-hp-elitedesk-705-g5/images/elitedesk_1_hu_d3353a2d90595d2b.jpg 480w, https://secretmine.de/blog/2025/2025-05-11-hp-elitedesk-705-g5/images/elitedesk_1_hu_3cf5407250765426.jpg 1024w"
loading="lazy"
alt="HP EliteDesk 705 G5 - Vorne"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
&gt;
&lt;img src="https://secretmine.de/blog/2025/2025-05-11-hp-elitedesk-705-g5/images/elitedesk_2.jpg"
width="1500"
height="844"
srcset="https://secretmine.de/blog/2025/2025-05-11-hp-elitedesk-705-g5/images/elitedesk_2_hu_5716ebe2eebd39fe.jpg 480w, https://secretmine.de/blog/2025/2025-05-11-hp-elitedesk-705-g5/images/elitedesk_2_hu_1164bddde778b296.jpg 1024w"
loading="lazy"
alt="HP EliteDesk 705 G5 - Hinten"
class="gallery-image"
data-flex-grow="177"
data-flex-basis="426px"
&gt;
&lt;img src="https://secretmine.de/blog/2025/2025-05-11-hp-elitedesk-705-g5/images/elitedesk_3.jpg"
width="1500"
height="1500"
srcset="https://secretmine.de/blog/2025/2025-05-11-hp-elitedesk-705-g5/images/elitedesk_3_hu_d35dcd8e2c4e75d7.jpg 480w, https://secretmine.de/blog/2025/2025-05-11-hp-elitedesk-705-g5/images/elitedesk_3_hu_b45c3b56111e5a8d.jpg 1024w"
loading="lazy"
alt="HP EliteDesk 705 G5 - Innen"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
&gt;&lt;/p&gt;
&lt;p&gt;Das Set an Anschlüssel finde ich insgesamt passend, auch wenn ich Audioausgänge hinten schön gefunden hätte. Angenehm ist auch, dass es einen Caddy für ein 2,5-Zoll-Laufwerk gibt. Der Mini-PC hat tatsächlich auch einen kleinen Onboard-Lautsprecher, aber da würde ich nicht mit akzeptabler Qualität rechnen.&lt;/p&gt;
&lt;h2 id="stromverbrauch"&gt;Stromverbrauch
&lt;/h2&gt;&lt;p&gt;Verdammt. Natürlich habe ich den wichtigsten Punkt nicht getestet.&lt;/p&gt;
&lt;h2 id="benchmark"&gt;Benchmark
&lt;/h2&gt;&lt;p&gt;Zum Abschluss hier noch das Ergebnis von YABS:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;span class="lnt"&gt;37
&lt;/span&gt;&lt;span class="lnt"&gt;38
&lt;/span&gt;&lt;span class="lnt"&gt;39
&lt;/span&gt;&lt;span class="lnt"&gt;40
&lt;/span&gt;&lt;span class="lnt"&gt;41
&lt;/span&gt;&lt;span class="lnt"&gt;42
&lt;/span&gt;&lt;span class="lnt"&gt;43
&lt;/span&gt;&lt;span class="lnt"&gt;44
&lt;/span&gt;&lt;span class="lnt"&gt;45
&lt;/span&gt;&lt;span class="lnt"&gt;46
&lt;/span&gt;&lt;span class="lnt"&gt;47
&lt;/span&gt;&lt;span class="lnt"&gt;48
&lt;/span&gt;&lt;span class="lnt"&gt;49
&lt;/span&gt;&lt;span class="lnt"&gt;50
&lt;/span&gt;&lt;span class="lnt"&gt;51
&lt;/span&gt;&lt;span class="lnt"&gt;52
&lt;/span&gt;&lt;span class="lnt"&gt;53
&lt;/span&gt;&lt;span class="lnt"&gt;54
&lt;/span&gt;&lt;span class="lnt"&gt;55
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;root@debian:/home/timon# curl -sL https://yabs.sh | bash -s -- -5 -6 -i
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Yet-Another-Bench-Script #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# v2025-04-20 #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# https://github.com/masonr/yet-another-bench-script #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Fri Apr 25 01:16:19 PM CEST 2025
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Basic System Information:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Uptime : 0 days, 0 hours, 3 minutes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Processor : AMD Ryzen 3 PRO 3200GE w/ Radeon Vega Graphics
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CPU cores : 4 @ 1397.299 MHz
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AES-NI : ✔ Enabled
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;VM-x/AMD-V : ✔ Enabled
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;RAM : 5.7 GiB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Swap : 977.0 MiB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Disk : 232.7 GiB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Distro : Debian GNU/Linux 12 (bookworm)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Kernel : 6.1.0-33-amd64
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;VM Type : NONE
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;IPv4/IPv6 : ✔ Online / ❌ Offline
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/nvme0n1p2):
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Block Size | 4k (IOPS) | 64k (IOPS)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ------ | --- ---- | ---- ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Read | 302.83 MB/s (75.7k) | 479.18 MB/s (7.4k)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Write | 303.63 MB/s (75.9k) | 481.70 MB/s (7.5k)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Total | 606.46 MB/s (151.6k) | 960.89 MB/s (15.0k)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; | |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Block Size | 512k (IOPS) | 1m (IOPS)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ------ | --- ---- | ---- ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Read | 373.87 MB/s (730) | 523.75 MB/s (511)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Write | 393.74 MB/s (769) | 558.64 MB/s (545)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Total | 767.62 MB/s (1.4k) | 1.08 GB/s (1.0k)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Geekbench 5 Benchmark Test:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Test | Value
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Single Core | 989
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Multi Core | 2742
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Full Test | https://browser.geekbench.com/v5/cpu/23497058
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Geekbench 6 Benchmark Test:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Test | Value
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Single Core | 1176
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Multi Core | 3029
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Full Test | https://browser.geekbench.com/v6/cpu/11679628
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;YABS completed in 10 min 34 sec
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="fazit"&gt;Fazit
&lt;/h2&gt;&lt;p&gt;Ich habe mit dem Gerät jetzt nicht viel hantiert, hauptsächlich nur einmal die Hardware durchgetestet und geschaut, dass alles in Ordnung ist. Der Lüfter ist unter Last tatsächlich leiser als der von meinem ThinkCentre M715q Tiny, ansonsten würde ich sagen, dass die Geräte sehr ähnlich sind.&lt;/p&gt;</description></item><item><title>HP T430 - ein weiterer Thin Client</title><link>https://secretmine.de/blog/2025/2025-05-03-hp-t430/</link><pubDate>Sat, 03 May 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-05-03-hp-t430/</guid><description>&lt;h2 id="verwendungszweck"&gt;Verwendungszweck
&lt;/h2&gt;&lt;p&gt;Ich habe mittlerweile eine kleine Sammlung an Thin Clients (eine Übersichtsseite mit allen Thin Clients und entsprechenden Beiträgen folgt bei Gelegenheit). Die nutze ich allerdings alle für Zwecke, für die sie nicht gedacht sind. Die meisten (3 von 4) dienen als Server, der letzte ist der Druckserver für meinen 3D-Drucker mit Octoprint. Das ist bei diesem Thin Client nun anders.&lt;/p&gt;
&lt;p&gt;Ich habe seit etwa einem halben Jahr einen Lenovo Thinkcentre M715q Tiny als dritten Server im dauerhaft laufenden Homelab, der deutlich mehr Power als die beiden Futro S740 hat. Damit habe ich auch die notwendige Performance, um VMs als normale Desktop-Maschinen zu nutzen (sowohl Linux als auch Windows). Ich habe schon länger je eine VM mit Debian (KDE) und Windows 11, die ich für den Fernzugriff von außerhalb nutze, hauptsächlich über webbasiertes RDP via Guacamole. Das hat sich so auch schon mehrfach bewährt, da ich von jedem Ort der Welt mit einem Browser und Internet an einen Windows-Arbeitsplatz mit meiner gewohnten Ausstattung und Zugriffsmöglichkeiten komme (und dank 2FA und vernünftigen Zugangsdaten auch sicher). RDP habe ich dabei nicht offen am Internet und das ist auch gut so.&lt;/p&gt;
&lt;p&gt;Zuhause nutze ich morgens vor der Arbeit, in der Mittagspause und auch nach der Arbeit (und natürlich auch an freien Tagen) viel meinen Desktop-PC, der auf Gaming ausgelegt ist, für leichte Aufgaben wie Mails, Surfen und an meinem Blog schrieben. Dafür ist die Rechenleistung aber eigentlich komplett überflüssig bzw. deutlich überdimensioniert. Die GPU brauche ich dabei natürlich auch nicht. Und mein Desktop verbraucht im fast-Leerlauf um die 80 Watt.&lt;/p&gt;
&lt;p&gt;Durch die Arbeit habe ich eine USB-C-Dockingstation, die ich meistens für das Arbeits-Notebook nutze. Die ist über einen KVM-Switch so an meine Monitore und Maus und Tastatur angeschlossen, dass ich mit einem Knopfdruck zwischen Arbeitsrechner und meinem privaten Desktop wechseln kann.&lt;/p&gt;
&lt;p&gt;Und an dieser Stelle kommt jetzt der HP T430 ins Spiel. Dieser Thin Client hat im Vergleich zu vielen anderen Thin Clients nämlich die Besonderheit, dass er einen USB-C-Port hat, der neben USB auch Display-Signale und Strom übertragen kann, sich also mit einem einzigen Kabel an einer Docking-Station betreiben lässt.&lt;/p&gt;
&lt;p&gt;Damit kann ich also, wenn ich nicht auf viel Rechenleistung angewiesen bin, einfach den Thin Client an die Docking-Station anstecken und habe nach kürzester Zeit eine laufende RDP-Verbindung zu meiner Windows- oder Linux-VM und kann meinen Arbeitsplatz normal nutzen, ohne den großen Desktop in Betrieb zu haben. Und ja, natürlich spielt auch die Neugierde bzw. Spielfaktor da mit rein, hundertprozentig sinnvoll ist das Setup so nicht.&lt;/p&gt;
&lt;h2 id="der-hp-t430"&gt;Der HP T430
&lt;/h2&gt;&lt;p&gt;Der Thin Client ist von den Spezifikationen her nichts überragendes bzw. schwächer als z.B. der Futro S740. Verbaut ist ein Intel Celeron N4020 mit 2x 1,1 GHz, also wirklich nicht viel. Dazu sind 2GB RAM und 16GB eMMC-Speicher verlötet. Heißt, an diesem Gerät ist bis auf das WLAN-Modul absolut nichts austauschbar bzw. erweiterbar. Das sieht man auch auf den Bildern gut.&lt;/p&gt;
&lt;p&gt;Die Anschlüsse sind soweit wirklich solide und für so ein Gerät passend, ich hätte mir höchstens noch einen Front-USB gewünscht.&lt;/p&gt;
&lt;h3 id="bilder"&gt;Bilder
&lt;/h3&gt;&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-05-03-hp-t430/images/t430_1.jpg"
width="1500"
height="1169"
srcset="https://secretmine.de/blog/2025/2025-05-03-hp-t430/images/t430_1_hu_48dffc56234548f1.jpg 480w, https://secretmine.de/blog/2025/2025-05-03-hp-t430/images/t430_1_hu_423419bdc73eecec.jpg 1024w"
loading="lazy"
alt="HP T430 - Frontseite"
class="gallery-image"
data-flex-grow="128"
data-flex-basis="307px"
&gt;
&lt;img src="https://secretmine.de/blog/2025/2025-05-03-hp-t430/images/t430_2.jpg"
width="1500"
height="894"
srcset="https://secretmine.de/blog/2025/2025-05-03-hp-t430/images/t430_2_hu_b5c813ddc0a87550.jpg 480w, https://secretmine.de/blog/2025/2025-05-03-hp-t430/images/t430_2_hu_627c5ed21a906ffe.jpg 1024w"
loading="lazy"
alt="HP T430 - Seite"
class="gallery-image"
data-flex-grow="167"
data-flex-basis="402px"
&gt;
&lt;img src="https://secretmine.de/blog/2025/2025-05-03-hp-t430/images/t430_3.jpg"
width="1500"
height="828"
srcset="https://secretmine.de/blog/2025/2025-05-03-hp-t430/images/t430_3_hu_3f8fcab285cce143.jpg 480w, https://secretmine.de/blog/2025/2025-05-03-hp-t430/images/t430_3_hu_a2debc838b9a929b.jpg 1024w"
loading="lazy"
alt="HP T430 - Rückseite"
class="gallery-image"
data-flex-grow="181"
data-flex-basis="434px"
&gt;
&lt;img src="https://secretmine.de/blog/2025/2025-05-03-hp-t430/images/t430_4.jpg"
width="1500"
height="1500"
srcset="https://secretmine.de/blog/2025/2025-05-03-hp-t430/images/t430_4_hu_c01dd30d0a600c08.jpg 480w, https://secretmine.de/blog/2025/2025-05-03-hp-t430/images/t430_4_hu_b1a95cb2873a7ee3.jpg 1024w"
loading="lazy"
alt="HP T430 - Unten"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
&gt;
&lt;img src="https://secretmine.de/blog/2025/2025-05-03-hp-t430/images/t430_5.jpg"
width="2000"
height="1125"
srcset="https://secretmine.de/blog/2025/2025-05-03-hp-t430/images/t430_5_hu_643e2e94e5809f7f.jpg 480w, https://secretmine.de/blog/2025/2025-05-03-hp-t430/images/t430_5_hu_bb9bc9f7531b6e56.jpg 1024w"
loading="lazy"
alt="HP T430 - Innen"
class="gallery-image"
data-flex-grow="177"
data-flex-basis="426px"
&gt;&lt;/p&gt;
&lt;h2 id="betriebssystem"&gt;Betriebssystem
&lt;/h2&gt;&lt;h3 id="hp-thinpro-os"&gt;HP ThinPro OS
&lt;/h3&gt;&lt;p&gt;Der Thin Client kam mit HP ThinPro OS ausgeliefert. Das ist ein auf Thin Clients ausgelegtes OS auf Linux-Basis (afaik Debian, aber da bin ich mir nicht sicher). Es ist auf den Einsatz in Unternehmen zugeschnitten und bietet damit natürlich auch Möglichkeiten wie zentralem Management. An Fernzugriff ist Citrix, VMware Horizon, RemoteDesktop und weiteres direkt an Board, RDP basiert hierbei auf FreeRDP. Funktioniert hat das ganze gut, war mir allerdings nicht flexibel genug.&lt;/p&gt;
&lt;h3 id="alpine-mit-xfce-und-remmina"&gt;Alpine mit XFCE und Remmina
&lt;/h3&gt;&lt;p&gt;Als nächstes habe ich mit Alpine experimentiert. Das lief soweit auch, nur hatte ich z.B. Probleme mit der Bildschirmanordnung in Remote-Sessions. Auch war mir das Alpine zu unflexibel bzw. zu minimalistisch.&lt;/p&gt;
&lt;h3 id="debian-mit-xfce-und-remmina"&gt;Debian mit XFCE und Remmina
&lt;/h3&gt;&lt;p&gt;Und so bin ich dann beim guten alten Debian gelandet, auch hier mit XFCE als Desktop und Remmina als Remote-Tool. Das funktioniert soweit gut - und die RDP-Sessions auch flüssiger als mit dem OS von HP. Mit Debian habe ich auch ein OS, womit ich auch außerhalb von Remotezugriff arbeiten kann, auch wenn z.B. Firefox recht langsam ist.&lt;/p&gt;
&lt;h3 id="probleme-mit-alpine-und-debian"&gt;Probleme mit Alpine und Debian
&lt;/h3&gt;&lt;p&gt;Bei Debian und Alpine hatte ich bei beidem Probleme mit Standby bzw. nach ausgeschaltetem Monitor, die Monitore wieder aufzuwecken. Außerdem wurde beim Booten die GUI nicht immer gestartet, teilweise blieben die Monitore nach dem Übergang zum X-Server schwarz. Der Thin Client lief, via Strg+Alt konnte ich auch zu anderen Terminals wechseln und via CLI arbeiten, aber wirklich zuverlässig war das nicht. Deswegen bin ich jetzt erstmal wieder bei dem OS von HP gelandet, worüber ich auch gerade diesen Absatz schreibe. Generell ist ein großer Teil dieses Posts über den Thin Client entstanden, das geht wirklich gut.&lt;/p&gt;
&lt;h2 id="stromverbrauch"&gt;Stromverbrauch
&lt;/h2&gt;&lt;p&gt;Der Stromverbrauch von dem Gerät ist auf dem Desktop ohne Remote-Session bei etwa 6 Watt, was sehr angenehm ist. Ohne angeschlossene Peripherie sinkt der Verbrauch auf 4 Watt.&lt;/p&gt;
&lt;p&gt;Mein kompletter Arbeitsplatz (also Monitore plus Dockingstation plus PC/Thin-Client) verbraucht statt vorher ~170 Watt im leichten Desktop-Betrieb mit Surfen oder leichteren Arbeiten in VSCode jetzt etwas unter 60 Watt, wobei das meiste wahrscheinlich schon auf die Monitore entfällt. Der Heimserver, auf dem die VM läuft, braucht natürlich ein wenig mehr Strom, während ich in der VM arbeite, aber das sind maximal 10 Watt oder so. Insgesamt spart es also gute 100 Watt. Und bei aktuellen Strompreisen von etwa 30 Cent pro kWh müsste ich das Setup 1650 Stunden nutzen, um den Break-Even zu erreichen (fast 70 Tage durchgehend). Realistisch ist das so nicht, wenn wir ehrlich sind. Ich würde sagen, ich nutze das Setup wahrscheinlich maximal 10 Stunden pro Woche, was 165 Wochen bzw. etwas über drei Jahre ergibt. Das geht vom ROI her natürlich noch, aber zeigt trotzdem, dass das Setup so eher mäßig sinnvoll ist.&lt;/p&gt;
&lt;p&gt;Aber nicht alles im Homelab muss ja auch komplett sinnvoll sein. Mir gehts dabei eher darum, Erfahrung mit solchen Setups zu machen und mir die Praxistauglichkeit von so einer Lösung mal selbst anzusehen.&lt;/p&gt;
&lt;h2 id="andere-verwendungszwecke"&gt;Andere Verwendungszwecke
&lt;/h2&gt;&lt;p&gt;Der nicht erweiterbare RAM und Speicher schränkt natürlich die Nutzung des Geräts für andere Zwecke ein. HomeAssistant oder als kleiner Docker-Host für z.B. Pihole dürfte allerdings gut funktionieren, auch wenn ich es nicht getestet habe. Auch als Printserver für einen 3D-Drucker mit Octoprint dürfte das Gerät eine gute Figur machen. Generell geht alles, was nicht viel Rechenleistung, RAM und Speicher braucht, Linux läuft auf dem T430 problemlos. Für Windows (und generell Einsatz als normaler Desktop) ist die Hardware schlicht zu schwach.&lt;/p&gt;
&lt;h2 id="benchmark"&gt;Benchmark
&lt;/h2&gt;&lt;p&gt;YABS darf natürlich hier auch nicht fehlen. Geekbench 6 lief hierbei aus mir nicht bekannten Gründen nicht durch.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;span class="lnt"&gt;37
&lt;/span&gt;&lt;span class="lnt"&gt;38
&lt;/span&gt;&lt;span class="lnt"&gt;39
&lt;/span&gt;&lt;span class="lnt"&gt;40
&lt;/span&gt;&lt;span class="lnt"&gt;41
&lt;/span&gt;&lt;span class="lnt"&gt;42
&lt;/span&gt;&lt;span class="lnt"&gt;43
&lt;/span&gt;&lt;span class="lnt"&gt;44
&lt;/span&gt;&lt;span class="lnt"&gt;45
&lt;/span&gt;&lt;span class="lnt"&gt;46
&lt;/span&gt;&lt;span class="lnt"&gt;47
&lt;/span&gt;&lt;span class="lnt"&gt;48
&lt;/span&gt;&lt;span class="lnt"&gt;49
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tc@hp-t430:~$ curl -sL https://yabs.sh | bash -s -- -5 -6 -i
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Yet-Another-Bench-Script #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# v2025-04-20 #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# https://github.com/masonr/yet-another-bench-script #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Do 1. Mai 08:59:13 CEST 2025
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Basic System Information:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Uptime : 0 days, 0 hours, 4 minutes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Processor : Intel(R) Celeron(R) N4020 CPU @ 1.10GHz
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CPU cores : 2 @ 2186.154 MHz
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AES-NI : ✔ Enabled
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;VM-x/AMD-V : ❌ Disabled
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;RAM : 1.5 GiB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Swap : 977.0 MiB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Disk : 13.4 GiB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Distro : Debian GNU/Linux 12 (bookworm)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Kernel : 6.1.0-34-amd64
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;VM Type : NONE
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;IPv4/IPv6 : ✔ Online / ❌ Offline
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/mmcblk0p2):
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Block Size | 4k (IOPS) | 64k (IOPS)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ------ | --- ---- | ---- ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Read | 5.51 MB/s (1.3k) | 8.98 MB/s (140)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Write | 5.53 MB/s (1.3k) | 9.50 MB/s (148)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Total | 11.05 MB/s (2.7k) | 18.49 MB/s (288)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; | |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Block Size | 512k (IOPS) | 1m (IOPS)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ------ | --- ---- | ---- ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Read | 9.08 MB/s (17) | 17.53 MB/s (17)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Write | 10.13 MB/s (19) | 18.86 MB/s (18)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Total | 19.22 MB/s (36) | 36.39 MB/s (35)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Geekbench 5 Benchmark Test:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Test | Value
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Single Core | 516
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Multi Core | 779
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Full Test | https://browser.geekbench.com/v5/cpu/23509544
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Geekbench 6 test failed. Run manually to determine cause.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;YABS completed in 27 min 5 sec
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Backup-Server für das NAS</title><link>https://secretmine.de/blog/2025/2025-04-27-backup-server-fuer-das-nas/</link><pubDate>Sun, 27 Apr 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-04-27-backup-server-fuer-das-nas/</guid><description>&lt;p&gt;Irgendwie bin ich in letzter Zeit im Backup-Fieber&amp;hellip; Ich weiß auch nicht.&lt;/p&gt;
&lt;p&gt;Bisher wurden die Daten von meinem NAS (etwa 8TB belegt) nicht gesichert, ich habe nur die wichtigsten paar hundert GB ab und an in meine Storagebox bei Hetzner gesynct. Damit bin ich aber nicht so zufrieden, da der Datenverlust im Zweifelsfall doch deutlich wäre.&lt;/p&gt;
&lt;h2 id="festplatten"&gt;Festplatten
&lt;/h2&gt;&lt;p&gt;Irgendwo müssen solche Datenmengen hin, so viel hat man auch nicht einfach an Festplatten herumliegen. Cloud-Speicher ist in den Größenordnungen auch eher teuer, selbst wenn man Archivspeicher (z.B. S3 Glacier bei Scaleway) nutzt. Daher habe ich hierfür Festplatten gekauft. Weil es nur um Backups geht, waren refurbished Platten für mich okay, solange die in einem RAID oder ZFS laufen. Konkret wurde es eine Seagate Enterprise Capacity mit 12TB und eine Seagate Ironwolf mit 12TB. Ich habe verschiedene Modellreihen genommen, um einem gleichzeitigen Ausfall etwas vorzubeugen.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-04-27-backup-server-fuer-das-nas/images/hdds.jpg"
width="1500"
height="1010"
srcset="https://secretmine.de/blog/2025/2025-04-27-backup-server-fuer-das-nas/images/hdds_hu_842a10b3b70912d6.jpg 480w, https://secretmine.de/blog/2025/2025-04-27-backup-server-fuer-das-nas/images/hdds_hu_4b4cd092ca19e9e.jpg 1024w"
loading="lazy"
alt="Die Festplatten"
class="gallery-image"
data-flex-grow="148"
data-flex-basis="356px"
&gt;&lt;/p&gt;
&lt;h3 id="benchmarks"&gt;Benchmarks
&lt;/h3&gt;&lt;p&gt;Bevor ich die Festplatten tatsächlich nutze, habe ich kurz mit CrystalDiskBench mit meinem Windows-Rechner Tests gemacht.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-04-27-backup-server-fuer-das-nas/images/bench_12tb_enterprise_capacity.png"
width="482"
height="352"
srcset="https://secretmine.de/blog/2025/2025-04-27-backup-server-fuer-das-nas/images/bench_12tb_enterprise_capacity_hu_950d08b5b387fcd3.png 480w, https://secretmine.de/blog/2025/2025-04-27-backup-server-fuer-das-nas/images/bench_12tb_enterprise_capacity_hu_5aa8f673a695cdb8.png 1024w"
loading="lazy"
alt="Benchmark Seagate Enterprise Capacity 12TB (refurbished)"
class="gallery-image"
data-flex-grow="136"
data-flex-basis="328px"
&gt;
&lt;img src="https://secretmine.de/blog/2025/2025-04-27-backup-server-fuer-das-nas/images/bench_12tb_ironwolf.png"
width="482"
height="352"
srcset="https://secretmine.de/blog/2025/2025-04-27-backup-server-fuer-das-nas/images/bench_12tb_ironwolf_hu_8b997cf5540bf316.png 480w, https://secretmine.de/blog/2025/2025-04-27-backup-server-fuer-das-nas/images/bench_12tb_ironwolf_hu_8dd1212d1c9b6a1d.png 1024w"
loading="lazy"
alt="Benchmark Seagate Ironwolf 12TB (refurbished)"
class="gallery-image"
data-flex-grow="136"
data-flex-basis="328px"
&gt;&lt;/p&gt;
&lt;h2 id="server"&gt;Server
&lt;/h2&gt;&lt;p&gt;Ich habe aus vorhandener Hardware einen kleinen Server gebaut, der dann in den Keller kommt und bei Bedarf eingeschaltet werden kann. Die Hardware ist absolut nicht herausragend, reicht für den Zweck allerdings problemlos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU: Intel Pentium G3258&lt;/li&gt;
&lt;li&gt;RAM: 4GB &lt;em&gt;(zweiter Slot vom Mainboard leider defekt)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Datenträger:
&lt;ul&gt;
&lt;li&gt;120GB SSD (TrueNAS)&lt;/li&gt;
&lt;li&gt;2x 12TB HDD&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ich habe dann das aktuelle TrueNAS Scale installiert und ein RAIDZ1 erstellt. Ich habe mich hier explizit für RAIDZ1 statt einem Mirror entschieden, damit ich später simpel die Kapazität mit z.B. einer weiteren 12TB-Platte erweitern kann. Das RAIDZ1 verhält sich mit zwei Festplatten eigentlich wie ein Mirror. Schade ist hierbei, dass sich so ein zdev nicht über die UI erstellen lässt, das muss per CLI passieren.&lt;/p&gt;
&lt;h2 id="datensicherung"&gt;Datensicherung
&lt;/h2&gt;&lt;p&gt;Anfangs hatte ich die Sicherungen mit &lt;code&gt;rsync&lt;/code&gt; gemacht, das funktioniert auch soweit gut. Es hat jedoch einen gravierenden Nachteil: Das Verschieben von Dateien wird nicht erkannt. Deswegen habe ich nun auf &lt;code&gt;rclone&lt;/code&gt; umgestellt, weiterhin per SFTP. Dort gibt es das Argument &lt;code&gt;--track-renames&lt;/code&gt;, was bei Dateien, die entweder nur in der Quelle oder nur im Ziel sind, versucht, ein Matching zu möglichen anderen Dateien zu machen und entsprechend umzubenennen. Das scheint auch gut zu funktionieren.&lt;/p&gt;
&lt;p&gt;Nach einem Sync lege ich händisch einen ZFS Snapshot an, um den alten Stand einzufrieren. Mein Plan ist, dass ich den kompletten Prozess automatisiere, also dann folgende Schritte in ein Script gieße:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NAS hochfahren&lt;/li&gt;
&lt;li&gt;Backup-NAS hochfahren&lt;/li&gt;
&lt;li&gt;Sync ausführen und abwarten&lt;/li&gt;
&lt;li&gt;ZFS-SNapshot auf Backup-NAS erstellen&lt;/li&gt;
&lt;li&gt;Backup-NAS herunterfahren&lt;/li&gt;
&lt;li&gt;NAS in Standby schicken&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Das soll dann etwa 1x pro Woche erfolgen. Ich habe mich bisher mit der TrueNAS-API noch nicht auseinandergesetzt, aber ansonsten kann ich die ZFS-Snapshots auch einfach direkt per CLI erstellen.&lt;/p&gt;</description></item><item><title>Proxmox Backup Server für den Hauptcluster</title><link>https://secretmine.de/blog/2025/2025-03-30-proxmox-backup-server-fuer-den-hauptcluster/</link><pubDate>Sun, 30 Mar 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-03-30-proxmox-backup-server-fuer-den-hauptcluster/</guid><description>&lt;p&gt;Ich habe schon länger darüber nachgedacht, wie ich gut und günstig meine VMs und Container sichern kann. Ich hatte in dem Zuge erst &lt;a class="link" href="https://secretmine.de/blog/2024/2024-10-22-proxmox-backup-server-via-s3/" &gt;PBS über S3&lt;/a&gt; getestet, was lief, aber nicht optimal war - und dann lange einen externen Anbieter (&lt;a class="link" href="https://secretmine.de/blog/2025/2025-03-12-proxmox-backup-server-kostenlos/" &gt;Tuxis&lt;/a&gt;) für PBS genutzt. Da bin ich mit 150GB allerdings beim Speicherplatz stark eingeschränkt.&lt;/p&gt;
&lt;h2 id="bisherige-backup-strategie"&gt;Bisherige Backup-Strategie
&lt;/h2&gt;&lt;p&gt;Bisher landen die wichtigsten VMs und Container auf einem externen PBS-Server bei Tuxis, die Dateien der Nextcloud werden mittels &lt;code&gt;restic&lt;/code&gt; auf eine Storage-Box bei Hetzner gesichert. Das deckt aber nur einen Teil der VMs und Container ab, und vor allem ist die Wiederherstellung teilweise aufwändiger. Daher habe ich schon länger den Wunsch, das ganze zu vereinfachen&lt;/p&gt;
&lt;h2 id="der-plan"&gt;Der Plan
&lt;/h2&gt;&lt;p&gt;Ich habe eine billige 1TB Sata-SSD gekauft (genauer gesagt eine Lexar NQ100 im Angebot). Diese soll in den dritten Host (der Mini-PC, Lenovo Tinkcentre M715q Tiny) kommen, damit dort dann Proxmox Backup Server laufen kann. Damit habe ich dann genügend Kapazität, um wirklich alle VMs und Container zu sichern und bei Bedarf schnell wiederherstellen zu können.&lt;/p&gt;
&lt;h2 id="die-umsetzung"&gt;Die Umsetzung
&lt;/h2&gt;&lt;p&gt;Ich habe also die SSD verbaut (nebenbei auch noch die NVMe von 240GB auf 480GB getauscht und mittels &lt;code&gt;gparted&lt;/code&gt; die bisherigen Partitionen kopiert und vergrößert).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-03-30-proxmox-backup-server-fuer-den-hauptcluster/images/m715q-1.jpg"
width="1500"
height="1500"
srcset="https://secretmine.de/blog/2025/2025-03-30-proxmox-backup-server-fuer-den-hauptcluster/images/m715q-1_hu_ef3476e4368a1bc0.jpg 480w, https://secretmine.de/blog/2025/2025-03-30-proxmox-backup-server-fuer-den-hauptcluster/images/m715q-1_hu_fd7d84770343d30c.jpg 1024w"
loading="lazy"
alt="Lenovo M715q Tiny von innen"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
&gt;
&lt;img src="https://secretmine.de/blog/2025/2025-03-30-proxmox-backup-server-fuer-den-hauptcluster/images/m715q-2.jpg"
width="1500"
height="1500"
srcset="https://secretmine.de/blog/2025/2025-03-30-proxmox-backup-server-fuer-den-hauptcluster/images/m715q-2_hu_f4ca761fb767db1d.jpg 480w, https://secretmine.de/blog/2025/2025-03-30-proxmox-backup-server-fuer-den-hauptcluster/images/m715q-2_hu_a38ea4b80fe23ea5.jpg 1024w"
loading="lazy"
alt="Lenovo M715q Tiny von innen - mit Sata-SSD"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
&gt;&lt;/p&gt;
&lt;h2 id="installation-von-pbs"&gt;Installation von PBS
&lt;/h2&gt;&lt;p&gt;Ich habe PBS direkt mit auf dem Host installiert. Da das ein Proxmox ist, war das auch nicht weiter schwierig (wäre es allerdings auf jedem Debian nicht). In der Doku befindet sich dazu auch eine Anleitung, die man recht gut befolgen kann (&lt;a class="link" href="https://pbs.proxmox.com/docs/installation.html#install-proxmox-backup-server-on-proxmox-ve%29" target="_blank" rel="noopener"
&gt;https://pbs.proxmox.com/docs/installation.html#install-proxmox-backup-server-on-proxmox-ve)&lt;/a&gt;. Vor dem &lt;code&gt;apt&lt;/code&gt;-Befehl muss man aber noch manuell das APT-Repo hinzufügen. Die ganze Installation sieht also etwa so aus:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;deb http://download.proxmox.com/debian/pbs bookworm pbs-no-subscription&amp;#34;&lt;/span&gt; &amp;gt; /etc/apt/sources.list.d/pbs.list
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt install proxmox-backup-server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;em&gt;Die Befehle habe ich vor dem Posten nicht getestet, das habe ich jetzt im Nachhinein noch kurz zusammengesammelt.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Danach ist Proxmox Backup Server unter &lt;code&gt;https://[host]:8007&lt;/code&gt; erreichbar.&lt;/p&gt;
&lt;h2 id="lexar-nq100-für-diesen-zweck"&gt;Lexar NQ100 für diesen Zweck
&lt;/h2&gt;&lt;p&gt;Die SSD scheint soweit gut geeignet als Backup-Ziel zu sein, auch wenn ich leichte Zweifel an der Langlebigkeit dieser SSD habe. Das liegt aber eigentlich nur am Preis, mir sind generell bisher eigentlich fast keine SSDs kaputt gegangen (eine noname 32GB SSD aus Chinau und eine 240GB Billig-SSD von Toshiba).&lt;/p&gt;
&lt;h2 id="spiegel-vom-pbs-datastore"&gt;Spiegel vom PBS Datastore
&lt;/h2&gt;&lt;p&gt;Proxmox Backup Server kann Backups auf einen externen Server replizieren. Ich habe im Keller im zweiten Part vom Homelab einen Thin-Client (Fujitsu Futro S720) mit einer Sata-HDD, der als Backup-Server und Storage für die Server im Keller dient. Dorthin will ich einen (unregelmäßigen und manuellen) Sync einrichten, damit ich zumindest halb-offsite auch noch einen schnell verfügbaren Spiegel habe.&lt;/p&gt;</description></item><item><title>Hugo statt Wordpress - 2 Jahre später</title><link>https://secretmine.de/blog/2025/2025-03-23-hugo-statt-wordpress-2-jahre-spaeter/</link><pubDate>Sun, 23 Mar 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-03-23-hugo-statt-wordpress-2-jahre-spaeter/</guid><description>&lt;p&gt;Es ist nun etwas über zwei Jahre her, dass ich den Umstieg von Wordpress zu Hugo gemacht habe, ich hatte damals dazu auch &lt;a class="link" href="https://secretmine.de/blog/2023/2023-01-18-neue-seite/" &gt;einen Post&lt;/a&gt; geschrieben. Und ich bin wirklich zufrieden damit. Ich finde es sehr angenehm, die Posts einfach in VS Code in Markdown zu schreiben statt über die UI von Wordpress - ich nutze ja keine komplesen Layouts oder ähnliches. Die Seite ist auch spürbar schneller geworden durch diese Umstellung und benötigt trotzdem sehr viel weniger Rechenleistung und auch keine Datenbank mehr.&lt;/p&gt;
&lt;p&gt;Der normale Git-Workflow mit Branches und co ergibt für mich hier auch Sinn. Ich habe einen getrennten &lt;code&gt;dev&lt;/code&gt;-Branch, dessen Ergebnisse auf einer geschützten Staging-Seite veröffentlicht werden. Ich kann bei Posts, die in Arbeit sind, entweder &lt;code&gt;draft: true&lt;/code&gt; setzen oder in einem Branch arbeiten, um zu verhindern, dass der Post schon live geht.&lt;/p&gt;
&lt;p&gt;Das einzige, was mich etwas stört, ist das Planen von Posts. Ja, ich kann das Datum von einem Post auf die Zukunft setzen, das sorgt dann dafür, dass dieser Post noch nicht veröffentlicht wird, solange das Datum nicht erreicht ist. Das Problem ist hier allerdings, dass ich aktuell dann manuell einen Build anwerfen muss, nachdem das Datum erreicht wurde. Gitea hat leider, im Vergleich zu z.B. Gitlab, keine Möglichkeit, Pipelines zu schedulen. Das werde ich vielleicht noch mit einem Cron lösen, ich weiß allerdings noch nicht, ob ich das z.B. über einen Webhook triggern kann.&lt;/p&gt;
&lt;p&gt;Ich habe mir mit n8n auch schon eine Automatisierung gebaut, die regelmäßig auf neue Posts prüft und dann entsprechend auf meinem Discord eine Nachricht hinterlässt.&lt;/p&gt;
&lt;p&gt;Insgesamt bin ich wirklich happy mit der Umstellung und spare dadurch einfach Zeit und Aufwand. Ich kann die Seite einfach mal ein paar Wochen vergessen und muss keine Angst haben, dadurch ungepatchte Sicherheitslücken zu haben. Es ist einfach simpler so. Und ist - meiner Meinung nach - auch vom Design her schlichter und ansprechender.&lt;/p&gt;</description></item><item><title>Proxmox Backup Server kostenlos (bei Tuxis)</title><link>https://secretmine.de/blog/2025/2025-03-12-proxmox-backup-server-kostenlos/</link><pubDate>Fri, 14 Mar 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-03-12-proxmox-backup-server-kostenlos/</guid><description>&lt;h2 id="was-ist-proxmox-backup-server-überhaupt"&gt;Was ist Proxmox Backup Server überhaupt?
&lt;/h2&gt;&lt;p&gt;Der Proxmox Backup Server (PBS) ist eine Open-Source-Lösung zum Sichern von virtuellen Maschinen (VMs), Containern und physikalischen Hosts. Besonders in Kombination mit Proxmox VE ist PBS ideal, um effiziente und sichere Backups zu erstellen. PBS ist in Proxmox VE direkt integriert.&lt;/p&gt;
&lt;p&gt;PBS unterstützt deduplizierte und inkrementelle Backups, was bedeutet, dass nur geänderte Daten gesichert werden, um Speicherplatz zu sparen. Backups können zudem komprimiert und verschlüsselt werden, was die Sicherheit und Effizienz erhöht.&lt;/p&gt;
&lt;h2 id="der-kostenlose-anbieter"&gt;Der kostenlose Anbieter
&lt;/h2&gt;&lt;p&gt;Durch Zufall bin ich bei Reddit in einem Kommentar darauf gestoßen, dass es einen Anbieter gibt, der Proxmox Backup Server mit 150 GB Speicherplatz komplett kostenfrei anbietet. Tuxis ist ein IT-Service-Provider mit Sitz in den Niederlanden.&lt;/p&gt;
&lt;p&gt;Der Link zum Angebot: &lt;a class="link" href="https://www.tuxis.nl/de/proxmox-backup-server/" target="_blank" rel="noopener"
&gt;https://www.tuxis.nl/de/proxmox-backup-server/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Beim Schreiben dieses Posts muss ich leider feststellen, dass es die kostenlosen Pakete zumindest Stand heute nicht verfügbar sind. Vielleicht kommen die noch wieder, vielleicht aber auch nicht.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="meine-erfahrung"&gt;Meine Erfahrung
&lt;/h2&gt;&lt;p&gt;Ich habe den kostenlosen PBS also bestellt und innerhalb weniger Minuten die Zugangsdaten bekommen. Das ganze habe ich dann auch direkt in meinem Homeserver eingerichtet, hierbei mit Verschlüsselung, da die Daten nicht in meiner Hoheit liegen. Der Backup Space funktioniert, hat bisher keinerlei Fehler geworfen und scheint auch zuverlässig zu sein. Ich nutze das ganze allerdings auch erst seit ein paar Tagen, von daher kann ich zur langfristigen Stabilität noch nichts sagen. Bei kostenlosen Angeboten wie diesen muss man natürlich auch immer damit rechnen, dass das Angebot ohne große Ankündigung eingestellt wird, daher nutze ich es auch nur als zusätzliches Offsite-Backup. Ich gebe mir dabei auch Mühe, dass ich nicht zu viel Platz belege, immerhin ist es ein kostenloses Angebot, von dem ich hoffe, dass es so schnell nicht eingestellt wird.&lt;/p&gt;
&lt;h2 id="alternativen"&gt;Alternativen
&lt;/h2&gt;&lt;p&gt;Mir sind sonst auf dem Markt nicht wirklich viele Alternativen (also bezahlt) bekannt, die PBS anbieten. Es gibt sie aber. Ansonsten geht natürlich auch ein vServer mit genügend Storage - dafür findet man auch problemlos Anbieter (teilweise auch mit kleinem SSD-Boot-Speicher und dickem HDD-Speicher dazu). Und PBS statt reinem Storage (z.B. Hetzner Storage Box oder so) hat den großen Vorteil, dass die Deduplizierung bzw. inkrementelle Sicherung greift (und damit nicht nur Speicherplatz, sondern auch Bandbreite spart). Bei mir ist das aktuell (insgesamt knapp 300 Snapshots) ein Deduplizierungsfaktor von etwa 17.&lt;/p&gt;</description></item><item><title>Upgrades für den zweiten Fujitsu Futro S740</title><link>https://secretmine.de/blog/2025/2025-03-07-upgrades-fuer-den-zweiten-fujitsu-futro-s740/</link><pubDate>Fri, 07 Mar 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-03-07-upgrades-fuer-den-zweiten-fujitsu-futro-s740/</guid><description>&lt;p&gt;&amp;hellip; oder auch: Wie man zwei M.2 2280-SSDs in einem Thin Client verbaut.&lt;/p&gt;
&lt;p&gt;Ich habe ja Ende letzten Jahres für meine Nextcloud einen &lt;a class="link" href="https://secretmine.de/blog/2024/2024-10-19-zweiter-futro-s740/" &gt;zweiten Fujitsu Futro S740&lt;/a&gt; gekauft. Bislang war dort eine 240GB SSD verbaut, der Speicher wurde allerdings jetzt langsam knapp.&lt;/p&gt;
&lt;p&gt;Ich hatte beim ersten S740 ja mit einem Adapter schon den für das Wifi-Modul gedachte Slot für eine NVMe-SSD &lt;a class="link" href="https://secretmine.de/blog/2024/2024-04-06-futro-s740-upgrades/" &gt;zweckentfremdet&lt;/a&gt;, das funktioniert auch bis heute stabil.&lt;/p&gt;
&lt;p&gt;Jetzt steht ein ähnliches Upgrade für den zweiten Futro S740 an.&lt;/p&gt;
&lt;h2 id="die-ssd"&gt;Die SSD
&lt;/h2&gt;&lt;p&gt;Ich habe (im Angebot) eine Kingston NV3 mit 1TB gekauft. Eine SSD aus dem unteren Preissegment mit keinen besonderen Leistungswerten, einfach nur brauchbarer Massenspeicher. Durch die Anbindung von dem Port (laut Internet PCIe 2.0 x1, also etwa 500 MB/s) würde eine schnellere SSD hier eh nicht viel bringen und ich habe nicht vor, nennenswert VMs oder ähnliches auf der SSD zu betreiben. Primär werden dort die eigentlichen Daten der Nextcloud liegen.&lt;/p&gt;
&lt;h2 id="das-upgrade"&gt;Das Upgrade
&lt;/h2&gt;&lt;p&gt;Zuerst habe ich den Futro also heruntergefahren und aufgeschraubt.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-03-07-upgrades-fuer-den-zweiten-fujitsu-futro-s740/images/step1.jpg"
width="1500"
height="1214"
srcset="https://secretmine.de/blog/2025/2025-03-07-upgrades-fuer-den-zweiten-fujitsu-futro-s740/images/step1_hu_9d4825f0019805c2.jpg 480w, https://secretmine.de/blog/2025/2025-03-07-upgrades-fuer-den-zweiten-fujitsu-futro-s740/images/step1_hu_438e93b035038112.jpg 1024w"
loading="lazy"
alt="Fujitsu Futro S740 von innen"
class="gallery-image"
data-flex-grow="123"
data-flex-basis="296px"
&gt;&lt;/p&gt;
&lt;p&gt;Danach habe ich den M.2-Adapter von A/E-Key zu M-Key zugeschnitten und verbaut&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-03-07-upgrades-fuer-den-zweiten-fujitsu-futro-s740/images/step2.jpg"
width="1500"
height="1172"
srcset="https://secretmine.de/blog/2025/2025-03-07-upgrades-fuer-den-zweiten-fujitsu-futro-s740/images/step2_hu_28aed5a8ee9d714e.jpg 480w, https://secretmine.de/blog/2025/2025-03-07-upgrades-fuer-den-zweiten-fujitsu-futro-s740/images/step2_hu_6724b43711a59155.jpg 1024w"
loading="lazy"
alt="Verbauter M.2-Adapter"
class="gallery-image"
data-flex-grow="127"
data-flex-basis="307px"
&gt;&lt;/p&gt;
&lt;p&gt;Nun war auch schon der Einbau der SSD dran. Dadurch, dass das eigentlich so nicht gedacht ist, gibt es natürlich keine Möglichkeit, die SSD festzuschrauben. Daher habe ich einfach temperaturbeständiges Klebeband verwendet - im anderen Futro S740 funktioniert das seit fast einem Jahr problemlos.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-03-07-upgrades-fuer-den-zweiten-fujitsu-futro-s740/images/step3.jpg"
width="1500"
height="1126"
srcset="https://secretmine.de/blog/2025/2025-03-07-upgrades-fuer-den-zweiten-fujitsu-futro-s740/images/step3_hu_5be4a43fd6523043.jpg 480w, https://secretmine.de/blog/2025/2025-03-07-upgrades-fuer-den-zweiten-fujitsu-futro-s740/images/step3_hu_f9078054362d8823.jpg 1024w"
loading="lazy"
alt="Futro mit zwei M.2 2280 SSDs"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="319px"
&gt;&lt;/p&gt;
&lt;p&gt;Damit das ganze auch nicht zu warm wird, habe ich noch ein kleines Reststück Kunststoff dazwischen gesetzt, um etwas Abstand zwischen die SSDs zu bringen.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2025/2025-03-07-upgrades-fuer-den-zweiten-fujitsu-futro-s740/images/mainboard.jpg"
width="1500"
height="281"
srcset="https://secretmine.de/blog/2025/2025-03-07-upgrades-fuer-den-zweiten-fujitsu-futro-s740/images/mainboard_hu_eee249306a23ea99.jpg 480w, https://secretmine.de/blog/2025/2025-03-07-upgrades-fuer-den-zweiten-fujitsu-futro-s740/images/mainboard_hu_ec95d93dbb083b00.jpg 1024w"
loading="lazy"
alt="SSDs von der Seite"
class="gallery-image"
data-flex-grow="533"
data-flex-basis="1281px"
&gt;&lt;/p&gt;
&lt;p&gt;Und ja, das ganze sieht ziemlich nach Bastelei aus und gefällt mir auch nicht zu hundert Prozent - aber es funktioniert wirklich gut.&lt;/p&gt;
&lt;h2 id="der-start-danach"&gt;Der Start danach
&lt;/h2&gt;&lt;p&gt;Die SSD wurde nach dem Starten nach dem Einbau nicht sofort erkannt. Ich hatte erst den Kontakt selbst im Auge, aber dann ist mir eingefallen, dass ich das Wifi/Bluetooth-Modul im BIOS deaktiviert hatte. Und die SSD sitzt natürlich genau in dem Slot. Nach dem Aktivieren wurde die SSD dann exakt wie erwartet erkannt und hat genau so funktioniert wie sie soll. Die Nextcloud-Daten sind auch schon umgezogen - das war letztendlich nur ein Verschieben der entsprechenden Disk.&lt;/p&gt;
&lt;h2 id="ausblick"&gt;Ausblick
&lt;/h2&gt;&lt;p&gt;Bald müsste auch noch eine weitere SSD ankommen, diesmal eine Sata-SSD für den Mini-PC. Dann gibts auch nen flotten Proxmox Backup Server direkt im Haupt-Lab. Beitrag folgt dann.&lt;/p&gt;</description></item><item><title>Lokale SSL-Zertifikate mit Caddy und Step-CA</title><link>https://secretmine.de/blog/2025/2025-02-28-lokale-ssl-zertifikate-mit-caddy-und-step-ca/</link><pubDate>Fri, 28 Feb 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-02-28-lokale-ssl-zertifikate-mit-caddy-und-step-ca/</guid><description>&lt;p&gt;Ich habe zuhause zwei Caddy-Instanzen als Reverse-Proxy laufen - einer als Proxy für Traffic von außen (via RZ), einer als Proxy für Traffic innerhalb vom Netzwerk.&lt;/p&gt;
&lt;p&gt;Ich nutze eine interne Domain (&lt;code&gt;home.local&lt;/code&gt; - ja, ich weiß, &lt;code&gt;.internal&lt;/code&gt; wäre besser) für die Dienste, die nicht über das Internet aufrufbar sind. Dafür habe ich auch einen lokalen DNS-Server, der diese Zone bereitstellt.&lt;/p&gt;
&lt;p&gt;Was noch fehlte war HTTPS für die internen Dienste, Lets Encrypt oder ähnliches ist dort nicht nutzbar.&lt;/p&gt;
&lt;h2 id="step-ca"&gt;Step-CA
&lt;/h2&gt;&lt;p&gt;Step-CA ist eine selbst betreibbare Zertifizierungsstelle, die u.a. ACME kann. ACME ist das selbe &amp;ldquo;Protokoll&amp;rdquo;, was auch Lets Encrypt zur Verifizierung von Hosts und der Ausstellung von Zertifikaten benutzt. Das ganze ist ziemlich flott eingerichtet und lässt sich dann simpel an Clients wie Certbot oder auch Caddy anbinden und damit automatisch Zertifikate ausstellen. Das einzige manuelle ist, dass man auf allen Computern (und Smartphones und co), die diese lokalen Dienste nutzen sollen, natürlich das Root-Zertifikat der Step-CA installieren muss, damit die Zertifikate auch akzeptiert werden.&lt;/p&gt;
&lt;p&gt;Meine Docker-Compose dafür sieht sehr simpel aus:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;services&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;step-ca&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;smallstep/step-ca&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;always&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="m"&gt;9443&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;9443&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;./data:/home/step&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Vor dem ersten Start muss die CA noch initialisiert werden. Dazu muss das Datenverzeichnis erstellt und die Berechtigungen angepasst werden:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir data
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chown -R 1000:1000 data/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run --rm -it -v &lt;span class="s2"&gt;&amp;#34;./data/:/home/step/&amp;#34;&lt;/span&gt; smallstep/step-ca step ca init
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Der Assistent führt einen nun durch die notwendigen Schritte. Dann muss noch ein Secret angelegt werden:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; blub &lt;span class="p"&gt;|&lt;/span&gt; tee &lt;span class="s2"&gt;&amp;#34;data/secrets/password&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chown 1000:1000 data/secrets/password
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Jetzt kann die CA schon gestartet werden und danach ACME aktiviert werden:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# kurz warten&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose &lt;span class="nb"&gt;exec&lt;/span&gt; step-ca step ca provisioner add acme --type ACME
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose restart
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Das Root-CA, was auf den Clients verteilt werden muss, befindet sich unter &lt;code&gt;data/certs/root_ca.crt&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="caddy"&gt;Caddy
&lt;/h2&gt;&lt;p&gt;Die CA kann nun also Zertifikate ausstellen und muss nur noch an Caddy angebunden werden. Eine globale CA in der Caddyfile lässt sich dafür leider nicht nutzen, dieser Mechanismus ist laut Dokumentation von Caddy nicht für interne Domains freigegeben bzw. funktioniert damit nicht. Daher habe ich die für die lokale CA notwendige Konfiguration als Snippet angelegt:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(local-ca) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; tls me@example.com {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ca https://stepca.home.local:9443/acme/acme/directory
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ca_root /etc/caddy/root_ca.crt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Das Root-CA habe ich, wie in der Config sichtbar, unter &lt;code&gt;/etc/caddy/root_ca.crt&lt;/code&gt; abgelegt.&lt;/p&gt;
&lt;p&gt;Nun lassen sich Reverse-Proxy-Hosts anlegen, die dieses Snippet verwenden und damit automatisch Zertifikate einrichten:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Stirling-PDF
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pdf.apps.home.local {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; import local-ca
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; reverse_proxy http://192.168.104.46:8081
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Oder im Falle von Proxmox vorerst mit Ignorieren der Korrektheit des vom PVE-Hosts genutzten Zertifikates (solange, bis ich bei PVE ACME mit der lokalen CA noch nicht eingerichtet habe):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Proxmox
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pve.apps.home.local {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; import local-ca
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; reverse_proxy https://192.168.103.2:8006 {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; transport http {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; tls
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; tls_insecure_skip_verify
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Das sieht in Fertig im Browser dann so aus:
&lt;img src="https://secretmine.de/blog/2025/2025-02-28-lokale-ssl-zertifikate-mit-caddy-und-step-ca/images/pve.png"
width="411"
height="281"
srcset="https://secretmine.de/blog/2025/2025-02-28-lokale-ssl-zertifikate-mit-caddy-und-step-ca/images/pve_hu_a297eced20bd4387.png 480w, https://secretmine.de/blog/2025/2025-02-28-lokale-ssl-zertifikate-mit-caddy-und-step-ca/images/pve_hu_aa5069e1baa99275.png 1024w"
loading="lazy"
alt="Proxmox via lokalem Caddy mit internem Zertifikat"
class="gallery-image"
data-flex-grow="146"
data-flex-basis="351px"
&gt;&lt;/p&gt;
&lt;h2 id="windows"&gt;Windows
&lt;/h2&gt;&lt;p&gt;Damit Windows diesem Zertifikat vertraut, muss das CA noch installiert werden. Dazu reicht es, die &lt;code&gt;.ca&lt;/code&gt;-Datei mit Doppelklick zu öffnen und zu installieren. Danach muss das Zertifikat noch als Vertrauenswürdig eingestuft werden. Dazu kann man im Startmenü nach &amp;ldquo;Zertifikat&amp;rdquo; suchen und - je nachdem, wie man es installiert hat - die Verwaltung für Benutzer- oder Computerzertifikate öffnen. Das neue Zertifikat liegt dann wahrscheinlich unter &lt;code&gt;Zwischenzertifizierungsstellen/Zertifikat&lt;/code&gt; und muss nur noch zu &lt;code&gt;Vertrauenswürdige Stammzertifizierungsstellen/Zertifikate&lt;/code&gt; verschoben werden. Nach einem Neustart vom Browser sollte der Aufruf lokaler Subdomains mit SSL nun fehlerfrei funktionieren.&lt;/p&gt;</description></item><item><title>Lenovo ThinkCentre M715q Tiny - Upgrades</title><link>https://secretmine.de/blog/2025/2025-02-25-lenovo-thinkcentre-m715q-tiny-upgrades/</link><pubDate>Tue, 25 Feb 2025 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2025/2025-02-25-lenovo-thinkcentre-m715q-tiny-upgrades/</guid><description>&lt;p&gt;Mein ThinkCentre M715q hatte bisher 12 GB RAM, bestehend aus 4 GB + 8 GB – also ohne Dual-Channel und insgesamt recht wenig Speicher. Daher habe ich mir neuen RAM zugelegt: ein 32 GB-Kit von Timetec (2×16 GB, 2666 MHz, CL19). Die Wahl fiel auf 2666 MHz, da dies das Maximum ist, das der Mini-PC unterstützt.&lt;/p&gt;
&lt;p&gt;Neben dem RAM wurde auch die 1 TB-HDD durch eine 500 GB SATA-SSD (Crucial MX500, die zuvor in einem anderen Gerät verbaut war) ersetzt. Dadurch erhalte ich auch dort bessere Performance, den zusätzlichen Speicherplatz benötige ich nicht&lt;/p&gt;
&lt;h2 id="benchmarks"&gt;Benchmarks
&lt;/h2&gt;&lt;p&gt;Ich war davon ausgegangen, dass ich durch den Umstieg auf Dual-Channel Performance gewinne, der Unterschied ist jedoch deutlicher als gedacht.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: center"&gt;&lt;/th&gt;
&lt;th style="text-align: center"&gt;Vorher&lt;/th&gt;
&lt;th&gt;Nachher&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;Geekbench 5 (Single-Core)&lt;/td&gt;
&lt;td style="text-align: center"&gt;890&lt;/td&gt;
&lt;td&gt;946 (+6%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;Geekbench 5 (Multi-Core)&lt;/td&gt;
&lt;td style="text-align: center"&gt;2380&lt;/td&gt;
&lt;td&gt;3075 (+29%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;Geekbench 6 (Single-Core)&lt;/td&gt;
&lt;td style="text-align: center"&gt;1000&lt;/td&gt;
&lt;td&gt;1074 (+7%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;Geekbench 6 (Multi-Core)&lt;/td&gt;
&lt;td style="text-align: center"&gt;2494&lt;/td&gt;
&lt;td&gt;3066 (+23%)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Die Single-Core-Werte sind etwa wie erwartet, ich hatte mit ~5-10% generellen Performanceverbesserungen gerechnet. Die Multi-Core-Werte mit +29% bzw. +23% wiederum haben mich erstaunt. Ich habe spaßeshalber noch einen Durchlauf mit dem Kernelparameter &lt;code&gt;mitigations=off&lt;/code&gt; gemacht (deaktiviert Mitigations für Dinge wie Spectre oder Meltdown), das hat allerdings keinen nennenswerten Unterschied gemacht. Was auch daran liegt, dass es eine AMD-CPU und keine Intel-CPU ist.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Hinweis&lt;/em&gt;: Bei den Benchmarks wurde jeweils nur ein einzelner Durchlauf durchgeführt, es wurde also nicht über mehrere Messungen gemittelt.&lt;/p&gt;
&lt;h2 id="was-ich-mit-den-ressourcen-mache"&gt;Was ich mit den Ressourcen mache
&lt;/h2&gt;&lt;p&gt;Vor allem kann ich dank des zusätzlichen RAMs jetzt Ollama mit Modellen bis ca 15 Milliarden Parametern ausführen, wenn auch langsam. Modelle mit 7 Milliarden Parametern sind tatsächlich halbwegs nutzbar, allerdings weiterhin nicht sonderlich schnell.&lt;/p&gt;
&lt;p&gt;Natürlich passen so auch allgemein mehr VMs und Container auf den Mini-PC, ich habe beispielsweise jetzt eine Windows-VM, die ich über HomeAssistant starten und stoppen kann. Das ermöglicht mir in Verbindung mit Guacamole (webbasierter RDP-Client) Zugang zu einer (bzw. meiner) Windows-VM von jedem beliebigen Computer mit Internet und einem Webbrowser, was sich als durchaus praktisch erweisen könnte.&lt;/p&gt;</description></item><item><title>Lenovo ThinkCentre M715q Tiny - mein neuer MC-Server</title><link>https://secretmine.de/blog/2024/2024-12-16-lenovo-thinkcentre-m715q-tiny/</link><pubDate>Mon, 16 Dec 2024 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2024/2024-12-16-lenovo-thinkcentre-m715q-tiny/</guid><description>&lt;p&gt;Ich habe mir vor ein paar Wochen einen Mini-PC, genauer gesagt einen Lenovo ThinkCentre M715q Tiny gekauft.&lt;/p&gt;
&lt;h2 id="wofür"&gt;Wofür?
&lt;/h2&gt;&lt;p&gt;Mein Minecraft-Server läuft nun seit bald 5 Jahre durchgängig. Ursprünglich auf freien Ressourcen eines Dedicated Servers, zwischenzeitlich an verschiedenen anderen Orten und seit fast einem Jahr auf einem 1€-Angebots-vServer von 1blu. Dieses Angebot gibt es so aber anscheinend nicht mehr (und der vServer ist mit 8GB RAM ehrlich gesagt eigentlich auch zu klein dimensioniert), wodurch ich eine neue Lösung brauchte.&lt;/p&gt;
&lt;p&gt;Hauptsächlich war tatsächlich der Preis ausschlaggebend für den Umzug des MC-Servers zu mir nach Hause - neben den einmaligen Anschaffungskosten sind hier eigentlich nur die Stromkosten zu nennen. Ein ausreichend starker vServer hätte mich vermutlich um die 10€ pro Monat gekostet, der Mini-PC kostet mich jetzt grob 3€ pro Monat an Strom.&lt;/p&gt;
&lt;p&gt;Wenn man die Differenz zu einem vServer mit den Anschaffungskosten (im Angebot jetzt gut 90€ plus ~20€ für eine 240GB NVMe-SSD) vergleicht, ist der Mini-PC ab etwa 1,5 Jahren Betrieb insgesamt günstiger gewesen. Und das ist ausreichend kurz.&lt;/p&gt;
&lt;h2 id="die-hardware"&gt;Die Hardware
&lt;/h2&gt;&lt;p&gt;Der M715q hat bei mir nun folgende Ausstattung:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AMD Ryzen 5 2400GE (4 Cores, 8 Threads)&lt;/li&gt;
&lt;li&gt;12GB RAM (ausgeliefert mit 2x 4GB, ich hatte noch 8GB liegen)&lt;/li&gt;
&lt;li&gt;240GB NVMe-SSD&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2024/2024-12-16-lenovo-thinkcentre-m715q-tiny/images/m715q.jpg"
width="3472"
height="2556"
srcset="https://secretmine.de/blog/2024/2024-12-16-lenovo-thinkcentre-m715q-tiny/images/m715q_hu_72c6eaa2cc70027f.jpg 480w, https://secretmine.de/blog/2024/2024-12-16-lenovo-thinkcentre-m715q-tiny/images/m715q_hu_f5824649b22d8f26.jpg 1024w"
loading="lazy"
alt="Lenovo ThinkCentre M715q Tiny"
class="gallery-image"
data-flex-grow="135"
data-flex-basis="326px"
&gt;&lt;/p&gt;
&lt;p&gt;Die SSD ist eine Patriot P310 mit 240GB, das war das günstigste brauchbare Modell, was ich so finden konnte. Die Performance macht einen guten Eindruck bislang, wobei hochwertigere SSDs mit Sicherheit deutlich besser sind.&lt;/p&gt;
&lt;p&gt;Neben dem M.2-Slot hat der Mini-PC auch die Möglichkeit, ein 2,5-Zoll SATA-Gerät aufzunehmen, aktuell habe ich da eine 1TB HDD verbaut, die ich noch herumliegen hatte. Ich habe vor, die HDD durch eine 1-2TB SATA SSD zu ersetzen und den RAM irgendwann auf 32GB aufzurüsten.&lt;/p&gt;
&lt;h2 id="die-software"&gt;Die Software
&lt;/h2&gt;&lt;p&gt;Wie alles andere auch läuft der Mini-PC bei mir mit Proxmox. Das ließ sich problemlos installieren und funktioniert einwandfrei. Viel mehr gibt es dazu eigentlich nicht zu sagen.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2024/2024-12-16-lenovo-thinkcentre-m715q-tiny/images/pve.png"
width="731"
height="351"
srcset="https://secretmine.de/blog/2024/2024-12-16-lenovo-thinkcentre-m715q-tiny/images/pve_hu_566dba64ed2b02c3.png 480w, https://secretmine.de/blog/2024/2024-12-16-lenovo-thinkcentre-m715q-tiny/images/pve_hu_76af24051e63a446.png 1024w"
loading="lazy"
alt="Proxmox"
class="gallery-image"
data-flex-grow="208"
data-flex-basis="499px"
&gt;&lt;/p&gt;
&lt;h2 id="stromverbrauch"&gt;Stromverbrauch
&lt;/h2&gt;&lt;p&gt;Im Idle habe ich teilweise schon Werte unter 10W gesehen. Mit dem Minecraft-Server im Leerlauf und einigen weiteren Anwendungen liegt der M715q bei mir die meiste Zeit zwischen 10 und 15 Watt. Mit aktiven Spielern oder generell unter Last geht der Verbrauch teilweise auch auf 40-50 Watt hoch.&lt;/p&gt;
&lt;p&gt;Das sind vermutlich ein paar Watt mehr als Geräte mit vergleichbaren Intel-CPUs aus dem Zeitraum verbrauchen würden, aber trotzdem ein guter Wert. Dieses Gerät ist vor allem deutlich günstiger als Mini-PCs mit Intel i5 8. oder 9. Generation und dabei von der Single-Core-Performance her sogar noch etwas stärker.&lt;/p&gt;
&lt;p&gt;Der Lüfter ist im Leerlauf nur bei absoluter Stille ein wenig zu hören, unter Last klingt der Rechner ähnlich wie ein Notebook unter Last und ist deutlich hörbar.&lt;/p&gt;
&lt;h2 id="benchmark"&gt;Benchmark
&lt;/h2&gt;&lt;p&gt;Zum Abschluss hier noch das Ergebnis von YABS:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;span class="lnt"&gt;37
&lt;/span&gt;&lt;span class="lnt"&gt;38
&lt;/span&gt;&lt;span class="lnt"&gt;39
&lt;/span&gt;&lt;span class="lnt"&gt;40
&lt;/span&gt;&lt;span class="lnt"&gt;41
&lt;/span&gt;&lt;span class="lnt"&gt;42
&lt;/span&gt;&lt;span class="lnt"&gt;43
&lt;/span&gt;&lt;span class="lnt"&gt;44
&lt;/span&gt;&lt;span class="lnt"&gt;45
&lt;/span&gt;&lt;span class="lnt"&gt;46
&lt;/span&gt;&lt;span class="lnt"&gt;47
&lt;/span&gt;&lt;span class="lnt"&gt;48
&lt;/span&gt;&lt;span class="lnt"&gt;49
&lt;/span&gt;&lt;span class="lnt"&gt;50
&lt;/span&gt;&lt;span class="lnt"&gt;51
&lt;/span&gt;&lt;span class="lnt"&gt;52
&lt;/span&gt;&lt;span class="lnt"&gt;53
&lt;/span&gt;&lt;span class="lnt"&gt;54
&lt;/span&gt;&lt;span class="lnt"&gt;55
&lt;/span&gt;&lt;span class="lnt"&gt;56
&lt;/span&gt;&lt;span class="lnt"&gt;57
&lt;/span&gt;&lt;span class="lnt"&gt;58
&lt;/span&gt;&lt;span class="lnt"&gt;59
&lt;/span&gt;&lt;span class="lnt"&gt;60
&lt;/span&gt;&lt;span class="lnt"&gt;61
&lt;/span&gt;&lt;span class="lnt"&gt;62
&lt;/span&gt;&lt;span class="lnt"&gt;63
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;root@host3:~# curl -sL yabs.sh | bash -s -- -5 -6 -r
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Yet-Another-Bench-Script #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# v2024-06-09 #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# https://github.com/masonr/yet-another-bench-script #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Thu Nov 28 02:53:32 PM CET 2024
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Basic System Information:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Uptime : 0 days, 0 hours, 6 minutes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Processor : AMD Ryzen 5 2400GE with Radeon Vega Graphics
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CPU cores : 8 @ 1600.000 MHz
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AES-NI : ✔ Enabled
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;VM-x/AMD-V : ✔ Enabled
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;RAM : 10.6 GiB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Swap : 3.7 GiB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Disk : 19.1 GiB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Distro : Debian GNU/Linux 12 (bookworm)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Kernel : 6.8.12-4-pve
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;VM Type : NONE
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;IPv4/IPv6 : ✔ Online / ❌ Offline
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/mapper/vg1-root):
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Block Size | 4k (IOPS) | 64k (IOPS)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ------ | --- ---- | ---- ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Read | 199.16 MB/s (49.7k) | 552.76 MB/s (8.6k)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Write | 199.68 MB/s (49.9k) | 555.67 MB/s (8.6k)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Total | 398.84 MB/s (99.7k) | 1.10 GB/s (17.3k)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; | |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Block Size | 512k (IOPS) | 1m (IOPS)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ------ | --- ---- | ---- ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Read | 761.70 MB/s (1.4k) | 810.20 MB/s (791)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Write | 802.17 MB/s (1.5k) | 864.16 MB/s (843)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Total | 1.56 GB/s (3.0k) | 1.67 GB/s (1.6k)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;iperf3 Network Speed Tests (IPv4):
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Provider | Location (Link) | Send Speed | Recv Speed | Ping
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;----- | ----- | ---- | ---- | ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Clouvider | London, UK (10G) | 53.6 Mbits/sec | 107 Mbits/sec | 45.1 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Leaseweb | Singapore, SG (10G) | 45.1 Mbits/sec | busy | 183 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Leaseweb | NYC, NY, US (10G) | 51.5 Mbits/sec | 98.5 Mbits/sec | 117 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Geekbench 5 Benchmark Test:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Test | Value
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Single Core | 938
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Multi Core | 2862
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Full Test | https://browser.geekbench.com/v5/cpu/23105065
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Geekbench 6 Benchmark Test:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Test | Value
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Single Core | 1069
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Multi Core | 2833
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Full Test | https://browser.geekbench.com/v6/cpu/9120078
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;YABS completed in 13 min 3 sec
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="minecraft---mein-setup"&gt;Minecraft - mein Setup
&lt;/h2&gt;&lt;p&gt;Ich habe in einem LXC-Container (ja, das C ist eigentlich doppelt gemoppelt) Docker und Pterodactyl installiert. Damit kann ich die Gameserver bequem per Webinterface verwalten. Ich habe keine direkte Portfreigabe für den Minecraft-Server gemacht. Der Traffic geht erstmal ins Rechenzentrum und erreicht dort einen Velocity-Proxy. Von dort führt ein Wireguard-Tunnel zu meinem Router nach Hause, der dann die Spieldaten entsprechend zum Container auf dem Mini-PC leitet. Das Setup hat den Vorteil, dass ich einerseits meine Heim-IP nicht preisgebe, andererseits möglichen Peering-Problemen aus dem Weg gehe und den MC-Server auch problemlos und schnell (und ohne DNS-Änderungen) umziehen kann. Ich muss nach einem Umzug nur im Proxy eine neue IP hinterlegen und bin fertig. Die Dynmap hängt auch hinter einem Reverse-Proxy im Rechenzentrum und funktioniert auf dem selben Weg.&lt;/p&gt;
&lt;h2 id="fazit"&gt;Fazit
&lt;/h2&gt;&lt;p&gt;Mir gefällt der kleine Rechner ziemlich gut, vor allem bei dem Preis. Vermutlich hätte ich mir den Kauf vom zweiten Futro S740 sparen können, das hätte problemlos mit auf diesen M715q gepasst. Aber egal, jetzt ist es so.&lt;/p&gt;
&lt;p&gt;Die Performance ist wirklich gut, vor allem für den geringen Preis (auch im Vergleich zu den Intel-Modellen). Für einen (oder auch mehrere) Minecraft-Server ist die Kiste eine klare Empfehlung und erlaubt günstigen Betrieb von einem Minecraft-Server zuhause.&lt;/p&gt;</description></item><item><title>Umstellen von meinem internen Netzwerk</title><link>https://secretmine.de/blog/2024/2024-12-08-umstellung-von-meinem-internen-netzwerk/</link><pubDate>Sun, 08 Dec 2024 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2024/2024-12-08-umstellung-von-meinem-internen-netzwerk/</guid><description>&lt;p&gt;Ich nutze in meinem Netzwerk BGP, um einerseits die Routen zwischen meinem Router im Keller (da steht der größere Teil vom Homelab) und meinem Hauptrouter auszutauschen und andererseits um Routen für interne Netze zwischen dem Router zuhause und vServern in verschiedenen Rechenzentren auszutauschen.&lt;/p&gt;
&lt;p&gt;Bisher war dies so gelöst, dass es ein Zerotier-Netzwerk gab, wo die vServer sowie der Router zuhause enthalten waren. Zerotier ist sehr leicht einzurichten und von der Performance her auf den Servern auch okay, aber auf dem Router zuhause konnte ich damit maximal einen Durchsatz von ca 20 MBit/s erreichen. Ich weiß nicht genau, welche Technik Zerotier unter der Haube einsetzt, es scheint allerdings nicht so effizient wie andere Techniken zu sein.&lt;/p&gt;
&lt;p&gt;Ich habe nun eine Ansible-Rolle entwickelt, die zwischen beliebigen Servern von mir Wireguard-Tunnel aufbaut und den Routing-Daemon bird komplett konfiguriert. Das funktioniert auch soweit sehr gut. Wireguard ist deutlich effizienter, wodurch ich auch direkt über den Router meine Internetleitung mit ~110 MBit/s voll auslasten kann. Das erleichtert größere Datentransfers über das interne Netz deutlich.&lt;/p&gt;
&lt;p&gt;Über das interne Netz laufen Dinge wie Monitoring, teilweise auch Backups oder über Reverse Proxies durchgereichter Traffic. Das sind einerseits Dinge wie meine Nextcloud, andererseits aber z.B. auch mein Minecraft-Server. Dieser läuft neuerdings auf einem Mini-PC bei mir zuhause, dazu werde ich wahrscheinlich bei Gelegenheit noch mal einen Post schreiben.&lt;/p&gt;</description></item><item><title>Proxmox Backup Server mit S3 Storage</title><link>https://secretmine.de/blog/2024/2024-10-22-proxmox-backup-server-via-s3/</link><pubDate>Tue, 22 Oct 2024 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2024/2024-10-22-proxmox-backup-server-via-s3/</guid><description>&lt;p&gt;&lt;em&gt;Update&lt;/em&gt;: Es gibt bei Proxmox mittlerweile die Option, S3 nativ zu nutzen. Dazu habe ich auch &lt;a class="link" href="https://secretmine.de/blog/2025/2025-09-25-proxmox-backup-server-via-s3-in-richtig/" &gt;hier&lt;/a&gt; einen neuen Post geschrieben.&lt;/p&gt;
&lt;h2 id="was-ist-juicefs"&gt;Was ist JuiceFS?
&lt;/h2&gt;&lt;p&gt;In einem &lt;a class="link" href="https://secretmine.de/blog/2024/2024-10-12-nextcloud-umzug-ziel/" &gt;anderen Post&lt;/a&gt; hatte ich bereits von &lt;a class="link" href="https://juicefs.com/" target="_blank" rel="noopener"
&gt;JuiceFS&lt;/a&gt; berichtet. Das ist ein Dateisystem, was einen Object Storage mit einer Datenbank verbindet, um so möglichst Posix-Compliant zu sein. Das heißt also, dass die Dateiinhalte in einem S3-Bucket landen, die Metadaten und Verzeichnisstrukturen liegen dann in z.B. einer MariaDB.&lt;/p&gt;
&lt;p&gt;Das hatte ich erst für Nextcloud getestet, was auch soweit funktioniert hat. Zu dem Zeitpunkt war mir das ganze aber nicht geheuer, weshalb ich es produktiv dafür nicht einsetzen wollte und auch weiterhin nicht vor habe.&lt;/p&gt;
&lt;h2 id="die-kombination"&gt;Die Kombination
&lt;/h2&gt;&lt;p&gt;Im Proxmox-Forum und bei Reddit findet man Beiträge dazu, wie Leute Proxmox Backup Server (PBS) mittels rclone mit einem S3-Speicher verbunden haben, um die Backups eben in S3 zu lagern. Das hat allerdings nur so lange funktioniert, wie leere Verzeichnisse im Cache von rclone waren, da S3 prinzipbedingt nicht mit leeren Verzeichnissen umgehen kann. JuiceFS dürfte diese Lücke füllen, da durch die Trennung von Inhalts- und Metadaten die Unterstützung für alle relevanten Attribute und co wiederhergestellt wird.&lt;/p&gt;
&lt;h2 id="das-setup"&gt;Das Setup
&lt;/h2&gt;&lt;p&gt;Benötigt wird ein Debian-Server mit folgenden installierten Komponenten:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Proxmox Backup Server (entweder von der ISO installieren oder zusätzlich installieren, siehe hier: &lt;a class="link" href="https://pbs.proxmox.com/docs/installation.html" target="_blank" rel="noopener"
&gt;https://pbs.proxmox.com/docs/installation.html&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;MariaDB-Datenbank (in meinem Test lokal installierter Server)&lt;/li&gt;
&lt;li&gt;JuiceFS (Installation siehe hier: &lt;a class="link" href="https://juicefs.com/docs/community/getting-started/installation/" target="_blank" rel="noopener"
&gt;https://juicefs.com/docs/community/getting-started/installation/&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Ein S3-Bucket (in meinem Test MinIO, aber es geht natürlich auch alles andere)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="juicefs-storage-anlegen"&gt;JuiceFS-Storage anlegen
&lt;/h3&gt;&lt;p&gt;Ich habe also die Datenbank und ein S3-Bucket angelegt und dann mit folgendem Command den JuiceFS-Store angelegt:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# diese Variable nutze ich, um die Zugangsdaten und Pfade zur Datenbank nicht jedes Mal neu angeben zu müssen&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Diese Zeile muss pro SSH-Session, in der mit JuiceFS gearbeitet werden soll, neu ausgeführt werden.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;METAURL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;mysql://&lt;span class="o"&gt;[&lt;/span&gt;user&lt;span class="o"&gt;]&lt;/span&gt;:&lt;span class="o"&gt;[&lt;/span&gt;passwort&lt;span class="o"&gt;]&lt;/span&gt;@&lt;span class="o"&gt;([&lt;/span&gt;datenbankserver&lt;span class="o"&gt;]&lt;/span&gt;:3306&lt;span class="o"&gt;)&lt;/span&gt;/&lt;span class="o"&gt;[&lt;/span&gt;datenbankname&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# bei mir:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# export METAURL=mysql://juicefs:pbspbspbs@(localhost:3306)/juicefs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;juicefs format &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="se"&gt;&lt;/span&gt; --storage s3 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="se"&gt;&lt;/span&gt; --bucket &lt;span class="o"&gt;[&lt;/span&gt;bucket-url&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="se"&gt;&lt;/span&gt; --access-key &lt;span class="o"&gt;[&lt;/span&gt;access-key&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="se"&gt;&lt;/span&gt; --secret-key &lt;span class="o"&gt;[&lt;/span&gt;access-secret&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="se"&gt;&lt;/span&gt; &lt;span class="nv"&gt;$METAURL&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="se"&gt;&lt;/span&gt; pbsfs --trash-days&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# bei mir:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#juicefs format \&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# --storage s3 \&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# --bucket http://s3.homelab.local:9000/pbs \&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# --access-key pbs \&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# --secret-key pbspbspbs \&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# $METAURL \&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# pbsfs --trash-days=0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Output:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2024/10/20 10:14:59.175588 juicefs&lt;span class="o"&gt;[&lt;/span&gt;15366&lt;span class="o"&gt;]&lt;/span&gt; &amp;lt;INFO&amp;gt;: Meta address: mysql://juicefs:****@&lt;span class="o"&gt;(&lt;/span&gt;localhost:3306&lt;span class="o"&gt;)&lt;/span&gt;/juicefs &lt;span class="o"&gt;[&lt;/span&gt;interface.go:504&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2024/10/20 10:14:59.177822 juicefs&lt;span class="o"&gt;[&lt;/span&gt;15366&lt;span class="o"&gt;]&lt;/span&gt; &amp;lt;INFO&amp;gt;: Data use s3://pbs/pbsfs/ &lt;span class="o"&gt;[&lt;/span&gt;format.go:484&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2024/10/20 10:14:59.372276 juicefs&lt;span class="o"&gt;[&lt;/span&gt;15366&lt;span class="o"&gt;]&lt;/span&gt; &amp;lt;INFO&amp;gt;: Volume is formatted as &lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Name&amp;#34;&lt;/span&gt;: &lt;span class="s2"&gt;&amp;#34;pbsfs&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;UUID&amp;#34;&lt;/span&gt;: &lt;span class="s2"&gt;&amp;#34;97f66daa-c003-4b5b-b1ed-af4788cfbb06&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Storage&amp;#34;&lt;/span&gt;: &lt;span class="s2"&gt;&amp;#34;s3&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Bucket&amp;#34;&lt;/span&gt;: &lt;span class="s2"&gt;&amp;#34;http://s3.homelab.local:9000/pbs&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;AccessKey&amp;#34;&lt;/span&gt;: &lt;span class="s2"&gt;&amp;#34;pbs&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;SecretKey&amp;#34;&lt;/span&gt;: &lt;span class="s2"&gt;&amp;#34;removed&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;BlockSize&amp;#34;&lt;/span&gt;: 4096,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Compression&amp;#34;&lt;/span&gt;: &lt;span class="s2"&gt;&amp;#34;none&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;EncryptAlgo&amp;#34;&lt;/span&gt;: &lt;span class="s2"&gt;&amp;#34;aes256gcm-rsa&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;KeyEncrypted&amp;#34;&lt;/span&gt;: true,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;TrashDays&amp;#34;&lt;/span&gt;: 0,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;MetaVersion&amp;#34;&lt;/span&gt;: 1,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;MinClientVersion&amp;#34;&lt;/span&gt;: &lt;span class="s2"&gt;&amp;#34;1.1.0-A&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;DirStats&amp;#34;&lt;/span&gt;: true,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;EnableACL&amp;#34;&lt;/span&gt;: &lt;span class="nb"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;format.go:521&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Damit wird nun also ein JuiceFS-Store angelegt. Die Daten für das S3-Bucket werden dabei mit im Metadaten-Speicher (also der MariaDB-Datenbank) abgelegt und müssen nicht noch mal eingegeben werden.&lt;/p&gt;
&lt;h3 id="juicefs-mounten"&gt;JuiceFS mounten
&lt;/h3&gt;&lt;p&gt;Mittels&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir /mnt/jfs
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;juicefs mount --update-fstab --background &lt;span class="nv"&gt;$METAURL&lt;/span&gt; /mnt/jfs
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;können wir nun das JuiceFS unter &lt;code&gt;/mnt/jfs&lt;/code&gt; mounten, der Parameter &lt;code&gt;--update-fstab&lt;/code&gt; sorgt dafür, dass direkt auch eine neue Zeile in der &lt;code&gt;fstab&lt;/code&gt; angelgt und das JuiceFS beim Systemstart mit gemountet wird.&lt;/p&gt;
&lt;p&gt;Mit&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;juicefs config &lt;span class="nv"&gt;$METAURL&lt;/span&gt; --capacity &lt;span class="m"&gt;100&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;lässt sich auch ein Quota festlegen, hier 100GB. Ansonsten hat ein JuiceFS theoretisch unbegrenzte Kapazität bzw. legt kein Limit fest.&lt;/p&gt;
&lt;h3 id="storage-in-pbs-einrichten"&gt;Storage in PBS einrichten
&lt;/h3&gt;&lt;p&gt;In PBS können wir nun einen neuen Datastore hinzufügen und &lt;code&gt;/mnt/jfs&lt;/code&gt; als Pfad angeben. Das Anlegen eines Storages wird allerdings eine ganze Zeit dauern, da hierbei einige Tausend Verzeichnisse erzeugt werden. In meinem Fall hat das etwa 20 Minuten gedauert, lokal ging das immer sehr viel schneller. Danach lässt sich der Storage normal in einem Proxmox VE Server einbinden und nutzen.&lt;/p&gt;
&lt;h3 id="performance"&gt;Performance
&lt;/h3&gt;&lt;p&gt;Meine Werte sind leider nur semi-aussagekräftig, da der Minio-Server, der hier als S3-Storage dient, wirklich langsam ist. Ich habe hierbei grob 5 MB/s bei Backups erreicht zeitweise auch 40 MB/s. Ich gehe davon aus, dass mit passend schnellem S3-Storage die reale Leistung eher bei den 40 MB/s liegt, sicher sagen kann ich das aber nicht.&lt;/p&gt;
&lt;h2 id="fazit"&gt;Fazit
&lt;/h2&gt;&lt;p&gt;Da die Performance soweit okay ist, kann ich mir gut vorstellen, das auf einem vServer im Rechenzentrum mit einem Backblaze B2 Bucket als Storage tatsächlich zu verwenden bzw. dem ganzen so zumindest einem Langzeittest auszusetzen. Ich habe bislang mit JuiceFS auch außerhalb von solchen kurzen Tests wenig Erfahrung.
Wenn es gut funktioniert, wäre es aber eine wirklich coole Möglichkeit, um günstig viel Speicher für Proxmox zu bekommen. Ich habe bisher allerdings auch keine Werte bzgl. Trafficnutzung und auch Anzahl der API-Calls, die beim S3-Storage entstehen, das kann schnell zu Kosten führen.&lt;/p&gt;
&lt;h2 id="update"&gt;Update
&lt;/h2&gt;&lt;p&gt;&lt;em&gt;Kleines Update:&lt;/em&gt; Ich habe das so temporär auf einem vServer mit Backblaze als Backend in Betrieb. Über etwa 1-2 Wochen hinweg habe ich nun getestet - das ganze lief stabil und mit brauchbarer Performance. Was dauert sind Operationen mit vielen kleinen Dateien, da merkt man dann die andere Speicherart. Generell kann man das nutzen, aber ich würde mich da nicht als einzige Backup-Lösung drauf verlassen - dafür fühlt sich das ganze zu sehr nach einer Bastellösung mit zu vielen beweglichen Teilen an.&lt;/p&gt;</description></item><item><title>Backups von Pterodactyl in S3 speichern</title><link>https://secretmine.de/blog/2024/2024-10-20-pterodactyl-s3-backup/</link><pubDate>Sun, 20 Oct 2024 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2024/2024-10-20-pterodactyl-s3-backup/</guid><description>&lt;p&gt;Pterodactyl bietet als Möglichkeit an, Backups zu erstellen. Das muss konfiguriert werden, wie das geht steht in der Doku unter &lt;a class="link" href="https://pterodactyl.io/panel/1.0/additional_configuration.html#backups" target="_blank" rel="noopener"
&gt;https://pterodactyl.io/panel/1.0/additional_configuration.html&lt;/a&gt;. Standardmäßig kommt hierfür ein Verzeichnis auf den Nodes zum Einsatz, was meistens auch genügt. Es gibt allerdings auch die Option, die Backups in einem S3-Bucket zu speichern.&lt;/p&gt;
&lt;p&gt;Ich habe mich dazu entschieden, die Option mit S3-Speicher zu nutzen. Einerseits liegen damit alle Backups am selben Ort und belegen lokal auf den Nodes keinen Speicher, andererseits ist Off-Site bei Backups immer besser. Als Storage-Anbieter für S3 habe ich mich hierbei für &lt;a class="link" href="https://www.backblaze.com/cloud-storage" target="_blank" rel="noopener"
&gt;Backblaze&lt;/a&gt; entschieden. Es handelt sich nicht um hochkritische Daten und Nutzer bin nur ich selbst, daher halte ich es für vertretbar, diese Daten bei einem US-Unternehmen zu speichern. Es gibt mit OVH oder Scaleway (und bald Hetzner) aber auch europäische Anbieter, die S3-Speicher anbieten. Backblaze war einfach die günstigste Option und hat keine Mindestabnahme o.ä..&lt;/p&gt;
&lt;p&gt;Ich habe also ein Bucket bei Backblaze angelegt, in den Lifecycle-äEinstellungen vom Bucket es so eingestellt, dass nur die letzte Version einer Datei erhalten bleibt und dann einen Application Key für dieses Bucket erzeugt.&lt;/p&gt;
&lt;p&gt;In Pterodactyl werden die Einstellungen fürs Backup in der &lt;code&gt;.env&lt;/code&gt; im Hauptverzeichnis vom Panel durchgeführt. Dort habe ich folgende Einstellungen vorgenommen:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AWS_USE_PATH_STYLE_ENDPOINT=true
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AWS_DEFAULT_REGION=eu-central-003 # Die Region kannst du der Endpoint URL vom Bucket bei Backblaze entnehmen
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AWS_ACCESS_KEY_ID=&amp;lt;keyID von Backblaze&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AWS_SECRET_ACCESS_KEY=&amp;#34;&amp;lt;applicationKey von Backblaze&amp;gt;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AWS_BACKUPS_BUCKET=&amp;lt;Bucket Name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AWS_ENDPOINT=&amp;#34;https://s3.eu-central-003.backblazeb2.com/&amp;#34; # Der Endpoint steht in der Bucketübersich beim Bucket dabei
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Danach sollte es schon möglich sein, Backup zu erstellen, diese sollten auch dann im Bucket landen. Bei mir funktioniert das seit einigen Monaten so stabil.&lt;/p&gt;</description></item><item><title>Der zweite Fujitsu Futro S740</title><link>https://secretmine.de/blog/2024/2024-10-19-zweiter-futro-s740/</link><pubDate>Sat, 19 Oct 2024 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2024/2024-10-19-zweiter-futro-s740/</guid><description>&lt;h2 id="warum-ein-zweiter-thin-client"&gt;Warum ein zweiter Thin Client?
&lt;/h2&gt;&lt;p&gt;Ich bin bekanntlich von meinem bisherigen Homeserver, einem Fujitsu Futro S740 &lt;a class="link" href="https://secretmine.de/blog/2023/2023-02-20-neuer-homeserver-futro-s740/" &gt;ziemlich überzeugt&lt;/a&gt;, vor allem wenn es um Dinge wie Effizienz geht.&lt;/p&gt;
&lt;p&gt;Warum ein zweiter Futro S740 und kein anderer Mini-PC? Ganz einfach: Der erste hat mich bereits überzeugt. Der kleine Thin Client lässt sich super als Homeserver nutzen. Der Prozessor (Intel Celeron J4105, 4 Kerne, bis zu 2,5 GHz), 4 GB RAM (aufrüstbar auf 16 GB) und mehrere Möglichkeiten für SSDs bieten genug Leistung für diverse Selfhosting-Projekte. Dazu kommt ein extrem niedriger Stromverbrauch – im Normalbetrieb gerade mal ein paar Watt. Und selbst zwei von den Futros zusammen verbrauchen weniger als die meisten anderen Mini-PCs alleine.&lt;/p&gt;
&lt;p&gt;Da ich nun überlege, meine &lt;a class="link" href="https://secretmine.de/blog/2024/2024-10-12-nextcloud-umzug-ziel/" &gt;Nextcloud zuhause zu betreiben&lt;/a&gt; brauche ich etwas mehr Power als der eine Thin Client liefern kann. Aktuell laufen - inkl. Nextcloud - 1 VM und 19 LXC-Container. Das meiste davon ist normalerweise im Idle, aber z.B. der LXC für ADS-B braucht dauerhaft 10-20% CPU. Auch andere Software braucht immer mal wieder Rechenleistung, weshalb die durchschnittliche Auslastung vom Server mittlerweile bei 30-40% liegt (RAM bei 10,5 von 16 GB, Load Average meistens bei um die 2). Ich habe also zu wenig Rechenleistung. Das Problem lässt sich jetzt entweder durch Upgraden der bisherigen Hardware (was ein Austausch wäre, bei den Thin Clients lassen sich die CPUs natürlich nicht tauschen) oder durch Hinzufügen eines zweiten Servers lösen.&lt;/p&gt;
&lt;h2 id="der-kauf"&gt;Der Kauf
&lt;/h2&gt;&lt;p&gt;Ich habe mich hierbei für die zweite Option entschieden und einen zweiten S740 gekauft. Wie letztes Mal habe ich wieder bei Piospartslab (&lt;a class="link" href="https://www.piospartslap.de/" target="_blank" rel="noopener"
&gt;piospartslap.de&lt;/a&gt;) gekauft, hier war der Preis durch einen Preisvorschlag meinerseits bei etwa 50 €.&lt;/p&gt;
&lt;h2 id="bilder"&gt;Bilder
&lt;/h2&gt;&lt;p&gt;Ich habe letztes Mal wenig Bilder vom Futro gemacht, daher hole ich das hier mal nach.&lt;/p&gt;
&lt;style&gt;
&lt;/style&gt;
&lt;div id="gallery-f13c32d6049a07cd95b989319338e9ab-2-wrapper" class="gallery-wrapper"&gt;
&lt;div id="gallery-f13c32d6049a07cd95b989319338e9ab-2" class="justified-gallery"&gt;
&lt;div&gt;
&lt;a href="https://secretmine.de/blog/2024/2024-10-19-zweiter-futro-s740/images/futro_3.jpg"
class="galleryImg"
&gt;
&lt;img
width="210" height="600"
style="filter: blur(25px);"
src="data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4&amp;#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIACAACwMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5&amp;#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4&amp;#43;Tl5ufo6ery8/T19vf4&amp;#43;fr/2gAMAwEAAhEDEQA/ALM2rTXnieaxk1CS1g3uC6zlCmF4xnjrXQWs3m2cEjNlmjUknvwK8o8T3f8AxPtRQNn95nAHTgEnP516dpTq2kWTHqbdD/46KdV6IILVnkevsq&amp;#43;Ir58EsJOhHB4H/wBevU9FmP8AYVh/17R/&amp;#43;givO9U0LUNR1u8ktbdnVipU7wA3AHeu/wBKie30izglAEkUCIwznBCgH&amp;#43;VZyknFFpWbP//Z"
class="lazy"
data-src="https://secretmine.de/blog/2024/2024-10-19-zweiter-futro-s740/images/futro_3_hu_894fe608807dfc9a.jpg"
&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;a href="https://secretmine.de/blog/2024/2024-10-19-zweiter-futro-s740/images/futro_2.jpg"
class="galleryImg"
&gt;
&lt;img
width="600" height="488"
style="filter: blur(25px);"
src="data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4&amp;#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABoAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5&amp;#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4&amp;#43;Tl5ufo6ery8/T19vf4&amp;#43;fr/2gAMAwEAAhEDEQA/AOikeGFQcZ&amp;#43;grmfGl1cRaNDLbTz2u64ALqxU42txx9K7Z9O&amp;#43;Xr&amp;#43;lcl8Q7dG8ORgk/JcoRzjsR/WiEdUOT0G&amp;#43;GLg3fhy3muJ3kkyykk5LYYjPNaiop6FefxNeb2N7cW9ssMcrqoJ&amp;#43;UHjrXRaRqUhXa8mT&amp;#43;dZzVpM0TurnqV0pAORge9cN8Q/NPhzbHHuJnTr&amp;#43;Nd3cH91nvnrWLcE5PJ610P3Xcw3PLNF0O61WB5h&amp;#43;6RH2kNkE963bTSWsmIAJNdPKSXAycelUbnhmA4AFc83dtm0dj//Z"
class="lazy"
data-src="https://secretmine.de/blog/2024/2024-10-19-zweiter-futro-s740/images/futro_2_hu_5a85062d96393c51.jpg"
&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;a href="https://secretmine.de/blog/2024/2024-10-19-zweiter-futro-s740/images/futro_1.jpg"
class="galleryImg"
&gt;
&lt;img
width="600" height="504"
style="filter: blur(25px);"
src="data:image/jpeg;base64,/9j/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4&amp;#43;JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIABsAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5&amp;#43;gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4&amp;#43;Tl5ufo6ery8/T19vf4&amp;#43;fr/2gAMAwEAAhEDEQA/AM/xjqup6VNapBdMgdSzKADnn3rmz4t1ZQD9vlyeflA4/Suh&amp;#43;I0JF3bkHIWMDn6tXFtZNtB&amp;#43;QDHJyaqMFyrQTnruao8T61IrFdRnwpxnIrovButXd5NNBeytc9CpkPI61xcMQiik3leSCAM&amp;#43;9avhG5MepkA9R/n&amp;#43;dKpFKLHTk3I6f4gRl72P5SRt5wCf89aytGuvDttf41T/AI9zEQfNiLDdlegHfrXpk1vDKu&amp;#43;SJHb1ZQazZLW2yf8AR4v&amp;#43;&amp;#43;BWjqWWxHs7nPy3Xw4ushLuOJWxlVSVP5iuRH2CPxhNDo7h7QkCIqSc/KCevPUGvRpbeBASsMYPsoqs4Cr8oAz1xWVStzK1jSnDld7n/2Q=="
class="lazy"
data-src="https://secretmine.de/blog/2024/2024-10-19-zweiter-futro-s740/images/futro_1_hu_e47459b9eb136825.jpg"
&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
if (!("HSCGjQuery" in window)) {
if (!window.jQuery) {
throw new Error("jQuery is not loaded, hugo-shortcode-gallery wont work without it!");
}
window.HSCGjQuery = window.jQuery.noConflict(true);
}
;(function($) {
$( document ).ready(() =&gt; {
const gallery = $("#gallery-f13c32d6049a07cd95b989319338e9ab-2");
let swipeboxInstance = null;
gallery.on('jg.complete', () =&gt; {
$(() =&gt; {
$('.lazy').Lazy({
visibleOnly: true,
afterLoad: element =&gt; element.css({filter: "none", transition: "filter 1.0s ease-in-out"})
});
});
swipeboxInstance = $('.galleryImg').swipebox(
$.extend({},
{ }
)
);
});
gallery.justifiedGallery($.extend(
{
rowHeight : "150",
margins : "5",
border : 0,
randomize : false ,
waitThumbnailsLoad : false,
lastRow : "justify",
captions : false,
},
{ }
));
});
})(window.HSCGjQuery)
&lt;/script&gt;
&lt;!--
![Futro S740 von oben](images/futro_1.jpg)
![Futro S740 von vorne](images/futro_2.jpg)
![Futro S740 von hinten (Anschlüsse)](images/futro_3.jpg)
--&gt;
&lt;h2 id="setup"&gt;Setup
&lt;/h2&gt;&lt;p&gt;Bevor ich mit der OS-Installation begonnen habe, habe ich erstmal das BIOS aktualisiert. Details dazu finden sich in einem Doku-Github-Repo zum S740 hier: &lt;a class="link" href="https://github.com/R3NE07/Futro-S740/blob/main/README.md#2---firmware" target="_blank" rel="noopener"
&gt;https://github.com/R3NE07/Futro-S740&lt;/a&gt;. Die SSD habe ich gegen eine 240 GB M.2 SATA-SSD getauscht. Leider hatte ich keine M.2 2242 SSD mehr, deswegen wurde es erstmal eine 2280. Auf Dauer werde ich auch für den zweiten Futro einen M.2 Adapter kaufen, mit dem man eine normale NVMe-SSD in den Slot für eine WLAN-Karte stecken kann.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2024/2024-10-19-zweiter-futro-s740/images/futro-ssd.jpg"
width="1850"
height="1389"
srcset="https://secretmine.de/blog/2024/2024-10-19-zweiter-futro-s740/images/futro-ssd_hu_53d78e98502b5b77.jpg 480w, https://secretmine.de/blog/2024/2024-10-19-zweiter-futro-s740/images/futro-ssd_hu_c4ff69b857fe2d3.jpg 1024w"
loading="lazy"
alt="Verbaute M.2 SSD"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="319px"
&gt;&lt;/p&gt;
&lt;p&gt;Auf dem ersten Futro läuft schon Proxmox, deswegen habe ich das auf dem zweiten auch installiert und beide zu einem Cluster zusammengefügt. Ich gewinne damit zwar keine Vorteile was Verfügbarkeit bzw. Redundanz angeht, aber ich kann beide Server über eine Oberfläche verwalten und auch VMs bzw. Container simpel zwischen beiden Servern migrieren. Dementsprechend habe ich nach der Installation auch direkt Nextcloud und einige weitere Dinge auf den zweiten Futro übertragen, um die Last zu verteilen.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2024/2024-10-19-zweiter-futro-s740/images/pve_cluster.png"
width="799"
height="375"
srcset="https://secretmine.de/blog/2024/2024-10-19-zweiter-futro-s740/images/pve_cluster_hu_e72dc0d119035e83.png 480w, https://secretmine.de/blog/2024/2024-10-19-zweiter-futro-s740/images/pve_cluster_hu_55e57bebf3c2f36c.png 1024w"
loading="lazy"
alt="Proxmox Clusterübersicht"
class="gallery-image"
data-flex-grow="213"
data-flex-basis="511px"
&gt;&lt;/p&gt;
&lt;h2 id="fazit"&gt;Fazit
&lt;/h2&gt;&lt;p&gt;Für alle, die sich einen günstigen und leistungsstarken Homeserver zulegen möchten, kann ich den Futro S740 weiterhin nur empfehlen. Zusammen mit Proxmox hast du eine extrem vielseitige Virtualisierungsumgebung, die mit wenig Strom und Platzbedarf eine Menge Power unter der Haube hat.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2024/2024-10-19-zweiter-futro-s740/images/futros.jpg"
width="1140"
height="1565"
srcset="https://secretmine.de/blog/2024/2024-10-19-zweiter-futro-s740/images/futros_hu_243ff96bf625158a.jpg 480w, https://secretmine.de/blog/2024/2024-10-19-zweiter-futro-s740/images/futros_hu_7318258322068f15.jpg 1024w"
loading="lazy"
alt="Die beiden Thin Clients"
class="gallery-image"
data-flex-grow="72"
data-flex-basis="174px"
&gt;&lt;/p&gt;
&lt;h2 id="yabs"&gt;YABS
&lt;/h2&gt;&lt;p&gt;Zum Abschluss habe ich hier noch einmal ein Ergebnis von YABS angefügt. Die SSD ist allerdings das mitgelieferte 8GB-SATA-SSD-Modul gewesen, weshalb die Storage-Ergebnisse eher schlecht ausgefallen sind.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;span class="lnt"&gt;37
&lt;/span&gt;&lt;span class="lnt"&gt;38
&lt;/span&gt;&lt;span class="lnt"&gt;39
&lt;/span&gt;&lt;span class="lnt"&gt;40
&lt;/span&gt;&lt;span class="lnt"&gt;41
&lt;/span&gt;&lt;span class="lnt"&gt;42
&lt;/span&gt;&lt;span class="lnt"&gt;43
&lt;/span&gt;&lt;span class="lnt"&gt;44
&lt;/span&gt;&lt;span class="lnt"&gt;45
&lt;/span&gt;&lt;span class="lnt"&gt;46
&lt;/span&gt;&lt;span class="lnt"&gt;47
&lt;/span&gt;&lt;span class="lnt"&gt;48
&lt;/span&gt;&lt;span class="lnt"&gt;49
&lt;/span&gt;&lt;span class="lnt"&gt;50
&lt;/span&gt;&lt;span class="lnt"&gt;51
&lt;/span&gt;&lt;span class="lnt"&gt;52
&lt;/span&gt;&lt;span class="lnt"&gt;53
&lt;/span&gt;&lt;span class="lnt"&gt;54
&lt;/span&gt;&lt;span class="lnt"&gt;55
&lt;/span&gt;&lt;span class="lnt"&gt;56
&lt;/span&gt;&lt;span class="lnt"&gt;57
&lt;/span&gt;&lt;span class="lnt"&gt;58
&lt;/span&gt;&lt;span class="lnt"&gt;59
&lt;/span&gt;&lt;span class="lnt"&gt;60
&lt;/span&gt;&lt;span class="lnt"&gt;61
&lt;/span&gt;&lt;span class="lnt"&gt;62
&lt;/span&gt;&lt;span class="lnt"&gt;63
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;root@debian:~# curl -sL yabs.sh | bash -s -- -r -5 -6
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Yet-Another-Bench-Script #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# v2024-06-09 #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# https://github.com/masonr/yet-another-bench-script #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Wed Oct 16 02:34:15 PM CEST 2024
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Basic System Information:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Uptime : 0 days, 0 hours, 22 minutes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Processor : Intel(R) Celeron(R) J4105 CPU @ 1.50GHz
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CPU cores : 4 @ 1996.811 MHz
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AES-NI : ✔ Enabled
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;VM-x/AMD-V : ✔ Enabled
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;RAM : 3.6 GiB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Swap : 980.0 MiB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Disk : 6.3 GiB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Distro : Debian GNU/Linux 12 (bookworm)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Kernel : 6.1.0-26-amd64
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;VM Type : NONE
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;IPv4/IPv6 : ✔ Online / ❌ Offline
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/mapper/debian--vg-root):
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Block Size | 4k (IOPS) | 64k (IOPS)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ------ | --- ---- | ---- ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Read | 13.13 MB/s (3.2k) | 19.48 MB/s (304)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Write | 13.12 MB/s (3.2k) | 20.04 MB/s (313)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Total | 26.25 MB/s (6.5k) | 39.52 MB/s (617)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; | |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Block Size | 512k (IOPS) | 1m (IOPS)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ------ | --- ---- | ---- ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Read | 20.78 MB/s (40) | 20.82 MB/s (20)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Write | 22.35 MB/s (43) | 23.01 MB/s (22)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Total | 43.14 MB/s (83) | 43.84 MB/s (42)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;iperf3 Network Speed Tests (IPv4):
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Provider | Location (Link) | Send Speed | Recv Speed | Ping
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;----- | ----- | ---- | ---- | ----
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Clouvider | London, UK (10G) | 53.7 Mbits/sec | 92.1 Mbits/sec | 35.7 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Leaseweb | Singapore, SG (10G) | 44.8 Mbits/sec | 69.8 Mbits/sec | 197 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Leaseweb | NYC, NY, US (10G) | 50.3 Mbits/sec | 58.9 Mbits/sec | 97.2 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Geekbench 5 Benchmark Test:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Test | Value
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Single Core | 463
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Multi Core | 1485
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Full Test | https://browser.geekbench.com/v5/cpu/22967867
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Geekbench 6 Benchmark Test:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Test | Value
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Single Core | 384
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Multi Core | 1139
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Full Test | https://browser.geekbench.com/v6/cpu/8337911
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;YABS completed in 25 min 40 sec
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Umzugsziel für meine Nextcloud</title><link>https://secretmine.de/blog/2024/2024-10-12-nextcloud-umzug-ziel/</link><pubDate>Sat, 12 Oct 2024 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2024/2024-10-12-nextcloud-umzug-ziel/</guid><description>&lt;h2 id="warum-das-ganze"&gt;Warum das ganze?
&lt;/h2&gt;&lt;p&gt;Meine Nextcloud läuft bisher auf einem Storage-Server bei Contabo. Das ist ein älterer Server der vorherigen Generation bei Contabo und ich habe kürzlich eine E-Mail bzgl. einer Preiserhöhung deshalb bekommen. Und knapp 20€ für 1.4 TB (gut, inkl. 6 Cores und 20GB RAM) ist mir dann doch etwas viel (vor allem, weil der Server vorher ~12€ oder so gekostet hat).&lt;/p&gt;
&lt;p&gt;Dementsprechend muss eine Alternative her.&lt;/p&gt;
&lt;h2 id="die-möglichkeiten"&gt;Die Möglichkeiten
&lt;/h2&gt;&lt;h3 id="1-anderen-vserver-mit-genug-lokalem-storage-mieten"&gt;1. Anderen vServer mit genug lokalem Storage mieten
&lt;/h3&gt;&lt;p&gt;Es gibt bei verschiedenen Anbieter vServer mit genügend Speicher. Ich brauche 300-400GB, das gibt es ab 6-7€ pro Monat, je nach Anbieter.&lt;/p&gt;
&lt;h3 id="2-anderen-vserver-mit-externem-storage-mieten"&gt;2. Anderen vServer mit externem Storage mieten
&lt;/h3&gt;&lt;p&gt;Das größte Problem auf der Suche nach einem vServer ist der Storage. Also wäre es sicherlich eine Überlegung wert, ob man nicht einfach einen externen Storage anbinden kann.&lt;/p&gt;
&lt;p&gt;Nextcloud selbst bietet mit der External Storage App eine Möglichkeit, diverse externe Speicher anzubinden. Das hat allerdings einige Nachteile. Beispielsweise werden Vorschaubilder, Versionen und auch der Papierkorb weiterhin im lokalen Storage abgelegt. Auch an anderen Stellen ist bemerkbar, dass es externer Speicher ist.&lt;/p&gt;
&lt;p&gt;Diverse Anbieter bieten lokalen Blockstorage für vServer an, das ist allerdings eher weniger für sowas gedacht und als Massenspeicher schlicht zu teuer.&lt;/p&gt;
&lt;p&gt;S3 lässt sich als primärer Storage nutzen, dann legt Nextcloud die Dateien als Blobs im Bucket ab. Das funktioniert soweit, hat aber den Nachteil, dass man im Storage keine Dateien oder Ordner mehr erkennen kann und somit im Worst-Case vollkommen von der Zuordnung innerhalb der Datenbank abhängig ist. Bei Nutzung von lokalem Speicher hat man auf der Platte immer einen normalen Ordner-/Dateibaum, den man auch so nutzen kann.&lt;/p&gt;
&lt;p&gt;Bleibt noch die Option, S3 mittels &lt;a class="link" href="https://github.com/s3fs-fuse/s3fs-fuse" target="_blank" rel="noopener"
&gt;s3fs&lt;/a&gt; oder &lt;a class="link" href="https://rclone.org/" target="_blank" rel="noopener"
&gt;Rclone&lt;/a&gt; lokal zu mounten. Das funktioniert, aber S3 hat Probleme mit leeren Ordnern. Das Prinzip von Ordnern existiert bei S3 nicht so wirklich, das sind dann mehr oder weniger nur Dateiprefixe. Das wirkt auf den ersten Blick nicht wie ein Problem, da Tools wie rclone solche leeren (und eigentlich nicht existierenden) Ordner einfach cachen. Je nachdem, was für einen Anbieter man für S3 nutzt, gibt es auch andere Optionen, um leere Ordner abzubilden, beispielsweise existiert die Möglichkeit, Markerdateien zu nutzen. Das klappt allerdings mit dem Anbieter, den ich nutzen wollte (Backblaze B2) nicht.&lt;/p&gt;
&lt;p&gt;Es gibt &lt;a class="link" href="https://juicefs.com/" target="_blank" rel="noopener"
&gt;JuiceFS&lt;/a&gt;. Das kanne ich vorher nicht und bin ich bei meiner Recherche mehr oder weniger zufällig drüber gestolpert. Das ist ein Dateisystem, was Metadaten (Dateinamen, Verzeichnisbaum, (erweiterte) Attribute) in einer relationalen Datenbank wie MariaDB oder PostgreSQL oder alternativ z.B. in Redis speichert, die eigentlichen Daten dann in S3 (oder anderen Object Storages) lagert. Das hat den großen Vorteil, dass es POSIX-Kompatibel ist und auch mit leeren Verzeichnissen problemlos umgehen kann. Mir ist jedoch diese Aufteilung in Dateninhalte und Attribute nicht geheuer, es fügt auch mehrere zusätzliche Fehlerpunkte hinzu. Auch war in meinen kurzen Tests die Performance nicht da, wo ich sie gerne hätte. An sich könnte JuiceFS für solche Anwendungen aber echt eine Möglichkeit sein.&lt;/p&gt;
&lt;h3 id="3-managed-nextcloud-mieten"&gt;3. Managed Nextcloud mieten
&lt;/h3&gt;&lt;p&gt;Mehrere Anbieter (mir bekannt sind Hetzner und IONOS) bieten Managed Nextclouds für wenig Geld an, in beiden Fällen fangen die Preise irgendwo bei 5€ pro Monat an. Das ist für mich allerdings keine Option, da ich die Nextcloud vollständig selbst unter Kontrolle haben möchte und beliebig Einstellungen setzen können möchte. Diese Möglichkeit ist allerdings sehr interessant, wenn man wenig Aufwand mit der Pflege haben möchte oder nicht so viel Erfahrung mit dem selbst hosten hat.&lt;/p&gt;
&lt;h3 id="4-zuhause-hosten"&gt;4. Zuhause hosten
&lt;/h3&gt;&lt;p&gt;Ich habe zuhause bekanntlich einen &lt;a class="link" href="https://secretmine.de/blog/2023/2023-02-20-neuer-homeserver-futro-s740/" &gt;Futro S740&lt;/a&gt; als Homeserver, das Gerät hat einerseits genug Rechenleistung und andererseits genug Möglichkeiten für SSDs und co. Ich überlege aktuell, die Nextcloud einfach zuhause zu hosten. Die meisten Zugriffe passieren eh innerhalb des Heimnetzwerks, von außerhalb sind es eher nur kleine Änderungen oder hier und da mal ein Bild vom Handy. Die Cloud wird hauptsächlich von meiner Freundin und mir genutzt, lokal könnte man dann auch den Weg zur Cloud komplett im lokalen Netzwerk halten und nur den Zugriff von außen über Proxies im Rechenzentrum laufen lassen.&lt;/p&gt;
&lt;p&gt;Da auf dem bisherigen Thin Client jedoch schon einiges läuft, würde ich hierfür einen zweiten anschaffen wollen. Aber schauen wir uns mal kurz die Kosten an.&lt;/p&gt;
&lt;p&gt;Ein Futro S740 inkl. passend großer SSD würde mich grob 100€ kosten. Das ganze hängt natürlich stark von der aktuellen Preislage ab, aber die grobe Richtung müsste passen. Stromkosten liegen bei angenommenen 10 Watt (real sind es weniger) bei grob 1,50€ pro Monat. Das ist eher pessimistisch gerechnet, real ist es wahrscheinlich eher 1€ pro Monat. Wenn man die Anschaffungskosten für die Hardware auf einen Zeitraum von 2 Jahren verteilt, sind das knapp über 4€. Macht also insgesamt im Worst-Case etwa 5,50€ pro Monat für eine Laufzeit von zwei Jahren, wobei hier eigentlich deutlich mehr realistisch ist. Die monatlichen Kosten hängen dabei auch nicht davon ab, wie viel Storage das Teil bekommt, das beeinflusst nur die Anschaffungskosten.&lt;/p&gt;
&lt;p&gt;Nachteile sind hauptsächlich, dass ein Futro nicht wirklich redundant ist, ich kann kaum die SSDs in einem RAID betreiben. Abstriche bei der Verfügbarkeit gibt es natürlich auch hinsichtlich Strom und Internet, wobei der Strom hier in den vergangenen Jahren noch nie ausgefallen ist. Aber vielleicht wird es wieder Zeit, eine USV einzusetzen - das ist aber ein anderes Thema.&lt;/p&gt;
&lt;p&gt;Diese Nachteile sind für mich jedoch verkraftbar. Eigentlich ist es nur im Urlaub der Fall, dass die Cloud dann längerfristig ausfallen könnte, ohne dass ich was tun kann. Normalerweise lässt sich Ersatzhardware schnell beschaffen, mit entsprechenden Backups lässt sich eine &amp;ldquo;Notfall-Cloud&amp;rdquo; dann auch schnell auf die Beine stellen. Genügend Hardware habe ich für sowas im Homelab.&lt;/p&gt;
&lt;h2 id="entscheidung"&gt;Entscheidung
&lt;/h2&gt;&lt;p&gt;Bisher bin ich mir noch nicht sicher, wohin die Reise geht. Aktuell tendiere ich sehr stark dazu, die Cloud einfach zuhause zu hosten, dafür würde ich dann auch noch einen zweiten S740 anschaffen - der bisherige ist einfach zu stark ausgelastet dafür. Ich werde die Cloud testhalber zu mir nach Hause auf den bisherigen Homeeserver holen und mir die Performance dann einfach mal ansehen. Das ist ja mehr oder weniger der Worst-Case dann.&lt;/p&gt;</description></item><item><title>Der erste Link mit 2.5GBit/s</title><link>https://secretmine.de/blog/2024/2024-10-07-2-5-gbit/</link><pubDate>Mon, 07 Oct 2024 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2024/2024-10-07-2-5-gbit/</guid><description>&lt;p&gt;Ich habe mir kürzlich zwei günstige PCIe-Netzwerkkarten mit Realtek RTL8125B Chips bestellt. Ich wollte damit eine direkte Verbindung zwischen meinem PC und meinem NAS herstellen, um schneller größere Datenmengen von A nach B zu bekommen. Das hilft ohne Switch natürlich dem Rest des Netzwerks nicht, aber der genannte Weg ist der, auf dem ich so mit die meisten Daten übertrage.&lt;/p&gt;
&lt;p&gt;Ich habe die Karten also in meinen PC und das NAS eingebaut, ein Kabel verlegt und angeschlossen und die beiden Geräte wieder gebootet. Beide Rechner haben die Karte jeweils direkt erkannt, ich musste also nur noch IPs vergeben (anderer Adressbereich als das Heimnetz, damit sich da nichts in die Quere kommt). Danach konnte ich schon das Netzlaufwerk einrichten und die ersten Daten kopieren - mit über 280MB/s in meinen ersten Tests. Das ist ordentlich und mit knapp 2,3 GBit/s nahe an der theoretischen Kapazität der Leitung.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2024/2024-10-07-2-5-gbit/images/transfer.jpg"
width="1000"
height="660"
srcset="https://secretmine.de/blog/2024/2024-10-07-2-5-gbit/images/transfer_hu_fbd05fa832dadc2f.jpg 480w, https://secretmine.de/blog/2024/2024-10-07-2-5-gbit/images/transfer_hu_83eac1d646c202f1.jpg 1024w"
loading="lazy"
alt="Der erste Dateitransfer"
class="gallery-image"
data-flex-grow="151"
data-flex-basis="363px"
&gt;&lt;/p&gt;
&lt;p&gt;Ich gebe zu, das ganze war jetzt wirklich unspektakulär und funktioniert einfach direkt out-of-the-box. Ich hatte mir ein wenig mehr Spielerei erhofft, aber naja, eigentlich besser so.&lt;/p&gt;
&lt;p&gt;Irgendwann wird sicherlich auch noch ein kleiner Switch folgen, der mehr als 1GBit/s kann, da warte ich aber noch auf Modelle zu brauchbaren Preisen mit genügend Ports und am besten noch Support für VLANs. Mehr oder weniger also den perfekten Switch für ein leicht überdurchschnittliches Heimnetz.&lt;/p&gt;</description></item><item><title>Sipeed NanoKVM - meine Meinung</title><link>https://secretmine.de/blog/2024/2024-09-05-nanokvm/</link><pubDate>Thu, 05 Sep 2024 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2024/2024-09-05-nanokvm/</guid><description>&lt;p&gt;Vor etwa einem halben Jahr wurde von Sipeed ein neues Produkt angekündigt - ein IP-KVM auf Basis einer kleinen RISC-V-CPU (siehe &lt;a class="link" href="https://sipeed.com/nanokvm" target="_blank" rel="noopener"
&gt;https://sipeed.com/nanokvm&lt;/a&gt;). Was dieses Gerät so besonders machen sollte ist primär der Preis. Ich habe (bestellt Mitte Juli, geliefert Ende August) etwa 45€ bezahlt, der Preis ist seit dem allerdings gestiegen (Stand 05.09.2024 ~68€ + ~6,50€ via Aliexpress).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2024/2024-09-05-nanokvm/images/1.jpg"
width="4624"
height="3472"
srcset="https://secretmine.de/blog/2024/2024-09-05-nanokvm/images/1_hu_59fbd70634a150a5.jpg 480w, https://secretmine.de/blog/2024/2024-09-05-nanokvm/images/1_hu_5f4a4041a665ce9f.jpg 1024w"
loading="lazy"
alt="Paket von außen"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="319px"
&gt;&lt;/p&gt;
&lt;p&gt;Aber fangen wir vorne an. Die Hardware basiert auf dem LicheeRV Nano von Sipeed, einem kleinen Dev-Board mit einer Risc-V-CPU, 256MB RAM, Ethernet/Wifi (allerdings optional), einem MicroSD-Slot und einem Kamera-Interface. Für das NanoKVM wird das Kamerainterface mit einem kleinen Konverter-Board als HDMI-Input benutzt. Der USB-Port vom Board kann als Host dienen, aber auch ein Client-Gerät sein. Das wird beim NanoKVM zur Emulation von Maus/Tastatur sowie auch von Storage benutzt. Es gibt zwei Versionen vom NanoKVM - eine Lite-Version, die nur HDMI-In, LAN und den USB-Port zum Anschluss an den Zielrechner hat, daneben gibt es auch eine Full-Version, die zusätzlich ein Gehäuse mit OLED-Display, einen zweiten USB-Anschluss zur Stromversorgung (wenn der Zielrechner ausgeschaltet ist) sowie einen USB-Port zum Anschluss eines kleinen Breakout-Boards für die Verbindung zu Power- und Reset-Knopf und -LED.&lt;/p&gt;
&lt;h1 id="das-paket"&gt;Das Paket
&lt;/h1&gt;&lt;p&gt;&lt;img src="https://secretmine.de/blog/2024/2024-09-05-nanokvm/images/2.jpg"
width="4624"
height="3472"
srcset="https://secretmine.de/blog/2024/2024-09-05-nanokvm/images/2_hu_42d3c27021d4a3f6.jpg 480w, https://secretmine.de/blog/2024/2024-09-05-nanokvm/images/2_hu_5ede06b368b0f676.jpg 1024w"
loading="lazy"
alt="Paket geöffnet"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="319px"
&gt;
&lt;img src="https://secretmine.de/blog/2024/2024-09-05-nanokvm/images/3.jpg"
width="4624"
height="3472"
srcset="https://secretmine.de/blog/2024/2024-09-05-nanokvm/images/3_hu_4f8fb077728c05ed.jpg 480w, https://secretmine.de/blog/2024/2024-09-05-nanokvm/images/3_hu_a7a55f78b09b5d2f.jpg 1024w"
loading="lazy"
alt="Das Zubehör"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="319px"
&gt;&lt;/p&gt;
&lt;p&gt;Ich habe mir die Full-Edition gekauft, dementsprechend habe ich auch das volle Zubehör und das NanoKVM im Gehäuse. Zwei USB-Kabel waren dabei, aber leider kein HDMI-Kabel.&lt;/p&gt;
&lt;h1 id="der-erste-verbindungsversuch"&gt;Der erste Verbindungsversuch
&lt;/h1&gt;&lt;p&gt;&lt;img src="https://secretmine.de/blog/2024/2024-09-05-nanokvm/images/connected.png"
width="1280"
height="961"
srcset="https://secretmine.de/blog/2024/2024-09-05-nanokvm/images/connected_hu_dfe8924b76bb62cf.png 480w, https://secretmine.de/blog/2024/2024-09-05-nanokvm/images/connected_hu_6c0c2969bb77c2c7.png 1024w"
loading="lazy"
alt="Bitte den Kabelsalat ignorieren, die Kabel sind für diesen Zweck viel zu lang"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="319px"
&gt;&lt;/p&gt;
&lt;p&gt;Ich habe das NanoKVM also an einen Laptop (mit einem Debian ohne GUI) zum Testen angeschlossen. Nach kurzer Bootzeit (nur ein paar Sekunden) wurde mir die IP vom Gerät auf dem Display angezeigt.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2024/2024-09-05-nanokvm/images/display.png"
width="682"
height="750"
srcset="https://secretmine.de/blog/2024/2024-09-05-nanokvm/images/display_hu_5ffa12ca0d9e7025.png 480w, https://secretmine.de/blog/2024/2024-09-05-nanokvm/images/display_hu_8a550a178298eaef.png 1024w"
loading="lazy"
alt="Das Display zeigt neben der IP vom Gerät diverse weitere hilfreiche Informationen an"
class="gallery-image"
data-flex-grow="90"
data-flex-basis="218px"
&gt;&lt;/p&gt;
&lt;p&gt;Jetzt kam natürlich der spannende Moment - ich habe also die IP im Browser eingegeben und wurde (nach Login) von einer simplen, aber funktionalen UI begrüßt.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2024/2024-09-05-nanokvm/images/pc1.png"
width="1350"
height="763"
srcset="https://secretmine.de/blog/2024/2024-09-05-nanokvm/images/pc1_hu_616f88bd6eb47d4b.png 480w, https://secretmine.de/blog/2024/2024-09-05-nanokvm/images/pc1_hu_a65e38db4b2a2cdf.png 1024w"
loading="lazy"
alt="Übertragung in 720p, auch wenn der Host eigentlich mit 1080p läuft"
class="gallery-image"
data-flex-grow="176"
data-flex-basis="424px"
&gt;&lt;/p&gt;
&lt;h1 id="weitere-funktionen"&gt;Weitere Funktionen
&lt;/h1&gt;&lt;p&gt;Neben dem reinen Anzeigen vom Monitor sowie Übertragen von Maus und Tastatur kann das Gerät noch ein paar weitere Dinge. Auf dem internen Speicher lassen sich ISOs ablegen (z.B. via SFTP übertragbar), diese lassen sich dann einfach auf dem Zielgerät mounten. Das funktioniert auch soweit, scheint aber nach meinen ersten Tests insgesamt eher langsam zu funktionieren. Ich habe sowohl Debian 12 als auch Windows 10 getestet und konnte beide Systeme problemlos über das emulierte Laufwerk booten.&lt;/p&gt;
&lt;p&gt;Man kann sich auf dem Gerät auch via SSH einloggen und sich auf dem System umsehen. Es läuft Kernel 5.10.4, also ein über 3,5 Jahre alter Kernel von Ende 2020. Laut &lt;code&gt;/etc/os-release&lt;/code&gt; wird das Image mit Buildroot gebaut, ist also eine auf diesen Einsatzzweck und dieses Gerät zugeschnittenes Image und basiert nicht auf Debian oder einer anderen größeren Distro. Ansonsten ist mir bei einem ersten Überblick nur aufgefallen, dass Verzeichnisse wie &lt;code&gt;/var/log&lt;/code&gt; auf &lt;code&gt;/tmp&lt;/code&gt; umgebogen sind, was wiederum eine Ramdisk ist. Das ist für die Haltbarkeit der verbauten MicroSD-Karte natürlich gut.&lt;/p&gt;
&lt;p&gt;Ich habe auf einem alten Netbook Windows 10 neu installiert - und das vollständig per NanoKVM (also ISO-Mount plus Fernbedienung). Ich hatte keine nennenswerten Probleme dabei und konnte soweit gut arbeiten. Für derartige Zwecke (also &amp;ldquo;mal eben&amp;rdquo; an irgendwelchen Rechnern Dinge tun) habe ich mir das Gerät auch angeschafft, damit ich nicht immer Maus/Tastatur/Monitor aufwändig umstecken muss sondern einfach nur das NanoKVM anschließe und loslegen kann.&lt;/p&gt;
&lt;p&gt;Auch lässt sich das NanoKVM mit der mitgelieferten Platine auch an die Power-/Reset-Buttons bzw. Power/HDD-LEDs anschließen und damit auch ein Druck des Power- bzw. Reset-Buttons auslösen lässt. Das funktionierte in meinen Tests soweit.&lt;/p&gt;
&lt;p&gt;Anfangs gab es Probleme, wenn der Host die Auflösung gewechselt hat, das ist mittlerweile allerdings behoben worden. Das war vor allem problematisch, wenn das BIOS/UEFI und das spätere OS verschiedene Bildschirmauflösungen genutzt haben.&lt;/p&gt;
&lt;h1 id="meine-ideen"&gt;Meine Ideen
&lt;/h1&gt;&lt;p&gt;Die MicroSD-Karte ist mit 8GB eher klein, vor allem wenn mehrere ISOs gespeichert werden sollen.&lt;/p&gt;
&lt;h1 id="fazit"&gt;Fazit
&lt;/h1&gt;&lt;p&gt;Die Grundfunktionen laufen soweit gut - aber wie ich auch bei der Bestellung erwartet habe, macht die Software noch keinen wirklich vollständigen Eindruck. Das Übertragen von ISOs per SFTP ist mit ~2,5 MB/s auch eher langsam, das wird allerdings wahrscheinlich durch die sehr schwache CPU limitiert. Mounten von ISOs funktioniert soweit auch, das Laden von Dateien geht allerdings eher langsam von Statten. Ich kann das Gerät nur mit den IPMIs von Supermicro und einem älteren HP ILO vergleichen, beide Lösungen sind dabei natürlich deutlich tiefer in die Hardware integriert. Bei den reinen KVM-Features fühlen sich Supermicro und HP etwas polierter an, hier finde ich bei Supermicro z.B. auch praktisch, dass ich eine ISO direkt von meinem PC aus benutzen kann, ohne diese irgendwohin übertragen zu müssen. Auch scheinen verschiedene Auflösungen besser zu funktionieren. Ich würde gerne zum Vergleich ein PiKVM testen, da das preislich am ehesten in der Nähe ist, sowas besitze ich aber leider nicht.&lt;/p&gt;
&lt;p&gt;Grundsätzlich funktioniert das Gerät allerdings so, wie es soll - und ist vor allem unter Berücksichtigung des Preises soweit solide.&lt;/p&gt;</description></item><item><title>Upgrades für den Futro S740</title><link>https://secretmine.de/blog/2024/2024-04-06-futro-s740-upgrades/</link><pubDate>Fri, 26 Apr 2024 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2024/2024-04-06-futro-s740-upgrades/</guid><description>&lt;p&gt;Der Fujitsu Futro S740 verrichtet nun seit über einem Jahr brav seine Dienste &lt;a class="link" href="https://secretmine.de/blog/2023/2023-02-20-neuer-homeserver-futro-s740/" &gt;als mein Heimserver&lt;/a&gt;, mittlerweile sind mir die 4GB RAM allerdings deutlich zu wenig (ach was, wer hätte es gedacht). Auch die 240GB Speicherplatz stören mich mittlerweile.&lt;/p&gt;
&lt;p&gt;Daher war nun Zeit für ein Upgrade. Das Maximum, was an RAM funktionieren soll, sind 16GB. Bei so großen Modulen muss man sehr genau aufpassen - laut den &amp;ldquo;Community-Dokus&amp;rdquo; bei Github ( &lt;a class="link" href="https://github.com/R3NE07/Futro-S740" target="_blank" rel="noopener"
&gt;https://github.com/R3NE07/Futro-S740&lt;/a&gt; ) muss es zwingend Dual Rank sein. Ich habe hierbei einen Stick von Integral (IN4V16GNDLRI) gekauft, da es einer der wenigen Sticks war, wo ich konkret herausfinden konnte, dass es sich um Dual Rank handelt. Wenn man beispielsweise 16GB-Module von Crucial bei Amazon kauft, ist nicht klar, welches exakte Modell man bekommt und ob es Dual oder Single Rank RAM ist. Mit Single Rank Modulen startet der Thin Client laut meinen Recherchen überhaupt nicht.&lt;/p&gt;
&lt;p&gt;Zusätzlich habe ich auch noch eine weitere SSD verbaut, dafür habe ich einen M.2-Adapter von A/E-Key zu M-Key günstig gekauft. Ich hatte noch eine Kioxia Exceria G2 mit 500GB liegen, die ist zwar nicht die beste, aber für die Zwecke definitiv ausreichend. Da die SSD eine 2280 SSD ist, musste ich beim Befestigen etwas kreativ werden, vielleicht füge ich irgendwann noch mal ein Bild davon an.&lt;/p&gt;
&lt;p&gt;Nachdem alles verbaut war, habe ich den S740 wieder eingeschaltet und nach dem Hochfahren habe ich das gewünschte Ergebnis gesehen:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2024/2024-04-06-futro-s740-upgrades/images/upgrade_1.png"
width="706"
height="349"
srcset="https://secretmine.de/blog/2024/2024-04-06-futro-s740-upgrades/images/upgrade_1_hu_ef0832ae83c5d322.png 480w, https://secretmine.de/blog/2024/2024-04-06-futro-s740-upgrades/images/upgrade_1_hu_722c225dcb973dc7.png 1024w"
loading="lazy"
alt="Proxmox Übersicht"
class="gallery-image"
data-flex-grow="202"
data-flex-basis="485px"
&gt;
&lt;img src="https://secretmine.de/blog/2024/2024-04-06-futro-s740-upgrades/images/upgrade_2.png"
width="771"
height="165"
srcset="https://secretmine.de/blog/2024/2024-04-06-futro-s740-upgrades/images/upgrade_2_hu_a659a356a08951c8.png 480w, https://secretmine.de/blog/2024/2024-04-06-futro-s740-upgrades/images/upgrade_2_hu_18cda7dbc2ecddf5.png 1024w"
loading="lazy"
alt="Proxmox Storage"
class="gallery-image"
data-flex-grow="467"
data-flex-basis="1121px"
&gt;&lt;/p&gt;
&lt;p&gt;Sowohl RAM als auch SSD wurden problemlos erkannt und funktionieren wie erwartet. Die SSD kann ihre volle Geschwindigkeit durch die Bandbreite von dem Port (laut Internet PCIe 2.0 x1, also etwa 500 MB/s) zwar längst nicht voll ausnutzen, aber die niedrigeren Latenzen im Vergleich zu SATA merkt man dennoch ein wenig. Aber alleine für den zusätzlichen Storage (insgesamt jetzt immerhin ~750 GB) hat es sich gelohnt.&lt;/p&gt;
&lt;p&gt;Ich habe vor, auf dem Thin Client nun mehr zu betreiben, unter anderem liegt hier Hardware für den ADS-B-Empfang. Mal gucken, wann ich dazu komme, dazu etwas zu schreiben.&lt;/p&gt;</description></item><item><title>TS3-Server inkl. Autostart installieren - 2.0 (Docker-Basis)</title><link>https://secretmine.de/blog/2024/2024-02-26-ts3-installationsanleitung/</link><pubDate>Mon, 26 Feb 2024 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2024/2024-02-26-ts3-installationsanleitung/</guid><description>&lt;p&gt;&lt;strong&gt;Hinweis&lt;/strong&gt;: Nutzung auf eigene Gefahr.&lt;/p&gt;
&lt;h1 id="einleitung"&gt;Einleitung
&lt;/h1&gt;&lt;p&gt;Das alte Tutorial zum Installieren von einem TS3-Server basierte ja auf einer direkten Installation auf dem System. Das
hat den Vorteil, dass es schlank ist - aber dafür ist auch mehr manuell zu pflegen. Ich habe kürzlich für jemanden einen
TS3-Server inkl. automatischen Updates auf Dockerbasis aufgesetzt und finde das Setup eleganter als die bisherige
Lösung, daher möchte ich es auch anderen zur Verfügung stellen.&lt;/p&gt;
&lt;h1 id="voraussetzungen"&gt;Voraussetzungen
&lt;/h1&gt;&lt;p&gt;Auf dem Server muss Docker installiert sein. Sofern das noch nicht der Fall ist, lässt sich das einfach mit&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget -O- https://get.docker.com | sudo bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;durchführen. (Ja, das direkte Ausführen von fremdem Code als Root ist böse, aber die Quelle ist vertrauenswürdig.
Trotzdem ist es empfehlenswert, das heruntergeladene Script einmal zu prüfen, bevor man es ausführt).&lt;/p&gt;
&lt;p&gt;Sollte &lt;code&gt;wget&lt;/code&gt; noch nicht ins alliert sein, geht das schnell mit&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get -y install wget
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Das Tool, was zum Updaten des Containers genutzt wird, kann dir via Discord Webhooks (und diverse andere Varianten)
Benachrichtigungen zu durchgeführten Updates schicken. Lege dazu einen Channel an und generiere dir einen Webhook - ich
verwende hier im Beispiel die Webhook-URL &lt;code&gt;https://discord.com/api/webhooks/asd/fgh&lt;/code&gt;.&lt;/p&gt;
&lt;h1 id="erstellen-vom-datenverzeichnis"&gt;Erstellen vom Datenverzeichnis
&lt;/h1&gt;&lt;p&gt;Die Daten für den Server sollen später unter &lt;code&gt;/opt/teamspeak3/data&lt;/code&gt; liegen, die Compose-Datei im darüberliegenden
Verzeichnis. Das lässt sich schnell mit&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p /opt/teamspeak3/data/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;anlegen.&lt;/p&gt;
&lt;h1 id="erzeugung-der-docker-compose-datei"&gt;Erzeugung der Docker-Compose-Datei
&lt;/h1&gt;&lt;p&gt;Zur Verwaltung der Container nutze ich in solchen Fällen gerne Docker-Compose. Dafür muss eine Datei angelegt werden (
die &lt;code&gt;docker-compose.yml&lt;/code&gt;), die die zu erstellenden Container inkl. Konfiguration beinhaltet. Ich nutze hier das
offizielle TS3-Container-Image (von hier: &lt;a class="link" href="https://hub.docker.com/_/teamspeak" target="_blank" rel="noopener"
&gt;https://hub.docker.com/_/teamspeak&lt;/a&gt;). Um
das ganze möglichst pflegeleicht zu gestalten, stelle ich noch einen Watchtower-Container (von
hier: &lt;a class="link" href="https://hub.docker.com/r/containrrr/watchtower" target="_blank" rel="noopener"
&gt;https://hub.docker.com/r/containrrr/watchtower&lt;/a&gt;) dazu. Watchtower
sorgt dafür, dass der TS3-Container immer auf dem aktuellsten Stand gehalten wird. Dazu wird in gewissen Abständen
geprüft, ob es eine neue Version vom Container-Image gibt. Sofern ein Update verfügbar ist, wird das gezogen und der
TS3-Container einmal frisch erzeugt.&lt;/p&gt;
&lt;p&gt;Um den TS3-Server später nutzen zu können, musst du die Lizenzbedingungen explizit akzeptieren. Die Bedingungen kannst
du dir mit dem Befehl&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run --rm -it -e TS3SERVER_LICENSE=view teamspeak
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ansehen.&lt;/p&gt;
&lt;p&gt;Lege also die Datei &lt;code&gt;docker-compose.yml&lt;/code&gt; unter &lt;code&gt;/opt/teamspeak3/&lt;/code&gt; beispielsweise
mit &lt;code&gt;nano /opt/teamspeak3/docker-compose.yml&lt;/code&gt; an. Der Inhalt sollte wie folgt aussehen:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;3.8&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;services&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;teamspeak&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;teamspeak&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;latest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;always&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;9987&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;9987&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;udp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;10011&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;10011&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;30033&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;30033&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;/opt/teamspeak3/data:/var/ts3server/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;TS3SERVER_LICENSE&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;view&lt;/span&gt; &lt;span class="c1"&gt;# &amp;#34;view&amp;#34; durch &amp;#34;accept&amp;#34; ersetzen, um die Lizenzbedingungen zu akzeptieren&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;watchtower&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;containrrr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;watchtower&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;latest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;always&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;WATCHTOWER_SCHEDULE&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0 0 5 * * *&amp;#39;&lt;/span&gt; &lt;span class="c1"&gt;# Update-Prüfung täglich um 05:00 Uhr&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;WATCHTOWER_NOTIFICATIONS&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;slack&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;https://discord.com/api/webhooks/asd/fgh/slack&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;WATCHTOWER_NOTIFICATION_SLACK_IDENTIFIER&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Watchtower&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;WATCHTOWER_NOTIFICATION_SLACK_CHANNEL&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;#watchtower&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;docker&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sock&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;docker&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sock&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Die Zeilen, die mit &lt;code&gt;WATCHTOWER_NOTIFICATIONS&lt;/code&gt; beginnen, sind für die Notifications zuständig. An die Webhook-URL muss,
wie im Beispiel sichtbar, noch &lt;code&gt;/slack&lt;/code&gt; angefügt werden.&lt;/p&gt;
&lt;h1 id="erster-start"&gt;Erster Start
&lt;/h1&gt;&lt;p&gt;Wechsle zuerst in das Verzeichnis vom Server:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cd /opt/teamspeak3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;starte nun einmal den TS3-Server im Attached-Modus, damit du den Serveradmin-Token sehen kannst:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose up teamspeak
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Nach einigen Sekunden kannst du den Server mit &lt;code&gt;Strg + c&lt;/code&gt; wieder beenden. Das sieht dann etwa so aus:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2024/2024-02-26-ts3-installationsanleitung/images/initialisierung.png"
width="1402"
height="652"
srcset="https://secretmine.de/blog/2024/2024-02-26-ts3-installationsanleitung/images/initialisierung_hu_4aab8d2aeb5eba02.png 480w, https://secretmine.de/blog/2024/2024-02-26-ts3-installationsanleitung/images/initialisierung_hu_48360cad9f176785.png 1024w"
loading="lazy"
alt="Ausgabe vom TeamSpeak3-Server"
class="gallery-image"
data-flex-grow="215"
data-flex-basis="516px"
&gt;&lt;/p&gt;
&lt;p&gt;In der Ausgabe findest du neben dem Admin-Token auch die Zugangsdaten für die Query-Schnittstelle. &lt;strong&gt;Bewahre diese Daten
gut auf!&lt;/strong&gt;&lt;/p&gt;
&lt;h1 id="finaler-start"&gt;Finaler Start
&lt;/h1&gt;&lt;p&gt;Mit&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;startest du nun den Server. Der Server wird auch automatisch bei Systemstart mit gestartet, also dort ist nichts weiter
zu tun.&lt;/p&gt;
&lt;p&gt;Damit sollte der Server nun erreichbar sein und das Tutorial ist beendet. Viel Spaß!&lt;/p&gt;</description></item><item><title>Mein neuer Server (HP DL360p G8)</title><link>https://secretmine.de/blog/2023/2023-12-18-mein-neuer-server/</link><pubDate>Mon, 18 Dec 2023 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2023/2023-12-18-mein-neuer-server/</guid><description>&lt;p&gt;Dank eines freundlichen Arbeitskollegen habe ich nun einen neuen Server im Keller stehen, einen HP DL360p G8.
Die Specs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2x Xeon E5 2670 v2 (je 10 Kerne/20 Threads mit 2,5GHz)&lt;/li&gt;
&lt;li&gt;96 GB RAM&lt;/li&gt;
&lt;li&gt;2x 146 GB SAS Festplatte (Proxmox)&lt;/li&gt;
&lt;li&gt;1x 500 GB NVME-SSD (VMs)&lt;/li&gt;
&lt;li&gt;Dual 10 GBit/s Netzwerkkarte&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Der Server läuft, wie üblich, mir Proxmox und wird primär Aufgaben wie Encoding, Betrieb von diversen VMs parallel oder
Experimente mit Deep-Learning
übernehmen. Dauerhaft laufen wird das Teil aufgrund des Stromverbrauchs natürlich nicht. Die Single-Core-Performance ist
aufgrund des Alters nicht ganz auf Höhe der Zeit, aber durch die 20 Kerne bzw. 40 Threads wird das für die meisten
Aufgaben gut ausgeglichen. Generell ist der Server eine gute Spielwiese, da auch mehrere VMs parallel sich nicht in die
Quere kommen und genug Leistung abrufen können.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2023/2023-12-18-mein-neuer-server/images/hp.jpg"
width="3179"
height="3273"
srcset="https://secretmine.de/blog/2023/2023-12-18-mein-neuer-server/images/hp_hu_7f62448eca6022b8.jpg 480w, https://secretmine.de/blog/2023/2023-12-18-mein-neuer-server/images/hp_hu_3eed8be60635d81a.jpg 1024w"
loading="lazy"
alt="HP-Server"
class="gallery-image"
data-flex-grow="97"
data-flex-basis="233px"
&gt;&lt;/p&gt;</description></item><item><title>TS3-Server günstig zuhause hosten</title><link>https://secretmine.de/blog/2023/2023-10-18-ts3-server-guenstig-zuhause-hosten/</link><pubDate>Wed, 18 Oct 2023 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2023/2023-10-18-ts3-server-guenstig-zuhause-hosten/</guid><description>&lt;p&gt;Mittlerweile sind verschiedene Thin-Client-Modelle (beispielsweise Fujitsu Futro S740, S720, S520, &amp;hellip;) zu günstigen
Preisen erhältlich, teilweise für unter 20 € - manchmal sogar für 15 € und weniger. Die Prozessoren (z.B. im S720 und
S520) sind allerdings schwach, was den Einsatzzweck einschränkt. Netterweise braucht TeamSpeak3 wenig Ressourcen und
ist im Vergleich zu anderen Services auch nicht direkt kompatibel mit ARM-Prozessoren.&lt;/p&gt;
&lt;p&gt;Der Stromverbrauch von den Thin Clients ist ziemlich gering, je nach Modell nur wenige Watt. Damit ist das ganze auch zu
sehr günstigen Konditionen (bei 5 Watt und 30 Cent pro kWh entspräche das Stormkosten von etwas über einem Euro pro
Monat) zu betreiben. Teamspeak erlaubt den Betrieb eines Servers ohne Lizenz mit bis zu 32 Slots, was für viele Zwecke
genügt. Klar ist die Internetanbindung zu Hause für den Serverbetrieb nicht optimal, aber für einen kleinen Server mit
Freunden genügt so etwas. Dafür sind selbstverständlich Portfreigaben notwendig, welche Ports das sind steht weiter
unten. Konkrete Anleitungen werde ich hier generell in diesem Post nicht nennen, da das meiste davon nicht weiter schwer
ist.&lt;/p&gt;
&lt;p&gt;Für ein kleines Beispiel nutze ich einen Futro S520, das schwächste der genannten Modelle.
Als OS nutze ich hier Debian 12 ohne GUI, darauf habe ich dann mit &lt;a class="link" href="https://secretmine.de/blog/2018/11/03/debian-ubuntu-ts3-server-inkl-autostart-installieren/" &gt;meinem eigenen Script&lt;/a&gt; den TS3-Server installiert. Nach
der Installation habe ich mich mit dem TS3-Server verbunden und mit einer einfachen WLAN-Steckdose den Verbrauch gemessen.
Ohne weitere angeschlossene Geräte (nur LAN und Strom verbunden) liegt der Verbrauch bei angenehm niedrigen 5 Watt. Ein
Futro S740 liegt hier noch etwas niedriger, aber kostet auch ein mehrfaches vom S520.&lt;/p&gt;
&lt;p&gt;An Ports müssen für TS3 folgende freigebene werden:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Port 9987 UDP, Standard-Voice-Port&lt;/li&gt;
&lt;li&gt;Port 30033 TCP, Filetransfer (optional)&lt;/li&gt;
&lt;li&gt;Port 10011 TCP, Server-Query (optional)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Für den &amp;ldquo;Produktivbetrieb&amp;rdquo; sollte natürlich noch DynDNS eingesetzt werden, da sich zuhause die IP in gewissen Abständen ändern kann.
Hierzu gibt es viele Anbieter am Markt, wer DNS über Cloudflare und co
verwaltet, findet auch dafür passende DynDNS-Scripte.&lt;/p&gt;
&lt;p&gt;Aber ergibt das ganze überhaupt Sinn?&lt;/p&gt;
&lt;p&gt;Das kommt natürlich immer darauf an. Für das Geld, was der Thin Client durch den Stromverbrauch kostet, bekommt man bei einigen Anbietern schon kleine vServer, die dann im Rechenzentrum mit entsprechender Anbindung und Hardware betrieben werden, was natürlich für eine höhere Stabilität sorgt.
Ich finde hier aber den Lern- und Spaßfaktor wichtig. Ein Homelab bzw. genereller Betrieb von Services zuhause muss nicht immer (wirtschaftlich) sinnvoll sein. Dieses kleine Beispiel enthält schon viele wichtige grundlegende Elemente wie die Installation vom Betriebsssystem, Installation von Software und auch die Bereitstellung der Services von Außen mit Dyndns und Portfreigaben.&lt;/p&gt;</description></item><item><title>Homelab im Keller</title><link>https://secretmine.de/blog/2023/2023-10-03-homelab-keller/</link><pubDate>Tue, 03 Oct 2023 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2023/2023-10-03-homelab-keller/</guid><description>&lt;p&gt;Mein Homelab hat mittlerweile viele Revisionen in verschiedenen Wohnungen hinter sich. Angefangen in einem Abstellraum
bei meinen Eltern, über einen Server im Studentenwohnheim hinter einem Regal, mehrere Jahre eine Ecke in einer anderen Wohnung,
dann die Minimierung bei bzw. vor dem Umzug in die jetzige Wohnung und nun die erneute Erweiterung in Richtung Keller.&lt;/p&gt;
&lt;p&gt;Hintergrund für den Umzug in den Keller ist, dass im Arbeitszimmer bzw. generell in der Wohnung einfach der Platz fehlt
und auch der Wärme-Output und die Geräuschkulisse durchaus nerven kann. Um dem entgegenzuwirken habe ich vor kurzem
beschlossen, mein Lab in den Keller zu verlegen.&lt;/p&gt;
&lt;h2 id="internetnetzwerkverbindung"&gt;Internet/Netzwerkverbindung
&lt;/h2&gt;&lt;p&gt;Die einzige Möglichkeit, um Internet bzw. generell eine Netzwerkverbindung in den Keller zu bekommen, ist Powerline. Die
Betonwände verhindern jegliche Funkverbindungen und andere Leitungen außer Strom gibt es leider nicht. Bisher hatte ich alte
Adapter benutzt, Internet im Keller war nur für einen kleinen AP für eine WLAN-Steckdose notwendig. Die Bandbreite lag
bei etwa 10 MBit/s - für den bisherigen Zweck mehr als genug. Für die Nutzung als Homelab allerdings deutlich zu wenig.
Mit moderneren Powerline-Adaptern habe ich das nun auf ca. 70 MBit/s anheben können. Immer noch nicht überragend, aber
ausreichend. Am liebsten wäre mir ein Leerrohr von der Wohnung in den Keller gewesen, damit hätte ich dort dann ein
Glasfaserkabel verlegt, um 1G oder 10G zum Keller zu haben. Dann hätte auch das NAS mit in den Keller ziehen können,
das ist aufgrund der geringen Bandbreite jetzt so nicht möglich.&lt;/p&gt;
&lt;p&gt;Mit der nun brauchbaren Netzwerkanbindung war die Voraussetzung für den Betrieb im Keller erfüllt.&lt;/p&gt;
&lt;h2 id="hardware"&gt;Hardware
&lt;/h2&gt;&lt;p&gt;Vorläufig bleibt es weitestgehend bei schon vorhandener Hardware. Dazu gehört:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TP-Link 24 Port Gigabit Switch (mit VLAN-Support)&lt;/li&gt;
&lt;li&gt;Futro S720 (Storage), siehe &lt;a class="link" href="https://secretmine.de/blog/2023/2023-09-23-futro-s720/" &gt;hier&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;pve2 (Supermicro-Board, i5, 32GB RAM)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Notebook (Ryzen 3, 8GB RAM) - aktuell ungenutzt&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Das ist erstmal nicht viel, aber ein Anfang. Geplant ist, dass eine weitere Maschine mit mehr Rechenleistung noch dazu
kommt. Möglicherweise schaffe ich mir auch noch einen Server mit höherer Taktrate auf Ryzen-Basis an, aber dazu gibt es
keinerlei konkrete Zeitpläne.&lt;/p&gt;
&lt;p&gt;Kommen wir zum relevanten Part - ein Bild vom aktuellen Stand.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2023/2023-10-03-homelab-keller/images/keller-lab-v1.jpg"
width="4624"
height="3472"
srcset="https://secretmine.de/blog/2023/2023-10-03-homelab-keller/images/keller-lab-v1_hu_6f06bae0132b5dc6.jpg 480w, https://secretmine.de/blog/2023/2023-10-03-homelab-keller/images/keller-lab-v1_hu_c4cca82204d5dbb8.jpg 1024w"
loading="lazy"
alt="Keller-Lab v1"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="319px"
&gt;&lt;/p&gt;
&lt;h2 id="weitere-pläne"&gt;Weitere Pläne
&lt;/h2&gt;&lt;p&gt;Neben dem zusätzlichen Server habe ich erst einmal wenig Pläne für das Lab. Ich möchte hauptsächlich alles etwas
ordentlicher gestalten und VMs einrichten. Möglicherweise folgt noch ein Router (Mikrotik), um Routing zwischen Netzen
im Homelab machen zu können, ohne dass der Traffic zweimal durch die Powerline-Strecke muss. Außerdem habe ich noch
einen Temperatursensor bestellt, der in Verbindung mit einem ESP dann die Raumtemperatur und Luftfeuchte überwachen
soll. Vielleicht folgt auch noch eine Kamera, damit ich jederzeit sehen kann, ob alles korrekt arbeitet (und nichts
raucht).&lt;/p&gt;
&lt;p&gt;Das Netzwerk auf mehr als 1G zu upgraden lohnt sich aktuell nicht bzw. dafür fehlt bislang die Notwendigkeit. Solange
bleibt es bei 1G.&lt;/p&gt;</description></item><item><title>Futro S720</title><link>https://secretmine.de/blog/2023/2023-09-23-futro-s720/</link><pubDate>Sat, 23 Sep 2023 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2023/2023-09-23-futro-s720/</guid><description>&lt;p&gt;Seit nun etwas über einem halben Jahr ist ein
&lt;a class="link" href="https://secretmine.de/blog/2023/2023-02-20-neuer-homeserver-futro-s740/" &gt;Fujitsu Futro S740 der Hauptserver&lt;/a&gt; in meiner Wohnung und
verrichtet zuverlässig seinen Dienst. Zurzeit
arbeite ich daran, mein Homelab aus dem Arbeitszimmer in den Keller zu verlegen. Dazu wollte ich gerne einen kleinen
Server als Shared Storage für Dinge wie OS-ISOs, VM-Templates, Backups und generelle Datenablage haben. Das ganze auch
als getrenntes Gerät mit geringem Stromverbrauch, damit ich diesen Storage-Server unabhängig von anderen Servern im Lab
benutzen kann.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2023/2023-09-23-futro-s720/images/s720.jpg"
width="2111"
height="2635"
srcset="https://secretmine.de/blog/2023/2023-09-23-futro-s720/images/s720_hu_73bc2a27525d5567.jpg 480w, https://secretmine.de/blog/2023/2023-09-23-futro-s720/images/s720_hu_72d54939ed1a2415.jpg 1024w"
loading="lazy"
alt="Fujitsu Futro S720"
class="gallery-image"
data-flex-grow="80"
data-flex-basis="192px"
&gt;&lt;/p&gt;
&lt;p&gt;Nach kurzer Recherche fiel meine Wahl auf den Futro S720. Im Vergleich zum S740 ist hier ein AMD GX-217GA drin - ein
Dual-Core mit 1,65 GHz. Die CPU hat grob ein Viertel der Leistung vom Intel Celeron J4105 aus dem S740, als
Storage-Server ohne nennenswerte weitere Aufgaben genügt das aber. Das für mich relevante Argument war der (halb unter
dem Kühlkörper versteckte) SATA-Anschluss für eine HDD/SSD.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2023/2023-09-23-futro-s720/images/s720-inside.jpg"
width="1387"
height="1041"
srcset="https://secretmine.de/blog/2023/2023-09-23-futro-s720/images/s720-inside_hu_73f29cccc76281e5.jpg 480w, https://secretmine.de/blog/2023/2023-09-23-futro-s720/images/s720-inside_hu_dbbbda3d4d7c5119.jpg 1024w"
loading="lazy"
alt="Fujitsu Futro S720 Mainboard"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="319px"
&gt;&lt;/p&gt;
&lt;p&gt;Mein Gerät kam mit 8 GB SSD-Speicher sowie 2 GB RAM (DDR3). Nicht viel, aber reicht. Mit einem passenden
Adapterkabel, um aus einem USB-Header ein Stromkabel für SATA zu machen, passt damit ein 2,5-Zoll Laufwerk gut mit in
das Gehäuse. In meinem Fall eine Festplatte mit 640 GB, die ich noch liegen hatte. Der Stromverbrauch vom S720 (inkl.
der HDD) liegt bei mir im Idle bei etwa 6 Watt, unter Last inkl. HDD-Aktivität etwas über 10 Watt. Dafür, dass das Teil
nicht dauerhaft laufen wird, ist das mehr als in Ordnung. Mit Samba schaffe ich zur Festplatte konstant etwa 80 MB/s
ohne weitere Optimierungen, auch das ist genug.&lt;/p&gt;
&lt;p&gt;Dieser Post ist mehr oder weniger der Anfang vom &amp;ldquo;Neuaufbau&amp;rdquo; meines Homelabs im Keller. Sicherlich werden in naher
Zukunft noch weitere Posts folgen, irgendwann werde ich dann auch die Übersichtsseite über mein Lab plus
Netzwerkdiagramm entsprechend aktualisieren.&lt;/p&gt;</description></item><item><title>Erfahrungen mit dem Rechenzentrum „SkyLink“</title><link>https://secretmine.de/blog/2023/2023-08-04-erfahrungen-mit-dem-rechenzentrum-skylink/</link><pubDate>Fri, 04 Aug 2023 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2023/2023-08-04-erfahrungen-mit-dem-rechenzentrum-skylink/</guid><description>&lt;p&gt;Ich habe Ende 2019 ein Rechenzentrum gesucht, wo ich einen kleinen 1HE-Server unterstellen kann. Der Server sollte erst
für MC4U (was ja mittlerweile eingestellt ist) genutzt werden, später dann für eigene Zwecke. Anfang 2023 habe ich
den Stellplatz für den Server gekündigt, da ich ihn nicht mehr nutze. Nach etwa drei Jahren möchte ich hier
nun einmal meine Meinung bzw. Erfahrungen mit dem Rechenzentrum Skylink teilen.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Kleiner Hinweis: Wenn ich konkrete Preise nenne, beziehen diese sich auf das, was im Januar 2023 dort auf der Website
stand. Es kann hierbei auch passieren, dass ich mich verlesen habe oder ähnliches, also bitte im Zweifelsfall selbst
recherchieren.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Bei der Recherche auf der Suche nach Colocation für einen einzelnen Server bin ich auf das
Rechenzentrum Skylink (&lt;a class="link" href="https://skylink-data-center.de/" target="_blank" rel="noopener"
&gt;https://skylink-data-center.de/&lt;/a&gt;) in
Eygelshoven gestoßen (bzw. das Unternehmen XSServer (&lt;a class="link" href="https://xsserver.gmbh/" target="_blank" rel="noopener"
&gt;https://xsserver.gmbh/&lt;/a&gt;), wo man die
&amp;ldquo;kleineren&amp;rdquo; Services bekommt). Mittlerweile dürfte das RZ einigen Lesern ein
Begriff sein, da ein Teil der (Gaming-)Hosting-Szene in dieses Rechenzentrum gezogen ist. Zu dem Zeitpunkt war das aber
noch nicht so der Fall. Alternativen in einem ähnlich günstigen Preisbereich (unter 30 €/Monat für alles) gab und gibt es
kaum. Höchstens das Interwerk, also Active-Servers, aber die sind für einzelne Höheneinheiten teurer und zu
dem Zeitpunkt war dort auch generell keine Colocation buchbar.&lt;/p&gt;
&lt;p&gt;Das Rechenzentrum bietet eigentlich alles, was man so braucht. Anbindung erfolgt über Amsterdam und Frankfurt,
grundlegender DDoS-Schutz ist inklusive. Erweiterter DDoS-Schutz ist über Combahton möglich, von diesem Angebot habe ich
jedoch keinen Gebrauch gemacht und kenne auch die Kosten nicht. Traffic ist mit 3,57 €/TB günstig, aber es gibt eine
Mindestabnahme von 1 TB monatlich. Ich würde mir wünschen, dass sich dies reduzieren lässt, da ich meistens einiges
weniger benötigte. Einzelne IP-Adressen waren bei XSServer anfangs sehr günstig, mittlerweile sind dort auch die
Preiserhöhungen vom gesamten Hosting-Markt angekommen - der Preis liegt jetzt bei 2,50 €/Monat pro IP pro Monat. Das ist
im Vergleich zu anderen eher auf der teuren Seite. IPv6 ist leider nicht inklusive, selbst für einzelne Adressen muss
man bezahlen. Knapp 6 €/Monat für ein /64-Netz finde ich auch deutlich zu teuer - viele andere Anbieter werfen
einem die IPv6-Adressen fast hinterher, ein /64 ist häufig inklusive. Daher habe ich bei meinem Server auch kein IPv6.
Remote-Hands habe ich über die gesamte Laufzeit nicht benötigt, wäre im Zweifelsfall aber auch sehr erschwinglich. Ein
Uplink ist bei einzelnen Höheneinheiten auch inklusive, und das unabhängig von der Bandbreite (also auch 10G).
Interessant ist nur der Traffic, der verbraucht wird. Der Strom ist mit um die 25 Cent/kWh ebenfalls günstig, vor allem
wenn man bedenkt, dass dort Klimaanlage und USV/Generator bereits mit enthalten sind.
Was Brandschutz und co angeht, findet man nur Informationen zu Rauchmeldern im Doppelboden auf der Website.&lt;/p&gt;
&lt;p&gt;Nach der Bestellung des Stellplatzes habe ich meinen Server dann Anfang Januar 2020 verpackt und verschickt. Am nächsten
Morgen ist der Server angekommen und war mittags bereits online. Super. Generell muss ich sagen, dass der Kundenservice
gut ist, Kontakt geht immer flott und ist unkompliziert und angenehm. Das Interface bei XSServer ist soweit ordentlich,
man findet alles, was man braucht. Der Stromverbrauch und auch Traffic sind immer einsehbar, auch ist beim Traffic eine
Hochrechnung für den Traffic des aktuellen Monats sichtbar.&lt;/p&gt;
&lt;p&gt;Natürlich macht man bei dem Preis auch Abstriche. Sofern man keine Anbindung über Combahton bucht, wird der Traffic über
Skylink selbst geroutet. Die Routen waren insgesamt okay, Combahton im selben RZ ist jedoch mehrere Milisekunden
schneller. Auch kam es ab und an mal zu Paketverlust (&amp;lt;1 %) zu einigen Internetprovidern, dies ist beim Routing über
Combahton laut anderen Kunden anscheinend nicht der Fall.&lt;/p&gt;
&lt;p&gt;Über die drei Jahre, die ich dort war, gab es eine Reihe von kleineren Ausfällen. Insbesondere am Anfang gab es fast regelmäßig
Probleme mit der Anbindung nach Frankfurt und das Routing via Amsterdam war dann nicht sonderlich gut. Das hat sich
gebessert, mittlerweile ist die Anbindung erheblich stabiler geworden. Von der Telekom aus lief das über Cogent in
Amsterdam ins Rechenzentrum, leider nicht über Frankfurt. Anfangs war dies so, da wurde über Voxility in Frankfurt
geroutet. Das Routing über Amsterdam hat zumindest bei mir die Latenzen etwas verschlechtert, aber alles im Rahmen. Es
gab zwischenzeitlich auch mindestens einen Stromausfall, was auch zu ein wenig Downtime geführt hat. Zudem kam es bei
mir mehrfach dazu, dass auf der monatlichen Rechnung plötzlich erheblich mehr Stromverbrauch stand als eigentlich
möglich sein sollte, das ließ sich aber immer mit dem Support schnell lösen. Das Nachbestellen oder auch Kündigen
von einzelnen IP-Adressen ging über den Support ebenfalls problemlos. Ich hatte mir auch für einige Tage ein /29er
IP-Netz (inkl. Routing auf eine IP von mir) gemietet, auch das war auf Anfrage möglich.&lt;/p&gt;
&lt;p&gt;Wo ich deutliches Verbesserungspotenzial sehe, sind Informationen bei Ausfällen. Bis vor kurzem gab es keine
Status-/Störungsseite, wie bei vielen anderen Hostinganbietern üblich. Bei Störungen musste ich daher immer selbst
nachfragen, was gerade los ist - auf Nachfrage kam dann jedoch immer eine passende Antwort.&lt;/p&gt;
&lt;p&gt;Verbesserungsmöglichkeiten im Bereich &amp;ldquo;nice to have&amp;rdquo; sehe ich im Kundencenter und auch bei dem Produkt
selbst. Bei der Colocation wäre es schön, wenn man zu günstigem Preis einen weiteren Ethernet-Port (100MBit/s genügen
ja) für IPMI zubuchen könnte. Idealerweise wäre dort dann ein Zugang ohne öffentliche IP, sondern nur via VPN möglich.
Ich kenne dies so von einem anderen Anbieter und finde es sehr angenehm. Die Qualität der Anbindung ist soweit okay -
es wäre allerdings schön, wenn man unkompliziert für ein paar Euro (und wahrscheinlich Zuweisung neuer IP-Adressen) den
Traffic über Combahton beziehen könnte. Auch wünsche ich mir kostenlose IPv6-Adressen, idealerweise ein /64-Netz pro Server.&lt;/p&gt;
&lt;p&gt;Im Kundencenter wären mehr Statistiken zum Stromverbrauch (beispielsweise grafische Darstellung oder auch
Durchschnittsverbrauch in Watt nach Stunde/Tag aufgeschlüsselt) schön. Auch irgendeine Form von DDoS-Historie ist
hilfreich, wobei ich nur zu Zeiten, wo auf dem Server diverse Minecraft-Server liefen, einige Male angegriffen wurde.&lt;/p&gt;
&lt;p&gt;Insgesamt bin ich aber überrascht, wie gut die Qualität für diesen wirklich geringen Preis ist. Dementsprechend ist das
Rechenzentrum durchaus eine Empfehlung wert, wenn es nicht gerade um hochkritische Anwendungen geht. Aber dann ist man
eh in einer anderen Preisklasse unterwegs.&lt;/p&gt;</description></item><item><title>NAS-Upgrade</title><link>https://secretmine.de/blog/2023/2023-05-25-nas-upgrade/</link><pubDate>Tue, 23 May 2023 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2023/2023-05-25-nas-upgrade/</guid><description>&lt;p&gt;Mein NAS hat seine Kapazitätsgrenze von aktuell 9 TB (4x 3 TB, davon 1x 3 TB Parity) mittlerweile fast erreicht.
Daher habe ich mich dazu entschieden, eine weitere Festplatte hinzuzufügen. Um später größere Datenplatten nachschieben
zu können, fiel die Wahl hierbei auf eine 4 TB Seagate Ironwolf. Ich habe damit die bisherige Parity-Festplatte ersetzt
und die bisherige Parity-Festplatte dem Array als Datenplatte hinzugefügt. Damit komme ich nun auf 12 TB nutzbare
Kapazität. 1 TB habe ich damit jetzt mehr oder weniger verschwendet bzw. nutze ihn nicht, aber ich kann jederzeit
weitere Festplatten mit bis zu 4 TB dem Array hinzufügen.&lt;/p&gt;</description></item><item><title>Neuer Minecraft-Server</title><link>https://secretmine.de/blog/2023/2023-03-15-neuer-minecraft-server/</link><pubDate>Wed, 15 Mar 2023 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2023/2023-03-15-neuer-minecraft-server/</guid><description>&lt;p&gt;Zurzeit bereite ich einen neuen Minecraft-Server vor, der in Kürze starten soll. Es handelt sich dabei um einen
normalen Vanilla-Server ohne großartige Features, also einfach nur Survival.&lt;/p&gt;
&lt;p&gt;Wer Interesse hat mitzuspielen, kann sich gerne auf beliebigem Wege bei mir melden.&lt;/p&gt;</description></item><item><title>Mein neuer Homeserver (Fujitsu Futro S740)</title><link>https://secretmine.de/blog/2023/2023-02-20-neuer-homeserver-futro-s740/</link><pubDate>Mon, 20 Feb 2023 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2023/2023-02-20-neuer-homeserver-futro-s740/</guid><description>&lt;p&gt;Im letzten &lt;a class="link" href="https://secretmine.de/blog/2023/2023-01-24-netzwerk-und-homelab-stand-januar-2023/" &gt;Update zu meinem Homelab&lt;/a&gt;
sprach ich davon, den Raspberry Pi gegen etwas Leistungsstärkeres zu ersetzen, genauer gesagt durch einen Thin Client.
Viele im Internet empfehlen hierbei den Fujitsu Futro S740 Thin Client, also habe ich mich darüber genauer informiert.
Ein Intel Celeron J4105 (4 Kerne mit je max. 1,5 GHz), 4 GB RAM (aufrüstbar auf 16 GB) und 16 GB eMMC-Storage
(eine normale 2242 M.2 SATA-SSD) in einem kleinen Gehäuse, passiv gekühlt und mit geringem Stromverbrauch klang wirklich
interessant. Also habe ich mir so ein Teil mal bestellt. SSD (240GB M.2 SATA von Transcend, eine TS240GMTS420S) hatte ich noch liegen, das passte gut.
Bezahlt habe ich inkl. Versand 55 €, was in einem ähnlichen Bereich wie ein Raspberry liegt. Wer hier nach Angeboten sucht, sollte MyDealz gut im Auge behalten. Die Dinger sind immer sehr schnell ausverkauft, sobald sie verfügbar sind.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2023/2023-02-20-neuer-homeserver-futro-s740/images/s740.jpg"
width="712"
height="661"
srcset="https://secretmine.de/blog/2023/2023-02-20-neuer-homeserver-futro-s740/images/s740_hu_e7fff6c55aac1396.jpg 480w, https://secretmine.de/blog/2023/2023-02-20-neuer-homeserver-futro-s740/images/s740_hu_13c05ddeec156b63.jpg 1024w"
loading="lazy"
alt="Fujitsu Futro S740"
class="gallery-image"
data-flex-grow="107"
data-flex-basis="258px"
&gt;&lt;/p&gt;
&lt;p&gt;Als ich den Thin Client ausgepackt habe, war ich erst einmal von der Größe etwas überrascht. Ich hatte ein größeres
Gerät erwartet, aber der sehr kleine Formfaktor passt eigentlich gut. Nach einem kurzen Test-Boot ins BIOS habe ich
dann RAM und SSD ausgetauscht, nur um festzustellen, dass das Gerät nicht mehr startete und das ganze mit Piepen
quittierte. Wie sich herausstellt ist der RAM, den ich noch hatte, nicht kompatibel. Ich werde noch mal ein anderes
Modul kaufen (eine gute Kompatibilitätsliste und haufenweise weitere Informationen finden sich hier: &lt;a class="link" href="https://github.com/R3NE07/Futro-S740" target="_blank" rel="noopener"
&gt;https://github.com/R3NE07/Futro-S740&lt;/a&gt; ), sobald ich Bedarf
für mehr RAM habe.&lt;/p&gt;
&lt;p&gt;Ich habe also Debian installiert und dort Proxmox eingerichtet. Innerhalb von kürzester Zeit lief ein ganz normales
Proxmox, mit 2,9 Watt im Idle. Wenn 2-3 VMs/Container mit insgesamt wenigen Prozent Last laufen, bin ich immer noch
bei unter 5 Watt. Zur Optimierung habe ich den Govenor auf Conservative eingestellt. Damit bleibt der Takt meistens sehr
niedrig, höher takten tut die CPU nur, wenn länger höhere Last anliegt. Bei VMs lohnt es sich auch, in den VM-Optionen
in Proxmox &amp;ldquo;Use tablet for pointer&amp;rdquo; zu deaktivieren. Das senkt die CPU-Last von VMs um wenige Prozent und spart vor allem
bei mehreren VMs durchaus Ressourcen. Man verliert hierbei die absolute Mausposition in der VM, was aber bei einer
VM, die eh nur über die Konsole oder per Remote bedient wird, keinen Unterschied macht.&lt;/p&gt;
&lt;p&gt;Seit der Umstellung fühlt sich Homeassistant flotter an, vor allem beim Aufruf von längerer Historie. Ich kann außerdem
nun beispielsweise Smokeping und Adguard problemlos auf derselben Hardware laufen lassen. Zurzeit schränkt mich der RAM
mit 4 GB etwas ein, belegt sind meistens etwa 2,7 GB. Der Prozessor ist im Schnitt bei etwas über 5 %, da ist also noch
viel Luft nach oben. Ich bin allgemein super happy mit dem Gerät, da ich für wenig Geld und geringem Strombedarf wieder
eine volle Virtualisierungsumgebung nutzen kann und wieder mehr &amp;ldquo;Spielwiese&amp;rdquo; habe.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2023/2023-02-20-neuer-homeserver-futro-s740/images/netzwerk-kallax-2.jpg"
width="679"
height="1200"
srcset="https://secretmine.de/blog/2023/2023-02-20-neuer-homeserver-futro-s740/images/netzwerk-kallax-2_hu_37beaf810e09b112.jpg 480w, https://secretmine.de/blog/2023/2023-02-20-neuer-homeserver-futro-s740/images/netzwerk-kallax-2_hu_99a03626cc9d7329.jpg 1024w"
loading="lazy"
alt="Netzwerk-Kallax v2"
class="gallery-image"
data-flex-grow="56"
data-flex-basis="135px"
&gt;&lt;/p&gt;
&lt;p&gt;Das Netzwerk-Kallax hat auch noch ein Updat bekommen - aus dem 1x1-Kallax wurde nun ein 2x1-Kallax. Ich habe dabei
auch die Verkabelung noch neu gemacht, das ganze sieht jetzt etwas ordentlicher aus. Und ich komme an den Arbeits-Laptop,
der obendrauf liegt, zum Einloggen besser ran.&lt;/p&gt;</description></item><item><title>Netzwerk und Homelab – Stand Januar 2023</title><link>https://secretmine.de/blog/2023/2023-01-24-netzwerk-und-homelab-stand-januar-2023/</link><pubDate>Tue, 24 Jan 2023 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2023/2023-01-24-netzwerk-und-homelab-stand-januar-2023/</guid><description>&lt;p&gt;Das letzte Update zu den Plänen mit meinem Homelab ist jetzt wieder einige Monate her, die dort gezeigte Lösung war auch
nur bis etwa August aktiv. Ich bin seitdem umgezogen, wobei ich auch mein Netzwerk neu aufgebaut habe. Ich habe hierbei
einiges vereinfacht und für einen geringen Stromverbrauch optimiert. Ich habe unten auch eine konkrete Hardware-Liste
angefügt.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2023/2023-01-24-netzwerk-und-homelab-stand-januar-2023/images/netzwerk-kallax.jpg"
width="700"
height="1017"
srcset="https://secretmine.de/blog/2023/2023-01-24-netzwerk-und-homelab-stand-januar-2023/images/netzwerk-kallax_hu_9c4d66d03986371b.jpg 480w, https://secretmine.de/blog/2023/2023-01-24-netzwerk-und-homelab-stand-januar-2023/images/netzwerk-kallax_hu_4f092bbc9f83a271.jpg 1024w"
loading="lazy"
alt="Bild vom Netzwerk-Kallax"
class="gallery-image"
data-flex-grow="68"
data-flex-basis="165px"
&gt;&lt;/p&gt;
&lt;p&gt;Fangen wir mit dem grundlegenden an. Bisher hatte ich einen 100-MBit/s-DSL-Vertrag bei der Telekom. Da an der neuen
Adresse jedoch via DSL maximal 50MBit/s verfügbar sind, habe ich zu Vodafone Kabel gewechselt - damit bekomme
ich nun 250 MBit/s. Verfügbar wären an sich bis zu 1 GBit/s, aber das benötige ich absolut nicht. Internet-Fallback
ist ein LTE-Router mit günstigem Prepaid-Tarif, bei dem ich unkompliziert viel Datenvolumen nachbuchen kann -
dazu später mehr.&lt;/p&gt;
&lt;h2 id="das-netzwerk-im-kern"&gt;Das Netzwerk im Kern
&lt;/h2&gt;&lt;p&gt;Wie in der vorherigen Wohnung ist ein hAP AC² von Mikrotik Kern des ganzen. Der Router übernimmt sowohl das Routing
als auch Aufgaben wie VPN-Tunnel und dient parallel als WLAN-Access-Point. Klar, ich würde mit einem externen AP mehr
Bandbreite bekommen - aber das, was jetzt durchkommt, genügt definitiv. Im selben Raum kriege ich über 200 MBit/s,
in anderen Räumen meistens zwischen 50 und 100 MBit/s. Das reicht eigentlich für alles, nur bei Spiele-Downloads mit
dem Steam Deck wäre mehr Bandbreite wünschenswert.&lt;/p&gt;
&lt;p&gt;Am hAP hängen zwei Switches. Einer ist ein kleiner 5-Port-Switch für Smart-Home, der andere ist der Hauptswich für das
Heimnetz. Bei den Switches haben sich die kleinen Geräte von TP-Link für mich seit über 10 Jahren bewährt -
bislang ohne einen Ausfall.&lt;/p&gt;
&lt;p&gt;Ich habe auch eine Powerline-Strecke in den Keller, dort hängt ein Mikrotik mAP Lite als Access Point für eine
WLAN-Steckdose. Der Durchsatz liegt im Keller bei 20-30 MBit/s. Die Bandbreite war mir dort aber relativ egal,
hauptsache es kommen stabil mindestens 1-2 MBit/s durch. Netter Nebeneffekt dadurch ist, dass wenn die Waschmaschine
mal wieder 15min für die letzte Minute braucht, man sich die Zeit auf Reddit und co vertreiben kann. Ansonsten ist der
Keller ein komplettes Funkloch, außer meinem eigenen Netz sehe ich gar nichts. Mobilfunk kommt auch nicht an.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2023/2023-01-24-netzwerk-und-homelab-stand-januar-2023/images/heimnetzwerk.png"
width="501"
height="521"
srcset="https://secretmine.de/blog/2023/2023-01-24-netzwerk-und-homelab-stand-januar-2023/images/heimnetzwerk_hu_7c240809f41e041f.png 480w, https://secretmine.de/blog/2023/2023-01-24-netzwerk-und-homelab-stand-januar-2023/images/heimnetzwerk_hu_32d661a96a009c86.png 1024w"
loading="lazy"
alt="Netzwerkdiagramm mit allen kabelgebundenen Geräten"
class="gallery-image"
data-flex-grow="96"
data-flex-basis="230px"
&gt;&lt;/p&gt;
&lt;h2 id="internetzugang"&gt;Internetzugang
&lt;/h2&gt;&lt;p&gt;Für den Internetzugang nutze ich das Modem von Vodafone, allerdings im Bridge-Mode, um doppeltes NAT (bzw. mit CGNAT
dann dreifaches) zu vermeiden. Im
Vergleich zu einem eigenen Modem habe ich so den Vorteil, dass ich Hardware von Vodafone benutze, kein eigenes Modem
anschaffen muss und auch Telefonie soweit gut funktioniert. Der große Nachteil ist allerdings, dass ich kein IPv6
bekomme. Dafür ist die IPv4-Adresse nicht geteilt, also kein CGNAT. Ich habe mir Tunnel-Provider wie Route48
angesehen, aber dort hatte ich dann Probleme mit der Verortung der IP-Adressen. Bei Google Shopping wurden
beispielsweise auf einmal Ergebnisse bei Walmart und generell in Dollar angezeigt - das Ganze war nicht so richtig
alltagstauglich und dementsprechend wieder deaktiviert. Ich werde das Thema irgendwann noch einmal untersuchen, da
ich eigentlich schon gerne Dualstack hätte.&lt;/p&gt;
&lt;p&gt;Als Internet-Fallback habe ich einen TP-Link MR100 LTE-Router gekauft, diesen gabs im Dezember für etwa 40 € im Angebot.
Darin ist nun eine SIM-Karte von Edeka-Smart. Ich habe länger überlegt, was für ein Tarif geeignet ist und mich
schlussendlich für einen Prepaid-Tarif entschieden, der bei nicht- bzw. geringer Nutzung günstig ist, wo ich aber
tagesweise für einen brauchbaren Preis viel Datenvolumen nachbuchen kann. Normalerweise wird dann der
1GB-Tarif für knapp 5 €/Monat gebucht, sollte es tatsächlich zu Ausfällen kommen, lässt sich für etwa 6 € pro 24h unlimitiertes
Datenvolumen nachbuchen. Da ich nicht davon ausgehe, das oft zu benötigen und der Tarif Prepaid und auch im
Telekom-Netz ist, ist für mich alles erfüllt. Das Vodafone-Mobilnetz ist hier nicht brauchbar mit etwa 1-2 MBit/s, bei
der Telekom kriege ich durchaus 70-80 MBit/s (Upload etwa 30 MBit/s). Das reicht mehr als aus, um von zu Hause zu arbeiten und auch Netflix in
guter Qualität nutzen zu können.&lt;/p&gt;
&lt;h2 id="smart-home"&gt;Smart-Home
&lt;/h2&gt;&lt;p&gt;Vielleicht hat sich schon jemand gefragt, warum überhaupt eine FritzBox mit im Netzwerk hängt, wenn ich doch das Modem
von Vodafone nutze und einen zusätzlichen Hauptrouter habe. Die dient nur als DECT-Basisstation,
woran neben einem FritzFon auch drei smarte Thermostate angeschlossen sind.&lt;/p&gt;
&lt;p&gt;Alles im Smart-Home wird von einem Raspberry Pi 3 mit HomeAssistant gesteuert. Der Pi 3 ist natürlich nicht mehr der
neuste, aber den hatte ich noch, wodurch ich keine neue Hardware anschaffen musste. Hier sind aber Änderungen geplant,
mehr dazu unten.&lt;/p&gt;
&lt;p&gt;Neben den Thermostaten sind diverse WLAN-Steckdosen, Zigbee-Temperatursensoren und -Schalter, ein Strommessgerät sowie
einige weitere Geräte eingebunden. Ich habe einen Post zum aktuellen Stand vom Smart-Home geplant, aber mal schauen,
wann ich da tatsächlich zu komme und Lust darauf habe.&lt;/p&gt;
&lt;h2 id="stromverbrauch"&gt;Stromverbrauch
&lt;/h2&gt;&lt;p&gt;Die komplette Hardware zusammen (also Router, Switches, Raspi, &amp;hellip;) braucht im Leerlauf etwa 24 Watt, bei starker
Nutzung der Internetleitung geht der Verbrauch auf knapp 30 Watt hoch. Das ist im Vergleich zu meinem vorherigen Setup
(also das mit laufendem Server) recht wenig - ein einzelner Router würde aber natürlich weniger verbrauchen. Dennoch -
unter 10 € Stromkosten pro Monat bei den aktuell hohen Preisen ist für mich vertretbar.&lt;/p&gt;
&lt;p&gt;Ich suche generell Komponenten mittlerweile auch stark nach Stromverbauch aus. Einerseits natürlich um Kosten zu sparen,
andererseits auch mit Blick auf die Umwelt.&lt;/p&gt;
&lt;h2 id="zukunftspläne"&gt;Zukunftspläne
&lt;/h2&gt;&lt;p&gt;Mein Homelab ist, wie schon immer, im stetigen Wandel. Auch jetzt habe ich schon wieder einige Verbesserungen bzw.
Änderungen im Kopf, die ich in den nächsten Wochen und Monaten umsetzen möchte.&lt;/p&gt;
&lt;h3 id="netzwerk"&gt;Netzwerk
&lt;/h3&gt;&lt;p&gt;Der frühere Hauptswitch (TP-Link SG1024DE, also 24 Ports mit VLANs) ist aktuell ohne Verwendung. Ich habe vor, zur
Serverecke im Arbeitszimmer nur noch ein Kabel statt bisher drei (wenn man das normal nicht steckende Kabel für das
IPMI mitzählt) liegen zu haben und dort dann den Switch zu verwenden. Das ist natürlich deutlich übertrieben,
aber damit kann ich die Kabel im Netzwerkbereich etwas reduzieren. Ich habe damit auch die Möglichkeit, einfacher
einen weiteren Server (für temporäre Nutzung) hinzuzufügen.&lt;/p&gt;
&lt;h3 id="heimserver"&gt;Heimserver
&lt;/h3&gt;&lt;p&gt;Bekanntlich habe ich mehrfach versucht, den alten Heimserver gegen etwas Energieeffizientes auszutauschen. Das hat
ja nicht so gut geklappt. Ich warte zurzeit darauf, dass beispielsweise Thin-Clients (wie ein Futro S740) oder vergleichbare
Mini-PCs günstig im
Angebot sind, da ich so etwas für eine gute Lösung für mich halte. Ich kann Proxmox einsetzen, Homeassistant als VM
nutzen und Dinge wie PiHole/AdGuard oder mein altes Smokeping-Setup wieder problemlos verwenden. Generell erlaubt mir
eine kleine Maschine mit Proxmox mehr Flexibilität und einfach Spielraum. Mir geht es hierbei aber auch stark darum,
so wenig Strom wie nur möglich zu verwenden. Ich benötige zu Hause auch nicht viel Rechenleistung, das macht die Auswahl
etwas leichter bzw. ich kann auf maximale Energieeffizienz setzen, ohne groß auf die Performance schauen zu müssen.&lt;/p&gt;
&lt;h2 id="hardware-liste"&gt;Hardware-Liste
&lt;/h2&gt;&lt;p&gt;Diese Liste werde ich eines Tages mal auf eine eigene Seite auslagern. Heute ist aber nicht dieser Tag.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hauptrouter: Mikrotik hAP AC²&lt;/li&gt;
&lt;li&gt;Access-Point im Keller: Mikrotik mAP Lite&lt;/li&gt;
&lt;li&gt;LTE-Router: TP-Link MR100&lt;/li&gt;
&lt;li&gt;Kabelmodem: Vodafone Station&lt;/li&gt;
&lt;li&gt;Switches
&lt;ul&gt;
&lt;li&gt;5-Port: TP-Link SG105&lt;/li&gt;
&lt;li&gt;8-Port: TP-Link SG108&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Powerline-Adapter: TP-Link TL-PA4010&lt;/li&gt;
&lt;li&gt;Smart-Home-Server: Raspberry Pi 3&lt;/li&gt;
&lt;li&gt;Zigbee-Stick: Irgendein random Stick mit einem CC2531-Chip&lt;/li&gt;
&lt;li&gt;DECT-Basis: FritzBox 7360&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Re-Launch der Website mit Hugo</title><link>https://secretmine.de/blog/2023/2023-01-18-neue-seite/</link><pubDate>Thu, 19 Jan 2023 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2023/2023-01-18-neue-seite/</guid><description>&lt;p&gt;Seit heute läuft diese Website nun mit Hugo, also einem Static Site Generator.&lt;/p&gt;
&lt;h2 id="warum"&gt;Warum?
&lt;/h2&gt;&lt;p&gt;Ich benutze Wordpress nun seit etwas über 10 Jahren und habe es eigentlich immer für ungefähr alles eingesetzt, was mir
so in den Sinn kam. Von normaler Website über Wikis, Seiten für einzelne Projekte oder auch für diesen Blog. Die Auswahl
an Themes ist generell gut, man findet Plugins für absolut alles und eine große Community gibt es auch. Vorteilhaft ist
auch, dass Wordpress nur einen normalen Webserver mit PHP und eine Datenbank benötigt - Dinge, die man eigentlich immer
zur Verfügung hat. Hinsichtlich Datenschutz ist Wordpress mit externen Themes und Plugins eher uncool, da man nie weiß,
von wo jetzt Dinge eingebunden werden, ob Cookies gesetzt und/oder Daten erfasst werden usw.&lt;/p&gt;
&lt;p&gt;Das, was mich aber mit am meisten an Wordpress gestört hat, ist der fast-zwang alle paar Tage nach Updates zu suchen
und diese bei Bedarf zu installieren. Es gab in der Vergangenheit immer mal wieder Fälle, wo größere Sicherheitslücken
aufgetaucht sind. Und bei einem so verbreiteten CMS wie Wordpress werden solche Lücken dann auch meistens ungefähr
sofort breitflächig ausgenutzt. Mit Updates (vor allem auch Updates von PHP) gibt es dann auch immer mal wieder
Kompatibilitätsprobleme mit Plugins oder Themes, was dann jedes Mal wieder für Arbeit sorgt.&lt;/p&gt;
&lt;p&gt;Wenn man allerdings auf dem Webserver nur statische Dateien (HTML/CSS/Zubehör) liegen hat, macht das die Sache natürlich
deutlich angenehmer. Updates vom Webserver selbst sind eigentlich egal, da der nur die Aufgabe hat, die Seite
am Ende auszuliefern. Serverseitig wird kein Code ausgeführt, was auch die Angriffsfläche (für die Seite selbst) auf
ungefähr Null reduziert. Ich selbst finde es auch durchaus angenehm, den Content in einem beliebigen Editor in Markdown
schreiben zu können und nicht auf den Block-Editor von WP angewiesen zu sein. Beim Platzieren von Bildern und co hatte
der wiederum seine Vorteile, aber damit werde ich jetzt eben leben. Die konkrete Wahl auf Hugo fiel, weil es ein
verbreiteter Static Site Generator ist und mir die generelle Schlankheit gut gefällt. Auch mit dem Aufbau der Struktur
bin ich zufrieden, ich habe mich schnell zurechtgefunden. Ein Theme zu suchen hat tatsächlich auch nicht lange gedauert,
ich setze hier nun &lt;a class="link" href="https://github.com/adityatelange/hugo-PaperMod" target="_blank" rel="noopener"
&gt;Hugo PaperMod&lt;/a&gt; ein. Ich habe aber einige Änderungen
vorgenommen, beispielsweise ist das Footer-Menü neu. Ich hätte eigentlich auch gerne Unter-Menüs, aber das ist eine
Sache, die ich zu einem anderen Zeitpunkt angehen werde.&lt;/p&gt;
&lt;h2 id="wie-sieht-der-neue-workflow-aus"&gt;Wie sieht der neue Workflow aus?
&lt;/h2&gt;&lt;p&gt;Die Dateien (Markdown, Theme, Configs, &amp;hellip;) der Seite liegen in einem Git-Repo. Ich habe hier meinen Entwicklungsbranch,
auf dem ich neuen Inhalt vorbereite, Änderungen am Theme oder andere Arbeiten vornehme. Wenn ich mit Änderungen zufrieden
bin, übernehme ich diese in den main-Branch. Also ein ganz normaler Git-Workflow.&lt;/p&gt;
&lt;p&gt;Sobald ich etwas ins Repo pushe, wird im Hintergrund eine CI-Pipeline mit Jenkins aktiv. Hier wird dann Hugo ausgeführt
und damit die Seite gebaut. Danach wird die fertig generierte Website mit Rsync auf den Webserver kopiert. Aktuell läuft
der Webserver noch mit Keyhelp, es ist allerdings möglich, dass sich auch das noch ändern wird.&lt;/p&gt;
&lt;p&gt;Abhängig vom Branch wird Hugo mit dem entsprechenden Environment aufgerufen - &lt;code&gt;production&lt;/code&gt; nur auf dem main-Branch,
ansonsten &lt;code&gt;dev&lt;/code&gt;. Das selbe für das Deployen der Seite. Der main-Branch landet auf der Hauptdomain, für alle anderen
Branches gibt es eine getrennte Subdomain als Entwicklungsumgebung.&lt;/p&gt;
&lt;p&gt;Ich habe bei der Umstellung der Seite darauf geachtet, alte Links möglichst intakt zu lassen. Das Link-Format für Posts
ist deshalb das selbe wie bisher.&lt;/p&gt;
&lt;h2 id="wie-gehts-mit-dem-blog-weiter"&gt;Wie gehts mit dem Blog weiter?
&lt;/h2&gt;&lt;p&gt;Ich habe vor, etwas aktiver Beiträge zu liefern. Besonders im Bereich Smart-Home mache ich mittlerweile deutlich mehr
als vor einem halben Jahr noch. Ich habe auch mein Heimnetz und Homelab komplett neu strukturiert, dazu ist aktuell ein
Post in Arbeit. Bisher habe ich noch einen Server im Skylink-Rechenzentrum stehen, dazu habe ich ebenfalls einen
Erfahrungsbericht seit fast drei Jahren in Arbeit. Ich wage aber lieber keine Vorhersage, in welchen Abständen hier
Inhalte kommen werden&amp;hellip;&lt;/p&gt;</description></item><item><title>Warum ein Synology-NAS für mich nicht geeignet ist</title><link>https://secretmine.de/blog/2022/2022-09-02_synology_nas/</link><pubDate>Fri, 02 Sep 2022 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2022/2022-09-02_synology_nas/</guid><description>&lt;p&gt;Ich überlege ja schon länger, mein Heimserver-Setup komplett neu aufzubauen. Neben Mini-PCs habe ich hierfür auch ausgiebig in Richtung NAS-Geräte recherchiert. Aufgrund der Software und dem generellen Ruf bin ich dann bei Synology gelandet, durch die 4 Bays konkret bei der Diskstation DS920+.&lt;/p&gt;
&lt;p&gt;Hardwaremäßig kann die Konkurrenz mittlerweile 2,5G-Ethernet bieten, Synology hat weiterhin (bis auf bei den High-End-Geräten) überall nur 1G-Schnittstellen verbaut. Bei dem Preis von den Geräten erwarte ich da eigentlich mehr, vor allem da entsprechende Chips nicht viel kosten. Die CPU ist ein Celeron J4125 – für so ein Gerät angemessen.&lt;/p&gt;
&lt;p&gt;Der Plan war, hier 2x SSD und 2x HDD zu verbauen. Die SSDs sollten den normalen Alltag machen, damit die HDDs meistens abgeschaltet sein können und weniger Strom verbrauchen. Es stellt sich jedoch heraus, dass die Systempartition und der Swap über alle Datenträger gespiegelt wird, die HDDs gehen also ungefähr nie in den Ruhezustand über. Damit wäre der Vorteil schon mal weg. Synology Hybrid Raid hingegen finde ich absolut super. Damit lassen sich Festplatten mit unterschiedlichen Größen in einem RAID kombinieren, was sonst eher nicht so üblich ist.&lt;/p&gt;
&lt;p&gt;Homeassistant via VM schien zu laufen – eingerichtet habe ich es jedoch nicht komplett. Da es eine VM ist, mache ich mir da aber auch wenig Sorgen.&lt;/p&gt;
&lt;p&gt;Docker lief auch soweit gut, meine Tests mit Paperless-ngx funktionierten ebenfalls problemlos.&lt;/p&gt;
&lt;p&gt;Die Software lässt sich generell gut bedienen, da sehe ich wenig Probleme. Die Grundfunktionen für Freigaben via Samba und co funktionieren ebenfalls gut. Die mitgelieferte Software für PC-Backups ist allerdings… nicht ganz zu Ende gedacht. An sich funktioniert diese gut (wobei ich einen Restore nicht getestet habe), es lassen sich allerdings keine Ordner ausschließen. Das heißt, dass meine ganzen Spiele und andere Daten, die sich leicht wiederherstellen lassen, mit gesichert wurden. Meine Spiele neu herunterzuladen ist für mich kein Thema, wenn ich dabei beim Backup einige hundert GB an Speicherplatz sparen kann. Mit Acronis führe ich dies auch genau so durch und fahre gut damit – mit dem Synology-Tool lässt es sich aber so nicht umsetzen und ich verbrenne unnötig Speicher.&lt;/p&gt;
&lt;p&gt;Der Stromverbrauch lag bei mir im Idle (2x HDD, 2x SSD) mit abgeschalteten Platten bei 15-20 Watt, unter etwas Last bei eher 30-40 Watt. Ein kleiner Mini-PC benötigt durchaus weniger und bei den aktuellen Strompreisen ist es mir eigentlich zu viel. Vor allem, wenn man hier wieder den Aspekt berücksichtigt, dass die Festplatten ungefähr nie in den Ruhezustand gehen und damit immer Strom verbrauchen.&lt;/p&gt;
&lt;p&gt;Ich habe das Gerät am Ende wieder zurückgeschickt. Über 500€ sind mir zu viel dafür, dass das Gerät nicht die Eierlegende Wollmilchsau ist, die ich mir gewünscht habe. Im groben und ganzen ist es ein solides Gerät, aber leider erfüllt es an mehreren Stellen die Ansprüche, die ich habe, nicht. Vorerst werde ich ohne Homeserver leben und einen Raspberry Pi für Homeassistant nutzen, wahrscheinlich lande ich am Ende aber doch wieder bei irgend einem Mini-PC mit Proxmox.&lt;/p&gt;</description></item><item><title>Änderungen am Homelab Part 3 – Meine Lösung</title><link>https://secretmine.de/blog/2022/04/13/aenderungen-am-homelab-part-3-meine-loesung/</link><pubDate>Wed, 13 Apr 2022 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2022/04/13/aenderungen-am-homelab-part-3-meine-loesung/</guid><description>&lt;p&gt;&lt;a class="link" href="https://secretmine.de/blog/2022/02/25/homelab-stromkosten/" &gt;Ursprünglich hatte ich ja vor&lt;/a&gt;, meinen jetzigen Heimserver (
der so 30-40 Watt im Leerlauf verbraucht) durch einen Mini-PC zu ersetzen, der dann den Verbrauch auf 10 Watt oder so
reduziert. &lt;a class="link" href="https://secretmine.de/blog/2022/04/10/aenderungen-am-homelab-part-2-fail/" &gt;Das lief bekanntlich nicht so wie geplant&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Daher nun ein neuer Plan. In meiner Wohnung laufen eh zwei Raspberry Pis (Model 1B, also nicht ganz frisch), die ein
paar Sensoren ans Netz bringen. Ich habe auch einen primär privat genutzten Server in einem Rechenzentrum stehen (dazu
bei Gelegenheit mehr). Und ich wollte meinen Router (aktuell ein Unifi USG von Ubiquiti) eh durch ein Gerät von Mikrotik
austauschen. Kern meines Heimnetzes ist nun ein Mikrotik hAP AC2.&lt;/p&gt;
&lt;p&gt;Also.&lt;/p&gt;
&lt;p&gt;Die Idee ist, die Homeassistant-VM ins Rechenzentrum zu schieben und irgendwie das entsprechende Netz zu diesem Server
zu bridgen (also kein Routing dazwischen). Mir ist klar, dass das definitiv nicht best-practise ist, das ist auch keine
Dauerlösung. Ich habe nun also ein VLAN, was mittels EoIP (Ethernet over IP, Protokoll von Mikrotik) an ein VLAN auf dem
Server im Rechenzentrum angeschlossen ist. Der EoIP-Tunnel läuft dabei innerhalb eines Wireguard-Tunnels. Nachdem ich
ein paar Probleme, die alle auf die MTU zurückzuführen waren, behoben hatte, läuft das ganze nun erstaunlich gut. Zigbee
wird mittels Zigbee2MQTT auf einem der Pis in MQTT übersetzt und an den Broker geschickt. Man merkt auch absolut keinen
Unterschied dadurch, dass Homeassistant nun woanders läuft.&lt;/p&gt;
&lt;p&gt;Parallel habe ich die Unifi USG und auch meinen Unifi AP AC Lite vom Netz genommen. Den AP erst einmal testhalber, da
ich mir vom integrierten WLAN ein Bild machen möchte. Und bislang schafft der hAP AC2 es, von einer Ecke der Wohnung
alles abzudecken. Geschwindigkeiten sind nicht auf dem Level vom Unifi AP (der hat problemlos 200MBit/s und mehr
durchgehauen, jetzt sind es eher 60MBit/s), aber ich bin mehr als zufrieden damit. Das WLAN ist eh ungefähr nur für
einige WLAN-Steckdosen und zwei Smartphones im Einsatz, alles andere hat ein Kabel dran. Die Konfiguration vom
Mikrotik-Gerät war zwar alles andere als einfach, aber die Dinger können dafür auch sehr viel.&lt;/p&gt;
&lt;p&gt;&amp;hellip;und das relevante: Der Stromverbrauch. Vorher war ich mit dem Server im Idle bei grob 60 Watt mit allem. Also
Switch, Router, AP und Server. Jetzt stehen da 17 Watt. Bei den aktuellen Strompreisen macht sich das sehr schnell
bezahlt und ich fühle mich insgesamt besser dabei. Der Server kommt auch nicht weg, der steht weiterhin hier. Nur jetzt
eben nicht mehr dauerhaft an, sondern nur bei Bedarf.&lt;/p&gt;
&lt;p&gt;Eine Dauerlösung ist das so nicht. Auch, da der Server im RZ nicht mehr der Jüngste ist und die SSDs auch schon einige
Jahre in Betrieb sind. Mein Ziel ist, Homeassistant dann irgendwann auf einen weiteren, aktuelleren Pi zu schieben. Was
ich mit dem Atlassian-Stack dann mache weiß ich jetzt noch nicht, der ist im RZ soweit aber erstmal gut aufgehoben.&lt;/p&gt;
&lt;p&gt;Vielleicht schaue ich beim Thema Mini-PC ja doch noch mal vorbei. Aber in absehbarer Zukunft steht eh ein Umzug an, wo
ich mein Vorgehen neu betrachten muss.&lt;/p&gt;</description></item><item><title>Änderungen am Homelab Part 2 – Fail.</title><link>https://secretmine.de/blog/2022/04/10/aenderungen-am-homelab-part-2-fail/</link><pubDate>Sun, 10 Apr 2022 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2022/04/10/aenderungen-am-homelab-part-2-fail/</guid><description>&lt;p&gt;Der letzte Beitrag zu dem Thema endete damit, dass ich
den JB95 von MinisForum getestet habe.
Von der Leistung her war der in Ordnung, Stromverbrauch mit etwas unter 10 Watt im Idle auch gut. Was mich nur gestört
hat, war, dass es keine Möglichkeit gab, den Mini-PC bei einem Stromausfall automatisch wieder zu booten. Auto-Start bei
Stromzufuhr unterstützt er nicht, Wake on Lan geht leider auch nicht. Es gibt zwar ein BIOS-Update, was angeblich WOL
aktivieren soll, aber das tut es nicht. Auch ethtool zeigt WOL als Deaktiviert an. Der Support war keine Hilfe bzw.
hat - denke ich - mein Problem nicht verstanden. Das war leider dann ein KO-Kriterium für mich.&lt;/p&gt;
&lt;p&gt;Aber es gibt ja auch andere Mini-PCs mit der selben CPU. Also habe ich einen Mini-PC von BMAX mit dem N5095 bestellt.
Auto-Start bei Stromzufuhr klappt problemlos. Es ist auch ein Platz für ein 2,5-Zoll-Laufwerk vorhanden, aber
es liegt kein passendes Kabel bei. Man bekommt so ein Kabel auch ungefähr nicht. Zudem war die SSD eine sehr kleine
(wenn ich mich recht erinnere M.2 2242), und der Markt an solchen SSDs ist klein und dementsprechend teurer als z.B. M.2
2280. Also war dieses Gerät auch raus.&lt;/p&gt;
&lt;p&gt;Also weiter. Der U59 von Beelink hat auch diese CPU. Auto-Power-On klappt, WOL geht und das Kabel für ein
2,5-Zoll-Laufwerk ist schon verbaut. Super. Ich habe also Proxmox installiert und meine VMs übertragen. Nur um dann
festzustellen, dass VMs zufällig einfach crashen. Die Meldungen im Kernel-Panic der VMs sind leider wenig aussagekräftig,
das Ganze passiert auch unregelmäßig. Teilweise direkt 1-2min nach dem Start, manchmal erst nach 1-2 Tagen. Aber mehrere
VMs sind mehrfach immer wieder gecrasht, sowohl auf der internen als auch der zusätzlich verbauten SSD (die zusätzlich
verbaute ist eine MX500, die bis dahin in meine Heimserver aktiv wawr und unproblematisch ist). Damit war der dritte
Mini-PC auch nicht geeignet.&lt;/p&gt;
&lt;p&gt;Jetzt bin ich an einem Punkt angelangt, wo ich keine Lust mehr habe, Mini-PCs zu bestellen nur um sie dann wieder
zurückzuschicken. Ob Amazon das auf Dauer so cool findet, bezweifle ich auch. Ich habe nun aber einen komplett anderen
Plan entwickelt, um meinen Stromverbrauch zu reduzieren. Mehr dazu dann im nächsten Beitrag - vorab sage ich nur,
dass es kompliziert wird.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Hinweis am Rande: Das Problem mit den crasheden VMs habe ich auch auf dem Minisforum-Gerät feststellen können&amp;hellip;
Vielleicht ein generelles Problem mit der Plattform.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Änderungen am Homelab – Stromkosten.</title><link>https://secretmine.de/blog/2022/02/25/homelab-stromkosten/</link><pubDate>Fri, 25 Feb 2022 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2022/02/25/homelab-stromkosten/</guid><description>&lt;p&gt;Die Strompreise steigen aktuell immer weiter an, was den Betrieb von einem Heimserver zunehmend teurer macht. Deswegen
habe ich mir einen Mini-PC angesehen, um zu schauen, ob dieser geeignet ist, meinen bisherigen Server zumindest für den
24/7-Betrieb abzulösen.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Ursprünglich sollte dieser Post direkt ein Review vom potenziellen neuen Heimserver werden - der Hintergrund-Part
bzw. Überblick über die aktuelle Situation hat aber dermaßen den Rahmen gesprengt, dass ich das jetzt als eigenen Post
vorher veröffentliche.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="der-aktuelle-stand"&gt;Der aktuelle Stand
&lt;/h2&gt;&lt;p&gt;Ich habe auch Raspberry Pis in Betracht gezogen - nachfolgende Auflistung an Hardware und vor allem der laufenden
Dinge sollte aber gut zeigen, warum das nicht so wirklich eine Alternative ist.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2022/02/25/homelab-stromkosten/images/aktuell.jpg"
width="3016"
height="2356"
srcset="https://secretmine.de/blog/2022/02/25/homelab-stromkosten/images/aktuell_hu_6f22aa4f3324a298.jpg 480w, https://secretmine.de/blog/2022/02/25/homelab-stromkosten/images/aktuell_hu_6acb4f9bf1c0e9e4.jpg 1024w"
loading="lazy"
alt="Rack-Server auf Fußboden"
class="gallery-image"
data-flex-grow="128"
data-flex-basis="307px"
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Bisher läuft als Hauptserver folgende Hardware:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU: Intel Xeon E3-1230v3 (4C/8T @ 3,3GHZ)&lt;/li&gt;
&lt;li&gt;Mainboard: Supermicro X10SLL-F (mit IPMI)&lt;/li&gt;
&lt;li&gt;RAM: 32GB DDR3 ECC&lt;/li&gt;
&lt;li&gt;OS: Proxmox&lt;/li&gt;
&lt;li&gt;Datenträger:
&lt;ul&gt;
&lt;li&gt;240GB Sata-SSD (ohne Cache) für Proxmox&lt;/li&gt;
&lt;li&gt;500GB NVMe-SSD für VMs&lt;/li&gt;
&lt;li&gt;500GB Sata-SSD (mit Cache) für VMs&lt;/li&gt;
&lt;li&gt;1TB HDD für Backups&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Normale CPU-Last liegt bei grob 10%, RAM brauche ich meistens um die 20-24GB. An Anwendungen läuft folgendes:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: center"&gt;&lt;strong&gt;Container (LXC)&lt;/strong&gt;&lt;/th&gt;
&lt;th style="text-align: center"&gt;&lt;strong&gt;VMs (KVM)&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;PiHole&lt;/td&gt;
&lt;td style="text-align: center"&gt;Router/VPNs (z.B. zum RZ)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;Reverse Proxy (Nginx Proxy Manager)&lt;/td&gt;
&lt;td style="text-align: center"&gt;Unifi-Controller&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;Smokeping&lt;/td&gt;
&lt;td style="text-align: center"&gt;Mikrotik CHR zum Rumspielen&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;Traceroute-Change-Detection&lt;/td&gt;
&lt;td style="text-align: center"&gt;2x Windows-VM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;Wordpress-Testumgebung&lt;/td&gt;
&lt;td style="text-align: center"&gt;Confluence&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;Container mit random Scripts für Notifications o.ä.&lt;/td&gt;
&lt;td style="text-align: center"&gt;Jira&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;Mosquitto für MQTT&lt;/td&gt;
&lt;td style="text-align: center"&gt;Bitbucket&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;Paperless-NG&lt;/td&gt;
&lt;td style="text-align: center"&gt;Jenkins&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;Bitwarden-RS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;Backup-VM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;Homeassistant&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Einige der VMs (z.B. den Unifi-Controller) kann man sicherlich noch auf Container umstellen und damit schlanker
bekommen. Auch der komplette Atlassian-Stack (Jira, Confluence, Bitbucket) hat nichts, was die Verwendung von VMs
benötigt. Damit dürfte vor allem der RAM-Verbrauch auch noch mal um ein paar GB sinken - das ist aber eher eine
Sache für die nächsten Monate und nicht für Jetzt. Eilt nicht.&lt;/p&gt;
&lt;p&gt;Die meisten der VMs bieten also irgendwelche Services im Heimnetz (oder auch extern) an. Und auf diese Services
verzichten möchte ich auch nicht.&lt;/p&gt;
&lt;figure class="wp-block-image size-full is-resized"&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2022/02/25/homelab-stromkosten/images/grafik.png"
width="700"
height="293"
srcset="https://secretmine.de/blog/2022/02/25/homelab-stromkosten/images/grafik_hu_e42d84756d7f3d95.png 480w, https://secretmine.de/blog/2022/02/25/homelab-stromkosten/images/grafik_hu_cf755ffd390409f4.png 1024w"
loading="lazy"
alt="Proxmox-Dashboard"
class="gallery-image"
data-flex-grow="238"
data-flex-basis="573px"
&gt;
&lt;img src="https://secretmine.de/blog/2022/02/25/homelab-stromkosten/images/grafik-1.png"
width="588"
height="130"
srcset="https://secretmine.de/blog/2022/02/25/homelab-stromkosten/images/grafik-1_hu_beed70ebf2debc7f.png 480w, https://secretmine.de/blog/2022/02/25/homelab-stromkosten/images/grafik-1_hu_c111b04ca70635ba.png 1024w"
loading="lazy"
alt="Laufende VMs und Container"
class="gallery-image"
data-flex-grow="452"
data-flex-basis="1085px"
&gt;&lt;/p&gt;
&lt;h2 id="wie-also-weniger-strom-verbrauchen"&gt;Wie also weniger Strom verbrauchen?
&lt;/h2&gt;&lt;p&gt;Der Server braucht aktuell im Idle um die 40-45 Watt, unter Last 60-80 Watt. Die meiste Zeit läuft das Teil eher im
Idle, ich rechne also mit im Schnitt 45-50 Watt. Das sind bei den aktuellen Strompreisen also grob 150€ pro Jahr -
und mir eindeutig zu viel Geld dafür, dass der die meiste Zeit kaum was zu tun hat. Un die Umwelt hat auch noch was
davon, wenn ich weniger Strom verbrauche.&lt;/p&gt;
&lt;p&gt;Dadurch, dass ich für ein paar Programme VMs mit Windows benötige, sind Raspberry Pis leider raus, der RAM ist da auch
ein Argument. Ich weiß auch nicht, wie gut Jira oder Confluence auf einem Pi laufen würde - durch den hohen
RAM-Verbrauch würde ich auch mehrere Pis benötigen. Und bei den aktuellen Preisen von 100€ und mehr für die Version mit
8GB wird mir das einfach zu teuer. Ein kleiner selbst gebauter Rechner würde zwar weniger verbrauchen, aber
wahrscheinlich immernoch 20-30 Watt. Und die Boards mit kleinen Celerons/Pentiums sind teuer. Beim bisherigen Server die
CPU mit was kleinerem zu ersetzen ginge zwar, aber würde vermutlich nur wenige Watt sparen. Mainboards mit IPMI sind vom
Stromverbrauch her nicht die besten.&lt;/p&gt;
&lt;p&gt;Bleiben eigentlich nur noch Mini-PCs. Und davon gibt es viele, wie ich gemerkt habe. Kriterien, die mir wichtig waren:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;min. 4 CPU-Kerne&lt;/li&gt;
&lt;li&gt;gesockelter RAM, min 16GB möglich&lt;/li&gt;
&lt;li&gt;min. zwei Datenträger (am besten 1x M.2 und 1x 2,5-Zoll Sata)&lt;/li&gt;
&lt;li&gt;Gigabit-LAN&lt;/li&gt;
&lt;li&gt;geringer Stromverbrauch&lt;/li&gt;
&lt;li&gt;max 300-350€&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Klar, ein IPMI ist cool. Aber beim bisherigen Server bin ich da dermaßen selten drin, dass ich da auch drauf verzichten
kann. Formfaktor ist mir auch nicht so wichtig.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2022/02/25/homelab-stromkosten/images/um350.jpg"
width="2869"
height="3289"
srcset="https://secretmine.de/blog/2022/02/25/homelab-stromkosten/images/um350_hu_86dcfa5cc5f91096.jpg 480w, https://secretmine.de/blog/2022/02/25/homelab-stromkosten/images/um350_hu_24fcc0566a9596e4.jpg 1024w"
loading="lazy"
alt="MinisForum UM350"
class="gallery-image"
data-flex-grow="87"
data-flex-basis="209px"
&gt;&lt;/p&gt;
&lt;p&gt;Ich bin bei der Suche dann schnell auf den Hersteller MinisForum gestoßen. Ich hatte an anderer Stelle mit dem UM350 (
Ryzen 5 3550H, 16GB RAM und 256GB SSD) von denen zu tun und war zufrieden mit der Hardware. Der LAN-Port mit 2,5GBit/s
ist zwar nett, aber fast 450€ rentieren sich dann doch nicht in akzeptabler Zeit.&lt;/p&gt;
&lt;p&gt;Dann habe ich dieses Gerät hier, den JB95 (Intel Celeron N5095, 8GB RAM, 256GB SSD) gefunden. Preislich unter 300€ und
sollte alle meine Anforderungen erfüllen. Klar, der Celeron wird deutlich schwächer sein als der Xeon, den ich gerade
habe - aber die normale Last sollte der Rechner schaffen. Und ich werde den bisherigen Server ja nicht wegwerfen;
der wird, wenn ich kurzzeitig mehr Power brauche, weiterhin bereitstehen.&lt;/p&gt;
&lt;p&gt;Der Mini-PC steht gerade vor mir und läuft auch schon mit Proxmox. Ich habe noch nicht alles ausprobiert, was ich
ausprobieren möchte, aber es sieht soweit ziemlich gut aus. Dementsprechend wird es in den nächsten Tagen einen
ausführlicheren Post zu dem JB95 geben.&lt;/p&gt;</description></item><item><title>TeamSpeak3-Server: Wechsel des Rechenzentrums (zu OVH)</title><link>https://secretmine.de/blog/2022/2022-11-15-teamspeak3-server-wechsel-zu-ovh/</link><pubDate>Wed, 23 Feb 2022 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2022/2022-11-15-teamspeak3-server-wechsel-zu-ovh/</guid><description>&lt;p&gt;Nachdem der TS nun einige Monate bei Skylink und auch einige Monate bei Contabo lief, habe ich mich dazu entschlossen,
diesen testhalber für bessere Pings bei OVH in der Nähe von Frankfurt unterzubringen. Das hat für euch primär die
Auswirkung, dass sich die Pings verbessern und konstanter sein müssten.&lt;/p&gt;
&lt;p&gt;Dank eines guten Angebots (12€ für das erste Jahr) ist dieses Experiment für mich auch nicht weiter teuer. Nächstes Jahr
versuche ich dann, daran zu denken, meine Erfahrungen zu teilen.&lt;/p&gt;</description></item><item><title>TeamSpeak3-Server: Wechsel des Rechenzentrums (zu Skylink)</title><link>https://secretmine.de/blog/2022/02/23/teamspeak3-server-wechsel-des-rechenzentrums/</link><pubDate>Wed, 23 Feb 2022 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2022/02/23/teamspeak3-server-wechsel-des-rechenzentrums/</guid><description>&lt;p&gt;Der TS3-Server war bislang bei Hetzner in Falkenstein untergebracht, mit einem temporären &amp;ldquo;Zwischenstopp&amp;rdquo;
in Frankfurt. Da ich allerdings in den Niederlanden, genauer gesagt im Skylink-Rechenzentrum IPs über habe, ist der TS
nun vorerst dort. Der Traffic läuft hierbei über Skylink selbst.&lt;/p&gt;
&lt;p&gt;Ich werde die Latenzen und möglichen Paketverlust in den nächsten Tagen beobachten. Sollte sich herausstellen, dass der
Betrieb des TS3-Servers dort nicht optimal möglich ist, werde ich ein anderes Rechenzentrum aussuchen.&lt;/p&gt;
&lt;p&gt;Ein ausführlicherer Bericht zum Skylink-Rechenzentrum ist generell in Planung, wird aber noch dauern. Ich habe dort
seit nun über 2 Jahren eigene Hardware stehen.&lt;/p&gt;</description></item><item><title>Review: MikroTik mAP lite – Review (und VPN-Performance)</title><link>https://secretmine.de/blog/2021/10/13/mikrotik-map-lite-performance/</link><pubDate>Wed, 13 Oct 2021 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2021/10/13/mikrotik-map-lite-performance/</guid><description>&lt;p&gt;Ich habe mir kürzlich einen MikroTik mAP lite als Netzwerkwerkzeug für Unterwegs zugelegt. Mein Hauptverwendungszweck
ist dabei, den mAP in ein (öffentliches) WLAN einzuloggen und von dort ein eigenes Netz aufzuspannen, um z.B. direkten
Zugang zu meinem Heimnetz via VPN zu haben. Da man nicht so viel zu der Performance von dem Gerät findet - insbesondere
was VPNs angeht - möchte ich hier ein paar Messwerte veröffentlichen. Alle Tests wurden mit RouterOS v7.1rc4 gemacht.
Ich verwende ROS 7, da ich Wireguard nutzen möchte.&lt;/p&gt;
&lt;p&gt;Was mir von Anfang an gefallen hat ist der sehr kleine Formfaktor. Die Rückseite enthält auch einen Magneten, was die
spontane Montage an einem passenden Metallgegenstand doch sehr simpel macht. Stromversorgung ist via Micro-USB oder auch
per passivem PoE möglich, der Stromverbrauch lag bei der Versorgung via USB bei etwa 1 Watt beim Speedtest. Damit ist
auch der Betrieb via Powerbank über einen langen Zeitraum möglich. &lt;em&gt;(hmm, in Verbindung mit einem Raspberry bekommt man
damit vielleicht sogar ein Rucksack-Taugliches Homelab hin)&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="access-point"&gt;Access-Point
&lt;/h3&gt;&lt;p&gt;Als simplen Access-Point (mit NAT) - also Uplink via Ethernet und Client via WLAN - erreiche ich etwa 43MBit/s. Schalte
ich das VPN dazu (damit wird der gesamte Traffic über Wireguard gesendet), komme ich auf knapp 45MBit/s bei einer
CPU-Auslastung von 90%.&lt;/p&gt;
&lt;p&gt;Wie hier der Performance-Vorteil vom VPN zustande kommt, kann ich mir nicht ganz erklären. Meine Vermutung ist, dass
ohne VPN das Peering der Telekom die Geschwindigkeit einschränkt und das bei aktivem VPN (Server steht bei Skylink, dazu
folgt bei Gelegenheit auch noch mal ein Blog-Post) die Bandbreite besser ausgenutzt werden kann - aber ads ist eben auch
nur eine grobe Vermutung.&lt;/p&gt;
&lt;p&gt;Als Access Point für Internetzugang ist der mAP also schonmal brauchbar. Klar, jeder ordentliche Access Point übertrifft
diese Werte, aber für den Anwendungsbereich von diesem Router ist das mehr als prima.&lt;/p&gt;
&lt;h3 id="wlan-client"&gt;WLAN-Client
&lt;/h3&gt;&lt;p&gt;Als WLAN-Client - also Uplink via WLAN und den Laptop via Ethernet angebunden - liegen die Ergebnisse im Bereich von
50-55MBit/s. Diese Werte sind sehr ordentlich, immerhin kann der mAP nur 2,4GHz-WLAN und kein 5GHz. Es ist möglich, dass
hier noch mehr geht (Tests laufen an einem Internetanschluss mit normalerweise um die 60MBit/s im Download), aber ich
bin soweit mit den Werten zufrieden. Bei aktiven VPN sinkt der Wert auf 35 MBit/s bei 60-80% CPU-Last.&lt;/p&gt;
&lt;h3 id="wlan-client-plus-access-point"&gt;WLAN-Client plus Access-Point
&lt;/h3&gt;&lt;p&gt;Kommen wir nun zu dem Szenario, für das ich diesen Router angeschafft habe. Der Router ist nun über WLAN angebunden, der
Client ebenfalls. Das bedeutet natürlich Höchstlast für den WiFi-Chip (QCA9533).&lt;/p&gt;
&lt;p&gt;Ohne VPN gehen hier etwa 20MBit/s, also etwas weniger als die Hälfte vom AP- bzw. WLAN-Client. Das habe ich auch so
erwartet. Mit VPN erreiche ich Werte von etwa 16MBit/s.&lt;/p&gt;
&lt;p&gt;Die Werte als WLAN-Client mit aktivem AP sind natürlich nicht sonderlich hoch. Für Unterwegs (z.B. in Verbindung mit
einem LTE-Hotspot) ist die Bandbreite aber mehr als ausreichend. Selbst Streaming in FullHD geht bei diesen Bandbreiten
ohne nennenswerte Ladezeiten vonstatten.&lt;/p&gt;
&lt;h3 id="einschränkungen"&gt;Einschränkungen
&lt;/h3&gt;&lt;p&gt;Was allerdings etwas nervt (oder ich habe die Einstellung noch nicht gefunden) ist, dass man den WiFi-Chip manuell auf
die korrekte Frequenz des Netzwerks einstellen muss, zu dem man sich verbinden möchte. Eine Automatik hierfür habe ich
noch nicht gefunden. Über die Connect List im Wireless-Bereich kann man zwar die Zugangsdaten für mehrere Netzwerke
hinterlegen, mit denen sich der Router verbinden soll, die Einstellung der Frequenz bleibt manuell. Ich kann mit dieser
kleinen Einschränkung allerdings gut leben.&lt;/p&gt;
&lt;h2 id="fazit"&gt;Fazit
&lt;/h2&gt;&lt;p&gt;Der Router hat bei mir permanent eine Wireguard-Verbindung zu einem Server im Rechenzentrum. Ohne das Routen des
gesamten Traffics über das VPN werden via BGP einige interne Netzwerke (z.B. mein Heimnetzwerk) ausgetauscht, damit ich
mit allen Geräten ohne weitere Konfiguration oder VPN-Clients mich zu meinem Heimserver verbinden kann. Das wird auch
der Modus sein, in dem ich mich meistens bewegen werde. Der Zugang zum Internet läuft dabei ohne VPN und entsprechend
mit etwa 20MBit/s. Sofern ich mich in einem nicht vertrauenswürdigen WLAN befinde, kann ich mit dem Kopf am Gerät und
einem entsprechend hinterlegten Skript alles über das VPN schicken und muss mir über die Sicherheit des WLANs keine
Gedanken mehr machen. Wenn doch einmal eine LAN-Verbindung verfügbar ist, ist die auch schnell genutzt - bei meiner
Konfiguration wird sofort auf den LAN-Uplink gewechselt, sobald dieser verbunden ist und via DHCP eine Adresse und
Gateway erhalten hat. Sollte ich als Client eine LAN-Verbindung benötigen, ist die Konfiguration auch schnell angepasst.&lt;/p&gt;
&lt;p&gt;Für 25€ kann man eigentlich nicht so viel falsch machen. RouterOS ist, wenn man es nicht gewohnt ist, sehr
gewöhnungsbedürftig und eher anwenderunfreundlich. Wer sich darin zurechtfindet, bekommt allerdings ein sehr mächtiges
System in die Hand gelegt, mit dem sich auch kompliziertere Szenarien lösen lassen. Der kleine Formfaktor sorgt dafür,
dass ich den mAP einfach immer im Rucksack haben werde - man weiß ja nie, wann man sowas mal gerade brauchen kann.&lt;/p&gt;</description></item><item><title>Zusammenführen des SSG-TS3-Servers und des SecretMine-Servers</title><link>https://secretmine.de/blog/2021/03/08/zusammenfuehren-des-ssg-ts3-servers-und-des-secretmine-servers/</link><pubDate>Mon, 08 Mar 2021 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2021/03/08/zusammenfuehren-des-ssg-ts3-servers-und-des-secretmine-servers/</guid><description>&lt;p&gt;&lt;strong&gt;Vorweg&lt;/strong&gt;: Das ist für Nutzer des normalen SecretMine-TS3-Servers komplett irrelevant.&lt;/p&gt;
&lt;p&gt;Den SSG-TS gibt es nun schon eine ganze Weile: Wenn ich es richtig sehe sind es ziemlich exakt zwei Jahre. Hintergrund
des Umstiegs war ja, dass Takus Rumpelkammer eines Tages offline war und ein Ersatz hermusste. Der SecretMine-TS war zu
dem Zeitpunkt wegen des gesamten Aufbaus dafür nicht wirklich geeignet, daher habe ich das in einen anderen TS3-Server
gesplittet.&lt;/p&gt;
&lt;p&gt;Mittlerweile haben sich die beiden Server aber dermaßen weit aneinander angenähert, dass ich beschlossen habe, aus zwei
eins zu machen. Der SSG-TS wird damit in den SecretMine-TS überführt, die Channelstruktur ist auch schon grob an das
gewohnte Layout angepasst. Klar, es sind ein paar Channel mehr, aber das sollte ja kein Thema sein. Die User, die auf
dem SSG-TS erweiterte Rechte haben, werden diese natürlich auch auf dem SecretMine-TS wieder bekommen. Der
SecretMine-TS wird damit auch allgemein wieder aktiver, es ist z.B. geplant mehr Channel a la &amp;ldquo;Ich suche Spieler
für Spiel xy&amp;rdquo; einzurichten.&lt;/p&gt;
&lt;p&gt;Für mich bedeutet es, dass ich auf dem eigentlichen Haupt-TS (der immerhin seit etwa 2013 existiert) wieder deutlich
aktiver sein werde und potenziell auch wieder mehr &amp;ldquo;Innovationen&amp;rdquo; bringe. Was das genau sein wird, wird
sich zeigen. Zumindest ein Halb-Öffentlicher Minecraft-Server wird bald wieder da sein!&lt;/p&gt;</description></item><item><title>Musik: Projekt 102</title><link>https://secretmine.de/blog/2020/10/08/musik-projekt-102/</link><pubDate>Thu, 08 Oct 2020 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2020/10/08/musik-projekt-102/</guid><description>
&lt;figure&gt;
&lt;audio controls
class="audio_controls "
preload="metadata"
style="
"
&gt;
&lt;source src="102_2.mp3"
&gt;
Your browser does not support the audio element
&lt;/audio&gt;
&lt;figcaption&gt;
&lt;p&gt;
102_2
&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Ich experimentiere mal ein bisschen mit OTT-Pianos. Das Ergebnis fängt schonmal ganz gut an, braucht aber noch viel Arbeit.&lt;/p&gt;</description></item><item><title>Musik: Projekt 101</title><link>https://secretmine.de/blog/2020/10/06/musik-projekt-101/</link><pubDate>Tue, 06 Oct 2020 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2020/10/06/musik-projekt-101/</guid><description>
&lt;figure&gt;
&lt;audio controls
class="audio_controls "
preload="metadata"
style="
"
&gt;
&lt;source src="101_10.mp3"
&gt;
Your browser does not support the audio element
&lt;/audio&gt;
&lt;figcaption&gt;
&lt;p&gt;
101_10
&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Mir gefällt insbesondere das Intro sehr gut. Am Zwischenpart muss ich noch mal arbeiten, ansonsten kann man das Teil
schon als halbwegs fertig bezeichnen.&lt;/p&gt;</description></item><item><title>Änderungen am TS</title><link>https://secretmine.de/blog/2020/10/01/aenderungen-am-ts/</link><pubDate>Thu, 01 Oct 2020 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2020/10/01/aenderungen-am-ts/</guid><description>&lt;p&gt;Lange ist beim TS3-Server nichts passiert - es wird mal wieder Zeit für Änderungen.&lt;/p&gt;
&lt;h2 id="channel-cleanup"&gt;Channel-Cleanup
&lt;/h2&gt;&lt;p&gt;Ich habe bei den Channeln aufgeräumt. Gelöscht wurden überflüssige Public-Channel, einige Member-Channel sowie alte
private Channel&lt;/p&gt;
&lt;h2 id="neues-management-system"&gt;Neues Management-System
&lt;/h2&gt;&lt;p&gt;Zur Zeit ist ein neues Management-System für den TS3-Server in Entwicklung. Dieses System verwaltet die privaten
Channel, Statistiken, AFK-Verschieben und eine ganze Menge mehr.&lt;/p&gt;
&lt;p&gt;Vorteile für euch als User:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Private Channel wieder erstellbar (&lt;a class="link" href="https://interface.secretmine.de/?page=UserChannelCreate" target="_blank" rel="noopener"
&gt;hier&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vor allem das System der privaten Channel habe ich deutlich überarbeitet. Grundsätzlich bleibt alles beim alten - es
gibt Channel mit Berechtigungsschlüsseln und Channel mit Passwort. Im Vergleich zum alten System ist das Erstellen
deutlich simpler geworden. Du bist regelmäßig hier und hast noch keinen eigenen permanenten Channel? Dann &lt;a class="link" href="https://interface.secretmine.de/?page=UserChannelCreate" target="_blank" rel="noopener"
&gt;mach mal&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Teammäßig möchte ich zukünftig wieder mehr Moderatoren im Einsatz haben - was genau ich da mache weiß ich aber noch
nicht. Ich muss erstmal schauen, wer aktuell so viel auf dem TS aktiv ist.&lt;/p&gt;</description></item><item><title>Review: iodd Mini</title><link>https://secretmine.de/blog/2020/08/19/iodd-mini/</link><pubDate>Wed, 19 Aug 2020 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2020/08/19/iodd-mini/</guid><description>&lt;p&gt;Ich habe kürzlich meine Werkzeugsammlung um eine iodd Mini SSD ergänzt. Da es zu diesem ziemlich einzigartigen Gerät im
Internet bislang wenige Reviews/Tests gibt, möchte ich hier einmal meine Erfahrungen mitteilen.&lt;/p&gt;
&lt;h2 id="was-macht-diese-ssd-so-besonders"&gt;Was macht diese SSD so besonders?
&lt;/h2&gt;&lt;p&gt;140€ (aktueller Preis bei Amazon) für eine 240GB USB-SSD klingen erst einmal teuer, vor allem wenn andere, hochwertige
USB-SSDs nur etwa die Hälfte kosten. Das, was diese SSD besonders macht, sind einige Features der Firmware, dazu gehört
das Bereitstellen von ISOs als virtuelles DVD-Laufwerk oder die Bereitstellung von VHDs als virtuelle Festplatten. Und
das ohne jegliche Software auf dem Host-Computer.&lt;/p&gt;
&lt;h4 id="und-wofür-das-ganze"&gt;Und wofür das ganze?
&lt;/h4&gt;&lt;p&gt;Einer der nützlichsten Einsatzzwecke ist das Booten von Rechnern mit den ISOs vom iodd. Einfach die ISO am Gerät
auswählen und den Rechner booten lassen. Das ist erheblich bequemer, als ständig neue Boot-Stickts zu erstellen, um
Rechner davon booten zu lassen.&lt;/p&gt;
&lt;p&gt;Ich selbst nutze es z.B. zum Debuggen von Problemen mit Computern. Ich habe eine Handvoll ISOs (wie z.B. Memtest), mit
denen ich den Rechner starten kann und kann darüber dann nach und nach die Hardware checken. Oder auch fehlerhafte
Windows-Dateien mit dem Windows-Installer beheben, Daten mit Linux retten, Festplatten mit Gparted neu partitionieren
oder mit DBAN gleich alles löschen.&lt;/p&gt;
&lt;p&gt;Die SSD bewegt sich in einer Nische, das sollte klar sein. Die geringe Auflage erklärt dann auch den vergleichsweise
hohen Preis von aktuell 140€. Es gibt vom selben Hersteller auch noch zwei Gehäuse für eigene 2,5-Zoll-Laufwerke, die
dann entsprechend günstiger sind. Damit kann man für 63€ eine sehr einfache Variante oder für 85€ eine modernere und
bessere Variante bekommen - zu dem Preis kommt natürlich noch eine eigene SSD oder Festplatte zum Einbau dazu. Zusammen
mit einer normalen 500GB-SSD landet man mit der moderneren Variante bei grob 130€. Also 10€ weniger und doppelte
Kapazität, dafür ist das Gerät größer und die Bedienung nicht ganz so angenehm.&lt;/p&gt;
&lt;h4 id="fazit"&gt;Fazit
&lt;/h4&gt;&lt;p&gt;Mich überzeugt insbesondere das Feature des virtuellen CD-Laufwerks. Das ist schließlich auch das große
Alleinstellungsmerkmal dieser USB-SSD. Die Bedienung geht recht gut von der Hand, größere Probleme sind mir nicht
aufgefallen. Nur manchmal hat das Auswählen einer ISO und Speichern für den nächsten Neustart nicht ganz geklappt, das
ist aber tatsächlich halb so wild und kann auch schlicht ein Bedienungsfehler meinerseits sein.&lt;/p&gt;
&lt;p&gt;Mir ist allerdings der Preis eigentlich zu hoch. Immerhin bekommt man für das selbe Geld fast 30 normale USB-Sticks und
kann damit auch auf diese Weise eine große Sammlung an Boot-Medien unterwegs verfügbar haben. Auch stört mich der
USB-Anschluss. Vor allem bei einem Gerät, was viel an- und abgesteckt wird, ist Micro-USB nicht sonderlich gut
geeignet, insbesondere da USB-C für andere USB-SSDs schon seit langem etabliert ist. Es ist daher vermutlich ratsam,
den Micro-USB-Stecker im Gerät zu lassen - aber damit passt es natürlich nicht mehr in die mitgelieferten Hüllen.&lt;/p&gt;
&lt;p&gt;Den Kompromiss mit einem Gehäuse dieses Herstellers und z.B. einer alten SSD oder HDD, die man noch herumliegen hat
sehr interessant - damit kann man die Kosten auch sicherlich um 20-40% im Vergleich zu einem IODD Mini senken.&lt;/p&gt;</description></item><item><title>Aus dem Leben eines Hosters Part 1 – Was bisher geschah</title><link>https://secretmine.de/blog/2020/07/16/aus-dem-leben-eines-hosters-was-bisher-geschah/</link><pubDate>Thu, 16 Jul 2020 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2020/07/16/aus-dem-leben-eines-hosters-was-bisher-geschah/</guid><description>&lt;p&gt;Bevor ich mit der eigentlichen Geschichte des Hostings bei mir anfange, muss ich ein wenig auf die Jahre davor eingehen.&lt;/p&gt;
&lt;h1 id="die-anfänge"&gt;Die Anfänge
&lt;/h1&gt;&lt;p&gt;Ich habe schon seit klein auf ein großes Interesse an Technik, insbesondere an Computern. Das führte irgendwann dazu,
dass ich auf einem alten (wirklich alten) Laptop mit verschiedenen Linux-Distributionen herumgespielt habe, angefangen
mit Fedora. Ich war von Anfang an vor allem von der Paketverwaltung fasziniert - insbesondere, dass sich alle
installierten Programme mit einem Klick auf die neuste Version aktualisieren lassen. Unter Windows war zu dem Zeitpunkt
noch der Standard, dass man manuell die neue Programmversion heruntergeladen und installiert hat. Neben dem Nutzen von
Linux auf dem Laptop habe ich auch in Virtualbox mit verschiedenen Betriebssystemen gearbeitet.&lt;/p&gt;
&lt;h1 id="virtualisierungcontainer"&gt;Virtualisierung/Container
&lt;/h1&gt;&lt;p&gt;Dabei bin ich irgendwann auch auf OpenVZ gestoßen. Wer es nicht kennt: Das ist eine Software, um Linux-Container zu
erstellen und zu verwalten. Es gab dazu auch ein Web-Panel - ich habe beides unter Debian 5 installiert bekommen.
Vorher hatte ich auch vmWare ESXi auf dem Laptop installiert - bzw. es versucht. Der Installer brach bei jedem Versuch
ungefähr sofort ab, da die CPU keine Hardwarevirtualisierung konnte. Daher Container.&lt;/p&gt;
&lt;p&gt;Vielleicht kennt es der eine oder andere sogar aus eigener Erfahrung. In kurz: Es war nicht besonders schön, aber
kostenlos und hat funktioniert. Nicht immer perfekt, aber im Großen und Ganzen ganz gut. Ich konnte jetzt also jederzeit
neue kleine Linux-Server erzeugen und ins Heimnetz hängen - prima zum Lernen. Ich habe dann auch mit Konfigurationen von
apache, nginx und weiterer Software herumgespielt.&lt;/p&gt;
&lt;h1 id="gameserver-und-co"&gt;Gameserver und co
&lt;/h1&gt;&lt;p&gt;Währenddessen hatte ich bereits mehrfach für mich und Freunde sowohl Minecraft- als auch TS3-Server über Nitrado
angemietet - mit geteilten Kosten. Wer Nitrado kennt wird aber wissen, dass das durchaus recht kostspielig wird, wenn
man nicht die kleinsten Pakete nimmt. Am Ende hatte ich dort einen MC-Server, Webspace, meine erste Domain
(zufälligerweise SecretMine.de - daher auch der Minecraft-nahe Name) und einen TS3-Server. Wer hier im Blog etwas
weiter herumstochert wird feststellen, dass die Posts nur bis 2014 zurückgehen - ich hatte irgendwann die Website
mal komplett neu aufgesetzt (vorher Joomla, dann der Switch zu WordPress) und dabei die älteren Beiträge nicht mit
übernommen.&lt;/p&gt;
&lt;h1 id="der-erste-vserver"&gt;Der erste vServer
&lt;/h1&gt;&lt;p&gt;Irgendwann kam dann der Wunsch nach einem eigenen kompletten Server im Internet (auch bekannt als vServer). Der Plan
war auch, alles, was ich bei Nitrado hatte, auf einen Server zu packen, um die Kosten zu senken. Ich hab mich dann im
Internet umgesehen und geschaut, was sowas etwa kostet. Ich habe diverse Anbieter durchprobiert und bin am Ende bei
einem recht kleinen, mittelmäßig seriösen Anbieter gelandet. Der Test-Server war gut, die Preise in Ordnung - also los.&lt;/p&gt;
&lt;p&gt;Das lief dann soweit auch alles gut. Der TS lief prima und wurde immer größer, MC-Projekte mit Freunden fanden alle
paar Monate statt und meine Website lief auch. Ich habe dann auch angefangen, dort einen eigenen Mailserver (anfangs
mit Axigen) zu betreiben, es kamen auch bereits 1-2 weitere Domains dazu.&lt;/p&gt;
&lt;p&gt;Der vServer ist mit der Zeit immer weiter gewachsen, damit mehr Zeug darauf passte. Auch habe ich irgendwann eine
kleine Multicraft-Lizenz gekauft und dann auch Freunden Server bereitgestellt. Irgendwann hatte ich mehr Kapazität als
ich selber brauchte - also habe ich auf bzw. über den TS einen MC-Server verlost. Das war um 2014/2015 und letztendlich
die allerersten Anfänge, die dann zu MC4U führen.&lt;/p&gt;</description></item><item><title>Musik: Projekt 99</title><link>https://secretmine.de/blog/2020/07/16/musik-projekt-99/</link><pubDate>Thu, 16 Jul 2020 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2020/07/16/musik-projekt-99/</guid><description>
&lt;figure&gt;
&lt;audio controls
class="audio_controls "
preload="metadata"
style="
"
&gt;
&lt;source src="99_6.mp3"
&gt;
Your browser does not support the audio element
&lt;/audio&gt;
&lt;figcaption&gt;
&lt;p&gt;
99_6
&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Der Stil ist nicht ganz definierbar&amp;hellip; geht grob in die DnB-Richtung, aber auch nicht richtig. Vieles an Instrumenten
und Presets ist aus anderen Projekten von mir genommen, insgesamt bin ich schon recht zufrieden mit dem Ergebnis.&lt;/p&gt;</description></item><item><title>Aus dem Leben eines Hosters – Eine Post-Serie?</title><link>https://secretmine.de/blog/2020/07/14/aus-dem-leben-eines-hosters-anfang/</link><pubDate>Tue, 14 Jul 2020 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2020/07/14/aus-dem-leben-eines-hosters-anfang/</guid><description>&lt;p&gt;Ich bin nun seit etwa 2014 im Hosting-Bereich tätig und habe über die Jahre einige interessante Stories und auch anderes
gesammelt, was ich gerne mit &amp;ldquo;der Welt&amp;rdquo; - wenn man es so nennen kann - teilen möchte. Das wird
hoffentlich eine recht regelmäßige Post-Reihe, auch zu meiner Geschichte und was über die Jahre so an Wechseln etc. aus
unterschiedlichen Gründen passiert ist. Stay tuned!&lt;/p&gt;</description></item><item><title>Musik: Projekt 92</title><link>https://secretmine.de/blog/2020/03/11/musik-projekt-92/</link><pubDate>Wed, 11 Mar 2020 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2020/03/11/musik-projekt-92/</guid><description>
&lt;figure&gt;
&lt;audio controls
class="audio_controls "
preload="metadata"
style="
"
&gt;
&lt;source src="92_2.mp3"
&gt;
Your browser does not support the audio element
&lt;/audio&gt;
&lt;figcaption&gt;
&lt;p&gt;
92_2
&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Potenziell geht dieses Projekt in eine ähnliche Richtung wie Dawn, allerdings mit einem komplett anderen Intro. Wie
es hiermit weitergeht weiß ich noch nicht, das war ein spontaner Gedanke von gestern Abend.&lt;/p&gt;</description></item><item><title>Musik: Projekt 79 – Update</title><link>https://secretmine.de/blog/2020/01/13/projekt-79-update/</link><pubDate>Mon, 13 Jan 2020 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2020/01/13/projekt-79-update/</guid><description>
&lt;figure&gt;
&lt;audio controls
class="audio_controls "
preload="metadata"
style="
"
&gt;
&lt;source src="79_9.mp3"
&gt;
Your browser does not support the audio element
&lt;/audio&gt;
&lt;figcaption&gt;
&lt;p&gt;
79_9
&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Ich habe die Tonart noch einmal geändert, so wirkt es insgesamt stimmiger. Auch sind bei den Melodien mehr Variationen
drin und die Strings richtung Ende deutlicher.&lt;/p&gt;</description></item><item><title>Musik: Projekt 78 – Update</title><link>https://secretmine.de/blog/2019/11/27/musik-projekt-78-update/</link><pubDate>Wed, 27 Nov 2019 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2019/11/27/musik-projekt-78-update/</guid><description>
&lt;figure&gt;
&lt;audio controls
class="audio_controls "
preload="metadata"
style="
"
&gt;
&lt;source src="78_1.mp3"
&gt;
Your browser does not support the audio element
&lt;/audio&gt;
&lt;figcaption&gt;
&lt;p&gt;
78_1
&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Neu hinzugekommen bei dem Tropical-Projekt ist der Anfang. Vielleicht tausche ich das Klavier noch durch etwas anderes aus, aber die Grundidee gefällt mir. Vielleicht auch in Verbindung mit einem stehenden, konstanten Bass-Ton darunter?&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://secretmine.de/blog/2019/11/24/musik-projekt-78/" &gt;Originalversion&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Musik: Projekt 78</title><link>https://secretmine.de/blog/2019/11/24/musik-projekt-78/</link><pubDate>Sun, 24 Nov 2019 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2019/11/24/musik-projekt-78/</guid><description>
&lt;figure&gt;
&lt;audio controls
class="audio_controls "
preload="metadata"
style="
"
&gt;
&lt;source src="78.mp3"
&gt;
Your browser does not support the audio element
&lt;/audio&gt;
&lt;figcaption&gt;
&lt;p&gt;
78
&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Dass ich dieses Projekt angefangen habe, ist schon etwas her. Daher kommt die niedrigere Nummer.&lt;/p&gt;
&lt;p&gt;Es ist ein erster Versuch im Bereich Tropical. Basierend auf einigen Drum-Samples, die ich so gefunden habe, habe ich
mir ein kurzes Stück zusammengebaut. Ich habe bislang noch keine echte Idee, wie ich das weiterführen soll - auch die
Melodie im Hauptteil ist bislang noch etwas stumpf.&lt;/p&gt;</description></item><item><title>Musik: Projekt 85 – Update</title><link>https://secretmine.de/blog/2019/11/23/musik-projekt-85-update/</link><pubDate>Sat, 23 Nov 2019 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2019/11/23/musik-projekt-85-update/</guid><description>
&lt;figure&gt;
&lt;audio controls
class="audio_controls "
preload="metadata"
style="
"
&gt;
&lt;source src="85_4.mp3"
&gt;
Your browser does not support the audio element
&lt;/audio&gt;
&lt;figcaption&gt;
&lt;p&gt;
85_4
&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Das ist deutlich verfeinert im Vergleich zur ersten Version. Die Unterschiede liegen meistens im Detail (z.B. das Piano
im hintersten Teil), auch am Mix ist einiges passiert. Die einzelnen Bestandteile sind jetzt insgesamt präsenter und
besser aufeinander abgestimmt.&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://secretmine.de/blog/2019/09/26/musik-projekt-85/" &gt;Originalversion&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Musik: Projekt 89</title><link>https://secretmine.de/blog/2019/11/12/musik-projekt-89/</link><pubDate>Tue, 12 Nov 2019 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2019/11/12/musik-projekt-89/</guid><description>
&lt;figure&gt;
&lt;audio controls
class="audio_controls "
preload="metadata"
style="
"
&gt;
&lt;source src="89_2.mp3"
&gt;
Your browser does not support the audio element
&lt;/audio&gt;
&lt;figcaption&gt;
&lt;p&gt;
89_2
&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Mal wieder etwas typischer. Schönes Synthie-Riff, was dann weiter ausgebaut wird. Ich habe eben festgestellt, dass es
das selbe Riff ist wie &lt;a class="link" href="https://secretmine.de/blog/2019/09/15/musik-projekt-75-update/" &gt;Projekt 75&lt;/a&gt; hat&amp;hellip; Upsi. Und es hat sich bis zu
einem gewissen Punkt sogar sehr ähnlich entwickelt.&lt;/p&gt;</description></item><item><title>Musik: Projekt 79 – Update 2</title><link>https://secretmine.de/blog/2019/10/21/musik-projekt-79-update-2/</link><pubDate>Mon, 21 Oct 2019 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2019/10/21/musik-projekt-79-update-2/</guid><description>
&lt;figure&gt;
&lt;audio controls
class="audio_controls "
preload="metadata"
style="
"
&gt;
&lt;source src="79_8.mp3"
&gt;
Your browser does not support the audio element
&lt;/audio&gt;
&lt;figcaption&gt;
&lt;p&gt;
79_8
&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Wow, da ist einiges passiert. Der Anfang ist deutlich wuchtiger geworden, insbesondere der erste Übergang. Die
Soundkulisse vom Mittelteil habe ich verfeinert, die Windgeräusche im Hintergrund machen sich gut. Auch an den Drums
ist einiges passiert, das passt besser zum Aufbau.&lt;/p&gt;
&lt;p&gt;Beim finalen Endteil habe ich es möglicherweise mit den Synthesizern übertrieben - aber wenn dann auch nur ein bisschen.&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://secretmine.de/blog/2019/06/24/musik-projekt-79-update-vocals/" &gt;Update 1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://secretmine.de/blog/2019/06/20/musik-projekt-79-ein-trance-anfang/" &gt;Originalversion&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Musik: Projekt 85</title><link>https://secretmine.de/blog/2019/09/26/musik-projekt-85/</link><pubDate>Thu, 26 Sep 2019 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2019/09/26/musik-projekt-85/</guid><description>
&lt;figure&gt;
&lt;audio controls
class="audio_controls "
preload="metadata"
style="
"
&gt;
&lt;source src="85.mp3"
&gt;
Your browser does not support the audio element
&lt;/audio&gt;
&lt;figcaption&gt;
&lt;p&gt;
85
&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Dieses Mal ist das Projekt direkt in der ersten Version schon gar nicht mal so schlecht. Es fehlt sicherlich noch
einiges am Mix und auch an Verfeinerung, aber als Grundgerüst ist es solide.&lt;/p&gt;</description></item><item><title>Musik: Projekt 75 – Update</title><link>https://secretmine.de/blog/2019/09/15/musik-projekt-75-update/</link><pubDate>Sun, 15 Sep 2019 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2019/09/15/musik-projekt-75-update/</guid><description>
&lt;figure&gt;
&lt;audio controls
class="audio_controls "
preload="metadata"
style="
"
&gt;
&lt;source src="75_13-1.mp3"
&gt;
Your browser does not support the audio element
&lt;/audio&gt;
&lt;figcaption&gt;
&lt;p&gt;
75_13
&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Das kann man schon als halbwegs fertig bezeichnen. Der Mittelteil gefällt mir bisher noch nicht zu 100%, manches klingt
nicht ganz so, wie ich es gerne hätte. Auch der Übergang zum Ende hin ist noch verbesserungswürdig.&lt;/p&gt;</description></item><item><title>[SQL] Administrativen Nutzer für z.B. phpMyAdmin erstellen</title><link>https://secretmine.de/blog/2019/07/03/sql-administrativen-nutzer-fuer-z-b-phpmyadmin-erstellen/</link><pubDate>Wed, 03 Jul 2019 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2019/07/03/sql-administrativen-nutzer-fuer-z-b-phpmyadmin-erstellen/</guid><description>&lt;p&gt;Mittlerweile ist es so, dass bei phpMyAdmin der root-Account nicht mehr nutzbar ist bzw. der Login nicht erlaubt ist.
Das ist aus Sicherheitsgründen auch sinnvoll, manchmal möchte man aber dennoch einen Admin-Account in phpMyAdmin nutzen
können. Die einfachste Art, trotzdem einen administrativen Account für phpMyAdmin zu erstellen, ist einfach einen neuen
User mit allen Privilegien anzulegen.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Hinweis: Ich empfehle, den Zugang zu phpMyAdmin aus Sicherheitsgründen nur für einzelne IPs zu erlauben oder via
HTTP-Basic-Auth den Zugang zu phpMyAdmin mit einem Kennwort zu versehen. Sicher ist sicher.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Den User können wir einfach über die SQL-Command-Line erzeugen (lässt sich meist mit Eingabe von &lt;code&gt;mysql&lt;/code&gt; auf der
Command-Line vom Server öffnen)&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;USER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;sqladmin&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;localhost&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;IDENTIFIED&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;MeinSicheresPasswort&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="k"&gt;GRANT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;ALL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;PRIVILEGES&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;ON&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;TO&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;sqladmin&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;localhost&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;WITH&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;GRANT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;OPTION&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="n"&gt;FLUSH&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;PRIVILEGES&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Ersetze dabei &lt;code&gt;MeinSicheresPasswort&lt;/code&gt; durch ein sicheres Passwort deiner Wahl. Ich empfehle hierbei einen
Kennwortgenerator (z.B. den integrierten von KeyPass) zu verwenden.&lt;/p&gt;</description></item><item><title>Musik: Projekt 66 – Update 2</title><link>https://secretmine.de/blog/2019/06/24/musik-projekt-66-update-2/</link><pubDate>Mon, 24 Jun 2019 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2019/06/24/musik-projekt-66-update-2/</guid><description>
&lt;figure&gt;
&lt;audio controls
class="audio_controls "
preload="metadata"
style="
"
&gt;
&lt;source src="66-1_11.mp3"
&gt;
Your browser does not support the audio element
&lt;/audio&gt;
&lt;figcaption&gt;
&lt;p&gt;
66_11
&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Eine halbwegs finale Version. Mittlerweile mit einem an dezenten Sound-Effekten verbaut, zusätzlich auch noch normale akustische Drums im Mittelteil&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://secretmine.de/blog/2019/01/26/musik-projekt-66-update/" &gt;Update 1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://secretmine.de/blog/2019/01/16/musik-projekt-66/" &gt;Originalversion&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Musik: Projekt 79 – Update: Vocals.</title><link>https://secretmine.de/blog/2019/06/24/musik-projekt-79-update-vocals/</link><pubDate>Mon, 24 Jun 2019 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2019/06/24/musik-projekt-79-update-vocals/</guid><description>
&lt;figure&gt;
&lt;audio controls
class="audio_controls "
preload="metadata"
style="
"
&gt;
&lt;source src="79_3.mp3"
&gt;
Your browser does not support the audio element
&lt;/audio&gt;
&lt;figcaption&gt;
&lt;p&gt;
79_3
&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Ich habe mir kürzlich ein Sample-Pack gekauft und versuche gerade zum ersten Mal, Vocals richtig einzubauen. Das passt
soweit auch schon ganz gut, aber ist noch ausbaufähig.&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://secretmine.de/blog/2019/2019-06-20-musik-projekt-79-ein-trance-anfang" &gt;Ursprungsversion&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Musik: Projekt 79 – Ein Trance-Anfang</title><link>https://secretmine.de/blog/2019/06/20/musik-projekt-79-ein-trance-anfang/</link><pubDate>Thu, 20 Jun 2019 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2019/06/20/musik-projekt-79-ein-trance-anfang/</guid><description>
&lt;figure&gt;
&lt;audio controls
class="audio_controls "
preload="metadata"
style="
"
&gt;
&lt;source src="79_1.mp3"
&gt;
Your browser does not support the audio element
&lt;/audio&gt;
&lt;figcaption&gt;
&lt;p&gt;
79_1
&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Ich habe mich mal ein wenig an Trance versucht. Es passt nicht zu 100% in das Genre rein, aber kommt in die Richtung.
Auch neu für mich in dem Projekt ist der Bass, jetzt mal mit einem anderen Synthesizer gemacht.&lt;/p&gt;</description></item><item><title>Musik: Projekt 60 (Dawn) – Update 2</title><link>https://secretmine.de/blog/2019/05/06/musik-projekt-60-dawn-update-2/</link><pubDate>Mon, 06 May 2019 18:09:49 +0000</pubDate><guid>https://secretmine.de/blog/2019/05/06/musik-projekt-60-dawn-update-2/</guid><description>
&lt;figure&gt;
&lt;audio controls
class="audio_controls "
preload="metadata"
style="
"
&gt;
&lt;source src="60_14.mp3"
&gt;
Your browser does not support the audio element
&lt;/audio&gt;
&lt;figcaption&gt;
&lt;p&gt;
Dawn (dritter Entwurf)
&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Ich habe einiges an Dawn noch geändert, vieles davon ist eher Kleinkram. Das ist jetzt ungefähr die finale Version.
Wobei es nie eine wirklich finale Version von sowas gibt 😀&lt;/p&gt;</description></item><item><title>Musik: Projekt 77</title><link>https://secretmine.de/blog/2019/05/05/musik-projekt-77/</link><pubDate>Sun, 05 May 2019 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2019/05/05/musik-projekt-77/</guid><description>
&lt;figure&gt;
&lt;audio controls
class="audio_controls "
preload="metadata"
style="
"
&gt;
&lt;source src="77_1.mp3"
&gt;
Your browser does not support the audio element
&lt;/audio&gt;
&lt;figcaption&gt;
&lt;p&gt;
77_1
&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Dieses Mal wieder etwas poppigerer Synthesizer. Das ganze ist angelehnt an
&lt;a class="link" href="https://secretmine.de/blog/2019/01/26/musik-projekt-66-update/" &gt;Projekt 66&lt;/a&gt;, aber insbesondere mit
präsenteren Leads. Viel mehr gibts dazu eigentlich nicht zu sagen.&lt;/p&gt;</description></item><item><title>Musik: Projekt 75</title><link>https://secretmine.de/blog/2019/03/27/musik-projekt-75/</link><pubDate>Wed, 27 Mar 2019 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2019/03/27/musik-projekt-75/</guid><description>
&lt;figure&gt;
&lt;audio controls
class="audio_controls "
preload="metadata"
style="
"
&gt;
&lt;source src="75.mp3"
&gt;
Your browser does not support the audio element
&lt;/audio&gt;
&lt;figcaption&gt;
&lt;p&gt;
75
&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Bisher ein sehr Piano-Lastiger Anfang. Ich bin gespannt, was da noch so draus werden wird.&lt;/p&gt;
&lt;p&gt;Von der Stimmung her geht das so richtung Abschied/Hoffnung, weiß noch nicht, was das werden soll.&lt;/p&gt;</description></item><item><title>Musik: Projekt 66 – Update</title><link>https://secretmine.de/blog/2019/01/26/musik-projekt-66-update/</link><pubDate>Sat, 26 Jan 2019 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2019/01/26/musik-projekt-66-update/</guid><description>
&lt;figure&gt;
&lt;audio controls
class="audio_controls "
preload="metadata"
style="
"
&gt;
&lt;source src="66-1_6.mp3"
&gt;
Your browser does not support the audio element
&lt;/audio&gt;
&lt;figcaption&gt;
&lt;p&gt;
66_6
&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Zwischenversion - es ist einiges passiert. Der Mittelteil ist komplett zu einem Piano-Teil umgebaut, es sind auch
die ersten Sound-Effekts (Riser etc) schon drin. Ein vollständiger Song ist es aber sicherlich noch nicht.&lt;/p&gt;</description></item><item><title>Musik: Projekt 66</title><link>https://secretmine.de/blog/2019/01/16/musik-projekt-66/</link><pubDate>Wed, 16 Jan 2019 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2019/01/16/musik-projekt-66/</guid><description>
&lt;figure&gt;
&lt;audio controls
class="audio_controls "
preload="metadata"
style="
"
&gt;
&lt;source src="66-1_1.mp3"
&gt;
Your browser does not support the audio element
&lt;/audio&gt;
&lt;figcaption&gt;
&lt;p&gt;
66_1
&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Ein erster Anlauf in eine etwas andere Richtung. Dieses mal etwas peppiger und noch Synthesizer-lastig als sonst auch schon&lt;/p&gt;</description></item><item><title>Musik: Projekt 60 (Dawn) – Update</title><link>https://secretmine.de/blog/2018/12/16/musik-projekt-60-dawn-update/</link><pubDate>Sun, 16 Dec 2018 16:36:00 +0000</pubDate><guid>https://secretmine.de/blog/2018/12/16/musik-projekt-60-dawn-update/</guid><description>
&lt;figure&gt;
&lt;audio controls
class="audio_controls "
preload="metadata"
style="
"
&gt;
&lt;source src="60_7.mp3"
&gt;
Your browser does not support the audio element
&lt;/audio&gt;
&lt;figcaption&gt;
&lt;p&gt;
Dawn (zweiter Entwurf)
&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Ich habe diesen Anfang jetzt tatsächlich mal halbwegs vollendet - und bin auch soweit zufrieden damit, was dabei so
rumgekommen ist.&lt;/p&gt;</description></item><item><title>Musik: Projekt 60 (Dawn)</title><link>https://secretmine.de/blog/2018/12/02/musik-dawn/</link><pubDate>Sun, 02 Dec 2018 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2018/12/02/musik-dawn/</guid><description>
&lt;figure&gt;
&lt;audio controls
class="audio_controls "
preload="metadata"
style="
"
&gt;
&lt;source src="60.mp3"
&gt;
Your browser does not support the audio element
&lt;/audio&gt;
&lt;figcaption&gt;
&lt;p&gt;
Dawn (erster Entwurf)
&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Mir gefällt diese Kombination von den Synthies mit den orchestralen Drums irgendwie. Das Riff ist auch schon nicht mehr
ganz das simpelste, da ist bereits eine Art Melodie eingebettet – die lässt sich aber sicherlich noch stärker
betonen.&lt;/p&gt;</description></item><item><title>SSH-Keys beim nächsten Booten neu generieren (z.B. für ein Template)</title><link>https://secretmine.de/blog/2018/11/03/ssh-keys-beim-naechsten-booten-neu-generieren-z-b-fuer-ein-template/</link><pubDate>Sat, 03 Nov 2018 10:51:45 +0000</pubDate><guid>https://secretmine.de/blog/2018/11/03/ssh-keys-beim-naechsten-booten-neu-generieren-z-b-fuer-ein-template/</guid><description>&lt;p&gt;Um z.B. für ein Template bzw. golden image die SSH-Keys aus einer VM mit Debian/Ubuntu zu entfernen, reichen zwei
simple Dinge:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/bin/rm -v /etc/ssh/ssh_host_&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Damit werden die aktuellen SSH-Keys entfernt. Nun im Crontab (crontab -e) folgendes eintragen:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;@reboot /usr/sbin/dpkg-reconfigure openssh-server&lt;span class="p"&gt;;&lt;/span&gt; crontab -r&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Damit wird dann beim nächsten Booten das Generieren der neuen Keys angestoßen, danach dann der crontab gelöscht.&lt;/p&gt;</description></item><item><title>[Debian/Ubuntu] TS3-Server inkl. Autostart installieren</title><link>https://secretmine.de/blog/2018/11/03/debian-ubuntu-ts3-server-inkl-autostart-installieren/</link><pubDate>Sat, 03 Nov 2018 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2018/11/03/debian-ubuntu-ts3-server-inkl-autostart-installieren/</guid><description>&lt;p&gt;&lt;strong&gt;Hinweis&lt;/strong&gt;: Nutzung auf eigene Gefahr.&lt;/p&gt;
&lt;p&gt;Einen TS3-Server zu installieren ist schnell erledigt. Führe dafür einfach folgende Befehle aus, du kannst den ganzen
Block kopieren&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;VERSION&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;wget -O- &lt;span class="s1"&gt;&amp;#39;https://www.teamspeak.com/versions/server.json&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; jq -r &lt;span class="s2"&gt;&amp;#34;.linux.x86_64.version&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;adduser --disabled-password --disabled-login --gecos &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt; teamspeak
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /home/teamspeak/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget https://files.teamspeak-services.com/releases/server/&lt;span class="nv"&gt;$VERSION&lt;/span&gt;/teamspeak3-server_linux_amd64-&lt;span class="nv"&gt;$VERSION&lt;/span&gt;.tar.bz2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tar xf teamspeak3-server_linux_amd64-&lt;span class="nv"&gt;$VERSION&lt;/span&gt;.tar.bz2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rm teamspeak3-server_linux_amd64-&lt;span class="nv"&gt;$VERSION&lt;/span&gt;.tar.bz2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;touch /home/teamspeak/teamspeak3-server_linux_amd64/.ts3server_license_accepted
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chown -R teamspeak: *
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo -u teamspeak /home/teamspeak/teamspeak3-server_linux_amd64/ts3server_startscript.sh start
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo -u teamspeak /home/teamspeak/teamspeak3-server_linux_amd64/ts3server_startscript.sh stop&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;An dieser Stelle werden nun die Zugangsdaten für den TS-Query sowie der erste Admin-Token angezeigt. Kopiere dir diese
Daten und speichere sie irgendwo, du brauchst sie später noch.&lt;/p&gt;
&lt;p&gt;Jetzt erstellen wir noch den Service, aktivieren ihn und starten ihn auch direkt (und damit den TS3-Server):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat &amp;gt; /etc/systemd/system/teamspeak3.service &lt;span class="p"&gt;&amp;amp;&lt;/span&gt;lt&lt;span class="p"&gt;;&amp;amp;&lt;/span&gt;lt&lt;span class="p"&gt;;&lt;/span&gt; EOF
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;Unit&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;Description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;TeamSpeak3-Server
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;After&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;network.service
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;Service&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;User&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;teamspeak
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;Group&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;teamspeak
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;Type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;forking
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;WorkingDirectory&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/home/teamspeak/teamspeak3-server_linux_amd64/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;ExecStart&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/home/teamspeak/teamspeak3-server_linux_amd64/ts3server_startscript.sh start
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;ExecStop&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/home/teamspeak/teamspeak3-server_linux_amd64/ts3server_startscript.sh stop
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;PIDFile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/home/teamspeak/teamspeak3-server_linux_amd64/ts3server.pid
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;RestartSec&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;Restart&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;always
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;Install&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;WantedBy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;multi-user.target
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;EOF
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl daemon-reload
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; teamspeak3.service
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl start teamspeak3&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;An dieser Stelle ist ein Reboot zum Testen sicherlich nicht falsch, aber auch nicht zwingend notwendig. Ich habe dieses
Skript selbst schon an diversen Stellen genutzt, bei mir läuft es sehr gut.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Updates lassen sich wie folgt durchführen, wenn das obige Skript zur Installation genutzt wurde (vorher natürlich eine
Sicherung machen):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;VERSION&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;wget -O- &lt;span class="s1"&gt;&amp;#39;https://www.teamspeak.com/versions/server.json&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; jq -r &lt;span class="s2"&gt;&amp;#34;.linux.x86_64.version&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rsync -rt --delete /home/teamspeak/teamspeak3-server_linux_amd64/ /home/teamspeak/teamspeak3-server_linux_amd64.bak/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /home/teamspeak/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget https://files.teamspeak-services.com/releases/server/&lt;span class="nv"&gt;$VERSION&lt;/span&gt;/teamspeak3-server_linux_amd64-&lt;span class="nv"&gt;$VERSION&lt;/span&gt;.tar.bz2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl stop teamspeak3
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tar xf teamspeak3-server_linux_amd64-&lt;span class="nv"&gt;$VERSION&lt;/span&gt;.tar.bz2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rm teamspeak3-server_linux_amd64-&lt;span class="nv"&gt;$VERSION&lt;/span&gt;.tar.bz2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;touch /home/teamspeak/teamspeak3-server_linux_amd64/.ts3server_license_accepted
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chown -R teamspeak: *
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl start teamspeak3&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Wer eine ältere Version des Installers genutzt hat, muss vorher folgendes ausführen:
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt-get -y install jq rsync tar gzip&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/p&gt;</description></item><item><title>Meine Erfahrungen mit dem Serveranbieter „Rapid Host“</title><link>https://secretmine.de/blog/2018/06/07/meine-erfahrungen-mit-dem-serveranbieter-rapid-host/</link><pubDate>Thu, 07 Jun 2018 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2018/06/07/meine-erfahrungen-mit-dem-serveranbieter-rapid-host/</guid><description>&lt;p&gt;&lt;em&gt;Ich habe meine Erfahrungen mit diesem Anbieter auch schon an anderer Stelle veröffentlicht, möchte diese aber auch noch
einmal hier veröffentlichen, da SecretMine.de über Jahre bei Rapid Host gehostet wurde. Inklusive aller Seite, TS3-Server,
Minecraft-Server, usw.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Ich war wirklich lange zufriedener Kunde bei Rapid Host. Das lief alles klasse, der Support hat auch schnell geantwortet
und die Preise waren gut.&lt;/p&gt;
&lt;p&gt;Dann habe ich auf Dedicated Server gewechselt. Das lief die ersten 2-3 Monate auch gut, dann war der erste Ausfall mit
einer Länge von knapp 5 Tagen da. Es wurde Verbesserung versprochen, es war dann auch für weitere 2-3 Monate Ruhe. Ab
dann (Sommer 2017) konnte man ziemlich fest davon ausgehen, dass jeweils um den 20. des Monate herum die Server (mehrere
Dedicated) für 2-6 Tage komplett offline sind. Es wurde jedes Mal Verbesserung versprochen, passiert ist aber scheinbar
nichts.&lt;/p&gt;
&lt;p&gt;Während der Ausfallzeiten hat man bei Rapid Host auch so ungefähr keinen erreicht. Informationen gab es nur spärlich bis
gar nicht, und auch erst, wenn man dann bei Facebook oder fast versteckt auf der Website danach gesucht hat -
Informationen für die Kunden per Mail o.ä. waren nicht vorhanden. Im Winter hatte ich davon dann genug und habe die ersten
Server zu Hetzner umgezogen (die Kisten waren seit dem eigentlich gar nicht offline).&lt;/p&gt;
&lt;p&gt;Ich habe dann Ende März nach weiteren Ausfällen die gesamten Server fristgerecht gekündigt. Ich bekam als Antwort, dass
ich entweder noch bis zum 1. des folgenden Monats bezahlen müsste oder der Server vorher storniert wird - mit
entsprechender Rückzahlung. Das an sich finde ich schon unerhört und habe ich so noch nicht erlebt. Ich habe mich dann
für die Rückzahlung entschieden, es geht hierbei um etwa einen halben Monatspreis von 2 Dedicated Servern, wie viel das
ist kann man ja etwa abschätzen.&lt;/p&gt;
&lt;p&gt;Auch auf mehrfache Nachfrage habe ich diese Rückzahlung bis heute nicht erhalten. Das ist nun über 2 Monate her. Mir
wurde am Anfang gesagt, dass das bis zu 4 Wochen dauern kann, aber auch auf Rückfragen erhalte ich keine Antwort. Ich
bekomme von Rapid Host keinerlei Reaktion mehr auf Support-Tickets. Ich überlege zur Zeit, ob ich entsprechende
rechtliche Schritte einleite.&lt;/p&gt;
&lt;p&gt;Zusammengefasst kann ich nur sagen: Egal ob privat oder geschäftlich, so ungefähr jeder Hoster ist besser als Rapid
Host. Die sagen, dass sie sich explizit auf den Business-Bereich konzentrieren - aber ich kann aus eigener
Erfahrung nur sagen, dass ich als Geschäftskunde ziemlich mies behandelt wurde/werde.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Ergänzung vom 07.07.2018:&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Ich habe eben im Kundencenter von Rapid Host nachgeschaut und musste feststellen, dass mir eine Domain einfach ohne
jeglichen Kommentar gekündigt wurde. Ich habe mir allerdings vor einigen Monaten alle Authcodes von Domains, die ich
noch bei Rapid Host habe, zukommen lassen und konnte die Domain retten.&lt;/p&gt;</description></item><item><title>Musik: Farewell</title><link>https://secretmine.de/blog/2018/02/25/musik-farewell/</link><pubDate>Sun, 25 Feb 2018 00:00:00 +0000</pubDate><guid>https://secretmine.de/blog/2018/02/25/musik-farewell/</guid><description>
&lt;figure&gt;
&lt;audio controls
class="audio_controls "
preload="metadata"
style="
"
&gt;
&lt;source src="30_Rel1.mp3"
&gt;
Your browser does not support the audio element
&lt;/audio&gt;
&lt;figcaption&gt;
&lt;p&gt;
Farewell
&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Ich habe das Mixing in den letzten Tagen noch erheblich verfeinert. Von der Komposition her bin ich jetzt auch zufrieden, es sind genau so viele Instrumente, wie passend sind.&lt;figure class="wp-block-image size-large"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://secretmine.de/blog/2018/02/25/musik-farewell/Farewell.jpg"
width="1665"
height="931"
srcset="https://secretmine.de/blog/2018/02/25/musik-farewell/Farewell_hu_961f9f7b71c56fc8.jpg 480w, https://secretmine.de/blog/2018/02/25/musik-farewell/Farewell_hu_e296dc1fe67ab174.jpg 1024w"
loading="lazy"
alt="Der aktuelle Projektaufbau"
class="gallery-image"
data-flex-grow="178"
data-flex-basis="429px"
&gt;&lt;/p&gt;
&lt;p&gt;Ein ruhiges, Piano-Lastiges Stück - bestehend aus sage und schreibe 6 Spuren. Wahrer Minimalismus also. Hauptsächlich
ist es nur das Piano und der Pluck-Synthie, der Rest sind nur Streicher im Hintergrund und weiterer Background-Kram
oder Hilfsspuren. Entstanden an einem für mich recht emotionalen Tag - veröffentlicht deutlich später. Zu dem
Zeitpunkt, wo ich diese erste Version fertig hatte, war noch alles in Ordnung, später am selben Tage nicht mehr&amp;hellip; Der
Titel ist für mich persönlich einfach nur passend.&lt;/p&gt;</description></item></channel></rss>