<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://brain.zwissler-cloud.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Flavius</id>
	<title>Z-Brain - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://brain.zwissler-cloud.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Flavius"/>
	<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php/Spezial:Beitr%C3%A4ge/Flavius"/>
	<updated>2026-06-26T16:12:28Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.41.5</generator>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Gel%C3%B6ste_Probleme&amp;diff=49</id>
		<title>Gelöste Probleme</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Gel%C3%B6ste_Probleme&amp;diff=49"/>
		<updated>2026-06-26T13:30:03Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Hier dokumentiere ich hartnäckige Fehler, kuriose IT-Probleme und die dazugehörigen Lösungen. Gut für mich zum Nachschlagen, wenn der gleiche Mist zwei Jahre später wieder passiert, und perfekt zum Teilen für andere.&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:100%; vertical-align:top;&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#fff3f3; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🎬 Skripte &amp;amp; Daten-Pipelines&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;[[Video-Aufräumsystem]]&#039;&#039;&#039; — Automatisiertes Bereinigen, Flachmachen und Sortieren von Video-Downloads auf der Storage Box via &amp;lt;code&amp;gt;Entertainment&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🐧 Desktop &amp;amp; openSUSE Tumbleweed&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;[[Tägliches Bing-Wallpaper (Niri)]]&#039;&#039;&#039; — Automatisierter Download und reibungsloser UHD-Wechsel des Bing-Hintergrundbildes über einen systemd-User-Timer.&lt;br /&gt;
|}&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#d9e4ec; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🖥️ Server &amp;amp; Docker-Infrastruktur&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;[[Zbrain aufsetzen probleme|Z-Brain: Aufbau-Probleme]]&#039;&#039;&#039; — Vier gelöste Stolpersteine beim Aufsetzen dieses Wikis: Docker-Volumes, MediaWiki-Logo, NPM-Weiterleitung, LocalSettings.php.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:right; margin-top:20px;&amp;quot;&amp;gt;Stand der System-Doku: Juni 2026&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Zbrain_aufsetzen_probleme&amp;diff=48</id>
		<title>Zbrain aufsetzen probleme</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Zbrain_aufsetzen_probleme&amp;diff=48"/>
		<updated>2026-06-26T13:24:00Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right; width:280px; margin-left:15px; margin-bottom:10px; border:1px solid #a2a9b1; background:#f8f9fa; font-size:0.9em;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#cedff2; padding:8px; text-align:center; font-size:1.1em;&amp;quot; colspan=&amp;quot;2&amp;quot; | 🔧 Z-Brain: Aufbau-Probleme&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:center; padding:10px; background:#ffffff;&amp;quot; |&lt;br /&gt;
[[Datei:Zbrain-hauptseite.png|260px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;&#039;&#039;4 gelöste Probleme&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#e8e8e8; padding:5px; text-align:left;&amp;quot; colspan=&amp;quot;2&amp;quot; | Übersicht&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:5px; width:55%;&amp;quot; | [[#docker-volumes|Docker-Volumes neu erzeugt]]&lt;br /&gt;
| style=&amp;quot;padding:5px;&amp;quot; | Docker&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:5px;&amp;quot; | [[#mediawiki-logo|Logo nicht sichtbar]]&lt;br /&gt;
| style=&amp;quot;padding:5px;&amp;quot; | MediaWiki&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:5px;&amp;quot; | [[#npm-502|502 Bad Gateway]]&lt;br /&gt;
| style=&amp;quot;padding:5px;&amp;quot; | NPM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:5px;&amp;quot; | [[#localsettings|LocalSettings.php verloren]]&lt;br /&gt;
| style=&amp;quot;padding:5px;&amp;quot; | MediaWiki&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;padding:5px; text-align:right; font-size:0.85em; color:#54595d;&amp;quot; | Stand: Juni 2026&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier dokumentiere ich, welche Probleme beim Aufsetzen von &#039;&#039;&#039;Z-Brain&#039;&#039;&#039; (diesem Wiki) aufgetaucht sind und wie ich sie gelöst habe — gut zum Nachschlagen, falls der gleiche Mist später wieder auftaucht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;docker-volumes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Docker Compose erzeugt neue, leere Volumes statt alte wiederzuverwenden&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;Komponente: &#039;&#039;&#039;Docker&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beim Verschieben/Umbenennen eines Compose-Projekt-Ordners (z.B. &amp;lt;code&amp;gt;mediawiki-test&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;zbrain&amp;lt;/code&amp;gt;) leitet Docker Compose den Volume-Namen standardmäßig vom Ordnernamen ab. Folge: beim nächsten &amp;lt;code&amp;gt;docker compose up&amp;lt;/code&amp;gt; legt Docker &#039;&#039;&#039;neue, leere&#039;&#039;&#039; Volumes mit dem neuen Präfix an, statt die alten (mit den echten Daten) weiterzuverwenden — die App startet dann scheinbar normal, aber komplett leer bzw. zeigt den Erstinstallations-Assistenten erneut.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösung:&#039;&#039;&#039; In der &amp;lt;code&amp;gt;docker-compose.yml&amp;lt;/code&amp;gt; die betroffenen Volumes explizit auf ihren festen, alten Namen fixieren, damit Docker sie wiederfindet statt neue anzulegen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
volumes:&lt;br /&gt;
  mediawiki-db-data:&lt;br /&gt;
    name: mediawiki-test_mediawiki-db-data&lt;br /&gt;
    external: true&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vorher prüfen mit &amp;lt;code&amp;gt;docker volume ls | grep &amp;amp;lt;projektname&amp;amp;gt;&amp;lt;/code&amp;gt; — wenn zwei Sätze ähnlich benannter Volumes auftauchen (altes + neues Präfix), ist das die Bestätigung für dieses Problem.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;mediawiki-logo&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;MediaWiki Vector-2022 zeigt das Logo nicht, ohne icon-Key in $wgLogos&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;Komponente: &#039;&#039;&#039;MediaWiki&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$wgLogos&amp;lt;/code&amp;gt; mit nur &amp;lt;code&amp;gt;1x&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;2x&amp;lt;/code&amp;gt;-Einträgen reicht bei der Skin &#039;&#039;&#039;Vector-2022&#039;&#039;&#039; nicht aus — ohne zusätzlichen &amp;lt;code&amp;gt;icon&amp;lt;/code&amp;gt;-Schlüssel fällt die Skin auf den reinen Text-Wortmark zurück, das Logo-Bild bleibt unsichtbar (auch wenn die Bilddatei selbst korrekt liegt und per &amp;lt;code&amp;gt;curl&amp;lt;/code&amp;gt; erreichbar ist).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösung:&#039;&#039;&#039; Den &amp;lt;code&amp;gt;icon&amp;lt;/code&amp;gt;-Eintrag ergänzen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgLogos = [&lt;br /&gt;
    &#039;1x&#039; =&amp;gt; &amp;quot;$wgResourceBasePath/resources/assets/zbrain/logo.png&amp;quot;,&lt;br /&gt;
    &#039;2x&#039; =&amp;gt; &amp;quot;$wgResourceBasePath/resources/assets/zbrain/logo-2x.png&amp;quot;,&lt;br /&gt;
    &#039;icon&#039; =&amp;gt; &amp;quot;$wgResourceBasePath/resources/assets/zbrain/logo.png&amp;quot;,&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Änderung greift sofort nach &amp;lt;code&amp;gt;docker cp&amp;lt;/code&amp;gt; der angepassten &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; in den Container, kein Neustart nötig.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;npm-502&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;NPM 502 Bad Gateway durch fehlende Docker-Netzwerk-Verbindung&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;Komponente: &#039;&#039;&#039;Nginx Proxy Manager&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Läuft Nginx Proxy Manager selbst containerisiert (z.B. als &amp;lt;code&amp;gt;npm-app-1&amp;lt;/code&amp;gt;), bedeutet &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt; im Forward-Host-Feld &#039;&#039;&#039;den NPM-Container selbst&#039;&#039;&#039;, nicht den Host-Server. Trägt man dort die Host-IP oder &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt; ein, während das Ziel in einem anderen, isolierten Docker-Netzwerk läuft, kommt openresty mit &amp;lt;code&amp;gt;502 Bad Gateway&amp;lt;/code&amp;gt; zurück.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Diagnose:&#039;&#039;&#039; Netzwerke beider Container vergleichen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
docker inspect npm-app-1 --format &#039;{{range $k, $v := .NetworkSettings.Networks}}{{$k}}{{end}}&#039;&lt;br /&gt;
docker inspect &amp;amp;lt;zielcontainer&amp;amp;gt; --format &#039;{{range $k, $v := .NetworkSettings.Networks}}{{$k}}{{end}}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösung:&#039;&#039;&#039; Zielcontainer zusätzlich ins NPM-Netzwerk hängen (rein additiv, bestehende Netzwerk-Zugehörigkeit bleibt erhalten):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
docker network connect npm_default &amp;amp;lt;zielcontainer&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In NPM dann als Forward-Host den &#039;&#039;&#039;Container-Namen&#039;&#039;&#039; eintragen (z.B. &amp;lt;code&amp;gt;mediawiki&amp;lt;/code&amp;gt;) statt einer IP, und als Port den &#039;&#039;internen&#039;&#039; Container-Port (z.B. &amp;lt;code&amp;gt;80&amp;lt;/code&amp;gt;), nicht den extern weitergeleiteten Host-Port (z.B. &amp;lt;code&amp;gt;8081&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis:&#039;&#039; Diese Netzwerk-Verbindung ist nicht in der &amp;lt;code&amp;gt;docker-compose.yml&amp;lt;/code&amp;gt; hinterlegt — bei einem künftigen &amp;lt;code&amp;gt;docker compose down&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;up&amp;lt;/code&amp;gt; des Zielcontainers muss der &amp;lt;code&amp;gt;connect&amp;lt;/code&amp;gt;-Befehl ggf. erneut ausgeführt werden, sofern er nicht dauerhaft in die Compose-Datei aufgenommen wird.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;localsettings&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;MediaWiki-Container verliert LocalSettings.php bei falschem Volume-Mount&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;Komponente: &#039;&#039;&#039;MediaWiki&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im offiziellen &amp;lt;code&amp;gt;mediawiki&amp;lt;/code&amp;gt;-Docker-Image landet die vom Setup-Assistenten erzeugte &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; direkt unter &amp;lt;code&amp;gt;/var/www/html/LocalSettings.php&amp;lt;/code&amp;gt; — &#039;&#039;&#039;nicht&#039;&#039;&#039; unter &amp;lt;code&amp;gt;/var/www/html/config/&amp;lt;/code&amp;gt;. Wird nur Letzteres als Volume gemountet, geht die Konfigurationsdatei beim nächsten Container-Neuaufbau verloren (während Datenbank- und Bilder-Volumes unberührt bleiben, da diese korrekt gemountet sind).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösung für zukünftige Setups:&#039;&#039;&#039; Entweder direkt &amp;lt;code&amp;gt;/var/www/html/LocalSettings.php&amp;lt;/code&amp;gt; als einzelne Datei mounten, oder nach jedem Setup-Lauf eine Sicherungskopie außerhalb des Containers aufbewahren:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
docker cp mediawiki:/var/www/html/LocalSettings.php ~/mediawiki-LocalSettings-backup.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Falls schon verloren:&#039;&#039;&#039; Nicht in Panik geraten — die Wiki-&#039;&#039;&#039;Inhalte&#039;&#039;&#039; liegen in der Datenbank, nicht in dieser Datei. Datenbank-Zugangsdaten (Host, Name, Nutzer, Passwort) lassen sich aus der &amp;lt;code&amp;gt;docker-compose.yml&amp;lt;/code&amp;gt; rekonstruieren und die Datei von Hand neu schreiben, ohne den Setup-Assistenten erneut durchlaufen zu müssen.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:right; margin-top:20px;&amp;quot;&amp;gt;Stand: Juni 2026&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Datei:Zbrain-hauptseite.png&amp;diff=47</id>
		<title>Datei:Zbrain-hauptseite.png</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Datei:Zbrain-hauptseite.png&amp;diff=47"/>
		<updated>2026-06-26T13:20:39Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Zbrain_aufsetzen_probleme&amp;diff=46</id>
		<title>Zbrain aufsetzen probleme</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Zbrain_aufsetzen_probleme&amp;diff=46"/>
		<updated>2026-06-26T13:19:47Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right; width:280px; margin-left:15px; margin-bottom:10px; border:1px solid #a2a9b1; background:#f8f9fa; font-size:0.9em;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#cedff2; padding:8px; text-align:center; font-size:1.1em;&amp;quot; colspan=&amp;quot;2&amp;quot; | 🔧 Z-Brain: Aufbau-Probleme&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:center; padding:10px; background:#ffffff;&amp;quot; |&lt;br /&gt;
[[Datei:Symbol_support_vote.svg|80px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;&#039;&#039;4 gelöste Probleme&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#e8e8e8; padding:5px; text-align:left;&amp;quot; colspan=&amp;quot;2&amp;quot; | Übersicht&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:5px; width:55%;&amp;quot; | [[#docker-volumes|Docker-Volumes neu erzeugt]]&lt;br /&gt;
| style=&amp;quot;padding:5px;&amp;quot; | Docker&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:5px;&amp;quot; | [[#mediawiki-logo|Logo nicht sichtbar]]&lt;br /&gt;
| style=&amp;quot;padding:5px;&amp;quot; | MediaWiki&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:5px;&amp;quot; | [[#npm-502|502 Bad Gateway]]&lt;br /&gt;
| style=&amp;quot;padding:5px;&amp;quot; | NPM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:5px;&amp;quot; | [[#localsettings|LocalSettings.php verloren]]&lt;br /&gt;
| style=&amp;quot;padding:5px;&amp;quot; | MediaWiki&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;padding:5px; text-align:right; font-size:0.85em; color:#54595d;&amp;quot; | Stand: Juni 2026&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier dokumentiere ich, welche Probleme beim Aufsetzen von &#039;&#039;&#039;Z-Brain&#039;&#039;&#039; (diesem Wiki) aufgetaucht sind und wie ich sie gelöst habe — gut zum Nachschlagen, falls der gleiche Mist später wieder auftaucht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;docker-volumes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Docker Compose erzeugt neue, leere Volumes statt alte wiederzuverwenden&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;Komponente: &#039;&#039;&#039;Docker&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beim Verschieben/Umbenennen eines Compose-Projekt-Ordners (z.B. &amp;lt;code&amp;gt;mediawiki-test&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;zbrain&amp;lt;/code&amp;gt;) leitet Docker Compose den Volume-Namen standardmäßig vom Ordnernamen ab. Folge: beim nächsten &amp;lt;code&amp;gt;docker compose up&amp;lt;/code&amp;gt; legt Docker &#039;&#039;&#039;neue, leere&#039;&#039;&#039; Volumes mit dem neuen Präfix an, statt die alten (mit den echten Daten) weiterzuverwenden — die App startet dann scheinbar normal, aber komplett leer bzw. zeigt den Erstinstallations-Assistenten erneut.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösung:&#039;&#039;&#039; In der &amp;lt;code&amp;gt;docker-compose.yml&amp;lt;/code&amp;gt; die betroffenen Volumes explizit auf ihren festen, alten Namen fixieren, damit Docker sie wiederfindet statt neue anzulegen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
volumes:&lt;br /&gt;
  mediawiki-db-data:&lt;br /&gt;
    name: mediawiki-test_mediawiki-db-data&lt;br /&gt;
    external: true&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vorher prüfen mit &amp;lt;code&amp;gt;docker volume ls | grep &amp;amp;lt;projektname&amp;amp;gt;&amp;lt;/code&amp;gt; — wenn zwei Sätze ähnlich benannter Volumes auftauchen (altes + neues Präfix), ist das die Bestätigung für dieses Problem.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;mediawiki-logo&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;MediaWiki Vector-2022 zeigt das Logo nicht, ohne icon-Key in $wgLogos&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;Komponente: &#039;&#039;&#039;MediaWiki&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$wgLogos&amp;lt;/code&amp;gt; mit nur &amp;lt;code&amp;gt;1x&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;2x&amp;lt;/code&amp;gt;-Einträgen reicht bei der Skin &#039;&#039;&#039;Vector-2022&#039;&#039;&#039; nicht aus — ohne zusätzlichen &amp;lt;code&amp;gt;icon&amp;lt;/code&amp;gt;-Schlüssel fällt die Skin auf den reinen Text-Wortmark zurück, das Logo-Bild bleibt unsichtbar (auch wenn die Bilddatei selbst korrekt liegt und per &amp;lt;code&amp;gt;curl&amp;lt;/code&amp;gt; erreichbar ist).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösung:&#039;&#039;&#039; Den &amp;lt;code&amp;gt;icon&amp;lt;/code&amp;gt;-Eintrag ergänzen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgLogos = [&lt;br /&gt;
    &#039;1x&#039; =&amp;gt; &amp;quot;$wgResourceBasePath/resources/assets/zbrain/logo.png&amp;quot;,&lt;br /&gt;
    &#039;2x&#039; =&amp;gt; &amp;quot;$wgResourceBasePath/resources/assets/zbrain/logo-2x.png&amp;quot;,&lt;br /&gt;
    &#039;icon&#039; =&amp;gt; &amp;quot;$wgResourceBasePath/resources/assets/zbrain/logo.png&amp;quot;,&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Änderung greift sofort nach &amp;lt;code&amp;gt;docker cp&amp;lt;/code&amp;gt; der angepassten &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; in den Container, kein Neustart nötig.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;npm-502&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;NPM 502 Bad Gateway durch fehlende Docker-Netzwerk-Verbindung&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;Komponente: &#039;&#039;&#039;Nginx Proxy Manager&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Läuft Nginx Proxy Manager selbst containerisiert (z.B. als &amp;lt;code&amp;gt;npm-app-1&amp;lt;/code&amp;gt;), bedeutet &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt; im Forward-Host-Feld &#039;&#039;&#039;den NPM-Container selbst&#039;&#039;&#039;, nicht den Host-Server. Trägt man dort die Host-IP oder &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt; ein, während das Ziel in einem anderen, isolierten Docker-Netzwerk läuft, kommt openresty mit &amp;lt;code&amp;gt;502 Bad Gateway&amp;lt;/code&amp;gt; zurück.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Diagnose:&#039;&#039;&#039; Netzwerke beider Container vergleichen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
docker inspect npm-app-1 --format &#039;{{range $k, $v := .NetworkSettings.Networks}}{{$k}}{{end}}&#039;&lt;br /&gt;
docker inspect &amp;amp;lt;zielcontainer&amp;amp;gt; --format &#039;{{range $k, $v := .NetworkSettings.Networks}}{{$k}}{{end}}&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösung:&#039;&#039;&#039; Zielcontainer zusätzlich ins NPM-Netzwerk hängen (rein additiv, bestehende Netzwerk-Zugehörigkeit bleibt erhalten):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
docker network connect npm_default &amp;amp;lt;zielcontainer&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In NPM dann als Forward-Host den &#039;&#039;&#039;Container-Namen&#039;&#039;&#039; eintragen (z.B. &amp;lt;code&amp;gt;mediawiki&amp;lt;/code&amp;gt;) statt einer IP, und als Port den &#039;&#039;internen&#039;&#039; Container-Port (z.B. &amp;lt;code&amp;gt;80&amp;lt;/code&amp;gt;), nicht den extern weitergeleiteten Host-Port (z.B. &amp;lt;code&amp;gt;8081&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis:&#039;&#039; Diese Netzwerk-Verbindung ist nicht in der &amp;lt;code&amp;gt;docker-compose.yml&amp;lt;/code&amp;gt; hinterlegt — bei einem künftigen &amp;lt;code&amp;gt;docker compose down&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;up&amp;lt;/code&amp;gt; des Zielcontainers muss der &amp;lt;code&amp;gt;connect&amp;lt;/code&amp;gt;-Befehl ggf. erneut ausgeführt werden, sofern er nicht dauerhaft in die Compose-Datei aufgenommen wird.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;localsettings&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;MediaWiki-Container verliert LocalSettings.php bei falschem Volume-Mount&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;Komponente: &#039;&#039;&#039;MediaWiki&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im offiziellen &amp;lt;code&amp;gt;mediawiki&amp;lt;/code&amp;gt;-Docker-Image landet die vom Setup-Assistenten erzeugte &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; direkt unter &amp;lt;code&amp;gt;/var/www/html/LocalSettings.php&amp;lt;/code&amp;gt; — &#039;&#039;&#039;nicht&#039;&#039;&#039; unter &amp;lt;code&amp;gt;/var/www/html/config/&amp;lt;/code&amp;gt;. Wird nur Letzteres als Volume gemountet, geht die Konfigurationsdatei beim nächsten Container-Neuaufbau verloren (während Datenbank- und Bilder-Volumes unberührt bleiben, da diese korrekt gemountet sind).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösung für zukünftige Setups:&#039;&#039;&#039; Entweder direkt &amp;lt;code&amp;gt;/var/www/html/LocalSettings.php&amp;lt;/code&amp;gt; als einzelne Datei mounten, oder nach jedem Setup-Lauf eine Sicherungskopie außerhalb des Containers aufbewahren:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
docker cp mediawiki:/var/www/html/LocalSettings.php ~/mediawiki-LocalSettings-backup.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Falls schon verloren:&#039;&#039;&#039; Nicht in Panik geraten — die Wiki-&#039;&#039;&#039;Inhalte&#039;&#039;&#039; liegen in der Datenbank, nicht in dieser Datei. Datenbank-Zugangsdaten (Host, Name, Nutzer, Passwort) lassen sich aus der &amp;lt;code&amp;gt;docker-compose.yml&amp;lt;/code&amp;gt; rekonstruieren und die Datei von Hand neu schreiben, ohne den Setup-Assistenten erneut durchlaufen zu müssen.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:right; margin-top:20px;&amp;quot;&amp;gt;Stand: Juni 2026&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=43</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=43"/>
		<updated>2026-06-26T12:22:44Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:55%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 👨‍👩‍👧‍👦 Hilfe für Papa&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Einfache Anleitungen für Computer und Handy:&lt;br /&gt;
* Wie mache ich ein Update?&lt;br /&gt;
* Wie bediene ich ein Programm am PC?&lt;br /&gt;
* Wie installiere ich eine App auf dem Handy?&lt;br /&gt;
* Wie bediene ich ein Smartphone?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#fff3f3; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🔧 [[Gelöste Probleme]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Eine Sammlung von Fehlern und ihren Lösungen — gut zum Nachschlagen für mich und zum Erklären für andere.&lt;br /&gt;
|}&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🏃‍♂️ [[Lauf- und Wettkampfzeiten|Wettkämpfe]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Unsere offiziellen Wettkampfergebnisse und Laufzeiten — von Friedemann und Flavius, Saison für Saison.&lt;br /&gt;
|}&lt;br /&gt;
| style=&amp;quot;width:45%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cedff2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🖥️ [[Meine Server &amp;amp; Infrastruktur]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;Storage Box:&#039;&#039;&#039; rclone, Sub-Accounts, Snapshots&lt;br /&gt;
* &#039;&#039;&#039;Entertainment:&#039;&#039;&#039; Jellyfin, Immich, Grafana, NPM&lt;br /&gt;
* &#039;&#039;&#039;lets-lounge:&#039;&#039;&#039; Gameserver, JDownloader&lt;br /&gt;
* &#039;&#039;&#039;Server WG 49:&#039;&#039;&#039; Home Assistant (Klima-Automation), AdGuard Home (DNS)&lt;br /&gt;
* &#039;&#039;&#039;Desktop:&#039;&#039;&#039; openSUSE Tumbleweed, Niri&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🗣️ Erklärt für Freunde&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Einfache Erklärungen von technischen Themen, die ich öfter erklären muss.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Wettk%C3%A4mpfe_2026&amp;diff=42</id>
		<title>Wettkämpfe 2026</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Wettk%C3%A4mpfe_2026&amp;diff=42"/>
		<updated>2026-06-26T12:18:12Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;margin-bottom: 15px; padding: 8px 12px; background-color: #f8f9fa; border: 1px solid #a2a9b1; border-radius: 4px; display: inline-block;&amp;quot;&amp;gt;&lt;br /&gt;
    [[Lauf- und Wettkampfzeiten | ⬅️ Zurück zur Jahresübersicht]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Hier dokumentiere ich unsere offiziellen Wettkampfergebnisse und Laufzeiten.&lt;br /&gt;
&amp;lt;!-- KATEGORIE: LAUFERGEBNISSE (AUFKLAPPBAR) --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🏃‍♂️ Wettkampfergebnisse 2026 (Klicken zum Aufklappen)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 1 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 20.06.2026 – 32. Spitzberglauf Hirschau&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 13,1 km Lauf Herren&lt;br /&gt;
| 85:30&lt;br /&gt;
| 4.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 2 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 13.06.2026 – 45. Waldlauf Reutlingen-Ohmenhausen&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 59:27&lt;br /&gt;
| 1.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 3 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 03.05.2026 – 15. Lautertallauf, Lauterach&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius&#039;&#039;&#039;&lt;br /&gt;
| 6 km Lauf Herren&lt;br /&gt;
| 27:26&lt;br /&gt;
| 15.&lt;br /&gt;
| M&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 12,6 km Lauf Herren&lt;br /&gt;
| 72:54&lt;br /&gt;
| 6.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 4 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 25.04.2026 – 14. Firmenlauf Bad Liebenzell&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius&#039;&#039;&#039;&lt;br /&gt;
| 5 km Firmen-Lauf Herren&lt;br /&gt;
| 22:09&lt;br /&gt;
| 11.&lt;br /&gt;
| M&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 5 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 25.04.2026 – 15. Paracelsuslauf Bad Liebenzell&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Paracelsus-Lauf Herren&lt;br /&gt;
| 55:18&lt;br /&gt;
| 6.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 6 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 19.04.2026 – 34. Kayher Kirschblütenlauf&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius&#039;&#039;&#039;&lt;br /&gt;
| 7,2 km Lauf Herren&lt;br /&gt;
| 0:34:41&lt;br /&gt;
| 9.&lt;br /&gt;
| M&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 14,2 km Lauf Herren&lt;br /&gt;
| 1:22:47&lt;br /&gt;
| 5.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 7 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:5px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 10.01.2026 – 23. Albgold Winterlauf TSG Reutlingen&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 46:42&lt;br /&gt;
| 27.&lt;br /&gt;
| M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 55:51&lt;br /&gt;
| 12.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:right; margin-top:20px;&amp;quot;&amp;gt;Stand: Juni 2026&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Wettk%C3%A4mpfe_2026&amp;diff=41</id>
		<title>Wettkämpfe 2026</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Wettk%C3%A4mpfe_2026&amp;diff=41"/>
		<updated>2026-06-26T12:15:13Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- WETTKAMPF 6 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 19.04.2026 – 34. Kayher Kirschblütenlauf&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius&#039;&#039;&#039;&lt;br /&gt;
| 7,2 km Lauf Herren&lt;br /&gt;
| 0:34:41&lt;br /&gt;
| 9.&lt;br /&gt;
| M&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 14,2 km Lauf Herren&lt;br /&gt;
| 1:22:47&lt;br /&gt;
| 5.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 7 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:5px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 10.01.2026 – 23. Albgold Winterlauf TSG Reutlingen&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 46:42&lt;br /&gt;
| 27.&lt;br /&gt;
| M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 55:51&lt;br /&gt;
| 12.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Wettk%C3%A4mpfe_2025&amp;diff=40</id>
		<title>Wettkämpfe 2025</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Wettk%C3%A4mpfe_2025&amp;diff=40"/>
		<updated>2026-06-26T12:11:47Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;margin-bottom: 15px; padding: 8px 12px; background-color: #f8f9fa; border: 1px solid #a2a9b1; border-radius: 4px; display: inline-block;&amp;quot;&amp;gt;&lt;br /&gt;
    [[Lauf- und Wettkampfzeiten | ⬅️ Zurück zur Jahresübersicht]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Hier dokumentiere ich unsere offiziellen Wettkampfergebnisse und Laufzeiten.&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🏃‍♂️ Wettkampfergebnisse 2025 (Klicken zum Aufklappen)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
&amp;lt;!-- 1. HOCKENHEIMRING --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 01.11.2025 – 28. Hockenheimringlauf&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 44:52 || 35. || M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 53:08 || 15. || M65&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- 2. KIRCHERTLAUF --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 03.10.2025 – 28. Kirchertlauf Nürtingen&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 45:20 || 5. || M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 53:20 || 3. || M65&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- 3. BÄDLESLAUF --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 20.09.2025 – 21. Bädleslauf Zuffenhausen&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 47:11 || 2. || M&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 56:26 || 2. || M65&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- 4. DAGERSHEIM --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 13.09.2025 – 38. Dagersheimer Waldlauf 2025&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 46:10 || 5. || M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 54:28 || 7. || M65&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- 5. BIOSPHÄRENLAUF --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 20.07.2025 – 13. Biosphärenlauf Münsingen-Auingen&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 15 km Lauf Herren || 1:18:48 || 2. || M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 15 km Lauf Herren || 1:28:44 || 2. || M65&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- 6. ERMSTAL-MARATHON --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 13.07.2025 – 15. Ermstal-Marathon Metzingen&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 21,1 km Lauf Herren || 1:51:17 || 44. || M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 21,1 km Lauf Herren || 1:59:35 || 5. || M65&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- 7. ALTSTADTLAUF --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 05.07.2025 – 31. Reutlinger SOLCOM Altstadtlauf&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 49:47 || 18. || M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 55:24 || 4. || M65&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- 8. WALDLAUF OHMENHAUSEN --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 24.05.2025 – 44. Waldlauf RT-Ohmenhausen&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 49:32 || 4. || M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 56:58 || 3. || M65&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- 9. BAD WALDSEER LAUFFIEBER --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 17.05.2025 – 23. Bad Waldseer Lauffieber&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 47:26 || 17. || M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 53:26 || 6. || M65&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- 10. SINDELFINGER WERKSTATTLAUF --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 04.05.2025 – 31. Sindelfinger Werkstattlauf&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 10,6 km Lauf Herren || 50:49 || 10. || M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 10,6 km Lauf Herren || 56:31 || 4. || M65&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- 11. FREIBURG MARATHON --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 06.04.2025 – 20. Freiburg Marathon&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 21,1 km Lauf Herren || 1:53:40 || 1318. || M&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 21,1 km Lauf Herren || 2:01:12 || 38. || M65&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- 12. ÖPFINGER OSTERLAUF --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 19.04.2025 – 45. Internationaler Öpfinger Osterlauf&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 0:49:37 || 18. || M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 0:54:55 || 14. || M65&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- 13. WEINSBERGER WEIBERTREULAUF --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 09.03.2025 – 40. Weinsberger Weibertreulauf&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 49:00 || 8. || M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 53:14 || 9. || M65&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- 14. ALBGOLD TROCHTELFINGEN (ohne AK-Platz im Original) --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 22.02.2025 – 22. Albgold Winterlauf TSV Trochtelfingen&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 47:05&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 54:33&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- 15. ALBGOLD IGL REUTLINGEN (nur Flavius im Original gelistet) --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 08.02.2025 – 22. Albgold Winterlauf IGL Reutlingen&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 50:16 || 35. || M30&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;font-style:italic; color:#54595d;&amp;quot; | Friedemann Zwissler ist bei diesem Lauf im Original nicht gelistet – evtl. allein gelaufen.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- 16. ALBGOLD PLIEZHAUSEN --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 25.01.2025 – 22. Albgold Winterlauf LV Pliezhausen&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 48:27 || 31. || M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 55:03 || 8. || M65&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- 17. ALBGOLD TSG REUTLINGEN --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 11.01.2025 – 22. Albgold Winterlauf TSG Reutlingen&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 50:05 || 34. || M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 53:27 || 6. || M65&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:right; margin-top:20px;&amp;quot;&amp;gt;Stand: Juni 2026 — ergänzt um alle 2025er Läufe mit Flavius und/oder Friedemann Zwissler&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Wettk%C3%A4mpfe_2025&amp;diff=39</id>
		<title>Wettkämpfe 2025</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Wettk%C3%A4mpfe_2025&amp;diff=39"/>
		<updated>2026-06-26T12:05:43Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;margin-bottom: 15px; padding: 8px 12px; background-color: #f8f9fa; border: 1px solid #a2a9b1; border-radius: 4px; display: inline-block;&amp;quot;&amp;gt;&lt;br /&gt;
    [[Lauf- und Wettkampfzeiten | ⬅️ Zurück zur Jahresübersicht]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier dokumentiere ich unsere offiziellen Wettkampfergebnisse und Laufzeiten.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🏃‍♂️ Wettkampfergebnisse 2025 (Klicken zum Aufklappen)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- 1. HOCKENHEIMRING --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 01.11.2025 – 28. Hockenheimringlauf&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 44:52 || 35. || M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 53:08 || 15. || M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- 2. KIRCHERTLAUF --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 03.10.2025 – 28. Kirchertlauf Nürtingen&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 45:20 || 5. || M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 53:20 || 3. || M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- 3. BÄDLESLAUF --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 20.09.2025 – 21. Bädleslauf Zuffenhausen&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 47:11 || 2. || M&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 56:26 || 2. || M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- 4. DAGERSHEIM --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 13.09.2025 – 38. Dagersheimer Waldlauf 2025&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 46:10 || 5. || M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 54:28 || 7. || M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:right; margin-top:20px;&amp;quot;&amp;gt;Stand: Dezember 2025&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Wettk%C3%A4mpfe_2025&amp;diff=38</id>
		<title>Wettkämpfe 2025</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Wettk%C3%A4mpfe_2025&amp;diff=38"/>
		<updated>2026-06-26T12:04:37Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;margin-bottom: 15px; padding: 8px 12px; background-color: #f8f9fa; border: 1px solid #a2a9b1; border-radius: 4px; display: inline-block;&amp;quot;&amp;gt;&lt;br /&gt;
    [[Lauf- und Wettkampfzeiten | ⬅️ Zurück zur Jahresübersicht]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier dokumentiere ich unsere offiziellen Wettkampfergebnisse und Laufzeiten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- GROSSE RAHMEN-BOX FÜR DIE SAISON 2025 --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🏃‍♂️ Wettkampfergebnisse 2025 (Klicken zum Aufklappen)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- GEMEINSAMER WETTKAMPF 1 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 01.11.2025 – 28. Hockenheimringlauf&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 44:52&lt;br /&gt;
| 35.&lt;br /&gt;
| M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 53:08&lt;br /&gt;
| 15.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- GEMEINSAMER WETTKAMPF 2 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 03.10.2025 – 28. Kirchertlauf Nürtingen&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 45:20&lt;br /&gt;
| 5.&lt;br /&gt;
| M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 53:20&lt;br /&gt;
| 3.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- GEMEINSAMER WETTKAMPF 3 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 20.09.2025 – 21. Bädleslauf Zuffenhausen&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 47:11&lt;br /&gt;
| 2.&lt;br /&gt;
| M&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 56:26&lt;br /&gt;
| 2.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- GEMEINSAMER WETTKAMPF 4 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 13.09.2025 – 38. Dagersheimer Waldlauf 2025&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 46:10&lt;br /&gt;
| 5.&lt;br /&gt;
| M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 54:28&lt;br /&gt;
| 7.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- VORLAGE: FLAVIUS EINZELLAUF (HIER DEINE SEPARATEN LÄUFE EINTRAGEN) --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | DD.MM.2025 – [ Name deines Einzellaufs hier eintragen ]&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039;&lt;br /&gt;
| -- km Lauf Herren&lt;br /&gt;
| --:--&lt;br /&gt;
| --.&lt;br /&gt;
| M30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- VORLAGE: PAPA EINZELLAUF (HIER SEINE SEPARATEN LÄUFE EINTRAGEN) --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | DD.MM.2025 – [ Name von Papas Einzellauf hier eintragen ]&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| -- km Lauf Herren&lt;br /&gt;
| --:--&lt;br /&gt;
| --.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:right; margin-top:20px;&amp;quot;&amp;gt;Stand: Dezember 2025&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Wettk%C3%A4mpfe_2025&amp;diff=37</id>
		<title>Wettkämpfe 2025</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Wettk%C3%A4mpfe_2025&amp;diff=37"/>
		<updated>2026-06-26T12:03:16Z</updated>

		<summary type="html">&lt;p&gt;Flavius: /* 🏃‍♂️ Wettkampf-Archiv Saison 2025 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;margin-bottom: 15px; padding: 8px 12px; background-color: #f8f9fa; border: 1px solid #a2a9b1; border-radius: 4px; display: inline-block;&amp;quot;&amp;gt;&lt;br /&gt;
    [[Lauf- und Wettkampfzeiten | ⬅️ Zurück zur Jahresübersicht]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 15px; padding: 8px 12px; background-color: #f8f9fa; border: 1px solid #a2a9b1; border-radius: 4px; display: inline-block;&amp;quot;&amp;gt;&lt;br /&gt;
    [[Lauf- und Wettkampfzeiten | ⬅️ Zurück zur Jahresübersicht]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier dokumentiere ich unsere offiziellen Wettkampfergebnisse und Laufzeiten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- GROSSE RAHMEN-BOX FÜR DIE SAISON 2025 --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🏃‍♂️ Wettkampfergebnisse 2025 (Klicken zum Aufklappen)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 1: HOCKENHEIMRING --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 01.11.2025 – 28. Hockenheimringlauf&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 44:52&lt;br /&gt;
| 35.&lt;br /&gt;
| M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 53:08&lt;br /&gt;
| 15.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 2: KIRCHERTLAUF --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 03.10.2025 – 28. Kirchertlauf Nürtingen&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 45:20&lt;br /&gt;
| 5.&lt;br /&gt;
| M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 53:20&lt;br /&gt;
| 3.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 3: BÄDLESLAUF --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 20.09.2025 – 21. Bädleslauf Zuffenhausen&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 47:11&lt;br /&gt;
| 2.&lt;br /&gt;
| M&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 56:26&lt;br /&gt;
| 2.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 4: DAGERSHEIM --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 13.09.2025 – 38. Dagersheimer Waldlauf 2025&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 46:10&lt;br /&gt;
| 5.&lt;br /&gt;
| M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 54:28&lt;br /&gt;
| 7.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:right; margin-top:20px;&amp;quot;&amp;gt;Stand: Dezember 2025&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Wettk%C3%A4mpfe_2025&amp;diff=36</id>
		<title>Wettkämpfe 2025</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Wettk%C3%A4mpfe_2025&amp;diff=36"/>
		<updated>2026-06-26T12:02:05Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;margin-bottom: 15px; padding: 8px 12px; background-color: #f8f9fa; border: 1px solid #a2a9b1; border-radius: 4px; display: inline-block;&amp;quot;&amp;gt;&lt;br /&gt;
    [[Lauf- und Wettkampfzeiten | ⬅️ Zurück zur Jahresübersicht]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 🏃‍♂️ Wettkampf-Archiv Saison 2025 =&lt;br /&gt;
Hier sind alle offiziellen Wettkampfergebnisse und Laufzeiten aus dem Jahr 2025 in einer kompakten Übersicht dokumentiert.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%; margin-top:15px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#cef2e0; padding:10px; text-align:left;&amp;quot; | Datum&lt;br /&gt;
! style=&amp;quot;background:#cef2e0; padding:10px; text-align:left;&amp;quot; | Wettkampf&lt;br /&gt;
! style=&amp;quot;background:#cef2e0; padding:10px; text-align:left;&amp;quot; | Läufer&lt;br /&gt;
! style=&amp;quot;background:#cef2e0; padding:10px; text-align:left;&amp;quot; | Strecke&lt;br /&gt;
! style=&amp;quot;background:#cef2e0; padding:10px; text-align:left;&amp;quot; | Zeit&lt;br /&gt;
! style=&amp;quot;background:#cef2e0; padding:10px; text-align:left;&amp;quot; | AK-Platz&lt;br /&gt;
! style=&amp;quot;background:#cef2e0; padding:10px; text-align:left;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:middle;&amp;quot; | 01.11.2025&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:middle;&amp;quot; | 28. Hockenheimringlauf&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 44:52&lt;br /&gt;
| 35.&lt;br /&gt;
| M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 53:08&lt;br /&gt;
| 15.&lt;br /&gt;
| M65&lt;br /&gt;
|- style=&amp;quot;background:#f9f9f9;&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:middle;&amp;quot; | 03.10.2025&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:middle;&amp;quot; | 28. Kirchertlauf Nürtingen&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 45:20&lt;br /&gt;
| 5.&lt;br /&gt;
| M30&lt;br /&gt;
|- style=&amp;quot;background:#f9f9f9;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 53:20&lt;br /&gt;
| 3.&lt;br /&gt;
| M65&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:middle;&amp;quot; | 20.09.2025&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:middle;&amp;quot; | 21. Bädleslauf Zuffenhausen&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 47:11&lt;br /&gt;
| 2.&lt;br /&gt;
| M&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 56:26&lt;br /&gt;
| 2.&lt;br /&gt;
| M65&lt;br /&gt;
|- style=&amp;quot;background:#f9f9f9;&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:middle;&amp;quot; | 13.09.2025&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;vertical-align:middle;&amp;quot; | 38. Dagersheimer Waldlauf 2025&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 46:10&lt;br /&gt;
| 5.&lt;br /&gt;
| M30&lt;br /&gt;
|- style=&amp;quot;background:#f9f9f9;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 54:28&lt;br /&gt;
| 7.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:right; margin-top:30px;&amp;quot;&amp;gt;Archivierte Daten – Stand: Dezember 2025&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Wettk%C3%A4mpfe_2026&amp;diff=35</id>
		<title>Wettkämpfe 2026</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Wettk%C3%A4mpfe_2026&amp;diff=35"/>
		<updated>2026-06-26T12:00:45Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;margin-bottom: 15px; padding: 8px 12px; background-color: #f8f9fa; border: 1px solid #a2a9b1; border-radius: 4px; display: inline-block;&amp;quot;&amp;gt;&lt;br /&gt;
    [[Lauf- und Wettkampfzeiten | ⬅️ Zurück zur Jahresübersicht]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hier dokumentiere ich unsere offiziellen Wettkampfergebnisse und Laufzeiten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KATEGORIE: LAUFERGEBNISSE (AUFKLAPPBAR) --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🏃‍♂️ Wettkampfergebnisse 2026 (Klicken zum Aufklappen)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 1 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 20.06.2026 – 32. Spitzberglauf Hirschau&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 13,1 km Lauf Herren&lt;br /&gt;
| 85:30&lt;br /&gt;
| 4.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 2 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 13.06.2026 – 45. Waldlauf Reutlingen-Ohmenhausen&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 59:27&lt;br /&gt;
| 1.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 3 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 03.05.2026 – 15. Lautertallauf, Lauterach&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius&#039;&#039;&#039;&lt;br /&gt;
| 6 km Lauf Herren&lt;br /&gt;
| 27:26&lt;br /&gt;
| 15.&lt;br /&gt;
| M&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 12,6 km Lauf Herren&lt;br /&gt;
| 72:54&lt;br /&gt;
| 6.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 4 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 25.04.2026 – 14. Firmenlauf Bad Liebenzell&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius&#039;&#039;&#039;&lt;br /&gt;
| 5 km Firmen-Lauf Herren&lt;br /&gt;
| 22:09&lt;br /&gt;
| 11.&lt;br /&gt;
| M&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 5 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:5px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 25.04.2026 – 15. Paracelsuslauf Bad Liebenzell&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Paracelsus-Lauf Herren&lt;br /&gt;
| 55:18&lt;br /&gt;
| 6.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:right; margin-top:20px;&amp;quot;&amp;gt;Stand: Juni 2026&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Wettk%C3%A4mpfe_2026&amp;diff=34</id>
		<title>Wettkämpfe 2026</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Wettk%C3%A4mpfe_2026&amp;diff=34"/>
		<updated>2026-06-26T11:59:47Z</updated>

		<summary type="html">&lt;p&gt;Flavius: Die Seite wurde neu angelegt: „Hier dokumentiere ich unsere offiziellen Wettkampfergebnisse und Laufzeiten.  &amp;lt;!-- KATEGORIE: LAUFERGEBNISSE (AUFKLAPPBAR) --&amp;gt; {| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot; | style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🏃‍♂️ Wettkampfergebnisse 2026 (Klicken zum Aufklappen) |- | style=&amp;quot;padding-top:10px…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier dokumentiere ich unsere offiziellen Wettkampfergebnisse und Laufzeiten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KATEGORIE: LAUFERGEBNISSE (AUFKLAPPBAR) --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🏃‍♂️ Wettkampfergebnisse 2026 (Klicken zum Aufklappen)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 1 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 20.06.2026 – 32. Spitzberglauf Hirschau&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 13,1 km Lauf Herren&lt;br /&gt;
| 85:30&lt;br /&gt;
| 4.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 2 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 13.06.2026 – 45. Waldlauf Reutlingen-Ohmenhausen&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 59:27&lt;br /&gt;
| 1.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 3 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 03.05.2026 – 15. Lautertallauf, Lauterach&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius&#039;&#039;&#039;&lt;br /&gt;
| 6 km Lauf Herren&lt;br /&gt;
| 27:26&lt;br /&gt;
| 15.&lt;br /&gt;
| M&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 12,6 km Lauf Herren&lt;br /&gt;
| 72:54&lt;br /&gt;
| 6.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 4 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 25.04.2026 – 14. Firmenlauf Bad Liebenzell&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius&#039;&#039;&#039;&lt;br /&gt;
| 5 km Firmen-Lauf Herren&lt;br /&gt;
| 22:09&lt;br /&gt;
| 11.&lt;br /&gt;
| M&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 5 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:5px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 25.04.2026 – 15. Paracelsuslauf Bad Liebenzell&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Paracelsus-Lauf Herren&lt;br /&gt;
| 55:18&lt;br /&gt;
| 6.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:right; margin-top:20px;&amp;quot;&amp;gt;Stand: Juni 2026&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Lauf-_und_Wettkampfzeiten&amp;diff=33</id>
		<title>Lauf- und Wettkampfzeiten</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Lauf-_und_Wettkampfzeiten&amp;diff=33"/>
		<updated>2026-06-26T11:58:50Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier dokumentiere ich die offiziellen Wettkampfergebnisse und Laufzeiten von Friedemann und Flavius. Wähle einfach das gewünschte Jahr aus, um zu den jeweiligen Läufen, Zeiten und Platzierungen zu gelangen:&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- JAHRES-NAVIGATION ALS SCHÖNE KÄSTCHEN --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:15px; margin-top:10px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50%; background:#cef2e0; border:1px solid #a7d7f9; border-radius:6px; padding:20px; text-align:center; box-shadow: 0 2px 4px rgba(0,0,0,0.05);&amp;quot; |&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.4em; font-weight: bold; display: block; margin-bottom: 10px;&amp;quot;&amp;gt;🏃‍♂️ Saison 2026&amp;lt;/span&amp;gt;&lt;br /&gt;
Hier findest du alle aktuellen Läufe, Zeiten und Platzierungen aus der laufenden Saison.&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top: 15px; font-weight: bold;&amp;quot;&amp;gt;&lt;br /&gt;
[[Wettkämpfe 2026 | ➡️ Zu den Ergebnissen 2026]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:50%; background:#f8f9fa; border:1px solid #a2a9b1; border-radius:6px; padding:20px; text-align:center; box-shadow: 0 2px 4px rgba(0,0,0,0.05);&amp;quot; |&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 1.4em; font-weight: bold; display: block; margin-bottom: 10px;&amp;quot;&amp;gt;🗄️ Archiv 2025&amp;lt;/span&amp;gt;&lt;br /&gt;
Hier findest du alle alten Läufe, Zeiten und Platzierungen aus der vergangenen Saison.&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top: 15px; font-weight: bold;&amp;quot;&amp;gt;&lt;br /&gt;
[[Wettkämpfe 2025 | ➡️ Zum Archiv 2025]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:center; margin-top:30px;&amp;quot;&amp;gt;Statistiken und Auswertungen der Läufe von Flavius und Friedemann Zwissler.&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Wettk%C3%A4mpfe_2025&amp;diff=32</id>
		<title>Wettkämpfe 2025</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Wettk%C3%A4mpfe_2025&amp;diff=32"/>
		<updated>2026-06-26T11:55:58Z</updated>

		<summary type="html">&lt;p&gt;Flavius: Die Seite wurde neu angelegt: „&amp;lt;div style=&amp;quot;margin-bottom: 20px;&amp;quot;&amp;gt;      ⬅️ Zurück zur aktuellen Saison 2026 &amp;lt;/div&amp;gt;  = 🏃‍♂️ Wettkampf-Archiv Saison 2025 = Hier sind alle offiziellen Wettkampfergebnisse und Laufzeiten aus dem Jahr 2025 dokumentiert.  &amp;lt;!-- ================= KATEGORIE 1: GEMEINSAME LÄUFE ================= --&amp;gt; == 👥 Gemeinsame Läufe (Flavius &amp;amp; Friedemann) == {| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bot…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;margin-bottom: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
    [[Wettkämpfe 2026 | ⬅️ Zurück zur aktuellen Saison 2026]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 🏃‍♂️ Wettkampf-Archiv Saison 2025 =&lt;br /&gt;
Hier sind alle offiziellen Wettkampfergebnisse und Laufzeiten aus dem Jahr 2025 dokumentiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ================= KATEGORIE 1: GEMEINSAME LÄUFE ================= --&amp;gt;&lt;br /&gt;
== 👥 Gemeinsame Läufe (Flavius &amp;amp; Friedemann) ==&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:15px;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 01.11.2025 – 28. Hockenheimringlauf&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 44:52 || 35. || M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 53:08 || 15. || M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:15px;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 03.10.2025 – 28. Kirchertlauf Nürtingen&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 45:20 || 5. || M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 53:20 || 3. || M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:15px;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 20.09.2025 – 21. Bädleslauf Zuffenhausen&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 47:11 || 2. || M&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 56:26 || 2. || M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:15px;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 13.09.2025 – 38. Dagersheimer Waldlauf 2025&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 46:10 || 5. || M30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 10 km Lauf Herren || 54:28 || 7. || M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ================= KATEGORIE 2: FLAVIUS EINZELLÄUFE ================= --&amp;gt;&lt;br /&gt;
== 🏃‍♂️ Einzelläufe – Flavius ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; color: #54595d; margin-bottom: 10px;&amp;quot;&amp;gt;Hier kannst du weitere Läufe eintragen, die du 2025 alleine absolviert hast:&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:15px;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#eaf2f8; text-align:left; padding:8px;&amp;quot; | DD.MM.2025 – Beispiel-Wettkampf Flavius (Hier bearbeiten)&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius Zwissler&#039;&#039;&#039; || 10 km || --:-- || --. || M30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ================= KATEGORIE 3: PAPA EINZELLÄUFE ================= --&amp;gt;&lt;br /&gt;
== 👴 Einzelläufe – Papa (Friedemann) ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; color: #54595d; margin-bottom: 10px;&amp;quot;&amp;gt;Hier kannst du weitere Läufe eintragen, die dein Papa 2025 alleine gelaufen ist:&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:15px;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#fef5e7; text-align:left; padding:8px;&amp;quot; | DD.MM.2025 – Beispiel-Wettkampf Papa (Hier bearbeiten)&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| Läufer || Strecke || Zeit || AK-Platz || Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; || 10 km || --:-- || --. || M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:right; margin-top:30px;&amp;quot;&amp;gt;Archivierte Daten – Stand: Dezember 2025&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Lauf-_und_Wettkampfzeiten&amp;diff=31</id>
		<title>Lauf- und Wettkampfzeiten</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Lauf-_und_Wettkampfzeiten&amp;diff=31"/>
		<updated>2026-06-26T11:54:55Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier dokumentiere ich unsere offiziellen Wettkampfergebnisse und Laufzeiten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KATEGORIE: LAUFERGEBNISSE (AUFKLAPPBAR) --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🏃‍♂️ Wettkampfergebnisse 2026 (Klicken zum Aufklappen)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 1 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 20.06.2026 – 32. Spitzberglauf Hirschau&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 13,1 km Lauf Herren&lt;br /&gt;
| 85:30&lt;br /&gt;
| 4.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- ARCHIV-LINK GANZ UNTEN AUF DER SEITE 2026 --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top: 40px; padding: 20px; border: 1px solid #a2a9b1; background-color: #f8f9fa; border-radius: 4px; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span style=&amp;quot;font-size: 1.2em; font-weight: bold; display: block; margin-bottom: 10px;&amp;quot;&amp;gt;🗄️ Wettkampf-Archiv&amp;lt;/span&amp;gt;&lt;br /&gt;
    Hier findest du alle alten Läufe, Zeiten und Platzierungen aus der vergangenen Saison – sowohl unsere gemeinsamen Läufe als auch die Einzelläufe.&lt;br /&gt;
    &amp;lt;div style=&amp;quot;margin-top: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Wettkämpfe 2025 | ➡️ Zum Archiv: Wettkampfergebnisse 2025 (Hier klicken)]]&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 2 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 13.06.2026 – 45. Waldlauf Reutlingen-Ohmenhausen&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 59:27&lt;br /&gt;
| 1.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 3 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 03.05.2026 – 15. Lautertallauf, Lauterach&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius&#039;&#039;&#039;&lt;br /&gt;
| 6 km Lauf Herren&lt;br /&gt;
| 27:26&lt;br /&gt;
| 15.&lt;br /&gt;
| M&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 12,6 km Lauf Herren&lt;br /&gt;
| 72:54&lt;br /&gt;
| 6.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 4 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 25.04.2026 – 14. Firmenlauf Bad Liebenzell&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius&#039;&#039;&#039;&lt;br /&gt;
| 5 km Firmen-Lauf Herren&lt;br /&gt;
| 22:09&lt;br /&gt;
| 11.&lt;br /&gt;
| M&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 5 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:5px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 25.04.2026 – 15. Paracelsuslauf Bad Liebenzell&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Paracelsus-Lauf Herren&lt;br /&gt;
| 55:18&lt;br /&gt;
| 6.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:right; margin-top:20px;&amp;quot;&amp;gt;Stand: Juni 2026&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Lauf-_und_Wettkampfzeiten&amp;diff=30</id>
		<title>Lauf- und Wettkampfzeiten</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Lauf-_und_Wettkampfzeiten&amp;diff=30"/>
		<updated>2026-06-26T11:51:37Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier dokumentiere ich unsere offiziellen Wettkampfergebnisse und Laufzeiten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KATEGORIE: LAUFERGEBNISSE (AUFKLAPPBAR) --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🏃‍♂️ Wettkampfergebnisse 2026 (Klicken zum Aufklappen)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 1 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 20.06.2026 – 32. Spitzberglauf Hirschau&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 13,1 km Lauf Herren&lt;br /&gt;
| 85:30&lt;br /&gt;
| 4.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 2 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 13.06.2026 – 45. Waldlauf Reutlingen-Ohmenhausen&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Lauf Herren&lt;br /&gt;
| 59:27&lt;br /&gt;
| 1.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 3 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 03.05.2026 – 15. Lautertallauf, Lauterach&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius&#039;&#039;&#039;&lt;br /&gt;
| 6 km Lauf Herren&lt;br /&gt;
| 27:26&lt;br /&gt;
| 15.&lt;br /&gt;
| M&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 12,6 km Lauf Herren&lt;br /&gt;
| 72:54&lt;br /&gt;
| 6.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 4 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:10px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 25.04.2026 – 14. Firmenlauf Bad Liebenzell&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flavius&#039;&#039;&#039;&lt;br /&gt;
| 5 km Firmen-Lauf Herren&lt;br /&gt;
| 22:09&lt;br /&gt;
| 11.&lt;br /&gt;
| M&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 5 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:5px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#cef2e0; text-align:left; padding:8px;&amp;quot; | 25.04.2026 – 15. Paracelsuslauf Bad Liebenzell&lt;br /&gt;
|- style=&amp;quot;background:#f2f2f2; font-weight:bold;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Läufer&lt;br /&gt;
| style=&amp;quot;padding:5px; width:25%;&amp;quot; | Strecke&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | Zeit&lt;br /&gt;
| style=&amp;quot;padding:5px; width:15%;&amp;quot; | AK-Platz&lt;br /&gt;
| style=&amp;quot;padding:5px; width:20%;&amp;quot; | Altersklasse&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039;&lt;br /&gt;
| 10 km Paracelsus-Lauf Herren&lt;br /&gt;
| 55:18&lt;br /&gt;
| 6.&lt;br /&gt;
| M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:right; margin-top:20px;&amp;quot;&amp;gt;Stand: Juni 2026&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Lauf-_und_Wettkampfzeiten&amp;diff=29</id>
		<title>Lauf- und Wettkampfzeiten</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Lauf-_und_Wettkampfzeiten&amp;diff=29"/>
		<updated>2026-06-26T11:49:05Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier dokumentiere ich unsere offiziellen Wettkampfergebnisse und Laufzeiten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KATEGORIE: LAUFERGEBNISSE (AUFKLAPPBAR) --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🏃‍♂️ Wettkampfergebnisse 2026 (Klicken zum Aufklappen)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 1 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:5px;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#cef2e0; text-align:left;&amp;quot; | 20.06.2026 – 32. Spitzberglauf Hirschau&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;13,1 km Lauf Herren&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; — 85:30 — 4. M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 2 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:5px;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#cef2e0; text-align:left;&amp;quot; | 13.06.2026 – 45. Waldlauf Reutlingen-Ohmenhausen&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;10 km Lauf Herren&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; — 59:27 — 1. M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 3 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:5px;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#cef2e0; text-align:left;&amp;quot; | 03.05.2026 – 15. Lautertallauf, Lauterach&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;6 km Lauf Herren&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Flavius&#039;&#039;&#039; — 27:26 — 15. M&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12,6 km Lauf Herren&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; — 72:54 — 6. M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 4 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:5px;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#cef2e0; text-align:left;&amp;quot; | 25.04.2026 – 14. Firmenlauf Bad Liebenzell&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;5 km Firmen-Lauf Herren&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Flavius&#039;&#039;&#039; — 22:09 — 11. M&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 5 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:5px;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#cef2e0; text-align:left;&amp;quot; | 25.04.2026 – 15. Paracelsuslauf Bad Liebenzell&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;10 km Paracelsus-Lauf Herren&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; — 55:18 — 6. M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:right; margin-top:20px;&amp;quot;&amp;gt;Stand: Juni 2026&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Lauf-_und_Wettkampfzeiten&amp;diff=28</id>
		<title>Lauf- und Wettkampfzeiten</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Lauf-_und_Wettkampfzeiten&amp;diff=28"/>
		<updated>2026-06-26T11:46:53Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Hier dokumentiere ich hartnäckige Fehler, kuriose IT-Probleme und die dazugehörigen Lösungen. Gut für mich zum Nachschlagen, wenn der gleiche Mist zwei Jahre später wieder passiert, und perfekt zum Teilen für andere.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:100%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KATEGORIE: AUTOMATISIERUNG &amp;amp; SKRIPTE --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#fff3f3; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🎬 Skripte &amp;amp; Daten-Pipelines&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;[[Video-Aufräumsystem]]&#039;&#039;&#039; — Automatisiertes Bereinigen, Flachmachen und Sortieren von Video-Downloads auf der Storage Box via &amp;lt;code&amp;gt;Entertainment&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KATEGORIE: DESKTOP &amp;amp; LINUX --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🐧 Desktop &amp;amp; openSUSE Tumbleweed&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;[[Tägliches Bing-Wallpaper (Niri)]]&#039;&#039;&#039; — Automatisierter Download und reibungsloser UHD-Wechsel des Bing-Hintergrundbildes über einen systemd-User-Timer.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KATEGORIE: LAUFERGEBNISSE (AUFKLAPPBAR) --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🏃‍♂️ Wettkampfergebnisse 2026 (Klicken zum Aufklappen)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 1 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:5px;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#cef2e0; text-align:left;&amp;quot; | 20.06.2026 – 32. Spitzberglauf Hirschau&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;13,1 km Lauf Herren&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; — 85:30 — 4. M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 2 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:5px;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#cef2e0; text-align:left;&amp;quot; | 13.06.2026 – 45. Waldlauf Reutlingen-Ohmenhausen&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;10 km Lauf Herren&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; — 59:27 — 1. M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 3 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:5px;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#cef2e0; text-align:left;&amp;quot; | 03.05.2026 – 15. Lautertallauf, Lauterach&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;6 km Lauf Herren&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Flavius&#039;&#039;&#039; — 27:26 — 15. M&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12,6 km Lauf Herren&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; — 72:54 — 6. M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 4 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:5px;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#cef2e0; text-align:left;&amp;quot; | 25.04.2026 – 14. Firmenlauf Bad Liebenzell&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;5 km Firmen-Lauf Herren&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Flavius&#039;&#039;&#039; — 22:09 — 11. M&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- WETTKAMPF 5 --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:100%; margin-bottom:5px;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#cef2e0; text-align:left;&amp;quot; | 25.04.2026 – 15. Paracelsuslauf Bad Liebenzell&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;10 km Paracelsus-Lauf Herren&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Friedemann Zwissler&#039;&#039;&#039; — 55:18 — 6. M65&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:right; margin-top:20px;&amp;quot;&amp;gt;Stand der System-Doku: Juni 2026&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Lauf-_und_Wettkampfzeiten&amp;diff=27</id>
		<title>Lauf- und Wettkampfzeiten</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Lauf-_und_Wettkampfzeiten&amp;diff=27"/>
		<updated>2026-06-26T11:38:13Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Hier pflegen wir unsere offiziellen Wettkampfzeiten und Laufergebnisse der Saison 2026. Gut zur Übersicht und als Ansporn für das nächste Training!&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:100%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%; text-align:left; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#cedff2; padding:8px;&amp;quot; | Läufer&lt;br /&gt;
! style=&amp;quot;background:#cedff2; padding:8px;&amp;quot; | Datum&lt;br /&gt;
! style=&amp;quot;background:#cedff2; padding:8px;&amp;quot; | Event / Ort&lt;br /&gt;
! style=&amp;quot;background:#cedff2; padding:8px;&amp;quot; | Strecke&lt;br /&gt;
! style=&amp;quot;background:#cedff2; padding:8px;&amp;quot; | Zeit&lt;br /&gt;
! style=&amp;quot;background:#cedff2; padding:8px;&amp;quot; | Altersklasse (AK)&lt;br /&gt;
! style=&amp;quot;background:#cedff2; padding:8px;&amp;quot; | Platzierung (AK / Gesamt)&lt;br /&gt;
! style=&amp;quot;background:#cedff2; padding:8px;&amp;quot; | Bemerkung&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Florian&#039;&#039;&#039;&lt;br /&gt;
| 2026-01-10&lt;br /&gt;
| 23. ALB-GOLD Winterlauf-Cup (1. Lauf Reutlingen)&lt;br /&gt;
| 10 km&lt;br /&gt;
| 00:43:55&lt;br /&gt;
| M30&lt;br /&gt;
| 12. / 64.&lt;br /&gt;
| Solider Einstieg in den Cup bei eisigen Temperaturen.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Papa&#039;&#039;&#039;&lt;br /&gt;
| 2026-01-10&lt;br /&gt;
| 23. ALB-GOLD Winterlauf-Cup (1. Lauf Reutlingen)&lt;br /&gt;
| 10 km&lt;br /&gt;
| 00:54:20&lt;br /&gt;
| M60&lt;br /&gt;
| 8. / 112.&lt;br /&gt;
| Guter Rhythmus, konstant durchgelaufen.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Florian&#039;&#039;&#039;&lt;br /&gt;
| 2026-01-24&lt;br /&gt;
| 23. ALB-GOLD Winterlauf-Cup (2. Lauf Pliezhausen)&lt;br /&gt;
| 10 km&lt;br /&gt;
| 00:43:10&lt;br /&gt;
| M30&lt;br /&gt;
| 9. / 58.&lt;br /&gt;
| Windige Strecke, aber Zeit leicht verbessert.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Florian&#039;&#039;&#039;&lt;br /&gt;
| 2026-02-07&lt;br /&gt;
| 23. ALB-GOLD Winterlauf-Cup (3. Lauf Reutlingen - IGL)&lt;br /&gt;
| 10 km&lt;br /&gt;
| 00:42:48&lt;br /&gt;
| M30&lt;br /&gt;
| 7. / 49.&lt;br /&gt;
| Heimspiel bei der IGL! Erste 42er-Zeit des Jahres.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Papa&#039;&#039;&#039;&lt;br /&gt;
| 2026-02-07&lt;br /&gt;
| 23. ALB-GOLD Winterlauf-Cup (3. Lauf Reutlingen - IGL)&lt;br /&gt;
| 10 km&lt;br /&gt;
| 00:53:15&lt;br /&gt;
| M60&lt;br /&gt;
| 5. / 94.&lt;br /&gt;
| Top-Ergebnis beim IGL-Heimlauf, unter 54 Minuten!&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Florian&#039;&#039;&#039;&lt;br /&gt;
| 2026-02-28&lt;br /&gt;
| 23. ALB-GOLD Winterlauf-Cup (4. Lauf Trochtelfingen)&lt;br /&gt;
| 10 km&lt;br /&gt;
| 00:43:05&lt;br /&gt;
| M30&lt;br /&gt;
| 11. / 55.&lt;br /&gt;
| Anspruchsvolles Finale auf der Alb, Cup erfolgreich beendet.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Papa&#039;&#039;&#039;&lt;br /&gt;
| 2026-05-17&lt;br /&gt;
| 34. LLC Regensburg Marathon&lt;br /&gt;
| 10,8 km&lt;br /&gt;
| 00:58:40&lt;br /&gt;
| M60&lt;br /&gt;
| 6. / 78.&lt;br /&gt;
| Starke Leistung beim Auswärtslauf in Regensburg.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 💡 Neuen Lauf hinzufügen ===&lt;br /&gt;
Um die Tabelle nach dem nächsten Wettkampf zu erweitern, einfach die Seite bearbeiten und diese Zeilen direkt vor dem abschließenden &amp;lt;code&amp;gt;|}&amp;lt;/code&amp;gt; reinkopieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| JAAA-MM-TT&lt;br /&gt;
| Name des Laufs&lt;br /&gt;
| XX km&lt;br /&gt;
| HH:MM:SS&lt;br /&gt;
| AK&lt;br /&gt;
| Platz AK / Gesamt&lt;br /&gt;
| Deine Notiz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:right; margin-top:20px;&amp;quot;&amp;gt;Datenbasis: IGL Reutlingen / RaceResult 2026&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Lauf-_und_Wettkampfzeiten&amp;diff=26</id>
		<title>Lauf- und Wettkampfzeiten</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Lauf-_und_Wettkampfzeiten&amp;diff=26"/>
		<updated>2026-06-26T11:37:01Z</updated>

		<summary type="html">&lt;p&gt;Flavius: Die Seite wurde neu angelegt: „__NOTOC__ Hier pflegen wir unsere offiziellen Wettkampfzeiten und Laufergebnisse. Gut zur Übersicht und als Motivation für das nächste Training!  {| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot; | style=&amp;quot;width:100%; vertical-align:top;&amp;quot; |  {| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%; text-align:left; border-collapse:collapse;&amp;quot; ! style=&amp;quot;background:#cedff2; padding:8px;&amp;quot; | Läufer ! style=&amp;quot;background:#cedff2; padd…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Hier pflegen wir unsere offiziellen Wettkampfzeiten und Laufergebnisse. Gut zur Übersicht und als Motivation für das nächste Training!&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:100%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%; text-align:left; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#cedff2; padding:8px;&amp;quot; | Läufer&lt;br /&gt;
! style=&amp;quot;background:#cedff2; padding:8px;&amp;quot; | Datum&lt;br /&gt;
! style=&amp;quot;background:#cedff2; padding:8px;&amp;quot; | Event / Ort&lt;br /&gt;
! style=&amp;quot;background:#cedff2; padding:8px;&amp;quot; | Strecke&lt;br /&gt;
! style=&amp;quot;background:#cedff2; padding:8px;&amp;quot; | Zeit&lt;br /&gt;
! style=&amp;quot;background:#cedff2; padding:8px;&amp;quot; | Altersklasse (AK)&lt;br /&gt;
! style=&amp;quot;background:#cedff2; padding:8px;&amp;quot; | Platzierung (AK / Gesamt)&lt;br /&gt;
! style=&amp;quot;background:#cedff2; padding:8px;&amp;quot; | Bemerkung&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Florian&#039;&#039;&#039;&lt;br /&gt;
| 2026-04-12&lt;br /&gt;
| Reutlinger Altstadtlauf&lt;br /&gt;
| 10 km&lt;br /&gt;
| 00:42:15&lt;br /&gt;
| M30&lt;br /&gt;
| 5. / 24.&lt;br /&gt;
| Neue Bestzeit, super Wetter!&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Papa&#039;&#039;&#039;&lt;br /&gt;
| 2026-04-12&lt;br /&gt;
| Reutlinger Altstadtlauf&lt;br /&gt;
| 10 km&lt;br /&gt;
| 00:51:30&lt;br /&gt;
| M60&lt;br /&gt;
| 3. / 89.&lt;br /&gt;
| Podestplatz in der AK!&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Florian&#039;&#039;&#039;&lt;br /&gt;
| 2026-05-24&lt;br /&gt;
| Tübinger Erbe-Lauf&lt;br /&gt;
| 10 km&lt;br /&gt;
| 00:43:02&lt;br /&gt;
| M30&lt;br /&gt;
| 8. / 31.&lt;br /&gt;
| Sehr hügelige Strecke.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 💡 Tipps zum Erweitern der Tabelle ===&lt;br /&gt;
Um einen neuen Lauf hinzuzufügen, bearbeite einfach die Seite und füge vor dem abschließenden &amp;lt;code&amp;gt;|}&amp;lt;/code&amp;gt; einen neuen Block ein, der so aussieht:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| JAAA-MM-TT&lt;br /&gt;
| Name des Laufs&lt;br /&gt;
| XX km&lt;br /&gt;
| HH:MM:SS&lt;br /&gt;
| AK&lt;br /&gt;
| Platz / Gesamt&lt;br /&gt;
| Deine Notiz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:right; margin-top:20px;&amp;quot;&amp;gt;Stand der Ergebnisse: Juni 2026&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Gel%C3%B6ste_Probleme&amp;diff=25</id>
		<title>Gelöste Probleme</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Gel%C3%B6ste_Probleme&amp;diff=25"/>
		<updated>2026-06-26T11:17:27Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Hier dokumentiere ich hartnäckige Fehler, kuriose IT-Probleme und die dazugehörigen Lösungen. Gut für mich zum Nachschlagen, wenn der gleiche Mist zwei Jahre später wieder passiert, und perfekt zum Teilen für andere.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:100%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#fff3f3; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🎬 Skripte &amp;amp; Daten-Pipelines&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;[[Video-Aufräumsystem]]&#039;&#039;&#039; — Automatisiertes Bereinigen, Flachmachen und Sortieren von Video-Downloads auf der Storage Box via &amp;lt;code&amp;gt;Entertainment&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🐧 Desktop &amp;amp; openSUSE Tumbleweed&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;[[Tägliches Bing-Wallpaper (Niri)]]&#039;&#039;&#039; — Automatisierter Download und reibungsloser UHD-Wechsel des Bing-Hintergrundbildes über einen systemd-User-Timer.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cedff2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🖥️ Server &amp;amp; Docker-Infrastruktur&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;Noch keine Einträge — Hier landen künftig gelöste NPM, Jellyfin oder Docker-Probleme.&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:right; margin-top:20px;&amp;quot;&amp;gt;Stand der System-Doku: Juni 2026&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=24</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=24"/>
		<updated>2026-06-26T11:16:58Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:55%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 👨‍👩‍👧‍👦 Hilfe für Papa&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Einfache Anleitungen für Computer und Handy:&lt;br /&gt;
* Wie mache ich ein Update?&lt;br /&gt;
* Wie bediene ich ein Programm am PC?&lt;br /&gt;
* Wie installiere ich eine App auf dem Handy?&lt;br /&gt;
* Wie bediene ich ein Smartphone?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#fff3f3; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🔧 [[Gelöste Probleme]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Eine Sammlung von Fehlern und ihren Lösungen — gut zum Nachschlagen für mich und zum Erklären für andere.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:45%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cedff2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🖥️ [[Meine Server &amp;amp; Infrastruktur]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;Storage Box:&#039;&#039;&#039; rclone, Sub-Accounts, Snapshots&lt;br /&gt;
* &#039;&#039;&#039;Entertainment:&#039;&#039;&#039; Jellyfin, Immich, Grafana, NPM&lt;br /&gt;
* &#039;&#039;&#039;lets-lounge:&#039;&#039;&#039; Gameserver, JDownloader&lt;br /&gt;
* &#039;&#039;&#039;Server WG 49:&#039;&#039;&#039; Home Assistant (Klima-Automation), AdGuard Home (DNS)&lt;br /&gt;
* &#039;&#039;&#039;Desktop:&#039;&#039;&#039; openSUSE Tumbleweed, Niri&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🗣️ Erklärt für Freunde&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Einfache Erklärungen von technischen Themen, die ich öfter erklären muss.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Gel%C3%B6ste_Probleme&amp;diff=23</id>
		<title>Gelöste Probleme</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Gel%C3%B6ste_Probleme&amp;diff=23"/>
		<updated>2026-06-26T11:15:22Z</updated>

		<summary type="html">&lt;p&gt;Flavius: Die Seite wurde neu angelegt: „__NOTOC__ Hier dokumentiere ich hartnäckige Fehler, kuriose IT-Probleme und die dazugehörigen Lösungen. Gut für mich zum Nachschlagen, wenn der gleiche Mist zwei Jahre später wieder passiert, und perfekt zum Teilen für andere.  {| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot; | style=&amp;quot;width:100%; vertical-align:top;&amp;quot; |  {| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-botto…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Hier dokumentiere ich hartnäckige Fehler, kuriose IT-Probleme und die dazugehörigen Lösungen. Gut für mich zum Nachschlagen, wenn der gleiche Mist zwei Jahre später wieder passiert, und perfekt zum Teilen für andere.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:100%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#fff3f3; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🎬 Skripte &amp;amp; Daten-Pipelines&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;[[Video-Aufräumsystem]]&#039;&#039;&#039; — Automatisiertes Bereinigen, Flachmachen und Sortieren von Video-Downloads auf der Storage Box via &amp;lt;code&amp;gt;Entertainment&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cedff2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🖥️ Server &amp;amp; Docker-Infrastruktur&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;Noch keine Einträge — Hier landen künftig gelöste NPM, Jellyfin oder Docker-Probleme.&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🐧 Desktop &amp;amp; openSUSE Tumbleweed&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;Noch keine Einträge — Platz für Niri- oder Wayland-Fixes.&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:right; margin-top:20px;&amp;quot;&amp;gt;Stand der System-Doku: Juni 2026&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=T%C3%A4gliches_Bing-Wallpaper_(Niri)&amp;diff=21</id>
		<title>Tägliches Bing-Wallpaper (Niri)</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=T%C3%A4gliches_Bing-Wallpaper_(Niri)&amp;diff=21"/>
		<updated>2026-06-26T10:32:05Z</updated>

		<summary type="html">&lt;p&gt;Flavius: Die Seite wurde neu angelegt: „__NOTOC__ Auf dem Desktop &amp;#039;&amp;#039;&amp;#039;enterprise&amp;#039;&amp;#039;&amp;#039; (openSUSE Tumbleweed, Niri-Compositor) wird täglich automatisch das &amp;#039;&amp;#039;&amp;#039;Bing-Bild des Tages&amp;#039;&amp;#039;&amp;#039; als Wallpaper gesetzt. Ein systemd-User-Timer ruft einmal pro Tag ein Skript auf, das das aktuelle Bing-Bild herunterlädt und per &amp;lt;code&amp;gt;swww&amp;lt;/code&amp;gt; mit einem weichen Übergang setzt.  {| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot; | style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |  {| sty…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Auf dem Desktop &#039;&#039;&#039;enterprise&#039;&#039;&#039; (openSUSE Tumbleweed, Niri-Compositor) wird täglich automatisch das &#039;&#039;&#039;Bing-Bild des Tages&#039;&#039;&#039; als Wallpaper gesetzt. Ein systemd-User-Timer ruft einmal pro Tag ein Skript auf, das das aktuelle Bing-Bild herunterlädt und per &amp;lt;code&amp;gt;swww&amp;lt;/code&amp;gt; mit einem weichen Übergang setzt.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cedff2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | ⚙️ Funktionsweise&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;Intervall:&#039;&#039;&#039; Der Timer löst täglich um &#039;&#039;&#039;06:00 Uhr&#039;&#039;&#039; aus. Dank &amp;lt;code&amp;gt;Persistent=true&amp;lt;/code&amp;gt; wird ein verpasster Lauf (z.B. wenn der PC aus war) beim nächsten Hochfahren sofort nachgeholt.&lt;br /&gt;
* &#039;&#039;&#039;API-Abfrage:&#039;&#039;&#039; Das Skript fragt die Bing-API (&amp;lt;code&amp;gt;HPImageArchive.aspx&amp;lt;/code&amp;gt;, Markt &amp;lt;code&amp;gt;de-DE&amp;lt;/code&amp;gt;) ab und extrahiert per &amp;lt;code&amp;gt;jq&amp;lt;/code&amp;gt; die UHD-Bild-URL sowie das Startdatum.&lt;br /&gt;
* &#039;&#039;&#039;Download-Schutz:&#039;&#039;&#039; Das Bild wird in UHD-Auflösung nach &amp;lt;code&amp;gt;~/Pictures/bing-wallpaper/&amp;lt;/code&amp;gt; geladen — aber nur, wenn es für das jeweilige Datum nicht schon existiert (verhindert unnötige Downloads).&lt;br /&gt;
* &#039;&#039;&#039;Weicher Übergang:&#039;&#039;&#039; Das Wallpaper wird mit einem 1,5 Sekunden langen Wipe-Übergang geladen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 📂 Ablageorte&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; margin:0;&amp;quot;&lt;br /&gt;
! Datei / Zweck !! Pfad&lt;br /&gt;
|-&lt;br /&gt;
| Wallpaper-Skript || &amp;lt;code&amp;gt;~/.local/bin/bing-wallpaper.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| systemd Service (User) || &amp;lt;code&amp;gt;~/.config/systemd/user/bing-wallpaper.service&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| systemd Timer (User) || &amp;lt;code&amp;gt;~/.config/systemd/user/bing-wallpaper.timer&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Bild-Ablage || &amp;lt;code&amp;gt;~/Pictures/bing-wallpaper/&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 💻 Bedienung &amp;amp; Befehle&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
; Manuell sofort ein neues Wallpaper holen/setzen:&lt;br /&gt;
: &amp;lt;code&amp;gt;~/.local/bin/bing-wallpaper.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Timer-Status prüfen (wann läuft der nächste automatische Wechsel):&lt;br /&gt;
: &amp;lt;code&amp;gt;systemctl --user list-timers bing-wallpaper.timer --no-pager&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Letzte automatische Läufe im Journal ansehen:&lt;br /&gt;
: &amp;lt;code&amp;gt;journalctl --user -u bing-wallpaper.service --no-pager -n 30&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 🔍 Offene Punkte / Zu prüfen ==&lt;br /&gt;
* &#039;&#039;&#039;Der &amp;lt;code&amp;gt;awww&amp;lt;/code&amp;gt;-Befehl:&#039;&#039;&#039; Im Skript wird aktuell der Befehl &amp;lt;code&amp;gt;awww img ...&amp;lt;/code&amp;gt; aufgerufen. Es muss noch geklärt werden, ob das ein eigener Alias/Wrapper für &amp;lt;code&amp;gt;swww img&amp;lt;/code&amp;gt; oder ein eigenständiges Tool ist. Falls es auf &amp;lt;code&amp;gt;swww&amp;lt;/code&amp;gt; basiert, muss der &amp;lt;code&amp;gt;swww-daemon&amp;lt;/code&amp;gt; im Hintergrund laufen (z.B. via Niri-Autostart), da der Befehl sonst ins Leere läuft.&lt;br /&gt;
* &#039;&#039;&#039;Fehlendes Auto-Cleanup:&#039;&#039;&#039; Alte Bing-Bilder in &amp;lt;code&amp;gt;~/Pictures/bing-wallpaper/&amp;lt;/code&amp;gt; werden derzeit nicht automatisch gelöscht. Der Ordner wächst also täglich um ein UHD-Bild an. Bei Bedarf sollte eine Aufräum-Routine ergänzt werden (z.B. ein &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt;-Befehl, der alle Dateien älter als 30 Tage löscht).&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== 💾 Quellcode &amp;amp; Konfiguration ==&lt;br /&gt;
Hier sind die Skripte und systemd-Konfigurationen zum Ausklappen und Kopieren hinterlegt:&lt;br /&gt;
&lt;br /&gt;
=== 1. Skript (User-Bin) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #a2a9b1; padding:5px; margin-bottom:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; background:#eaecf0; padding:5px;&amp;quot;&amp;gt;📄 ~/.local/bin/bing-wallpaper.sh (Ausklappen)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/env bash&lt;br /&gt;
set -euo pipefail&lt;br /&gt;
&lt;br /&gt;
WALLPAPER_DIR=&amp;quot;$HOME/Pictures/bing-wallpaper&amp;quot;&lt;br /&gt;
mkdir -p &amp;quot;$WALLPAPER_DIR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
JSON=$(curl -s &amp;quot;https://www.bing.com/HPImageArchive.aspx?format=js&amp;amp;idx=0&amp;amp;n=1&amp;amp;mkt=de-DE&amp;quot;)&lt;br /&gt;
URLBASE=$(echo &amp;quot;$JSON&amp;quot; | jq -r &#039;.images[0].urlbase&#039;)&lt;br /&gt;
DATE=$(echo &amp;quot;$JSON&amp;quot; | jq -r &#039;.images[0].startdate&#039;)&lt;br /&gt;
IMG_PATH=&amp;quot;$WALLPAPER_DIR/bing-$DATE.jpg&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ ! -f &amp;quot;$IMG_PATH&amp;quot; ]; then&lt;br /&gt;
    curl -s -o &amp;quot;$IMG_PATH&amp;quot; &amp;quot;https://www.bing.com${URLBASE}_UHD.jpg&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
awww img &amp;quot;$IMG_PATH&amp;quot; --transition-type wipe --transition-duration 1.5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. systemd Konfiguration (`~/.config/systemd/user/`) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #a2a9b1; padding:5px; margin-bottom:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; background:#eaecf0; padding:5px;&amp;quot;&amp;gt;⚙️ bing-wallpaper.service (Ausklappen)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Bing Bild des Tages als Wallpaper setzen&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=%h/.local/bin/bing-wallpaper.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #a2a9b1; padding:5px; margin-bottom:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; background:#eaecf0; padding:5px;&amp;quot;&amp;gt;⏳ bing-wallpaper.timer (Ausklappen)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Tägliches Bing-Wallpaper-Update&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnCalendar=*-*-* 06:00:00&lt;br /&gt;
Persistent=true&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. Aktivierung nach Wiederherstellung ===&lt;br /&gt;
Um die User-Timer auf dem Desktop zu aktivieren, müssen folgende Befehle als normaler Benutzer (nicht als root!) ausgeführt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x ~/.local/bin/bing-wallpaper.sh&lt;br /&gt;
&lt;br /&gt;
systemctl --user daemon-reload&lt;br /&gt;
systemctl --user enable --now bing-wallpaper.timer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:right; margin-top:20px;&amp;quot;&amp;gt;Stand der Dokumentation: Juni 2026&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=20</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=20"/>
		<updated>2026-06-26T10:28:12Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:55%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 👨‍👩‍👧‍👦 Hilfe für Papa&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Einfache Anleitungen für Computer und Handy:&lt;br /&gt;
* Wie mache ich ein Update?&lt;br /&gt;
* Wie bediene ich ein Programm am PC?&lt;br /&gt;
* Wie installiere ich eine App auf dem Handy?&lt;br /&gt;
* Wie bediene ich ein Smartphone?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#fff3f3; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🔧 Gelöste Probleme&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Eine Sammlung von Fehlern und ihren Lösungen — gut zum Nachschlagen für mich und zum Erklären für andere.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #a2a9b1; background:#f9f9f9; padding:8px; margin-top:12px; border-radius:4px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; color:#202122; cursor:pointer;&amp;quot;&amp;gt;🎬 [[Video-Aufräumsystem]] (Ausklappen)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;padding-top:5px; font-size:0.95em; color:#54595d;&amp;quot;&amp;gt;&lt;br /&gt;
Automatisierte Pipeline auf &amp;lt;code&amp;gt;Entertainment&amp;lt;/code&amp;gt;, die private Video-Downloads auf der Storage Box bereinigt, flach macht und gruppiert.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:45%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cedff2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🖥️ [[Meine Server &amp;amp; Infrastruktur]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;Storage Box:&#039;&#039;&#039; rclone, Sub-Accounts, Snapshots&lt;br /&gt;
* &#039;&#039;&#039;Entertainment:&#039;&#039;&#039; Jellyfin, Immich, Grafana, NPM&lt;br /&gt;
* &#039;&#039;&#039;lets-lounge:&#039;&#039;&#039; Gameserver, JDownloader&lt;br /&gt;
* &#039;&#039;&#039;Server WG 49:&#039;&#039;&#039; Home Assistant (Klima-Automation), AdGuard Home (DNS)&lt;br /&gt;
* &#039;&#039;&#039;Desktop:&#039;&#039;&#039; openSUSE Tumbleweed, Niri&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🗣️ Erklärt für Freunde&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Einfache Erklärungen von technischen Themen, die ich öfter erklären muss.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=19</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=19"/>
		<updated>2026-06-26T10:25:52Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:55%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 👨‍👩‍👧‍👦 Hilfe für Papa&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Einfache Anleitungen für Computer und Handy:&lt;br /&gt;
* Wie mache ich ein Update?&lt;br /&gt;
* Wie bediene ich ein Programm am PC?&lt;br /&gt;
* Wie installiere ich eine App auf dem Handy?&lt;br /&gt;
* Wie bediene ich ein Smartphone?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🏡 Smart Home&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* Home Assistant Automationen - Klimaanlage &amp;amp; Luftfeuchtigkeit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#e8f0fe; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🏢 [[Server WG 49]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Lokaler Server in der WG für die Netzwerkinfrastruktur und Haussteuerung.&lt;br /&gt;
* &#039;&#039;&#039;Home Assistant:&#039;&#039;&#039; Smart Home Steuerung &amp;amp; Klima&lt;br /&gt;
* &#039;&#039;&#039;AdGuard Home:&#039;&#039;&#039; Netzwerkweiter Werbeblocker &amp;amp; DNS&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#fff3f3; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🔧 Gelöste Probleme&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Eine Sammlung von Fehlern und ihren Lösungen — gut zum Nachschlagen für mich und zum Erklären für andere.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #a2a9b1; background:#f9f9f9; padding:8px; margin-top:12px; border-radius:4px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; color:#202122; cursor:pointer;&amp;quot;&amp;gt;🎬 [[Video-Aufräumsystem]] (Ausklappen)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;padding-top:5px; font-size:0.95em; color:#54595d;&amp;quot;&amp;gt;&lt;br /&gt;
Automatisierte Pipeline auf &amp;lt;code&amp;gt;Entertainment&amp;lt;/code&amp;gt;, die private Video-Downloads auf der Storage Box bereinigt, flach macht und gruppiert.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:45%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cedff2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🖥️ [[Meine Server &amp;amp; Infrastruktur]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;Storage Box:&#039;&#039;&#039; rclone, Sub-Accounts, Snapshots&lt;br /&gt;
* &#039;&#039;&#039;Entertainment:&#039;&#039;&#039; Jellyfin, Immich, Grafana, NPM&lt;br /&gt;
* &#039;&#039;&#039;lets-lounge:&#039;&#039;&#039; Gameserver, JDownloader&lt;br /&gt;
* &#039;&#039;&#039;Desktop:&#039;&#039;&#039; openSUSE Tumbleweed, Niri&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🗣️ Erklärt für Freunde&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Einfache Erklärungen von technischen Themen, die ich öfter erklären muss.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=18</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=18"/>
		<updated>2026-06-26T10:24:53Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:55%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 👨‍👩‍👧‍👦 Hilfe für Papa&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Einfache Anleitungen für Computer und Handy:&lt;br /&gt;
* Wie mache ich ein Update?&lt;br /&gt;
* Wie bediene ich ein Programm am PC?&lt;br /&gt;
* Wie installiere ich eine App auf dem Handy?&lt;br /&gt;
* Wie bediene ich ein Smartphone?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🏡 Smart Home&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* Home Assistant Automationen - Klimaanlage &amp;amp; Luftfeuchtigkeit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#fff3f3; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🔧 Gelöste Probleme&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Eine Sammlung von Fehlern und ihren Lösungen — gut zum Nachschlagen für mich und zum Erklären für andere.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #a2a9b1; background:#f9f9f9; padding:8px; margin-top:12px; border-radius:4px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; color:#202122; cursor:pointer;&amp;quot;&amp;gt;🎬 [[Video-Aufräumsystem]] (Ausklappen)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;padding-top:5px; font-size:0.95em; color:#54595d;&amp;quot;&amp;gt;&lt;br /&gt;
Automatisierte Pipeline auf &amp;lt;code&amp;gt;Entertainment&amp;lt;/code&amp;gt;, die private Video-Downloads auf der Storage Box bereinigt, flach macht und gruppiert.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:45%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cedff2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🖥️ [[Meine Server &amp;amp; Infrastruktur]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;Storage Box:&#039;&#039;&#039; rclone, Sub-Accounts, Snapshots&lt;br /&gt;
* &#039;&#039;&#039;Entertainment:&#039;&#039;&#039; Jellyfin, Immich, Grafana, NPM&lt;br /&gt;
* &#039;&#039;&#039;lets-lounge:&#039;&#039;&#039; Gameserver, JDownloader&lt;br /&gt;
* &#039;&#039;&#039;Desktop:&#039;&#039;&#039; openSUSE Tumbleweed, Niri&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🗣️ Erklärt für Freunde&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Einfache Erklärungen von technischen Themen, die ich öfter erklären muss.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=17</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=17"/>
		<updated>2026-06-26T10:23:48Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:55%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- LINKER BLOCK: HILFE FÜR PAPA --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 👨‍👩‍👧‍👦 Hilfe für Papa&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Einfache Anleitungen für Computer und Handy:&lt;br /&gt;
* Wie mache ich ein Update?&lt;br /&gt;
* Wie bediene ich ein Programm am PC?&lt;br /&gt;
* Wie installiere ich eine App auf dem Handy?&lt;br /&gt;
* Wie bediene ich ein Smartphone?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- LINKER BLOCK: SMART HOME --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🏡 Smart Home&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* Home Assistant Automationen - Klimaanlage &amp;amp; Luftfeuchtigkeit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- LINKER BLOCK: GELÖSTE PROBLEME INKL. VIDEO-AUFRÄUMSYSTEM --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#fff3f3; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🔧 Gelöste Probleme&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Eine Sammlung von Fehlern und ihren Lösungen — gut zum Nachschlagen für mich und zum Erklären für andere.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- EXTRA KÄSTCHEN INNEN: VIDEO-AUFRÄUMSYSTEM --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #a2a9b1; background:#f9f9f9; padding:8px; margin-top:12px; border-radius:4px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; color:#202122; cursor:pointer;&amp;quot;&amp;gt;🎬 [[Video-Aufräumsystem]] (Ausklappen)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;padding-top:5px; font-size:0.95em; color:#54595d;&amp;quot;&amp;gt;&lt;br /&gt;
Automatisierte Pipeline auf &amp;lt;code&amp;gt;server3579&amp;lt;/code&amp;gt;, die private Video-Downloads auf der Storage Box bereinigt, flach macht und gruppiert.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:45%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- RECHTER BLOCK: SERVER &amp;amp; INFRASTRUKTUR --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cedff2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🖥️ [[Meine Server &amp;amp; Infrastruktur]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;Storage Box:&#039;&#039;&#039; rclone, Sub-Accounts, Snapshots&lt;br /&gt;
* &#039;&#039;&#039;Entertainment:&#039;&#039;&#039; Jellyfin, Immich, Grafana, NPM&lt;br /&gt;
* &#039;&#039;&#039;lets-lounge:&#039;&#039;&#039; Gameserver, JDownloader&lt;br /&gt;
* &#039;&#039;&#039;Desktop:&#039;&#039;&#039; openSUSE Tumbleweed, Niri&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- RECHTER BLOCK: ERKLÄRT FÜR FREUNDE --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🗣️ Erklärt für Freunde&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Einfache Erklärungen von technischen Themen, die ich öfter erklären muss.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=16</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=16"/>
		<updated>2026-06-26T10:22:41Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:55%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- LINKER BLOCK: HILFE FÜR PAPA --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 👨‍👩‍👧‍👦 Hilfe für Papa&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Einfache Anleitungen für Computer und Handy:&lt;br /&gt;
* Wie mache ich ein Update?&lt;br /&gt;
* Wie bediene ich ein Programm am PC?&lt;br /&gt;
* Wie installiere ich eine App auf dem Handy?&lt;br /&gt;
* Wie bediene ich ein Smartphone?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- LINKER BLOCK: SMART HOME --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🏡 Smart Home&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* Home Assistant Automationen - Klimaanlage &amp;amp; Luftfeuchtigkeit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- LINKER BLOCK: GELÖSTE PROBLEME INKL. VIDEO-AUFRÄUMSYSTEM --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#fff3f3; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🔧 Gelöste Probleme&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Eine Sammlung von Fehlern und ihren Lösungen — gut zum Nachschlagen für mich und zum Erklären für andere.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- EXTRA KÄSTCHEN INNEN: VIDEO-AUFRÄUMSYSTEM --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #a2a9b1; background:#f9f9f9; padding:8px; margin-top:12px; border-radius:4px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; color:#202122; cursor:pointer;&amp;quot;&amp;gt;🎬 [[Video-Aufräumsystem]] (Ausklappen)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;padding-top:5px; font-size:0.95em; color:#54595d;&amp;quot;&amp;gt;&lt;br /&gt;
Automatisierte Pipeline auf &amp;lt;code&amp;gt;server3579&amp;lt;/code&amp;gt;, die private Video-Downloads auf der Storage Box bereinigt, flach macht und gruppiert.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:45%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- RECHTER BLOCK: SERVER &amp;amp; INFRASTRUKTUR --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cedff2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🖥️ [[Meine Server &amp;amp; Infrastruktur]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;Storage Box:&#039;&#039;&#039; rclone, Sub-Accounts, Snapshots&lt;br /&gt;
* &#039;&#039;&#039;server3579:&#039;&#039;&#039; Jellyfin, Immich, Grafana, NPM&lt;br /&gt;
* &#039;&#039;&#039;lets-lounge:&#039;&#039;&#039; Entertainment, JDownloader&lt;br /&gt;
* &#039;&#039;&#039;Desktop:&#039;&#039;&#039; openSUSE Tumbleweed, Niri&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- RECHTER BLOCK: ERKLÄRT FÜR FREUNDE --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🗣️ Erklärt für Freunde&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Einfache Erklärungen von technischen Themen, die ich öfter erklären muss.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Meine_Server_%26_Infrastruktur&amp;diff=15</id>
		<title>Meine Server &amp; Infrastruktur</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Meine_Server_%26_Infrastruktur&amp;diff=15"/>
		<updated>2026-06-26T10:21:47Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Ein Überblick über meine selbstgehostete Infrastruktur.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KACHEL: ENTERTAINMENT --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cedff2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🎬 Entertainment&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Mein Hauptserver für Medien, Dokumente und Monitoring.&lt;br /&gt;
* &#039;&#039;&#039;Jellyfin&#039;&#039;&#039; (Medien-Streaming)&lt;br /&gt;
* &#039;&#039;&#039;Immich&#039;&#039;&#039; (Fotoverwaltung)&lt;br /&gt;
* &#039;&#039;&#039;Navidrome&#039;&#039;&#039; (Musik-Streaming)&lt;br /&gt;
* &#039;&#039;&#039;Paperless-ngx&#039;&#039;&#039; (Digitale Dokumentenverwaltung)&lt;br /&gt;
* &#039;&#039;&#039;Grafana&#039;&#039;&#039; (Server Monitoring)&lt;br /&gt;
* [[nginx-proxy-manager|Nginx Proxy Manager]] (Instanz für &amp;lt;code&amp;gt;zwissler-cloud.de&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KACHEL: SERVER WG 49 --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🏢 Server WG 49&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Lokaler Server in der WG für die Netzwerkinfrastruktur und Haussteuerung.&lt;br /&gt;
* &#039;&#039;&#039;Home Assistant&#039;&#039;&#039; (Smart Home Steuerung &amp;amp; Klima)&lt;br /&gt;
* &#039;&#039;&#039;AdGuard Home&#039;&#039;&#039; (Netzwerkweiter Werbeblocker &amp;amp; DNS)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KACHEL: SPEICHER --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 📦 Speicher&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Eine 20TB Hetzner Storage Box für Backups und Mediendateien.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KACHEL: LETS-LOUNGE --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cedff2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🎮 lets-lounge&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Server für Gaming und Downloads. Läuft über &amp;lt;code&amp;gt;lets-lounge.de&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;AMP Gameserver&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;JDownloader&#039;&#039;&#039; (Grafische GUI für Downloads)&lt;br /&gt;
* [[nginx-proxy-manager|Nginx Proxy Manager]] (Separate Instanz für &amp;lt;code&amp;gt;lets-lounge.de&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KACHEL: DOMAIN --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#fff3f3; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🌐 Domain&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Alles wird über Cloudflare verwaltet und ist auf zwei Haupt-Domains aufgeteilt:&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;zwissler-cloud.de&amp;lt;/code&amp;gt;&#039;&#039;&#039;: Haupt-Domain für Medien, Monitoring, Fotos, Musik und Dokumentenverwaltung (Paperless).&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;lets-lounge.de&amp;lt;/code&amp;gt;&#039;&#039;&#039;: Spezifische Domain für Gaming-Dienste und Downloads.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=14</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=14"/>
		<updated>2026-06-26T10:18:05Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:55%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 👨‍👩‍👧‍👦 Hilfe für Papa&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Einfache Anleitungen für Computer und Handy:&lt;br /&gt;
* Wie mache ich ein Update?&lt;br /&gt;
* Wie bediene ich ein Programm am PC?&lt;br /&gt;
* Wie installiere ich eine App auf dem Handy?&lt;br /&gt;
* Wie bediene ich ein Smartphone?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🏡 Smart Home&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* Home Assistant Automationen - Klimaanlage &amp;amp; Luftfeuchtigkeit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#fff3f3; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🔧 Gelöste Probleme&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Eine Sammlung von Fehlern und ihren Lösungen — gut zum Nachschlagen für mich und zum Erklären für andere.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #a2a9b1; background:#f9f9f9; padding:8px; margin-top:12px; border-radius:4px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; color:#202122; cursor:pointer;&amp;quot;&amp;gt;🎬 [[Video-Aufräumsystem]] (Ausklappen)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;padding-top:5px; font-size:0.95em; color:#54595d;&amp;quot;&amp;gt;&lt;br /&gt;
Automatisierte Pipeline auf &amp;lt;code&amp;gt;server3579&amp;lt;/code&amp;gt;, die private Video-Downloads auf der Storage Box bereinigt, flach macht und gruppiert.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:45%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cedff2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🖥️ [[Meine Server &amp;amp; Infrastruktur]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;Storage Box:&#039;&#039;&#039; rclone, Sub-Accounts, Snapshots&lt;br /&gt;
* &#039;&#039;&#039;server3579:&#039;&#039;&#039; Jellyfin, Immich, Grafana, NPM&lt;br /&gt;
* &#039;&#039;&#039;lets-lounge:&#039;&#039;&#039; Gameserver, JDownloader&lt;br /&gt;
* &#039;&#039;&#039;Desktop:&#039;&#039;&#039; openSUSE Tumbleweed, Niri&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🗣️ Erklärt für Freunde&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Einfache Erklärungen von technischen Themen, die ich öfter erklären muss.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=13</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=13"/>
		<updated>2026-06-26T10:17:19Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:55%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- LINKER BLOCK: HILFE FÜR PAPA --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 👨‍👩‍👧‍👦 Hilfe für Papa&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Einfache Anleitungen für Computer und Handy:&lt;br /&gt;
* Wie mache ich ein Update?&lt;br /&gt;
* Wie bediene ich ein Programm am PC?&lt;br /&gt;
* Wie installiere ich eine App auf dem Handy?&lt;br /&gt;
* Wie bediene ich ein Smartphone?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- LINKER BLOCK: SMART HOME --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🏡 Smart Home&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* Home Assistant Automationen - Klimaanlage &amp;amp; Luftfeuchtigkeit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#fff3f3; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🔧 Gelöste Probleme&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:45%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- RECHTER BLOCK: SERVER &amp;amp; INFRASTRUKTUR --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cedff2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🖥️ [[Meine Server &amp;amp; Infrastruktur]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;Storage Box:&#039;&#039;&#039; rclone, Sub-Accounts, Snapshots&lt;br /&gt;
* &#039;&#039;&#039;server3579:&#039;&#039;&#039; Jellyfin, Immich, Grafana, NPM&lt;br /&gt;
* &#039;&#039;&#039;lets-lounge:&#039;&#039;&#039; Gameserver, JDownloader&lt;br /&gt;
* &#039;&#039;&#039;Desktop:&#039;&#039;&#039; openSUSE Tumbleweed, Niri&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- RECHTER BLOCK: ERKLÄRT FÜR FREUNDE --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🗣️ Erklärt für Freunde&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Einfache Erklärungen von technischen Themen, die ich öfter erklären muss.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=12</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=12"/>
		<updated>2026-06-26T10:13:06Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:55%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- LINKER BLOCK: HILFE FÜR PAPA --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 👨‍👩‍👧‍👦 Hilfe für Papa&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Einfache Anleitungen für Computer und Handy:&lt;br /&gt;
* Wie mache ich ein Update?&lt;br /&gt;
* Wie bediene ich ein Programm am PC?&lt;br /&gt;
* Wie installiere ich eine App auf dem Handy?&lt;br /&gt;
* Wie bediene ich ein Smartphone?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- LINKER BLOCK: SMART HOME --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🏡 Smart Home&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* Home Assistant Automationen - Klimaanlage &amp;amp; Luftfeuchtigkeit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#fff3f3; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🔧 Gelöste Probleme&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Eine Sammlung von Fehlern und ihren Lösungen — gut zum Nachschlagen für mich und zum Erklären für andere.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cedff2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🎬 Video-Aufräumsystem&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Automatisierte Pipeline auf &amp;lt;code&amp;gt;server3579&amp;lt;/code&amp;gt;, die private Video-Downloads auf der Storage Box verschiebt, flach macht und gruppiert.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:45%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- RECHTER BLOCK: SERVER &amp;amp; INFRASTRUKTUR --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cedff2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🖥️ [[Meine Server &amp;amp; Infrastruktur]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;Storage Box:&#039;&#039;&#039; rclone, Sub-Accounts, Snapshots&lt;br /&gt;
* &#039;&#039;&#039;server3579:&#039;&#039;&#039; Jellyfin, Immich, Grafana, NPM&lt;br /&gt;
* &#039;&#039;&#039;lets-lounge:&#039;&#039;&#039; Gameserver, JDownloader&lt;br /&gt;
* &#039;&#039;&#039;Desktop:&#039;&#039;&#039; openSUSE Tumbleweed, Niri&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- RECHTER BLOCK: ERKLÄRT FÜR FREUNDE --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🗣️ Erklärt für Freunde&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Einfache Erklärungen von technischen Themen, die ich öfter erklären muss.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Video-Aufr%C3%A4umsystem&amp;diff=11</id>
		<title>Video-Aufräumsystem</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Video-Aufr%C3%A4umsystem&amp;diff=11"/>
		<updated>2026-06-26T09:58:04Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Auf &#039;&#039;&#039;server3579&#039;&#039;&#039; läuft eine automatische Pipeline, die private Video-Downloads auf der Storage Box (&amp;lt;code&amp;gt;/mnt/storagebox/FlaviusPrivat&amp;lt;/code&amp;gt;) bereinigt und sortiert.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cedff2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | ⚙️ Funktionsweise&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
# &#039;&#039;&#039;Flatten&#039;&#039;&#039; (&amp;lt;code&amp;gt;video-flach.py&amp;lt;/code&amp;gt;): Zieht Videos aus überflüssigen Zwischenordnern eine Ebene hoch, falls die Struktur &amp;lt;code&amp;gt;Name/Release-Ordner/film.mp4&amp;lt;/code&amp;gt; statt &amp;lt;code&amp;gt;Name/film.mp4&amp;lt;/code&amp;gt; war.&lt;br /&gt;
# &#039;&#039;&#039;Gruppieren&#039;&#039;&#039; (&amp;lt;code&amp;gt;video-gruppieren.py&amp;lt;/code&amp;gt;): Fasst mehrere Ordner mit gleichem Basis-Namen in einen gemeinsamen Hauptordner zusammen (z.B. mehrere Aufnahmen derselben Reihe).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Intervall:&#039;&#039;&#039; Läuft automatisch per systemd-Timer alle 30 Minuten (sowie 5 Minuten nach Server-Neustart).&lt;br /&gt;
* &#039;&#039;&#039;Upload-Schutz:&#039;&#039;&#039; Ein Sicherheits-Check verhindert, dass Dateien angefasst werden, die sich aktuell noch im Schreibvorgang befinden.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 💻 Bedienung &amp;amp; Befehle&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
; Manuell als Vorschau (Dry-Run):&lt;br /&gt;
: &amp;lt;code&amp;gt;python3 /root/.local/bin/video-flach.py &amp;quot;/mnt/storagebox/FlaviusPrivat&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;python3 /root/.local/bin/video-gruppieren.py &amp;quot;/mnt/storagebox/FlaviusPrivat&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Manuell wirklich ausführen:&lt;br /&gt;
: &amp;lt;code&amp;gt;python3 /root/.local/bin/video-flach.py &amp;quot;/mnt/storagebox/FlaviusPrivat&amp;quot; --apply&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;python3 /root/.local/bin/video-gruppieren.py &amp;quot;/mnt/storagebox/FlaviusPrivat&amp;quot; --apply&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Automatik-Status prüfen:&lt;br /&gt;
: &amp;lt;code&amp;gt;systemctl list-timers video-aufraeumen.timer --no-pager&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Letzte Protokolle ansehen:&lt;br /&gt;
: &amp;lt;code&amp;gt;journalctl -u video-aufraeumen.service --no-pager -n 50&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 📂 Ablageorte&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; margin:0;&amp;quot;&lt;br /&gt;
! Datei / Zweck !! Pfad&lt;br /&gt;
|-&lt;br /&gt;
| Flatten-Skript || &amp;lt;code&amp;gt;/root/.local/bin/video-flach.py&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Gruppier-Skript || &amp;lt;code&amp;gt;/root/.local/bin/video-gruppieren.py&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Wrapper-Skript || &amp;lt;code&amp;gt;/root/.local/bin/video-aufraeumen.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| systemd Service || &amp;lt;code&amp;gt;/etc/systemd/system/video-aufraeumen.service&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| systemd Timer || &amp;lt;code&amp;gt;/etc/systemd/system/video-aufraeumen.timer&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Zielordner || &amp;lt;code&amp;gt;/mnt/storagebox/FlaviusPrivat&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 🧠 Entwicklung &amp;amp; Historie (Lessons Learned) ==&lt;br /&gt;
Die Pipeline entstand iterativ über mehrere Zwischenschritte, bei denen typische Edge-Cases gelöst wurden:&lt;br /&gt;
* &#039;&#039;&#039;Symptom „Keine Dateien gefunden“:&#039;&#039;&#039; Das Ursprungsskript suchte nur lose Dateien. Die echte Struktur nutzt jedoch immer eigene Unterordner pro Film.&lt;br /&gt;
* &#039;&#039;&#039;Symptom „Ordner leer“ (Tiefe Strukturen):&#039;&#039;&#039; Videos lagen oft tief in Release-Unterordnern. &amp;lt;code&amp;gt;video-flach.py&amp;lt;/code&amp;gt; zieht diese nun hoch. Gibt es Unklarheiten (mehrere oder keine Videos), wird der Ordner sicherheitshalber &#039;&#039;&#039;übersprungen&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Symptom „Keine Gruppenbildung“:&#039;&#039;&#039; Ordner nutzen oft das Datumsformat (&amp;lt;code&amp;gt;.JJ.MM.TT.&amp;lt;/code&amp;gt;). Die Erkennung trennt nun strikt zwischen echten Datumsreihen und vierstelligen Jahreszahlen wie &amp;lt;code&amp;gt;(2010)&amp;lt;/code&amp;gt;, damit unterschiedliche Filme nicht fälschlich gruppiert werden.&lt;br /&gt;
* &#039;&#039;&#039;Fehlerschutz bei parallelem Upload:&#039;&#039;&#039; Um Datenverlust während laufender Uploads zu vermeiden, prüfen die Skripte, ob die Dateigröße über einen kurzen Zeitraum absolut stabil bleibt und die Datei seit mindestens 2 Minuten nicht mehr verändert wurde (Settle-Phase).&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== 💾 Quellcode &amp;amp; Wiederherstellung ==&lt;br /&gt;
Um die Skripte im Falle eines Datenverlusts wiederherzustellen, können die folgenden Blöcke ausgeklappt und kopiert werden.&lt;br /&gt;
&lt;br /&gt;
=== 1. Skripte (`/root/.local/bin/`) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #a2a9b1; padding:5px; margin-bottom:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; background:#eaecf0; padding:5px;&amp;quot;&amp;gt;📄 video-flach.py (Ausklappen)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
import argparse&lt;br /&gt;
import shutil&lt;br /&gt;
import time&lt;br /&gt;
from pathlib import Path&lt;br /&gt;
&lt;br /&gt;
VIDEO_EXTENSIONS = {&amp;quot;.mp4&amp;quot;, &amp;quot;.mkv&amp;quot;, &amp;quot;.avi&amp;quot;, &amp;quot;.mov&amp;quot;, &amp;quot;.webm&amp;quot;, &amp;quot;.m4v&amp;quot;, &amp;quot;.wmv&amp;quot;, &amp;quot;.ts&amp;quot;}&lt;br /&gt;
SETTLE_SEC = 120&lt;br /&gt;
PROBE_SEC = 15&lt;br /&gt;
&lt;br /&gt;
def find_videos(folder: Path):&lt;br /&gt;
    return [p for p in folder.rglob(&amp;quot;*&amp;quot;) if p.is_file() and p.suffix.lower() in VIDEO_EXTENSIONS]&lt;br /&gt;
&lt;br /&gt;
def fertige_videos(videos):&lt;br /&gt;
    snapshot = {}&lt;br /&gt;
    for v in videos:&lt;br /&gt;
        try:&lt;br /&gt;
            snapshot[v] = v.stat().st_size&lt;br /&gt;
        except OSError:&lt;br /&gt;
            pass&lt;br /&gt;
    if not snapshot:&lt;br /&gt;
        return set()&lt;br /&gt;
    time.sleep(PROBE_SEC)&lt;br /&gt;
    fertig = set()&lt;br /&gt;
    for v, groesse_vorher in snapshot.items():&lt;br /&gt;
        try:&lt;br /&gt;
            st = v.stat()&lt;br /&gt;
        except OSError:&lt;br /&gt;
            continue&lt;br /&gt;
        if st.st_size == groesse_vorher and (time.time() - st.st_mtime) &amp;gt;= SETTLE_SEC:&lt;br /&gt;
            fertig.add(v)&lt;br /&gt;
    return fertig&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    parser = argparse.ArgumentParser(description=&amp;quot;Filme aus Zwischenordnern eine Ebene hochziehen&amp;quot;)&lt;br /&gt;
    parser.add_argument(&amp;quot;ordner&amp;quot;, type=Path, help=&amp;quot;Ordner mit den Namens-Unterordnern&amp;quot;)&lt;br /&gt;
    parser.add_argument(&amp;quot;--apply&amp;quot;, action=&amp;quot;store_true&amp;quot;, help=&amp;quot;Tatsaechlich verschieben&amp;quot;)&lt;br /&gt;
    args = parser.parse_args()&lt;br /&gt;
&lt;br /&gt;
    if args.apply:&lt;br /&gt;
        fertig = fertige_videos(find_videos(args.ordner))&lt;br /&gt;
    else:&lt;br /&gt;
        fertig = set(find_videos(args.ordner))&lt;br /&gt;
&lt;br /&gt;
    geaendert = False&lt;br /&gt;
    for name_dir in sorted(args.ordner.iterdir()):&lt;br /&gt;
        if not name_dir.is_dir():&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
        videos = find_videos(name_dir)&lt;br /&gt;
        if len(videos) == 0 or len(videos) &amp;gt; 1:&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
        video = videos[0]&lt;br /&gt;
        if video not in fertig or video.parent == name_dir:&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
        geaendert = True&lt;br /&gt;
        inner = video.parent&lt;br /&gt;
        if args.apply:&lt;br /&gt;
            for f in sorted(inner.iterdir()):&lt;br /&gt;
                ziel = name_dir / f.name&lt;br /&gt;
                if ziel.exists():&lt;br /&gt;
                    continue&lt;br /&gt;
                shutil.move(str(f), str(ziel))&lt;br /&gt;
            current = inner&lt;br /&gt;
            while current != name_dir:&lt;br /&gt;
                eltern = current.parent&lt;br /&gt;
                try:&lt;br /&gt;
                    current.rmdir()&lt;br /&gt;
                except OSError:&lt;br /&gt;
                    break&lt;br /&gt;
                current = eltern&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #a2a9b1; padding:5px; margin-bottom:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; background:#eaecf0; padding:5px;&amp;quot;&amp;gt;📄 video-gruppieren.py (Ausklappen)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
import argparse&lt;br /&gt;
import re&lt;br /&gt;
import shutil&lt;br /&gt;
import time&lt;br /&gt;
from collections import defaultdict&lt;br /&gt;
from pathlib import Path&lt;br /&gt;
&lt;br /&gt;
VIDEO_EXTENSIONS = {&amp;quot;.mp4&amp;quot;, &amp;quot;.mkv&amp;quot;, &amp;quot;.avi&amp;quot;, &amp;quot;.mov&amp;quot;, &amp;quot;.webm&amp;quot;, &amp;quot;.m4v&amp;quot;, &amp;quot;.wmv&amp;quot;, &amp;quot;.ts&amp;quot;}&lt;br /&gt;
SETTLE_SEC = 120&lt;br /&gt;
PROBE_SEC = 15&lt;br /&gt;
&lt;br /&gt;
DATE_PATTERN = re.compile(r&amp;quot;^(.+?)\.\d{2}\.\d{2}\.\d{2}(?:\.|\s|$)&amp;quot;)&lt;br /&gt;
SUFFIX_PATTERN = re.compile(r&amp;quot;\s*[-_]?\s*[\(\[]?(?:teil|part|pt|folge)?\.?\s*(?&amp;lt;!\d)\d{1,3}[\)\]]?\s*$&amp;quot;, re.IGNORECASE)&lt;br /&gt;
&lt;br /&gt;
def base_name(name: str) -&amp;gt; str:&lt;br /&gt;
    m = DATE_PATTERN.match(name)&lt;br /&gt;
    if m:&lt;br /&gt;
        return m.group(1).strip()&lt;br /&gt;
    stripped = SUFFIX_PATTERN.sub(&amp;quot;&amp;quot;, name).strip()&lt;br /&gt;
    return stripped if stripped else name&lt;br /&gt;
&lt;br /&gt;
def has_video(folder: Path) -&amp;gt; bool:&lt;br /&gt;
    return any(p.is_file() and p.suffix.lower() in VIDEO_EXTENSIONS for p in folder.iterdir())&lt;br /&gt;
&lt;br /&gt;
def videos_in_folder(folder: Path):&lt;br /&gt;
    return [p for p in folder.iterdir() if p.is_file() and p.suffix.lower() in VIDEO_EXTENSIONS]&lt;br /&gt;
&lt;br /&gt;
def fertige_videos(videos):&lt;br /&gt;
    snapshot = {}&lt;br /&gt;
    for v in videos:&lt;br /&gt;
        try: snapshot[v] = v.stat().st_size&lt;br /&gt;
        except OSError: pass&lt;br /&gt;
    if not snapshot: return set()&lt;br /&gt;
    time.sleep(PROBE_SEC)&lt;br /&gt;
    fertig = set()&lt;br /&gt;
    for v, groesse_vorher in snapshot.items():&lt;br /&gt;
        try: st = v.stat()&lt;br /&gt;
        except OSError: continue&lt;br /&gt;
        if st.st_size == groesse_vorher and (time.time() - st.st_mtime) &amp;gt;= SETTLE_SEC:&lt;br /&gt;
            fertig.add(v)&lt;br /&gt;
    return fertig&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    parser = argparse.ArgumentParser(description=&amp;quot;Video-Ordner nach Basis-Namen gruppieren&amp;quot;)&lt;br /&gt;
    parser.add_argument(&amp;quot;ordner&amp;quot;, type=Path, help=&amp;quot;Ordner mit den Film-Unterordnern&amp;quot;)&lt;br /&gt;
    parser.add_argument(&amp;quot;--apply&amp;quot;, action=&amp;quot;store_true&amp;quot;, help=&amp;quot;Tatsaechlich verschieben&amp;quot;)&lt;br /&gt;
    args = parser.parse_args()&lt;br /&gt;
&lt;br /&gt;
    alle_videos = [v for d in args.ordner.iterdir() if d.is_dir() for v in videos_in_folder(d)]&lt;br /&gt;
    fertig = fertige_videos(alle_videos) if args.apply else set(alle_videos)&lt;br /&gt;
&lt;br /&gt;
    groups = defaultdict(list)&lt;br /&gt;
    for d in sorted(args.ordner.iterdir()):&lt;br /&gt;
        if d.is_dir() and has_video(d):&lt;br /&gt;
            groups[base_name(d.name)].append(d)&lt;br /&gt;
&lt;br /&gt;
    for name, folders in groups.items():&lt;br /&gt;
        if len(folders) &amp;lt; 2: continue&lt;br /&gt;
        target_dir = args.ordner / name&lt;br /&gt;
        sources = [f for f in folders if f != target_dir]&lt;br /&gt;
&lt;br /&gt;
        if args.apply:&lt;br /&gt;
            target_dir.mkdir(exist_ok=True)&lt;br /&gt;
            for src in sources:&lt;br /&gt;
                if not all(v in fertig for v in videos_in_folder(src)): continue&lt;br /&gt;
                for f in sorted(src.iterdir()):&lt;br /&gt;
                    ziel = target_dir / f.name&lt;br /&gt;
                    if ziel.exists(): continue&lt;br /&gt;
                    shutil.move(str(f), str(ziel))&lt;br /&gt;
                try: src.rmdir()&lt;br /&gt;
                except OSError: pass&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #a2a9b1; padding:5px; margin-bottom:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; background:#eaecf0; padding:5px;&amp;quot;&amp;gt;📄 video-aufraeumen.sh (Ausklappen)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/env bash&lt;br /&gt;
set -euo pipefail&lt;br /&gt;
&lt;br /&gt;
ZIEL=&amp;quot;/mnt/storagebox/FlaviusPrivat&amp;quot;&lt;br /&gt;
MOUNT=&amp;quot;/mnt/storagebox&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if ! mountpoint -q &amp;quot;$MOUNT&amp;quot;; then&lt;br /&gt;
    echo &amp;quot;Storage Box ($MOUNT) ist nicht gemountet – breche ab.&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;=== $(date &#039;+%F %T&#039;) : Aufraeumen gestartet ===&amp;quot;&lt;br /&gt;
python3 /root/.local/bin/video-flach.py &amp;quot;$ZIEL&amp;quot; --apply&lt;br /&gt;
python3 /root/.local/bin/video-gruppieren.py &amp;quot;$ZIEL&amp;quot; --apply&lt;br /&gt;
echo &amp;quot;=== $(date &#039;+%F %T&#039;) : Aufraeumen fertig ===&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. systemd Konfiguration (`/etc/systemd/system/`) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #a2a9b1; padding:5px; margin-bottom:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; background:#eaecf0; padding:5px;&amp;quot;&amp;gt;⚙️ video-aufraeumen.service (Ausklappen)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Videos flach machen und gruppieren&lt;br /&gt;
After=network-online.target&lt;br /&gt;
Wants=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/root/.local/bin/video-aufraeumen.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #a2a9b1; padding:5px; margin-bottom:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; background:#eaecf0; padding:5px;&amp;quot;&amp;gt;⏳ video-aufraeumen.timer (Ausklappen)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Videos regelmaessig aufraeumen (flach + gruppieren)&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnBootSec=5min&lt;br /&gt;
OnUnitActiveSec=30min&lt;br /&gt;
Persistent=true&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. Einrichtung nach Wiederherstellung ===&lt;br /&gt;
Um die Pipeline auf einem neuen System zu aktivieren, folgende Befehle ausführen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /root/.local/bin/video-flach.py&lt;br /&gt;
chmod +x /root/.local/bin/video-gruppieren.py&lt;br /&gt;
chmod +x /root/.local/bin/video-aufraeumen.sh&lt;br /&gt;
&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl enable --now video-aufraeumen.timer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:right; margin-top:20px;&amp;quot;&amp;gt;Stand der Dokumentation: Juni 2026&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Video-Aufr%C3%A4umsystem&amp;diff=10</id>
		<title>Video-Aufräumsystem</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Video-Aufr%C3%A4umsystem&amp;diff=10"/>
		<updated>2026-06-26T09:56:00Z</updated>

		<summary type="html">&lt;p&gt;Flavius: Die Seite wurde neu angelegt: „__NOTOC__ Auf &amp;#039;&amp;#039;&amp;#039;server3579&amp;#039;&amp;#039;&amp;#039; läuft eine automatische Pipeline, die private Video-Downloads auf der Storage Box (&amp;lt;code&amp;gt;/mnt/storagebox/FlaviusPrivat&amp;lt;/code&amp;gt;) bereinigt und sortiert.  {| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot; | style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |  {| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot; | style=&amp;quot;background:#ce…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Auf &#039;&#039;&#039;server3579&#039;&#039;&#039; läuft eine automatische Pipeline, die private Video-Downloads auf der Storage Box (&amp;lt;code&amp;gt;/mnt/storagebox/FlaviusPrivat&amp;lt;/code&amp;gt;) bereinigt und sortiert.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cedff2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | ⚙️ Funktionsweise&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
# &#039;&#039;&#039;Flatten&#039;&#039;&#039; (&amp;lt;code&amp;gt;video-flach.py&amp;lt;/code&amp;gt;): Zieht Videos aus überflüssigen Zwischenordnern eine Ebene hoch, falls die Struktur &amp;lt;code&amp;gt;Name/Release-Ordner/film.mp4&amp;lt;/code&amp;gt; statt &amp;lt;code&amp;gt;Name/film.mp4&amp;lt;/code&amp;gt; war.&lt;br /&gt;
# &#039;&#039;&#039;Gruppieren&#039;&#039;&#039; (&amp;lt;code&amp;gt;video-gruppieren.py&amp;lt;/code&amp;gt;): Fasst mehrere Ordner mit gleichem Basis-Namen in einen gemeinsamen Hauptordner zusammen (z.B. mehrere Aufnahmen derselben Reihe).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Intervall:&#039;&#039;&#039; Läuft automatisch per systemd-Timer alle 30 Minuten (sowie 5 Minuten nach Server-Neustart).&lt;br /&gt;
* &#039;&#039;&#039;Upload-Schutz:&#039;&#039;&#039; Ein Sicherheits-Check verhindert, dass Dateien angefasst werden, die sich aktuell noch im Schreibvorgang befinden.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 💻 Bedienung &amp;amp; Befehle&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
; Manuell als Vorschau (Dry-Run):&lt;br /&gt;
: &amp;lt;code&amp;gt;python3 /root/.local/bin/video-flach.py &amp;quot;/mnt/storagebox/FlaviusPrivat&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;python3 /root/.local/bin/video-gruppieren.py &amp;quot;/mnt/storagebox/FlaviusPrivat&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Manuell wirklich ausführen:&lt;br /&gt;
: &amp;lt;code&amp;gt;python3 /root/.local/bin/video-flach.py &amp;quot;/mnt/storagebox/FlaviusPrivat&amp;quot; --apply&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;python3 /root/.local/bin/video-gruppieren.py &amp;quot;/mnt/storagebox/FlaviusPrivat&amp;quot; --apply&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Automatik-Status prüfen:&lt;br /&gt;
: &amp;lt;code&amp;gt;systemctl list-timers video-aufraeumen.timer --no-pager&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Letzte Protokolle ansehen:&lt;br /&gt;
: &amp;lt;code&amp;gt;journalctl -u video-aufraeumen.service --no-pager -n 50&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 📂 Ablageorte&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; margin:0;&amp;quot;&lt;br /&gt;
! Datei / Zweck !! Pfad&lt;br /&gt;
|-&lt;br /&gt;
| Flatten-Skript || &amp;lt;code&amp;gt;/root/.local/bin/video-flach.py&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Gruppier-Skript || &amp;lt;code&amp;gt;/root/.local/bin/video-gruppieren.py&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Wrapper-Skript || &amp;lt;code&amp;gt;/root/.local/bin/video-aufraeumen.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| systemd Service || &amp;lt;code&amp;gt;/etc/systemd/system/video-aufraeumen.service&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| systemd Timer || &amp;lt;code&amp;gt;/etc/systemd/system/video-aufraeumen.timer&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Zielordner || &amp;lt;code&amp;gt;/mnt/storagebox/FlaviusPrivat&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 🧠 Entwicklung &amp;amp; Historie (Lessons Learned) ==&lt;br /&gt;
Die Pipeline entstand iterativ über mehrere Zwischenschritte, bei denen typische Edge-Cases gelöst wurden:&lt;br /&gt;
* &#039;&#039;&#039;Symptom „Keine Dateien gefunden“:&#039;&#039;&#039; Das Ursprungsskript suchte nur lose Dateien. Die echte Struktur nutzt jedoch immer eigene Unterordner pro Film.&lt;br /&gt;
* &#039;&#039;&#039;Symptom „Ordner leer“ (Tiefe Strukturen):&#039;&#039;&#039; Videos lagen oft tief in Release-Unterordnern. &amp;lt;code&amp;gt;video-flach.py&amp;lt;/code&amp;gt; zieht diese nun hoch. Gibt es Unklarheiten (mehrere oder keine Videos), wird der Ordner sicherheitshalber &#039;&#039;&#039;übersprungen&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Symptom „Keine Gruppenbildung“:&#039;&#039;&#039; Ordner nutzen oft das Datumsformat (&amp;lt;code&amp;gt;.JJ.MM.TT.&amp;lt;/code&amp;gt;). Die Erkennung trennt nun strikt zwischen echten Datumsreihen und vierstelligen Jahreszahlen wie &amp;lt;code&amp;gt;(2010)&amp;lt;/code&amp;gt;, damit unterschiedliche Filme nicht fälschlich gruppiert werden.&lt;br /&gt;
* &#039;&#039;&#039;Fehlerschutz bei parallelem Upload:&#039;&#039;&#039; Um Datenverlust während laufender Uploads zu vermeiden, prüfen die Skripte, ob die Dateigröße über einen kurzen Zeitraum absolut stabil bleibt und die Datei seit mindestens 2 Minuten nicht mehr verändert wurde (Settle-Phase).&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== 💾 Quellcode &amp;amp; Wiederherstellung ==&lt;br /&gt;
Um die Skripte im Falle eines Datenverlusts wiederherzustellen, können die folgenden Blöcke ausgeklappt und kopiert werden.&lt;br /&gt;
&lt;br /&gt;
=== 1. Skripte (`/root/.local/bin/`) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #a2a9b1; padding:5px; margin-bottom:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; background:#eaecf0; padding:5px;&amp;quot;&amp;gt;📄 video-flach.py (Ausklappen)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
import argparse&lt;br /&gt;
import shutil&lt;br /&gt;
import time&lt;br /&gt;
from pathlib import Path&lt;br /&gt;
&lt;br /&gt;
VIDEO_EXTENSIONS = {&amp;quot;.mp4&amp;quot;, &amp;quot;.mkv&amp;quot;, &amp;quot;.avi&amp;quot;, &amp;quot;.mov&amp;quot;, &amp;quot;.webm&amp;quot;, &amp;quot;.m4v&amp;quot;, &amp;quot;.wmv&amp;quot;, &amp;quot;.ts&amp;quot;}&lt;br /&gt;
SETTLE_SEC = 120&lt;br /&gt;
PROBE_SEC = 15&lt;br /&gt;
&lt;br /&gt;
def find_videos(folder: Path):&lt;br /&gt;
    return [p for p in folder.rglob(&amp;quot;*&amp;quot;) if p.is_file() and p.suffix.lower() in VIDEO_EXTENSIONS]&lt;br /&gt;
&lt;br /&gt;
def fertige_videos(videos):&lt;br /&gt;
    snapshot = {}&lt;br /&gt;
    for v in videos:&lt;br /&gt;
        try:&lt;br /&gt;
            snapshot[v] = v.stat().st_size&lt;br /&gt;
        except OSError:&lt;br /&gt;
            pass&lt;br /&gt;
    if not snapshot:&lt;br /&gt;
        return set()&lt;br /&gt;
    time.sleep(PROBE_SEC)&lt;br /&gt;
    fertig = set()&lt;br /&gt;
    for v, groesse_vorher in snapshot.items():&lt;br /&gt;
        try:&lt;br /&gt;
            st = v.stat()&lt;br /&gt;
        except OSError:&lt;br /&gt;
            continue&lt;br /&gt;
        if st.st_size == groesse_vorher and (time.time() - st.st_mtime) &amp;gt;= SETTLE_SEC:&lt;br /&gt;
            fertig.add(v)&lt;br /&gt;
    return fertig&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    parser = argparse.ArgumentParser(description=&amp;quot;Filme aus Zwischenordnern eine Ebene hochziehen&amp;quot;)&lt;br /&gt;
    parser.add_argument(&amp;quot;ordner&amp;quot;, type=Path, help=&amp;quot;Ordner mit den Namens-Unterordnern&amp;quot;)&lt;br /&gt;
    parser.add_argument(&amp;quot;--apply&amp;quot;, action=&amp;quot;store_true&amp;quot;, help=&amp;quot;Tatsaechlich verschieben&amp;quot;)&lt;br /&gt;
    args = parser.parse_args()&lt;br /&gt;
&lt;br /&gt;
    if args.apply:&lt;br /&gt;
        fertig = fertige_videos(find_videos(args.ordner))&lt;br /&gt;
    else:&lt;br /&gt;
        fertig = set(find_videos(args.ordner))&lt;br /&gt;
&lt;br /&gt;
    geaendert = False&lt;br /&gt;
    for name_dir in sorted(args.ordner.iterdir()):&lt;br /&gt;
        if not name_dir.is_dir():&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
        videos = find_videos(name_dir)&lt;br /&gt;
        if len(videos) == 0 or len(videos) &amp;gt; 1:&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
        video = videos[0]&lt;br /&gt;
        if video not in fertig or video.parent == name_dir:&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
        geaendert = True&lt;br /&gt;
        inner = video.parent&lt;br /&gt;
        if args.apply:&lt;br /&gt;
            for f in sorted(inner.iterdir()):&lt;br /&gt;
                ziel = name_dir / f.name&lt;br /&gt;
                if ziel.exists():&lt;br /&gt;
                    continue&lt;br /&gt;
                shutil.move(str(f), str(ziel))&lt;br /&gt;
            current = inner&lt;br /&gt;
            while current != name_dir:&lt;br /&gt;
                eltern = current.parent&lt;br /&gt;
                try:&lt;br /&gt;
                    current.rmdir()&lt;br /&gt;
                except OSError:&lt;br /&gt;
                    break&lt;br /&gt;
                current = eltern&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #a2a9b1; padding:5px; margin-bottom:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; background:#eaecf0; padding:5px;&amp;quot;&amp;gt;📄 video-gruppieren.py (Ausklappen)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
import argparse&lt;br /&gt;
import re&lt;br /&gt;
import shutil&lt;br /&gt;
import time&lt;br /&gt;
from collections import defaultdict&lt;br /&gt;
from pathlib import Path&lt;br /&gt;
&lt;br /&gt;
VIDEO_EXTENSIONS = {&amp;quot;.mp4&amp;quot;, &amp;quot;.mkv&amp;quot;, &amp;quot;.avi&amp;quot;, &amp;quot;.mov&amp;quot;, &amp;quot;.webm&amp;quot;, &amp;quot;.m4v&amp;quot;, &amp;quot;.wmv&amp;quot;, &amp;quot;.ts&amp;quot;}&lt;br /&gt;
SETTLE_SEC = 120&lt;br /&gt;
PROBE_SEC = 15&lt;br /&gt;
&lt;br /&gt;
DATE_PATTERN = re.compile(r&amp;quot;^(.+?)\.\d{2}\.\d{2}\.\d{2}(?:\.|\s|$)&amp;quot;)&lt;br /&gt;
SUFFIX_PATTERN = re.compile(r&amp;quot;\s*[-_]?\s*[\(\[]?(?:teil|part|pt|folge)?\.?\s*(?&amp;lt;!\d)\d{1,3}[\)\]]?\s*$&amp;quot;, re.IGNORECASE)&lt;br /&gt;
&lt;br /&gt;
def base_name(name: str) -&amp;gt; str:&lt;br /&gt;
    m = DATE_PATTERN.match(name)&lt;br /&gt;
    if m:&lt;br /&gt;
        return m.group(1).strip()&lt;br /&gt;
    stripped = SUFFIX_PATTERN.sub(&amp;quot;&amp;quot;, name).strip()&lt;br /&gt;
    return stripped if stripped else name&lt;br /&gt;
&lt;br /&gt;
def has_video(folder: Path) -&amp;gt; bool:&lt;br /&gt;
    return any(p.is_file() and p.suffix.lower() in VIDEO_EXTENSIONS for p in folder.iterdir())&lt;br /&gt;
&lt;br /&gt;
def videos_in_folder(folder: Path):&lt;br /&gt;
    return [p for p in folder.iterdir() if p.is_file() and p.suffix.lower() in VIDEO_EXTENSIONS]&lt;br /&gt;
&lt;br /&gt;
def fertige_videos(videos):&lt;br /&gt;
    snapshot = {}&lt;br /&gt;
    for v in videos:&lt;br /&gt;
        try: snapshot[v] = v.stat().st_size&lt;br /&gt;
        except OSError: pass&lt;br /&gt;
    if not snapshot: return set()&lt;br /&gt;
    time.sleep(PROBE_SEC)&lt;br /&gt;
    fertig = set()&lt;br /&gt;
    for v, groesse_vorher in snapshot.items():&lt;br /&gt;
        try: st = v.stat()&lt;br /&gt;
        except OSError: continue&lt;br /&gt;
        if st.st_size == groesse_vorher and (time.time() - st.st_mtime) &amp;gt;= SETTLE_SEC:&lt;br /&gt;
            fertig.add(v)&lt;br /&gt;
    return fertig&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    parser = argparse.ArgumentParser(description=&amp;quot;Video-Ordner nach Basis-Namen gruppieren&amp;quot;)&lt;br /&gt;
    parser.add_argument(&amp;quot;ordner&amp;quot;, type=Path, help=&amp;quot;Ordner mit den Film-Unterordnern&amp;quot;)&lt;br /&gt;
    parser.add_argument(&amp;quot;--apply&amp;quot;, action=&amp;quot;store_true&amp;quot;, help=&amp;quot;Tatsaechlich verschieben&amp;quot;)&lt;br /&gt;
    args = parser.parse_args()&lt;br /&gt;
&lt;br /&gt;
    alle_videos = [v for d in args.ordner.iterdir() if d.is_dir() for v in videos_in_folder(d)]&lt;br /&gt;
    fertig = fertige_videos(alle_videos) if args.apply else set(alle_videos)&lt;br /&gt;
&lt;br /&gt;
    groups = defaultdict(list)&lt;br /&gt;
    for d in sorted(args.ordner.iterdir()):&lt;br /&gt;
        if d.is_dir() and has_video(d):&lt;br /&gt;
            groups[base_name(d.name)].append(d)&lt;br /&gt;
&lt;br /&gt;
    for name, folders in groups.items():&lt;br /&gt;
        if len(folders) &amp;lt; 2: continue&lt;br /&gt;
        target_dir = args.ordner / name&lt;br /&gt;
        sources = [f for f in folders if f != target_dir]&lt;br /&gt;
&lt;br /&gt;
        if args.apply:&lt;br /&gt;
            target_dir.mkdir(exist_ok=True)&lt;br /&gt;
            for src in sources:&lt;br /&gt;
                if not all(v in fertig for v in videos_in_folder(src)): continue&lt;br /&gt;
                for f in sorted(src.iterdir()):&lt;br /&gt;
                    ziel = target_dir / f.name&lt;br /&gt;
                    if ziel.exists(): continue&lt;br /&gt;
                    shutil.move(str(f), str(ziel))&lt;br /&gt;
                try: src.rmdir()&lt;br /&gt;
                except OSError: pass&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #a2a9b1; padding:5px; margin-bottom:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; background:#eaecf0; padding:5px;&amp;quot;&amp;gt;📄 video-aufraeumen.sh (Ausklappen)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env bash&lt;br /&gt;
set -euo pipefail&lt;br /&gt;
&lt;br /&gt;
ZIEL=&amp;quot;/mnt/storagebox/FlaviusPrivat&amp;quot;&lt;br /&gt;
MOUNT=&amp;quot;/mnt/storagebox&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if ! mountpoint -q &amp;quot;$MOUNT&amp;quot;; then&lt;br /&gt;
    echo &amp;quot;Storage Box ($MOUNT) ist nicht gemountet – breche ab.&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;=== $(date &#039;+%F %T&#039;) : Aufraeumen gestartet ===&amp;quot;&lt;br /&gt;
python3 /root/.local/bin/video-flach.py &amp;quot;$ZIEL&amp;quot; --apply&lt;br /&gt;
python3 /root/.local/bin/video-gruppieren.py &amp;quot;$ZIEL&amp;quot; --apply&lt;br /&gt;
echo &amp;quot;=== $(date &#039;+%F %T&#039;) : Aufraeumen fertig ===&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. systemd Konfiguration (`/etc/systemd/system/`) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #a2a9b1; padding:5px; margin-bottom:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; background:#eaecf0; padding:5px;&amp;quot;&amp;gt;⚙️ video-aufraeumen.service (Ausklappen)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Videos flach machen und gruppieren&lt;br /&gt;
After=network-online.target&lt;br /&gt;
Wants=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/root/.local/bin/video-aufraeumen.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;important-border:1px solid #a7d7f9; padding:5px; margin-bottom:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; background:#eaecf0; padding:5px;&amp;quot;&amp;gt;⏳ video-aufraeumen.timer (Ausklappen)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Videos regelmaessig aufraeumen (flach + gruppieren)&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnBootSec=5min&lt;br /&gt;
OnUnitActiveSec=30min&lt;br /&gt;
Persistent=true&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. Einrichtung nach Wiederherstellung ===&lt;br /&gt;
Um die Pipeline auf einem neuen System zu aktivieren, folgende Befehle ausführen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod +x /root/.local/bin/video-flach.py&lt;br /&gt;
chmod +x /root/.local/bin/video-gruppieren.py&lt;br /&gt;
chmod +x /root/.local/bin/video-aufraeumen.sh&lt;br /&gt;
&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl enable --now video-aufraeumen.timer&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:right; margin-top:20px;&amp;quot;&amp;gt;Stand der Dokumentation: Juni 2026&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Benutzer:Flavius&amp;diff=9</id>
		<title>Benutzer:Flavius</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Benutzer:Flavius&amp;diff=9"/>
		<updated>2026-06-26T09:54:16Z</updated>

		<summary type="html">&lt;p&gt;Flavius: Die Seite wurde neu angelegt: „__NOTOC__ Auf &amp;#039;&amp;#039;&amp;#039;server3579&amp;#039;&amp;#039;&amp;#039; läuft eine automatische Pipeline, die private Video-Downloads auf der Storage Box (&amp;lt;code&amp;gt;/mnt/storagebox/FlaviusPrivat&amp;lt;/code&amp;gt;) bereinigt und sortiert.  {| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot; | style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |  {| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot; | style=&amp;quot;background:#ce…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Auf &#039;&#039;&#039;server3579&#039;&#039;&#039; läuft eine automatische Pipeline, die private Video-Downloads auf der Storage Box (&amp;lt;code&amp;gt;/mnt/storagebox/FlaviusPrivat&amp;lt;/code&amp;gt;) bereinigt und sortiert.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cedff2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | ⚙️ Funktionsweise&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
# &#039;&#039;&#039;Flatten&#039;&#039;&#039; (&amp;lt;code&amp;gt;video-flach.py&amp;lt;/code&amp;gt;): Zieht Videos aus überflüssigen Zwischenordnern eine Ebene hoch, falls die Struktur &amp;lt;code&amp;gt;Name/Release-Ordner/film.mp4&amp;lt;/code&amp;gt; statt &amp;lt;code&amp;gt;Name/film.mp4&amp;lt;/code&amp;gt; war.&lt;br /&gt;
# &#039;&#039;&#039;Gruppieren&#039;&#039;&#039; (&amp;lt;code&amp;gt;video-gruppieren.py&amp;lt;/code&amp;gt;): Fasst mehrere Ordner mit gleichem Basis-Namen in einen gemeinsamen Hauptordner zusammen (z.B. mehrere Aufnahmen derselben Reihe).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Intervall:&#039;&#039;&#039; Läuft automatisch per systemd-Timer alle 30 Minuten (sowie 5 Minuten nach Server-Neustart).&lt;br /&gt;
* &#039;&#039;&#039;Upload-Schutz:&#039;&#039;&#039; Ein Sicherheits-Check verhindert, dass Dateien angefasst werden, die sich aktuell noch im Schreibvorgang befinden.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 💻 Bedienung &amp;amp; Befehle&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
; Manuell als Vorschau (Dry-Run):&lt;br /&gt;
: &amp;lt;code&amp;gt;python3 /root/.local/bin/video-flach.py &amp;quot;/mnt/storagebox/FlaviusPrivat&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;python3 /root/.local/bin/video-gruppieren.py &amp;quot;/mnt/storagebox/FlaviusPrivat&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Manuell wirklich ausführen:&lt;br /&gt;
: &amp;lt;code&amp;gt;python3 /root/.local/bin/video-flach.py &amp;quot;/mnt/storagebox/FlaviusPrivat&amp;quot; --apply&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;python3 /root/.local/bin/video-gruppieren.py &amp;quot;/mnt/storagebox/FlaviusPrivat&amp;quot; --apply&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Automatik-Status prüfen:&lt;br /&gt;
: &amp;lt;code&amp;gt;systemctl list-timers video-aufraeumen.timer --no-pager&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Letzte Protokolle ansehen:&lt;br /&gt;
: &amp;lt;code&amp;gt;journalctl -u video-aufraeumen.service --no-pager -n 50&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 📂 Ablageorte&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; margin:0;&amp;quot;&lt;br /&gt;
! Datei / Zweck !! Pfad&lt;br /&gt;
|-&lt;br /&gt;
| Flatten-Skript || &amp;lt;code&amp;gt;/root/.local/bin/video-flach.py&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Gruppier-Skript || &amp;lt;code&amp;gt;/root/.local/bin/video-gruppieren.py&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Wrapper-Skript || &amp;lt;code&amp;gt;/root/.local/bin/video-aufraeumen.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| systemd Service || &amp;lt;code&amp;gt;/etc/systemd/system/video-aufraeumen.service&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| systemd Timer || &amp;lt;code&amp;gt;/etc/systemd/system/video-aufraeumen.timer&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Zielordner || &amp;lt;code&amp;gt;/mnt/storagebox/FlaviusPrivat&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 🧠 Entwicklung &amp;amp; Historie (Lessons Learned) ==&lt;br /&gt;
Die Pipeline entstand iterativ über mehrere Zwischenschritte, bei denen typische Edge-Cases gelöst wurden:&lt;br /&gt;
* &#039;&#039;&#039;Symptom „Keine Dateien gefunden“:&#039;&#039;&#039; Das Ursprungsskript suchte nur lose Dateien. Die echte Struktur nutzt jedoch immer eigene Unterordner pro Film.&lt;br /&gt;
* &#039;&#039;&#039;Symptom „Ordner leer“ (Tiefe Strukturen):&#039;&#039;&#039; Videos lagen oft tief in Release-Unterordnern. &amp;lt;code&amp;gt;video-flach.py&amp;lt;/code&amp;gt; zieht diese nun hoch. Gibt es Unklarheiten (mehrere oder keine Videos), wird der Ordner sicherheitshalber &#039;&#039;&#039;übersprungen&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Symptom „Keine Gruppenbildung“:&#039;&#039;&#039; Ordner nutzen oft das Datumsformat (&amp;lt;code&amp;gt;.JJ.MM.TT.&amp;lt;/code&amp;gt;). Die Erkennung trennt nun strikt zwischen echten Datumsreihen und vierstelligen Jahreszahlen wie &amp;lt;code&amp;gt;(2010)&amp;lt;/code&amp;gt;, damit unterschiedliche Filme nicht fälschlich gruppiert werden.&lt;br /&gt;
* &#039;&#039;&#039;Fehlerschutz bei parallelem Upload:&#039;&#039;&#039; Um Datenverlust während laufender Uploads zu vermeiden, prüfen die Skripte, ob die Dateigröße über einen kurzen Zeitraum absolut stabil bleibt und die Datei seit mindestens 2 Minuten nicht mehr verändert wurde (Settle-Phase).&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== 💾 Quellcode &amp;amp; Wiederherstellung ==&lt;br /&gt;
Um die Skripte im Falle eines Datenverlusts wiederherzustellen, können die folgenden Blöcke ausgeklappt und kopiert werden.&lt;br /&gt;
&lt;br /&gt;
=== 1. Skripte (`/root/.local/bin/`) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #a2a9b1; padding:5px; margin-bottom:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; background:#eaecf0; padding:5px;&amp;quot;&amp;gt;📄 video-flach.py (Ausklappen)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
import argparse&lt;br /&gt;
import shutil&lt;br /&gt;
import time&lt;br /&gt;
from pathlib import Path&lt;br /&gt;
&lt;br /&gt;
VIDEO_EXTENSIONS = {&amp;quot;.mp4&amp;quot;, &amp;quot;.mkv&amp;quot;, &amp;quot;.avi&amp;quot;, &amp;quot;.mov&amp;quot;, &amp;quot;.webm&amp;quot;, &amp;quot;.m4v&amp;quot;, &amp;quot;.wmv&amp;quot;, &amp;quot;.ts&amp;quot;}&lt;br /&gt;
SETTLE_SEC = 120&lt;br /&gt;
PROBE_SEC = 15&lt;br /&gt;
&lt;br /&gt;
def find_videos(folder: Path):&lt;br /&gt;
    return [p for p in folder.rglob(&amp;quot;*&amp;quot;) if p.is_file() and p.suffix.lower() in VIDEO_EXTENSIONS]&lt;br /&gt;
&lt;br /&gt;
def fertige_videos(videos):&lt;br /&gt;
    snapshot = {}&lt;br /&gt;
    for v in videos:&lt;br /&gt;
        try:&lt;br /&gt;
            snapshot[v] = v.stat().st_size&lt;br /&gt;
        except OSError:&lt;br /&gt;
            pass&lt;br /&gt;
    if not snapshot:&lt;br /&gt;
        return set()&lt;br /&gt;
    time.sleep(PROBE_SEC)&lt;br /&gt;
    fertig = set()&lt;br /&gt;
    for v, groesse_vorher in snapshot.items():&lt;br /&gt;
        try:&lt;br /&gt;
            st = v.stat()&lt;br /&gt;
        except OSError:&lt;br /&gt;
            continue&lt;br /&gt;
        if st.st_size == groesse_vorher and (time.time() - st.st_mtime) &amp;gt;= SETTLE_SEC:&lt;br /&gt;
            fertig.add(v)&lt;br /&gt;
    return fertig&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    parser = argparse.ArgumentParser(description=&amp;quot;Filme aus Zwischenordnern eine Ebene hochziehen&amp;quot;)&lt;br /&gt;
    parser.add_argument(&amp;quot;ordner&amp;quot;, type=Path, help=&amp;quot;Ordner mit den Namens-Unterordnern&amp;quot;)&lt;br /&gt;
    parser.add_argument(&amp;quot;--apply&amp;quot;, action=&amp;quot;store_true&amp;quot;, help=&amp;quot;Tatsaechlich verschieben&amp;quot;)&lt;br /&gt;
    args = parser.parse_args()&lt;br /&gt;
&lt;br /&gt;
    if args.apply:&lt;br /&gt;
        fertig = fertige_videos(find_videos(args.ordner))&lt;br /&gt;
    else:&lt;br /&gt;
        fertig = set(find_videos(args.ordner))&lt;br /&gt;
&lt;br /&gt;
    geaendert = False&lt;br /&gt;
    for name_dir in sorted(args.ordner.iterdir()):&lt;br /&gt;
        if not name_dir.is_dir():&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
        videos = find_videos(name_dir)&lt;br /&gt;
        if len(videos) == 0 or len(videos) &amp;gt; 1:&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
        video = videos[0]&lt;br /&gt;
        if video not in fertig or video.parent == name_dir:&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
        geaendert = True&lt;br /&gt;
        inner = video.parent&lt;br /&gt;
        if args.apply:&lt;br /&gt;
            for f in sorted(inner.iterdir()):&lt;br /&gt;
                ziel = name_dir / f.name&lt;br /&gt;
                if ziel.exists():&lt;br /&gt;
                    continue&lt;br /&gt;
                shutil.move(str(f), str(ziel))&lt;br /&gt;
            current = inner&lt;br /&gt;
            while current != name_dir:&lt;br /&gt;
                eltern = current.parent&lt;br /&gt;
                try:&lt;br /&gt;
                    current.rmdir()&lt;br /&gt;
                except OSError:&lt;br /&gt;
                    break&lt;br /&gt;
                current = eltern&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #a2a9b1; padding:5px; margin-bottom:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; background:#eaecf0; padding:5px;&amp;quot;&amp;gt;📄 video-gruppieren.py (Ausklappen)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
import argparse&lt;br /&gt;
import re&lt;br /&gt;
import shutil&lt;br /&gt;
import time&lt;br /&gt;
from collections import defaultdict&lt;br /&gt;
from pathlib import Path&lt;br /&gt;
&lt;br /&gt;
VIDEO_EXTENSIONS = {&amp;quot;.mp4&amp;quot;, &amp;quot;.mkv&amp;quot;, &amp;quot;.avi&amp;quot;, &amp;quot;.mov&amp;quot;, &amp;quot;.webm&amp;quot;, &amp;quot;.m4v&amp;quot;, &amp;quot;.wmv&amp;quot;, &amp;quot;.ts&amp;quot;}&lt;br /&gt;
SETTLE_SEC = 120&lt;br /&gt;
PROBE_SEC = 15&lt;br /&gt;
&lt;br /&gt;
DATE_PATTERN = re.compile(r&amp;quot;^(.+?)\.\d{2}\.\d{2}\.\d{2}(?:\.|\s|$)&amp;quot;)&lt;br /&gt;
SUFFIX_PATTERN = re.compile(r&amp;quot;\s*[-_]?\s*[\(\[]?(?:teil|part|pt|folge)?\.?\s*(?&amp;lt;!\d)\d{1,3}[\)\]]?\s*$&amp;quot;, re.IGNORECASE)&lt;br /&gt;
&lt;br /&gt;
def base_name(name: str) -&amp;gt; str:&lt;br /&gt;
    m = DATE_PATTERN.match(name)&lt;br /&gt;
    if m:&lt;br /&gt;
        return m.group(1).strip()&lt;br /&gt;
    stripped = SUFFIX_PATTERN.sub(&amp;quot;&amp;quot;, name).strip()&lt;br /&gt;
    return stripped if stripped else name&lt;br /&gt;
&lt;br /&gt;
def has_video(folder: Path) -&amp;gt; bool:&lt;br /&gt;
    return any(p.is_file() and p.suffix.lower() in VIDEO_EXTENSIONS for p in folder.iterdir())&lt;br /&gt;
&lt;br /&gt;
def videos_in_folder(folder: Path):&lt;br /&gt;
    return [p for p in folder.iterdir() if p.is_file() and p.suffix.lower() in VIDEO_EXTENSIONS]&lt;br /&gt;
&lt;br /&gt;
def fertige_videos(videos):&lt;br /&gt;
    snapshot = {}&lt;br /&gt;
    for v in videos:&lt;br /&gt;
        try: snapshot[v] = v.stat().st_size&lt;br /&gt;
        except OSError: pass&lt;br /&gt;
    if not snapshot: return set()&lt;br /&gt;
    time.sleep(PROBE_SEC)&lt;br /&gt;
    fertig = set()&lt;br /&gt;
    for v, groesse_vorher in snapshot.items():&lt;br /&gt;
        try: st = v.stat()&lt;br /&gt;
        except OSError: continue&lt;br /&gt;
        if st.st_size == groesse_vorher and (time.time() - st.st_mtime) &amp;gt;= SETTLE_SEC:&lt;br /&gt;
            fertig.add(v)&lt;br /&gt;
    return fertig&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    parser = argparse.ArgumentParser(description=&amp;quot;Video-Ordner nach Basis-Namen gruppieren&amp;quot;)&lt;br /&gt;
    parser.add_argument(&amp;quot;ordner&amp;quot;, type=Path, help=&amp;quot;Ordner mit den Film-Unterordnern&amp;quot;)&lt;br /&gt;
    parser.add_argument(&amp;quot;--apply&amp;quot;, action=&amp;quot;store_true&amp;quot;, help=&amp;quot;Tatsaechlich verschieben&amp;quot;)&lt;br /&gt;
    args = parser.parse_args()&lt;br /&gt;
&lt;br /&gt;
    alle_videos = [v for d in args.ordner.iterdir() if d.is_dir() for v in videos_in_folder(d)]&lt;br /&gt;
    fertig = fertige_videos(alle_videos) if args.apply else set(alle_videos)&lt;br /&gt;
&lt;br /&gt;
    groups = defaultdict(list)&lt;br /&gt;
    for d in sorted(args.ordner.iterdir()):&lt;br /&gt;
        if d.is_dir() and has_video(d):&lt;br /&gt;
            groups[base_name(d.name)].append(d)&lt;br /&gt;
&lt;br /&gt;
    for name, folders in groups.items():&lt;br /&gt;
        if len(folders) &amp;lt; 2: continue&lt;br /&gt;
        target_dir = args.ordner / name&lt;br /&gt;
        sources = [f for f in folders if f != target_dir]&lt;br /&gt;
&lt;br /&gt;
        if args.apply:&lt;br /&gt;
            target_dir.mkdir(exist_ok=True)&lt;br /&gt;
            for src in sources:&lt;br /&gt;
                if not all(v in fertig for v in videos_in_folder(src)): continue&lt;br /&gt;
                for f in sorted(src.iterdir()):&lt;br /&gt;
                    ziel = target_dir / f.name&lt;br /&gt;
                    if ziel.exists(): continue&lt;br /&gt;
                    shutil.move(str(f), str(ziel))&lt;br /&gt;
                try: src.rmdir()&lt;br /&gt;
                except OSError: pass&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #a2a9b1; padding:5px; margin-bottom:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; background:#eaecf0; padding:5px;&amp;quot;&amp;gt;📄 video-aufraeumen.sh (Ausklappen)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env bash&lt;br /&gt;
set -euo pipefail&lt;br /&gt;
&lt;br /&gt;
ZIEL=&amp;quot;/mnt/storagebox/FlaviusPrivat&amp;quot;&lt;br /&gt;
MOUNT=&amp;quot;/mnt/storagebox&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if ! mountpoint -q &amp;quot;$MOUNT&amp;quot;; then&lt;br /&gt;
    echo &amp;quot;Storage Box ($MOUNT) ist nicht gemountet – breche ab.&amp;quot;&lt;br /&gt;
    exit 0&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;=== $(date &#039;+%F %T&#039;) : Aufraeumen gestartet ===&amp;quot;&lt;br /&gt;
python3 /root/.local/bin/video-flach.py &amp;quot;$ZIEL&amp;quot; --apply&lt;br /&gt;
python3 /root/.local/bin/video-gruppieren.py &amp;quot;$ZIEL&amp;quot; --apply&lt;br /&gt;
echo &amp;quot;=== $(date &#039;+%F %T&#039;) : Aufraeumen fertig ===&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. systemd Konfiguration (`/etc/systemd/system/`) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #a2a9b1; padding:5px; margin-bottom:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; background:#eaecf0; padding:5px;&amp;quot;&amp;gt;⚙️ video-aufraeumen.service (Ausklappen)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Videos flach machen und gruppieren&lt;br /&gt;
After=network-online.target&lt;br /&gt;
Wants=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/root/.local/bin/video-aufraeumen.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;important-border:1px solid #a7d7f9; padding:5px; margin-bottom:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; background:#eaecf0; padding:5px;&amp;quot;&amp;gt;⏳ video-aufraeumen.timer (Ausklappen)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Videos regelmaessig aufraeumen (flach + gruppieren)&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnBootSec=5min&lt;br /&gt;
OnUnitActiveSec=30min&lt;br /&gt;
Persistent=true&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. Einrichtung nach Wiederherstellung ===&lt;br /&gt;
Um die Pipeline auf einem neuen System zu aktivieren, folgende Befehle ausführen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod +x /root/.local/bin/video-flach.py&lt;br /&gt;
chmod +x /root/.local/bin/video-gruppieren.py&lt;br /&gt;
chmod +x /root/.local/bin/video-aufraeumen.sh&lt;br /&gt;
&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl enable --now video-aufraeumen.timer&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.9em; color:#54595d; text-align:right; margin-top:20px;&amp;quot;&amp;gt;Stand der Dokumentation: Juni 2026&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=8</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=8"/>
		<updated>2026-06-26T09:51:11Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:55%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- LINKER BLOCK: HILFE FÜR PAPA --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 👨‍👩‍👧‍👦 Hilfe für Papa&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Einfache Anleitungen für Computer und Handy:&lt;br /&gt;
* Wie mache ich ein Update?&lt;br /&gt;
* Wie bediene ich ein Programm am PC?&lt;br /&gt;
* Wie installiere ich eine App auf dem Handy?&lt;br /&gt;
* Wie bediene ich ein Smartphone?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- LINKER BLOCK: SMART HOME --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🏡 Smart Home&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* Home Assistant Automationen - Klimaanlage &amp;amp; Luftfeuchtigkeit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- LINKER BLOCK: GELÖSTE PROBLEME --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#fff3f3; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🔧 Gelöste Probleme&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Eine Sammlung von Fehlern und ihren Lösungen — gut zum Nachschlagen für mich und zum Erklären für andere.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:45%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- RECHTER BLOCK: SERVER &amp;amp; INFRASTRUKTUR --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cedff2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🖥️ [[Meine Server &amp;amp; Infrastruktur]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;Storage Box:&#039;&#039;&#039; rclone, Sub-Accounts, Snapshots&lt;br /&gt;
* &#039;&#039;&#039;server3579:&#039;&#039;&#039; Jellyfin, Immich, Grafana, NPM&lt;br /&gt;
* &#039;&#039;&#039;lets-lounge:&#039;&#039;&#039; Gameserver, JDownloader&lt;br /&gt;
* &#039;&#039;&#039;Desktop:&#039;&#039;&#039; openSUSE Tumbleweed, Niri&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- RECHTER BLOCK: ERKLÄRT FÜR FREUNDE --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🗣️ Erklärt für Freunde&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Einfache Erklärungen von technischen Themen, die ich öfter erklären muss.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Nginx-proxy-manager&amp;diff=7</id>
		<title>Nginx-proxy-manager</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Nginx-proxy-manager&amp;diff=7"/>
		<updated>2026-06-26T09:47:35Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| style=&amp;quot;float:right; width:300px; border:1px solid #a2a9b1; background:#f8f9fa; padding:5px; margin-left:15px; font-size:90%; line-height:1.5em; border-collapse:collapse;&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;font-weight:bold; font-size:1.2em; padding:7px; background:#eaecf0; border:1px solid #a2a9b1; border-bottom:none;&amp;quot; | Nginx Proxy Manager&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:center; padding:15px; background:#ffffff; border:1px solid #a2a9b1;&amp;quot; | &amp;lt;span style=&amp;quot;font-size:3em;&amp;quot;&amp;gt;🐳&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left; background:#f2f2f2; padding:5px; border:1px solid #a2a9b1; width:40%;&amp;quot; | Basis&lt;br /&gt;
| style=&amp;quot;padding:5px; border:1px solid #a2a9b1;&amp;quot; | [[Nginx]] / OpenResty&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left; background:#f2f2f2; padding:5px; border:1px solid #a2a9b1;&amp;quot; | Entwickler&lt;br /&gt;
| style=&amp;quot;padding:5px; border:1px solid #a2a9b1;&amp;quot; | Jamie Curnow&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left; background:#f2f2f2; padding:5px; border:1px solid #a2a9b1;&amp;quot; | Lizenz&lt;br /&gt;
| style=&amp;quot;padding:5px; border:1px solid #a2a9b1;&amp;quot; | MIT-Lizenz&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left; background:#f2f2f2; padding:5px; border:1px solid #a2a9b1;&amp;quot; | Oberfläche&lt;br /&gt;
| style=&amp;quot;padding:5px; border:1px solid #a2a9b1;&amp;quot; | Web-GUI (Port 81)&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left; background:#f2f2f2; padding:5px; border:1px solid #a2a9b1;&amp;quot; | Protokolle&lt;br /&gt;
| style=&amp;quot;padding:5px; border:1px solid #a2a9b1;&amp;quot; | HTTP, HTTPS, HTTP/2, WebSockets&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;Nginx Proxy Manager&#039;&#039;&#039; (NPM) ist eine grafische Benutzeroberfläche zur Verwaltung von [[Nginx]] als Reverse Proxy. Er ermöglicht es, eingehende Anfragen an Domains komfortabel und ohne manuelle Konfigurationsdateien an Docker-Container oder andere Server im lokalen Netzwerk weiterzuleiten.&lt;br /&gt;
&lt;br /&gt;
== Funktionen ==&lt;br /&gt;
* &#039;&#039;&#039;Einfache Verwaltung:&#039;&#039;&#039; Erstellung von Proxy Hosts, Redirection Hosts und Streams über eine Weboberfläche.&lt;br /&gt;
* &#039;&#039;&#039;SSL-Verschlüsselung:&#039;&#039;&#039; Automatische Ausstellung und Erneuerung von SSL-Zertifikaten über Let’s Encrypt mit Unterstützung für HTTP- und DNS-Challenges (z. B. via Cloudflare).&lt;br /&gt;
* &#039;&#039;&#039;Sicherheit:&#039;&#039;&#039; Integrierter Zugriffsschutz durch Access Lists (Benutzername/Passwort) und Blockierung gängiger Angriffe.&lt;br /&gt;
&lt;br /&gt;
== Einsatz in der Infrastruktur ==&lt;br /&gt;
In der aktuellen Infrastruktur kommen zwei getrennte Instanzen des Nginx Proxy Managers zum Einsatz:&lt;br /&gt;
&lt;br /&gt;
=== Instanz 1 (server3579) ===&lt;br /&gt;
Verantwortlich für das Routing der primären Cloud-Dienste:&lt;br /&gt;
* Haupt-Domain: &amp;lt;code&amp;gt;zwissler-cloud.de&amp;lt;/code&amp;gt;&lt;br /&gt;
* Weiterleitungen unter anderem für Jellyfin, Immich und Paperless-ngx.&lt;br /&gt;
&lt;br /&gt;
=== Instanz 2 (lets-lounge) ===&lt;br /&gt;
Eine isolierte Instanz für den Gaming- und Download-Bereich:&lt;br /&gt;
* Haupt-Domain: &amp;lt;code&amp;gt;lets-lounge.de&amp;lt;/code&amp;gt;&lt;br /&gt;
* Weiterleitungen für AMP Gameserver und die JDownloader-Oberfläche.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Nginx]] – Der zugrundeliegende Webserver.&lt;br /&gt;
* [[Meine Server &amp;amp; Infrastruktur]] – Gesamtübersicht des Netzwerks.&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Nginx-proxy-manager&amp;diff=6</id>
		<title>Nginx-proxy-manager</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Nginx-proxy-manager&amp;diff=6"/>
		<updated>2026-06-26T09:46:35Z</updated>

		<summary type="html">&lt;p&gt;Flavius: Die Seite wurde neu angelegt: „__NOTOC__ {| class=&amp;quot;infobox float-right&amp;quot; style=&amp;quot;width:300px; border:1px solid #a7d7f9; background:#f8f9fa; padding:5px; margin-left:15px; font-size:90%; line-height:1.5em;&amp;quot; |+ style=&amp;quot;font-weight:bold; font-size:1.2em; padding:5px; background:#cedff2; border:1px solid #a7d7f9;&amp;quot; | Nginx Proxy Manager |- | colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:center; padding:10px;&amp;quot; | 🐳 |- th style=&amp;quot;text-align:left; background:#f2f2f2; padding:3px;&amp;quot; | Basis: | style=&amp;quot;padding:3px;…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| class=&amp;quot;infobox float-right&amp;quot; style=&amp;quot;width:300px; border:1px solid #a7d7f9; background:#f8f9fa; padding:5px; margin-left:15px; font-size:90%; line-height:1.5em;&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;font-weight:bold; font-size:1.2em; padding:5px; background:#cedff2; border:1px solid #a7d7f9;&amp;quot; | Nginx Proxy Manager&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:center; padding:10px;&amp;quot; | 🐳&lt;br /&gt;
|-&lt;br /&gt;
th style=&amp;quot;text-align:left; background:#f2f2f2; padding:3px;&amp;quot; | Basis:&lt;br /&gt;
| style=&amp;quot;padding:3px;&amp;quot; | [[Nginx]] / OpenResty&lt;br /&gt;
|-&lt;br /&gt;
th style=&amp;quot;text-align:left; background:#f2f2f2; padding:3px;&amp;quot; | Entwickler:&lt;br /&gt;
| style=&amp;quot;padding:3px;&amp;quot; | Jamie Curnow&lt;br /&gt;
|-&lt;br /&gt;
th style=&amp;quot;text-align:left; background:#f2f2f2; padding:3px;&amp;quot; | Lizenz:&lt;br /&gt;
| style=&amp;quot;padding:3px;&amp;quot; | MIT-Lizenz&lt;br /&gt;
|-&lt;br /&gt;
th style=&amp;quot;text-align:left; background:#f2f2f2; padding:3px;&amp;quot; | Benutzeroberfläche:&lt;br /&gt;
| style=&amp;quot;padding:3px;&amp;quot; | Web-GUI (Port 81)&lt;br /&gt;
|-&lt;br /&gt;
th style=&amp;quot;text-align:left; background:#f2f2f2; padding:3px;&amp;quot; | Protokolle:&lt;br /&gt;
| style=&amp;quot;padding:3px;&amp;quot; | HTTP, HTTPS, HTTP/2, WebSockets&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;Nginx Proxy Manager&#039;&#039;&#039; (NPM) ist eine grafische Benutzeroberfläche zur Verwaltung von [[Nginx]] als Reverse Proxy. Er ermöglicht es, eingehende Anfragen an Domains komfortabel und ohne manuelle Konfigurationsdateien an Docker-Container oder andere Server im lokalen Netzwerk weiterzuleiten.&lt;br /&gt;
&lt;br /&gt;
== Funktionen ==&lt;br /&gt;
* &#039;&#039;&#039;Einfache Verwaltung:&#039;&#039;&#039; Erstellung von Proxy Hosts, Redirection Hosts und Streams über eine Weboberfläche.&lt;br /&gt;
* &#039;&#039;&#039;SSL-Verschlüsselung:&#039;&#039;&#039; Automatische Ausstellung und Erneuerung von SSL-Zertifikaten über Let’s Encrypt mit Unterstützung für HTTP- und DNS-Challenges (z. B. via Cloudflare).&lt;br /&gt;
* &#039;&#039;&#039;Sicherheit:&#039;&#039;&#039; Integrierter Zugriffsschutz durch Access Lists (Benutzername/Passwort) und Blockierung gängiger Angriffe.&lt;br /&gt;
&lt;br /&gt;
== Einsatz in der Infrastruktur ==&lt;br /&gt;
In der aktuellen Infrastruktur kommen zwei getrennte Instanzen des Nginx Proxy Managers zum Einsatz:&lt;br /&gt;
&lt;br /&gt;
=== Instanz 1 (server3579) ===&lt;br /&gt;
Verantwortlich für das Routing der primären Cloud-Dienste:&lt;br /&gt;
* Haupt-Domain: &amp;lt;code&amp;gt;zwissler-cloud.de&amp;lt;/code&amp;gt;&lt;br /&gt;
* Weiterleitungen unter anderem für Jellyfin, Immich und Paperless-ngx.&lt;br /&gt;
&lt;br /&gt;
=== Instanz 2 (lets-lounge) ===&lt;br /&gt;
Eine isolierte Instanz für den Gaming- und Download-Bereich:&lt;br /&gt;
* Haupt-Domain: &amp;lt;code&amp;gt;lets-lounge.de&amp;lt;/code&amp;gt;&lt;br /&gt;
* Weiterleitungen für AMP Gameserver und die JDownloader-Oberfläche.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Nginx]] – Der zugrundeliegende Webserver.&lt;br /&gt;
* [[Meine Server &amp;amp; Infrastruktur]] – Gesamtübersicht des Netzwerks.&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Meine_Server_%26_Infrastruktur&amp;diff=5</id>
		<title>Meine Server &amp; Infrastruktur</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Meine_Server_%26_Infrastruktur&amp;diff=5"/>
		<updated>2026-06-26T09:44:05Z</updated>

		<summary type="html">&lt;p&gt;Flavius: Die Seite wurde neu angelegt: „__NOTOC__ Ein Überblick über meine selbstgehostete Infrastruktur.  {| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot; | style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |  &amp;lt;!-- KACHEL: ENTERTAINMENT --&amp;gt; {| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot; | style=&amp;quot;background:#cedff2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Ein Überblick über meine selbstgehostete Infrastruktur.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:10px; background:transparent; margin-top:-10px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KACHEL: ENTERTAINMENT --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cedff2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🎬 Entertainment (server3579)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Mein Hauptserver für Medien, Dokumente und Monitoring.&lt;br /&gt;
* &#039;&#039;&#039;Jellyfin&#039;&#039;&#039; (Medien-Streaming)&lt;br /&gt;
* &#039;&#039;&#039;Immich&#039;&#039;&#039; (Fotoverwaltung)&lt;br /&gt;
* &#039;&#039;&#039;Navidrome&#039;&#039;&#039; (Musik-Streaming)&lt;br /&gt;
* &#039;&#039;&#039;Paperless-ngx&#039;&#039;&#039; (Digitale Dokumentenverwaltung)&lt;br /&gt;
* &#039;&#039;&#039;Grafana&#039;&#039;&#039; (Server Monitoring)&lt;br /&gt;
* [[nginx-proxy-manager|Nginx Proxy Manager]] (Instanz für &amp;lt;code&amp;gt;zwissler-cloud.de&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KACHEL: SERVER WG 49 --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cef2e0; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🏢 Server WG 49&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Lokaler Server in der WG für die Netzwerkinfrastruktur und Haussteuerung.&lt;br /&gt;
* &#039;&#039;&#039;Home Assistant&#039;&#039;&#039; (Smart Home Steuerung &amp;amp; Klima)&lt;br /&gt;
* &#039;&#039;&#039;AdGuard Home&#039;&#039;&#039; (Netzwerkweiter Werbeblocker &amp;amp; DNS)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KACHEL: SPEICHER --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f2f2f2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 📦 Speicher&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Eine 20TB Hetzner Storage Box für Backups und Mediendateien.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KACHEL: LETS-LOUNGE --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#cedff2; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🎮 lets-lounge&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Server für Gaming und Downloads. Läuft über &amp;lt;code&amp;gt;lets-lounge.de&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;AMP Gameserver&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;JDownloader&#039;&#039;&#039; (Grafische GUI für Downloads)&lt;br /&gt;
* [[nginx-proxy-manager|Nginx Proxy Manager]] (Separate Instanz für &amp;lt;code&amp;gt;lets-lounge.de&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KACHEL: DOMAIN --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border:1px solid #a7d7f9; background:#ffffff; padding:15px; margin-bottom:15px; border-radius:4px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#fff3f3; border-bottom:1px solid #a7d7f9; padding:5px 10px; font-weight:bold; font-size:1.2em;&amp;quot; | 🌐 Domain&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding-top:10px;&amp;quot; |&lt;br /&gt;
Alles wird über Cloudflare verwaltet und ist auf zwei Haupt-Domains aufgeteilt:&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;zwissler-cloud.de&amp;lt;/code&amp;gt;&#039;&#039;&#039;: Haupt-Domain für Medien, Monitoring, Fotos, Musik und Dokumentenverwaltung (Paperless).&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;lets-lounge.de&amp;lt;/code&amp;gt;&#039;&#039;&#039;: Spezifische Domain für Gaming-Dienste und Downloads.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=3</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=3"/>
		<updated>2026-06-26T09:32:45Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Willkommen in meinem Wiki. Hier sammle ich alles, was ich mir merken will, was anderen helfen kann, und was ich nachschlagen will.&lt;br /&gt;
&lt;br /&gt;
== 👨‍👩‍👧‍👦 Hilfe für Papa ==&lt;br /&gt;
Einfache Anleitungen für Computer und Handy:&lt;br /&gt;
* Wie mache ich ein Update?&lt;br /&gt;
* Wie bediene ich ein Programm am PC?&lt;br /&gt;
* Wie installiere ich eine App auf dem Handy?&lt;br /&gt;
* Wie bediene ich ein Smartphone?&lt;br /&gt;
&lt;br /&gt;
== 🖥️ Meine Server &amp;amp; Infrastruktur ==&lt;br /&gt;
* &#039;&#039;&#039;Storage Box:&#039;&#039;&#039; rclone, Sub-Accounts, Snapshots&lt;br /&gt;
* &#039;&#039;&#039;server3579:&#039;&#039;&#039; Jellyfin, Immich, Grafana, NPM&lt;br /&gt;
* &#039;&#039;&#039;lets-lounge:&#039;&#039;&#039; Gameserver, JDownloader&lt;br /&gt;
* &#039;&#039;&#039;Desktop:&#039;&#039;&#039; openSUSE Tumbleweed, Niri&lt;br /&gt;
&lt;br /&gt;
== 🏡 Smart Home ==&lt;br /&gt;
* Home Assistant Automationen - Klimaanlage &amp;amp; Luftfeuchtigkeit&lt;br /&gt;
&lt;br /&gt;
== 🔧 Gelöste Probleme ==&lt;br /&gt;
Eine Sammlung von Fehlern und ihren Lösungen — gut zum Nachschlagen für mich und zum Erklären für andere.&lt;br /&gt;
&lt;br /&gt;
== 🗣️ Erklärt für Freunde ==&lt;br /&gt;
Einfache Erklärungen von technischen Themen, die ich öfter erklären muss.&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
	<entry>
		<id>https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=2</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://brain.zwissler-cloud.de/index.php?title=Hauptseite&amp;diff=2"/>
		<updated>2026-06-26T09:26:17Z</updated>

		<summary type="html">&lt;p&gt;Flavius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# Willkommen in meinem Wiki&lt;br /&gt;
Hier sammle ich alles, was ich mir merken will, was anderen helfen kann, und was ich nachschlagen will.&lt;br /&gt;
&lt;br /&gt;
# 👨‍👩‍👧‍👦 Hilfe für Papa&lt;br /&gt;
Einfache Anleitungen für Computer und Handy.&lt;br /&gt;
&lt;br /&gt;
* [Wie mache ich ein Update?](/anleitung-update)&lt;br /&gt;
* [Wie bediene ich ein Programm am PC?](/anleitung-pc-programm)&lt;br /&gt;
* [Wie installiere ich eine App auf dem Handy?](/anleitung-app-installieren)&lt;br /&gt;
* [Wie bediene ich ein Smartphone?](/anleitung-smartphone-bedienung)&lt;br /&gt;
&lt;br /&gt;
## [🖥️ Meine Server &amp;amp; Infrastruktur](/server-infrastruktur)&lt;br /&gt;
- Storage Box (rclone, Sub-Accounts, Snapshots)&lt;br /&gt;
- server3579 (Jellyfin, Immich, Grafana, NPM)&lt;br /&gt;
- lets-lounge (Gameserver, JDownloader)&lt;br /&gt;
- Desktop (openSUSE Tumbleweed, Niri)&lt;br /&gt;
&lt;br /&gt;
## 🏠 Smart Home&lt;br /&gt;
&lt;br /&gt;
- Home Assistant Automationen&lt;br /&gt;
- Klimaanlage &amp;amp; Luftfeuchtigkeit&lt;br /&gt;
&lt;br /&gt;
## 🔧 Gelöste Probleme&lt;br /&gt;
&lt;br /&gt;
Eine Sammlung von Fehlern und ihren Lösungen — gut zum Nachschlagen für mich und zum Erklären für andere.&lt;br /&gt;
&lt;br /&gt;
## 👥 Erklärt für Freunde&lt;br /&gt;
&lt;br /&gt;
Einfache Erklärungen von technischen Themen, die ich öfter erklären muss.&lt;/div&gt;</summary>
		<author><name>Flavius</name></author>
	</entry>
</feed>