<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>Wei.G</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://www.weigshare.com/</id>
  <link href="https://www.weigshare.com/" rel="alternate"/>
  <link href="https://www.weigshare.com/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, Wei.G</rights>
  <subtitle>Cloud · AI · Python · DevOps</subtitle>
  <title>Wei.G Share Blog</title>
  <updated>2026-10-21T08:39:31.052Z</updated>
  <entry>
    <author>
      <name>Wei.G</name>
    </author>
    <category term="qBittorrent" scheme="https://www.weigshare.com/categories/qBittorrent/"/>
    <category term="qBittorrent" scheme="https://www.weigshare.com/tags/qBittorrent/"/>
    <category term="WebUI" scheme="https://www.weigshare.com/tags/WebUI/"/>
    <category term="NAS" scheme="https://www.weigshare.com/tags/NAS/"/>
    <category term="Docker" scheme="https://www.weigshare.com/tags/Docker/"/>
    <content>
      <![CDATA[<p>Wenn du qBittorrent meist im Browser verwaltest – besonders auf einem <strong>NAS, in Docker oder vom Smartphone</strong> – macht WeiG qB WebUI die tägliche Bedienung deutlich angenehmer. <strong><a href="https://weigefenxiang.github.io/WeiG-qB-WebUI/">Online-Vorschau</a></strong></p><p>Vor etwa sieben Jahren bin ich ein paar privaten Torrent-Trackern beigetreten. Damals habe ich qBittorrent 4.1.9 auf meinem NAS installiert – seinerzeit die neueste Version. Dass ich sie heute noch nutzen würde, hätte ich nie gedacht.</p><p>Ein größeres Update habe ich durchaus versucht (ich glaube, auf 4.2.5). Danach waren die Torrent-Aufträge im Client plötzlich verschwunden und ich konnte nicht mehr weiterseeden. Über die Jahre hatte sich einiges angesammelt; alles wiederherzustellen war mühsam. Seitdem lasse ich eine stabile Installation lieber in Ruhe.</p><p>Seit dem Studienabschluss und dem Berufseinstieg sitze ich viel seltener am Desktop. Mein NAS verwalte ich inzwischen meist vom Smartphone aus. Das originale WebUI ist dafür allerdings ziemlich umständlich. Andere alternative Weboberflächen habe ich ausprobiert, doch gerade bei älteren qBittorrent-Versionen haperte es oft an der Kompatibilität.</p><p>Aus diesen Erfahrungen ist WeiG qB WebUI entstanden. Es deckt mehrere stabile qBittorrent-Versionen von 4.1.x bis 5.2.x ab. Wenn bei deiner Version etwas nicht funktioniert oder du eine Idee hast, freue ich mich über einen Kommentar.</p><p><strong>WeiG qB WebUI</strong> ist eine <strong>alternative Weboberfläche</strong> für qBittorrent und für Desktop wie Mobilgeräte ausgelegt:</p><ul><li>📱 Responsive auf Smartphones</li><li>🌙 Dunkelmodus</li><li>🧱 Kompatibel mit älteren qBittorrent-Versionen</li><li>✅ Unterstützt <strong>qBittorrent 4.1.x → 5.2.x</strong></li><li>🐳 Für Windows, Linux, Docker und NAS</li></ul><p><a href="https://github.com/weigefenxiang/WeiG-qB-WebUI">Projekt</a></p><div align="left" style="display:flex;gap:10px;flex-wrap:wrap;justify-content:left;">  <img src="https://img.shields.io/badge/-JavaScript-F7DF1E?logo=javascript&logoColor=black" alt="JavaScript">  <img src="https://img.shields.io/badge/-HTML5-E34F26?logo=html5&logoColor=white" alt="HTML5">  <img src="https://img.shields.io/badge/-CSS3-1572B6?logo=css3&logoColor=white" alt="CSS3">  <img src="https://img.shields.io/badge/-Node.js-339933?logo=nodedotjs&logoColor=white" alt="Node.js">  <img src="https://img.shields.io/badge/-Shell-8A2BE2?logo=gnubash&logoColor=white" alt="Shell"></div><h2 id="Oberflachenvorschau"><a href="#Oberflachenvorschau" class="headerlink" title="Oberflächenvorschau"></a>Oberflächenvorschau</h2><h3 id="Desktop"><a href="#Desktop" class="headerlink" title="Desktop"></a>Desktop</h3><p align="center">  <img src="https://img.weigshare.com/img/004.001.weig-qb-webui-desktop-overview.gif" alt="WeiG qB WebUI Desktop-Oberfläche" style="display:block;width:100%;max-width:900px;height:auto;margin:0 auto;"></p><h3 id="Mobil"><a href="#Mobil" class="headerlink" title="Mobil"></a>Mobil</h3><style>/* Scoped to the mobile preview in this article */.weig-qb-mobile-preview {  width: 100%;  container-type: inline-size;}.weig-qb-mobile-preview-images {  display: flex;  justify-content: center;  align-items: center;  flex-wrap: nowrap;  gap: 10px;  width: 100%;}.weig-qb-mobile-preview-images img {  display: block;  flex: 0 1 auto;  min-width: 0;  width: auto;  height: min(341px, 38cqw);  max-width: 100%;  object-fit: contain;}/* Stack when the article column is narrow */@container (max-width: 640px) {  .weig-qb-mobile-preview-images {    flex-direction: column;  }  .weig-qb-mobile-preview-images img {    flex: none;    width: auto;    height: auto;    max-width: 100%;    max-height: 341px;  }}</style><div class="weig-qb-mobile-preview">  <div class="weig-qb-mobile-preview-images">    <img src="https://img.weigshare.com/img/004.002.weig-qb-webui-mobile-overview.gif" alt="WeiG qB WebUI auf dem Smartphone">    <img src="https://img.weigshare.com/img/004.003.weig-qb-webui-mobile-overview.png" alt="Mobile Ansichten von WeiG qB WebUI">  </div></div><h2 id="Installation-fur-Einsteiger"><a href="#Installation-fur-Einsteiger" class="headerlink" title="Installation für Einsteiger"></a>Installation für Einsteiger</h2><details><summary><b>Zum ersten Mal? 1-Minuten-Anleitung aufklappen</b></summary><h3 id="1-ZIP-entpacken"><a href="#1-ZIP-entpacken" class="headerlink" title="1. ZIP entpacken"></a>1. ZIP entpacken</h3><p>Lade die neueste stabile Version <a href="https://github.com/weigefenxiang/WeiG-qB-WebUI/releases/latest/download/weig-qb-webui.zip"><strong>weig-qb-webui.zip</strong></a> herunter und entpacke sie. Der Ordner ist bereits richtig benannt:</p><pre class="line-numbers language-text" data-language="text"><code class="language-text">weig-qb-webui/├── public/├── private/├── VERSION└── GIT_SHA<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>Der gesamte Ordner <strong><code>weig-qb-webui</code></strong> ist das WebUI-Stammverzeichnis. Nicht nur <code>public</code> oder <code>private</code> kopieren.</p><h3 id="2-An-einen-festen-Ort-verschieben"><a href="#2-An-einen-festen-Ort-verschieben" class="headerlink" title="2. An einen festen Ort verschieben"></a>2. An einen festen Ort verschieben</h3><p>Zum Beispiel:</p><pre class="line-numbers language-text" data-language="text"><code class="language-text">Windows: D:\weig-qb-webuiLinux:   /opt/weig-qb-webui<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre><p>Diesen Pfad trägst du anschließend in qBittorrent ein.</p><h3 id="3-In-qBittorrent-aktivieren"><a href="#3-In-qBittorrent-aktivieren" class="headerlink" title="3. In qBittorrent aktivieren"></a>3. In qBittorrent aktivieren</h3><p>Öffne qBittorrent:</p><p><strong>Werkzeuge → Optionen … → WebUI</strong></p><p>Das sind die aktuellen Begriffe der offiziellen deutschen qBittorrent-Oberfläche. Danach:</p><ol><li><strong>Alternative Weboberfläche verwenden</strong> aktivieren.</li><li><strong>Speicherort der Dateien:</strong> suchen.</li><li>Den Pfad zum Ordner <code>weig-qb-webui</code> eintragen.</li></ol><p>Windows-Beispiel:</p><pre class="line-numbers language-text" data-language="text"><code class="language-text">D:\weig-qb-webui<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>Linux-Beispiel:</p><pre class="line-numbers language-text" data-language="text"><code class="language-text">/opt/weig-qb-webui<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><ol start="4"><li>Mit <strong>OK</strong> speichern.</li><li>Die qBittorrent-WebUI neu laden. Falls die alte Ansicht im Cache bleibt, <code>Ctrl + F5</code> verwenden.</li></ol><blockquote><p><strong>Pfad prüfen:</strong> Im eingetragenen Ordner müssen <code>public</code>, <code>private</code>, <code>VERSION</code> usw. direkt sichtbar sein.</p></blockquote><blockquote><p><strong>Docker:</strong> qBittorrent läuft im Container. Deshalb muss in qBittorrent normalerweise ein container-sichtbarer Pfad eingetragen werden, nicht der Host-Pfad.</p></blockquote></details><h2 id="Ein-Klick-Installation"><a href="#Ein-Klick-Installation" class="headerlink" title="Ein-Klick-Installation"></a>Ein-Klick-Installation</h2><p>Das Installationsskript für Linux &#x2F; NAS kommt über den festen Dev-Pages-Link unten. <strong>Die URL legt den Installationskanal nicht fest:</strong> Ohne <code>-dev</code> wird der geprüfte GitHub-Release von <code>main</code> installiert, mit <code>-dev</code> der aktuelle Entwicklungsstand von <code>dev</code> anhand seines exakten Git-SHA. Das Skript bleibt für spätere Updates und Rollbacks im aktuellen Verzeichnis.</p><h3 id="Linux-NAS"><a href="#Linux-NAS" class="headerlink" title="Linux &#x2F; NAS"></a>Linux &#x2F; NAS</h3><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">curl</span> <span class="token parameter variable">-fsSL</span> https://weigefenxiang.github.io/WeiG-qB-WebUI/downloads/dev/install.sh <span class="token parameter variable">-o</span> install.sh <span class="token operator">&amp;&amp;</span> <span class="token function">sh</span> install.sh <span class="token parameter variable">-configure</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><details><summary><b>Skript- und Standard-Installationspfad anzeigen</b></summary><pre class="line-numbers language-text" data-language="text"><code class="language-text">./install.sh<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>Standardpfad der WebUI:</p><pre class="line-numbers language-text" data-language="text"><code class="language-text">~/.local/share/weig-qb-webui<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>Bei Ausführung als <code>root</code> typischerweise:</p><pre class="line-numbers language-text" data-language="text"><code class="language-text">/root/.local/share/weig-qb-webui<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre></details><h3 id="Docker"><a href="#Docker" class="headerlink" title="Docker"></a>Docker</h3><details><summary><b>Docker-Ein-Klick-Installation / mehrere Container / Pfade</b></summary><h4 id="Host-und-Container"><a href="#Host-und-Container" class="headerlink" title="Host und Container"></a>Host und Container</h4><ul><li><strong>Host</strong>: das Linux-&#x2F;NAS-System, auf dem Docker läuft.</li><li><strong>Container</strong>: die isolierte Umgebung, in der qBittorrent läuft.</li></ul><p>Beispiel:</p><pre class="line-numbers language-text" data-language="text"><code class="language-text">Host:      /root/qbittorrent/config   ↓ gemountet alsContainer: /config<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><p>Docker Compose:</p><pre class="line-numbers language-yaml" data-language="yaml"><code class="language-yaml"><span class="token key atrule">volumes</span><span class="token punctuation">:</span>  <span class="token punctuation">-</span> /root/qbittorrent/config<span class="token punctuation">:</span>/config<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre><p>Liegt die WebUI auf dem Host unter:</p><pre class="line-numbers language-text" data-language="text"><code class="language-text">/root/qbittorrent/config/weig-qb-webui<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>muss qBittorrent bei <strong>Speicherort der Dateien:</strong> verwenden:</p><pre class="line-numbers language-text" data-language="text"><code class="language-text">/config/weig-qb-webui<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><h4 id="Ein-qBittorrent-Container"><a href="#Ein-qBittorrent-Container" class="headerlink" title="Ein qBittorrent-Container"></a>Ein qBittorrent-Container</h4><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">curl</span> <span class="token parameter variable">-fsSL</span> https://weigefenxiang.github.io/WeiG-qB-WebUI/downloads/dev/install.sh <span class="token parameter variable">-o</span> install.sh <span class="token operator">&amp;&amp;</span> <span class="token function">sh</span> install.sh <span class="token parameter variable">-configure</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>Der Installer versucht Container und <code>/config</code>-Mount automatisch zu erkennen.</p><h4 id="Container-anzeigen"><a href="#Container-anzeigen" class="headerlink" title="Container anzeigen"></a>Container anzeigen</h4><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">sh</span> install.sh --list-containers<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>Oder:</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">docker</span> <span class="token function">ps</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>Einen Container ausdrücklich wählen:</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">sh</span> install.sh <span class="token parameter variable">--container</span><span class="token operator">=</span>qbittorrent <span class="token parameter variable">-configure</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>Bei mehreren qBittorrent-Containern wählt der Installer nicht automatisch einen aus.</p><h4 id="Fall-3-mehrere-qBittorrent-Container"><a href="#Fall-3-mehrere-qBittorrent-Container" class="headerlink" title="Fall 3: mehrere qBittorrent-Container"></a>Fall 3: mehrere qBittorrent-Container</h4><p>Laufen zum Beispiel <code>qbittorrent</code> und <code>qbittorrent-test</code>, lass dir zuerst die Container anzeigen und wähle einen ausdrücklich aus. Der Installer rät nicht:</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">sh</span> install.sh --list-containers<span class="token function">sh</span> install.sh <span class="token parameter variable">--container</span><span class="token operator">=</span>qbittorrent <span class="token parameter variable">-configure</span><span class="token function">sh</span> install.sh <span class="token parameter variable">--container</span><span class="token operator">=</span>qbittorrent-test <span class="token parameter variable">-configure</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><h4 id="Host-Pfad-fur-config-angeben"><a href="#Host-Pfad-fur-config-angeben" class="headerlink" title="Host-Pfad für /config angeben"></a>Host-Pfad für <code>/config</code> angeben</h4><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">sh</span> install.sh --config-root<span class="token operator">=</span>/root/qbittorrent/config <span class="token parameter variable">-configure</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>Synology-Beispiel:</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">sh</span> install.sh --config-root<span class="token operator">=</span>/volume1/docker/qbittorrent <span class="token parameter variable">-configure</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>Anderes NAS:</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">sh</span> install.sh --config-root<span class="token operator">=</span>/share/Container/qbittorrent <span class="token parameter variable">-configure</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><h4 id="WebUI-Zielpfad-festlegen"><a href="#WebUI-Zielpfad-festlegen" class="headerlink" title="WebUI-Zielpfad festlegen"></a>WebUI-Zielpfad festlegen</h4><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">sh</span> install.sh <span class="token parameter variable">--container</span><span class="token operator">=</span>qbittorrent <span class="token parameter variable">-o</span> /config/weig-qb-webui <span class="token parameter variable">-configure</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><h4 id="Fall-6-mehrere-bestehende-WebUI-Verzeichnisse-zusammen-aktualisieren"><a href="#Fall-6-mehrere-bestehende-WebUI-Verzeichnisse-zusammen-aktualisieren" class="headerlink" title="Fall 6: mehrere bestehende WebUI-Verzeichnisse zusammen aktualisieren"></a>Fall 6: mehrere bestehende WebUI-Verzeichnisse zusammen aktualisieren</h4><p>Bei mehreren qBittorrent-Instanzen kannst du <code>-o</code> mehrfach angeben. Das Paket wird nur einmal geladen und geprüft; erst wenn alle Ziele vorbereitet sind, beginnt der Wechsel. Unter <code>~/.config/weig-qb-webui/backups/</code> bleiben die letzten drei Backups pro Ziel separat erhalten.</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">sh</span> install.sh <span class="token parameter variable">-dev</span> <span class="token punctuation">\</span>  <span class="token parameter variable">-o</span> /root/qbittorrent/config/weig-qb-webui <span class="token punctuation">\</span>  <span class="token parameter variable">-o</span> /root/qbittorrent3/config/weig-qb-webui<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><p>Bei mehreren Zielen <code>-configure</code> weglassen. Jede Instanz nutzt weiterhin ihren eingestellten WebUI-Pfad. Alle Optionen zeigt <code>sh install.sh -help</code>.</p><h4 id="Pfade-nach-der-Installation-prufen"><a href="#Pfade-nach-der-Installation-prufen" class="headerlink" title="Pfade nach der Installation prüfen"></a>Pfade nach der Installation prüfen</h4><p>Nach der Installation zeigt das Skript etwa Folgendes an: Der erste Pfad bezeichnet den Installationsort auf dem Host, der zweite den Container-Pfad für <strong>Files location</strong> in qBittorrent.</p><pre class="line-numbers language-text" data-language="text"><code class="language-text">Host install path: /root/qbittorrent/config/weig-qb-webuiqBittorrent Root Folder: /config/weig-qb-webui<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre></details><h3 id="Windows-PowerShell"><a href="#Windows-PowerShell" class="headerlink" title="Windows PowerShell"></a>Windows PowerShell</h3><pre class="line-numbers language-powershell" data-language="powershell"><code class="language-powershell"><span class="token function">Invoke-WebRequest</span> https:<span class="token operator">/</span><span class="token operator">/</span>weigefenxiang<span class="token punctuation">.</span>github<span class="token punctuation">.</span>io/WeiG-qB-WebUI/downloads/dev/install<span class="token punctuation">.</span>ps1 <span class="token operator">-</span>OutFile <span class="token punctuation">.</span>\install<span class="token punctuation">.</span>ps1<span class="token punctuation">;</span> powershell <span class="token operator">-</span>ExecutionPolicy Bypass <span class="token operator">-</span>File <span class="token punctuation">.</span>\install<span class="token punctuation">.</span>ps1 <span class="token operator">-</span>configure<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><details><summary><b>Installationspfad anzeigen</b></summary><pre class="line-numbers language-text" data-language="text"><code class="language-text">C:\Users\&lt;Benutzername>\AppData\Local\weig-qb-webui<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre></details><h2 id="Haufige-Optionen"><a href="#Haufige-Optionen" class="headerlink" title="Häufige Optionen"></a>Häufige Optionen</h2><details><summary><b>Linux und Windows verwenden dieselben Optionsnamen; PowerShell unterscheidet keine Groß- und Kleinschreibung (aufklappen)</b></summary><p>PowerShell-Parameternamen unterscheiden nicht zwischen Groß- und Kleinschreibung.</p><table><thead><tr><th>Zweck</th><th>Linux &#x2F; Docker &#x2F; NAS</th><th>Windows PowerShell</th></tr></thead><tbody><tr><td>Neuester stabiler Release</td><td>Standard</td><td>Standard</td></tr><tr><td>Bestimmter Release</td><td><code>-version 1.2.0</code></td><td><code>-version 1.2.0</code></td></tr><tr><td>Entwicklungsstand</td><td><code>-dev</code></td><td><code>-dev</code></td></tr><tr><td>Zielordner</td><td><code>-o /path</code> (unter Linux mehrfach möglich)</td><td><code>-o D:\path</code> oder <code>-output D:\path</code></td></tr><tr><td>Eigene qBittorrent-Konfigurationsdatei angeben</td><td>—</td><td><code>-qbconfig D:\path\qBittorrent.ini</code></td></tr><tr><td>qBittorrent automatisch konfigurieren</td><td><code>-configure</code></td><td><code>-configure</code></td></tr><tr><td>Vorherige Installation wiederherstellen</td><td><code>-rollback</code></td><td><code>-rollback</code></td></tr><tr><td>Vollständig deinstallieren (keine Installer-Backups behalten)</td><td><code>-uninstall -purge</code></td><td><code>-uninstall -purge</code></td></tr><tr><td>Hilfe</td><td><code>-help</code></td><td><code>-help</code></td></tr><tr><td>Docker-Container wählen</td><td><code>--container=NAME</code></td><td>—</td></tr><tr><td>Docker-Container auflisten</td><td><code>--list-containers</code></td><td>—</td></tr><tr><td>Host-Pfad des Docker-<code>/config</code> angeben</td><td><code>--config-root=/path</code></td><td>—</td></tr></tbody></table></details><details><summary><b>Hinweise: (zum Aufklappen klicken)</b></summary><ul><li>Ohne <code>-dev</code> wird der geprüfte stabile GitHub-Release von <code>main</code> installiert; mit <code>-dev</code> der aktuelle Entwicklungsstand von <code>dev</code> anhand seines exakten Git-SHA.</li><li><code>-o</code> steht für <strong>output</strong> und kann unter Linux mehrfach angegeben werden, um bestehende WebUI-Verzeichnisse mit einem verifizierten Download zu aktualisieren.</li><li>Backups liegen unter <code>~/.config/weig-qb-webui/backups/</code>; pro Installationsziel werden die letzten drei getrennt vorgehalten.</li><li><code>-configure</code> aktiviert in qBittorrent <strong>Use alternative WebUI</strong> und setzt <strong>Files location</strong>. Es ist nur für ein einzelnes Ziel zulässig.</li><li><code>-rollback</code> stellt das jüngste Installer-Backup des ausgewählten Ziels wieder her; mehrere explizite Ziele können mit wiederholtem <code>-o</code> zurückgesetzt werden.</li><li><code>-uninstall -purge</code> entfernt WebUI und Backups samt Rollback-Status nur dieses Ziels. Backups anderer Ziele bleiben erhalten; leere gemeinsame Statusverzeichnisse werden aufgeräumt.</li><li>Wer später <code>-rollback</code> nutzen möchte, lässt bei der Deinstallation <code>-purge</code> weg.</li><li>Mit <code>-version 1.2.0</code> lässt sich ein bestimmter GitHub-Release installieren. Existiert dieser nicht, gibt es einen Fehler – <strong>kein automatischer Wechsel zu latest oder dev</strong>.</li><li><code>-help</code> zeigt die aktuell unterstützten Optionen.</li><li>Bei mehreren Docker-Containern zunächst <code>--list-containers</code> aufrufen und mit <code>--container=NAME</code> den gewünschten auswählen. Alternativ <code>--config-root=/path</code> angeben.</li></ul><h3 id="Bestimmte-Version-und-Installationsverzeichnis"><a href="#Bestimmte-Version-und-Installationsverzeichnis" class="headerlink" title="Bestimmte Version und Installationsverzeichnis"></a>Bestimmte Version und Installationsverzeichnis</h3><p>Linux-Beispiel:</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">sh</span> install.sh <span class="token parameter variable">-version</span> <span class="token number">1.2</span>.0 <span class="token parameter variable">-o</span> /opt/weig-qb-webui <span class="token parameter variable">-configure</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>Windows-Beispiel:</p><pre class="line-numbers language-powershell" data-language="powershell"><code class="language-powershell">powershell <span class="token operator">-</span>ExecutionPolicy Bypass <span class="token operator">-</span>File <span class="token punctuation">.</span>\install<span class="token punctuation">.</span>ps1 <span class="token operator">-</span>version 1<span class="token punctuation">.</span>2<span class="token punctuation">.</span>0 <span class="token operator">-</span>o D:\weig-qb-webui <span class="token operator">-</span>configure<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><h3 id="Rollback"><a href="#Rollback" class="headerlink" title="Rollback"></a>Rollback</h3><p>Rollback:</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">sh</span> install.sh <span class="token parameter variable">-rollback</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><pre class="line-numbers language-powershell" data-language="powershell"><code class="language-powershell">powershell <span class="token operator">-</span>ExecutionPolicy Bypass <span class="token operator">-</span>File <span class="token punctuation">.</span>\install<span class="token punctuation">.</span>ps1 <span class="token operator">-</span>rollback<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre></details><h2 id="Ein-Klick-Deinstallation"><a href="#Ein-Klick-Deinstallation" class="headerlink" title="Ein-Klick-Deinstallation"></a>Ein-Klick-Deinstallation</h2><details><summary><b>Vollständige Deinstallation für Linux / NAS, Docker und Windows PowerShell</b></summary><p>Empfohlen ist standardmäßig die <strong>vollständige Deinstallation ohne Installer-Backups</strong>: WebUI entfernen, die passende Alternative-WebUI-Konfiguration deaktivieren, die installer-eigenen Backups &#x2F; den Rollback-Status dieses Ziels bereinigen und anschließend das heruntergeladene Installationsskript im aktuellen Verzeichnis löschen.</p><h3 id="Linux-NAS-1"><a href="#Linux-NAS-1" class="headerlink" title="Linux &#x2F; NAS"></a>Linux &#x2F; NAS</h3><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">sh</span> install.sh <span class="token parameter variable">-uninstall</span> <span class="token parameter variable">-configure</span> <span class="token parameter variable">-purge</span> <span class="token operator">&amp;&amp;</span> <span class="token function">rm</span> <span class="token parameter variable">-f</span> -- ./install.sh<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>Bei einem eigenen Installationspfad <code>-o /path/to/weig-qb-webui</code> ergänzen.</p><h3 id="Docker-1"><a href="#Docker-1" class="headerlink" title="Docker"></a>Docker</h3><p>Ein Container &#x2F; automatische Erkennung:</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">sh</span> install.sh <span class="token parameter variable">-uninstall</span> <span class="token parameter variable">-configure</span> <span class="token parameter variable">-purge</span> <span class="token operator">&amp;&amp;</span> <span class="token function">rm</span> <span class="token parameter variable">-f</span> -- ./install.sh<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>Mehrere Container:</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">sh</span> install.sh <span class="token parameter variable">-uninstall</span> <span class="token parameter variable">-configure</span> <span class="token parameter variable">-purge</span> <span class="token parameter variable">--container</span><span class="token operator">=</span>qbittorrent <span class="token operator">&amp;&amp;</span> <span class="token function">rm</span> <span class="token parameter variable">-f</span> -- ./install.sh<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>Bei Verwendung von <code>--config-root</code>:</p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash"><span class="token function">sh</span> install.sh <span class="token parameter variable">-uninstall</span> <span class="token parameter variable">-configure</span> <span class="token parameter variable">-purge</span> --config-root<span class="token operator">=</span>/path/to/qbittorrent/config <span class="token operator">&amp;&amp;</span> <span class="token function">rm</span> <span class="token parameter variable">-f</span> -- ./install.sh<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><h3 id="Windows-PowerShell-1"><a href="#Windows-PowerShell-1" class="headerlink" title="Windows PowerShell"></a>Windows PowerShell</h3><pre class="line-numbers language-powershell" data-language="powershell"><code class="language-powershell">powershell <span class="token operator">-</span>ExecutionPolicy Bypass <span class="token operator">-</span>File <span class="token punctuation">.</span>\install<span class="token punctuation">.</span>ps1 <span class="token operator">-</span>uninstall <span class="token operator">-</span>configure <span class="token operator">-</span>purge<span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token variable">$LASTEXITCODE</span> <span class="token operator">-eq</span> 0<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span> <span class="token function">Remove-Item</span> <span class="token punctuation">.</span>\install<span class="token punctuation">.</span>ps1 <span class="token operator">-</span>Force <span class="token punctuation">&#125;</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>Bei einem eigenen Installationspfad <code>-o D:\weig-qb-webui</code> ergänzen.</p><p><code>-purge</code> entfernt nur Backups des aktuellen Deinstallationsziels und lässt andere Installationen unangetastet. Ist das gemeinsame Statusverzeichnis danach leer, wird unter Linux auch <code>~/.config/weig-qb-webui</code> (für root: <code>/root/.config/weig-qb-webui</code>) bzw. unter Windows <code>%APPDATA%\weig-qb-webui</code> entfernt.</p><p>Sollen Backups für ein späteres <code>-rollback</code> erhalten bleiben, <code>-purge</code> einfach weglassen.</p></details><h2 id="Weitere-Hilfe"><a href="#Weitere-Hilfe" class="headerlink" title="Weitere Hilfe"></a>Weitere Hilfe</h2><p>Docker, NAS, benutzerdefinierte Pfade, Aktualisierung und manuelle Installation: <a href="https://github.com/weigefenxiang/WeiG-qB-WebUI/blob/main/translations/installation-guide/deployment-guide.de.md">Installations-, Upgrade- und Bereitstellungsanleitung</a>.</p><h2 id="Lizenz"><a href="#Lizenz" class="headerlink" title="Lizenz"></a>Lizenz</h2><p><a href="https://github.com/weigefenxiang/WeiG-qB-WebUI/blob/main/LICENSE">GNU General Public License v3</a>.</p><p>Copyright © 2026 Wei.G &#x2F; WeiG Share.</p>]]>
    </content>
    <id>https://www.weigshare.com/posts/WeiG-qB-WebUI-Guide/</id>
    <link href="https://www.weigshare.com/posts/WeiG-qB-WebUI-Guide/"/>
    <published>2026-09-28T09:15:00.000Z</published>
    <summary>Einsteigerfreundliche Anleitung zur Installation von WeiG qB WebUI als alternative Weboberfläche von qBittorrent unter Windows, Linux, NAS und Docker.</summary>
    <title>WeiG qB WebUI: Einsteiger-Anleitung für qBittorrents alternative Weboberfläche</title>
    <updated>2026-10-21T08:39:31.052Z</updated>
  </entry>
  <entry>
    <author>
      <name>Wei.G</name>
    </author>
    <category term="OpenWrt" scheme="https://www.weigshare.com/categories/OpenWrt/"/>
    <category term="OpenWrt" scheme="https://www.weigshare.com/tags/OpenWrt/"/>
    <category term="ImmortalWrt" scheme="https://www.weigshare.com/tags/ImmortalWrt/"/>
    <category term="GitHub Actions" scheme="https://www.weigshare.com/tags/GitHub-Actions/"/>
    <category term="Firmware-Build" scheme="https://www.weigshare.com/tags/Firmware-Build/"/>
    <content>
      <![CDATA[<p>Du möchtest ein OpenWrt-Image, das wirklich zu deinem Router passt, aber nicht erst lokal eine komplette Build-Umgebung einrichten? Im <a href="https://www.weigshare.com/wrt">Wei.G Online-Customizer</a> wählst du Quelle, Zielgerät, Pakete und Firmware-Einstellungen aus und schickst den Auftrag anschließend an GitHub Actions. Den eigentlichen Build übernimmt die Cloud.</p><div align="left" style="display:flex;gap:10px;flex-wrap:wrap;justify-content:left;">  <img src="https://img.shields.io/badge/JavaScript-ES2020-f7df1e?logo=javascript&logoColor=black" alt="JavaScript">  <img src="https://img.shields.io/badge/HTML-5-e34f26?logo=html5&logoColor=white" alt="HTML">  <img src="https://img.shields.io/badge/CSS-3-1572b6?logo=css3&logoColor=white" alt="CSS">  <img src="https://img.shields.io/badge/Node.js-22-339933?logo=nodedotjs&logoColor=white" alt="Node.js">  <img src="https://img.shields.io/badge/Bash-5-4eaa25?logo=gnubash&logoColor=white" alt="Bash">  <img src="https://img.shields.io/badge/YAML-1.2-cb171e?logo=yaml&logoColor=white" alt="YAML"></div><h2 id="Schnellstart"><a href="#Schnellstart" class="headerlink" title="Schnellstart"></a>Schnellstart</h2><p><span style="color:#ffc107;">⚠️ </span> <span style="color:#ff7b72;">Das Flashen von Firmware ist mit Risiken verbunden. Routermodell, Partitionierung und Flash-Methode vorher prüfen. Wenn etwas unklar ist, nicht flashen.</span></p><ul><li>Bei <strong><a href="https://github.com/">GitHub</a></strong> anmelden</li><li>Den <strong><a href="https://www.weigshare.com/wrt">Wei.G Online-Customizer</a></strong> öffnen</li><li>Einsteiger sollten die folgende Anleitung lesen 👇</li></ul><h2 id="Hintergrund"><a href="#Hintergrund" class="headerlink" title="Hintergrund"></a>Hintergrund</h2><ul><li><strong>【Einfacher Einstieg】</strong> Wer einmal selbst Firmware bauen möchte, aber nicht schon an der lokalen Toolchain scheitern will, bekommt hier einen deutlich niedrigeren Einstieg.</li><li><strong>【Pakete und Abhängigkeiten】</strong> Manche Plugins und Abhängigkeiten müssen bereits beim Build in die Firmware integriert werden.</li><li><strong>【Konfigurationsaufwand】</strong> OpenWrt bietet viele Build-Optionen; zusätzlich können Netzwerkbedingungen in Festlandchina den Download von Abhängigkeiten erschweren.</li><li><strong>【Zeit】</strong> Ein vollständiger Build kann mehrere Stunden dauern und trotzdem fehlschlagen. Die Fehlersuche kostet entsprechend Zeit.</li><li><strong>【Ziel】</strong> Langfristig soll jeder das Projekt forken und mit GitHub <strong>Pages + Actions</strong> eine eigene OpenWrt-Build-Seite betreiben können.</li><li><strong>【Aktueller Stand】</strong> Das Projekt befindet sich noch in der Testphase. Fehler sind möglich, und eine starke Nutzung des gemeinsamen Workflows kann an GitHub-Richtlinien oder Nutzungslimits stoßen.</li></ul><div style="display:flex; gap:10px;"><img src=https://img.weigshare.com/img/003.009.WeiG-OpenWrt-AutoBuild-Guide.png height="150"></div><div style="display:flex; gap:10px;"><img src=https://img.weigshare.com/img/003.010.WeiG-OpenWrt-AutoBuild-Guide.png height="150"></div><h2 id="Unterstutzte-Gerate"><a href="#Unterstutzte-Gerate" class="headerlink" title="Unterstützte Geräte"></a>Unterstützte Geräte</h2><p>Derzeit sind nur die folgenden Ziele getestet. Andere Geräte wurden noch nicht verifiziert. Ohne Wiederherstellungsmöglichkeit sollte das Tool nicht verwendet werden.</p><ul><li><strong>Quellen: <a href="https://github.com/openwrt/openwrt">OpenWrt</a> · <a href="https://github.com/immortalwrt/immortalwrt">ImmortalWrt</a> · <a href="https://github.com/coolsnowwolf/lede">LEDE</a> · <a href="https://github.com/hanwckf/immortalwrt-mt798x">hanwckf</a></strong></li><li><strong>x86 &#x2F; 64</strong></li><li>Zugriff über Desktop und Mobilgeräte möglich</li></ul><h2 id="Vorbereitung"><a href="#Vorbereitung" class="headerlink" title="Vorbereitung"></a>Vorbereitung</h2><p><span style="color:#ffc107;">⚠️ </span> <span style="color:#ff7b72;">Das Flashen von Firmware ist mit Risiken verbunden. Routermodell, Partitionierung und Flash-Methode vorher prüfen. Wenn etwas unklar ist, nicht flashen.</span></p><ul><li>Bei einem <strong><a href="https://github.com/">GitHub</a></strong>-Konto anmelden. Ohne Konto kann kein Build gestartet werden.</li><li>Den <strong><a href="https://www.weigshare.com/wrt">Wei.G Online-Customizer</a></strong> öffnen.<ul><li><strong><a href="https://dev.weig-wrt.pages.dev/">Cloudflare-Dev-Seite</a></strong> (experimentelle Funktionen, neuester Stand, kann aber Fehler enthalten)</li></ul></li></ul><!-- Screenshot 1: Startseite mit Source-, Branch-, Target- und Plugin-Bereichen --><h2 id="1-Parameter-auswahlen"><a href="#1-Parameter-auswahlen" class="headerlink" title="1. Parameter auswählen"></a>1. Parameter auswählen</h2><ul><li><p>Nach Auswahl der Quelle im Suchfeld das passende Gerät oder die gewünschte Umgebung suchen. Eine vorhandene config kann ebenfalls geladen werden.</p></li><li><p><strong>Source → Branch → Target System → Subtarget → Target Profile</strong> auswählen.</p><ul><li>Beispiel x86&#x2F;64: <strong>ImmortalWrt → openwrt-24.10 → x86 → 64 → Generic x86&#x2F;64</strong></li></ul></li><li><p>Unter <strong>Advanced menuconfig › LuCI › 3. Applications</strong> die gewünschten Anwendungen aktivieren.</p></li><li><p>Weitere Optionen unter <strong>Advanced menuconfig</strong> nach Bedarf einstellen.</p></li></ul><p>Anschließend nach Bedarf <strong>Zeitzone</strong>, <strong>Firmware-Theme</strong>, <strong>NTP-Server</strong> und <strong>Paket-Mirror</strong> konfigurieren.</p><div style="display:flex; gap:10px;"><img src=https://img.weigshare.com/img/003.002.WeiG-OpenWrt-AutoBuild-Guide.png height="150"><img src=https://img.weigshare.com/img/003.003.WeiG-OpenWrt-AutoBuild-Guide.png height="150"><img src=https://img.weigshare.com/img/003.004.WeiG-OpenWrt-AutoBuild-Guide.png height="150"></div><h3 id="Vorhandene-Konfiguration"><a href="#Vorhandene-Konfiguration" class="headerlink" title="Vorhandene Konfiguration"></a>Vorhandene Konfiguration</h3><p>Wer bereits eine <code>.config</code>, <code>config.buildinfo</code> oder eine früher heruntergeladene Request-Datei besitzt, kann unten auf <strong>Konfiguration laden</strong> klicken. Im Bestätigungsdialog Quelle, Branch, Target Profile, Plugins und Firmware-Einstellungen prüfen.</p><h2 id="2-Build-starten"><a href="#2-Build-starten" class="headerlink" title="2. Build starten"></a>2. Build starten</h2><p>Unten rechts auf <strong>Cloud-Build starten</strong> klicken.</p><p><strong>Request herunterladen und GitHub öffnen</strong> auswählen. Der Browser lädt eine JSON-Datei herunter und öffnet automatisch eine neue GitHub-Issue-Seite.</p><p>Die heruntergeladene Datei in das Issue-Feld ziehen und anschließend <strong>Create</strong> klicken.</p><p>Der Bot antwortet im Issue mit dem Actions-Link für den Build.</p><div style="display:flex; gap:10px;"><img src=https://img.weigshare.com/img/003.005.WeiG-OpenWrt-AutoBuild-Guide.png height="150"><img src=https://img.weigshare.com/img/003.006.WeiG-OpenWrt-AutoBuild-Guide.png height="150"></div><h2 id="3-Firmware-herunterladen"><a href="#3-Firmware-herunterladen" class="headerlink" title="3. Firmware herunterladen"></a>3. Firmware herunterladen</h2><p>Ein Build dauert normalerweise 2–4 Stunden. Nach Abschluss auf der Actions-Seite unten unter <strong>Artifacts</strong> herunterladen:</p><ul><li><code>FIRMWARE-ALL-XXX</code>: alle Firmware-Dateien und Prüfsummen. Beim ersten Flash wird meist eine Datei wie <code>factory</code> benötigt.</li><li><code>CONFIG-XXX</code>: eingereichte Konfiguration, finale Konfiguration und Unterschiede. Aufbewahren wird empfohlen.</li><li><code>BUILD-LOGS-XXX</code>: vollständige Build-Logs zur Fehlersuche.</li></ul><div style="display:flex; gap:10px;"><img src=https://img.weigshare.com/img/003.007.WeiG-OpenWrt-AutoBuild-Guide.png height="150"><img src=https://img.weigshare.com/img/003.008.WeiG-OpenWrt-AutoBuild-Guide.png height="150"></div><h2 id="Haufige-Fragen"><a href="#Haufige-Fragen" class="headerlink" title="Häufige Fragen"></a>Häufige Fragen</h2><ul><li><strong>Was tun, wenn der Build fehlschlägt?</strong> <code>BUILD-LOGS-…</code> herunterladen und den letzten <code>Error</code> prüfen. Probleme können auch im Issue gemeldet werden.</li><li><strong>Wie breche ich ab?</strong> Im eigenen Build-Issue mit <code>/cancel</code> antworten.</li><li><strong>Wie viele Builds gleichzeitig?</strong> Pro Konto sind nur zwei gleichzeitige Build-Jobs erlaubt. Weitere Jobs müssen warten.</li><li><strong>Warum gibt es keinen Download-Button?</strong> Für den Download von GitHub-Action-Artefakten muss man in der Regel angemeldet sein.</li><li><strong>Lange Wartezeit im öffentlichen Repository?</strong> Später soll man <a href="https://github.com/weigefenxiang/WeiG-OpenWrt-AutoBuild">dieses Projekt forken</a> und anhand der Hinweise auf der Seite im eigenen Repository bauen können. Damit entfällt die gemeinsame Warteschlange.</li></ul><p>Projekt: <a href="https://github.com/weigefenxiang/WeiG-OpenWrt-AutoBuild">WeiG-OpenWrt-AutoBuild</a></p><h2 id="Danksagung"><a href="#Danksagung" class="headerlink" title="Danksagung"></a>Danksagung</h2><ul><li><p><strong>Quellen:</strong> <a href="https://github.com/openwrt/openwrt">OpenWrt</a> · <a href="https://github.com/immortalwrt/immortalwrt">ImmortalWrt</a> · <a href="https://github.com/coolsnowwolf/lede">LEDE</a> · <a href="https://github.com/hanwckf/immortalwrt-mt798x">hanwckf</a></p></li><li><p><strong>Referenz:</strong> <a href="https://github.com/P3TERX/Actions-OpenWrt">P3TERX</a></p></li><li><p><strong>Autorinnen und Autoren der LuCI-Plugins</strong></p></li><li><p><strong>Alle</strong>, die am Projekt beteiligt waren</p></li></ul>]]>
    </content>
    <id>https://www.weigshare.com/posts/WeiG-OpenWrt-AutoBuild-Guide/</id>
    <link href="https://www.weigshare.com/posts/WeiG-OpenWrt-AutoBuild-Guide/"/>
    <published>2026-08-01T12:11:00.000Z</published>
    <summary>Mit dem Wei.G OpenWrt Online-Customizer und GitHub Actions ein eigenes OpenWrt-Image in der Cloud bauen – ohne lokale Build-Umgebung.</summary>
    <title>Eigenes OpenWrt-Firmware-Image in der Cloud bauen: Einsteiger-Anleitung</title>
    <updated>2026-10-21T08:39:31.052Z</updated>
  </entry>
  <entry>
    <author>
      <name>Wei.G</name>
    </author>
    <category term="Website-Aufbau" scheme="https://www.weigshare.com/categories/Website-Aufbau/"/>
    <category term="Hexo" scheme="https://www.weigshare.com/tags/Hexo/"/>
    <category term="PicList" scheme="https://www.weigshare.com/tags/PicList/"/>
    <category term="Cloudflare" scheme="https://www.weigshare.com/tags/Cloudflare/"/>
    <category term="R2" scheme="https://www.weigshare.com/tags/R2/"/>
    <category term="Bildhosting" scheme="https://www.weigshare.com/tags/Bildhosting/"/>
    <content>
      <![CDATA[<h1 id="Bevor-es-losgeht"><a href="#Bevor-es-losgeht" class="headerlink" title="Bevor es losgeht"></a>Bevor es losgeht</h1><p>PicList arbeitet inzwischen gut mit Cloudflare R2 zusammen. Bei der ersten Einrichtung gibt es trotzdem ein paar Stellen, an denen man leicht hängen bleibt:</p><ul><li>Es gibt viele Eingabefelder, und Werte landen schnell im falschen Feld.</li><li>Für diese Konfiguration gibt es keinen eigenen Verbindungstest.<ul><li>Am zuverlässigsten ist es deshalb, nach der Einrichtung tatsächlich ein Bild hochzuladen.</li></ul></li></ul><p>Diese Anleitung zeigt Schritt für Schritt, wie <strong>PicList</strong> mit <strong>Cloudflare R2</strong> verbunden und als schnelles Bilderhosting mit eigener Domain und CDN genutzt wird.</p><p>Falls der R2-Bucket noch nicht eingerichtet ist, hilft auch diese Anleitung:</p><ul><li><strong><a href="https://www.fecify.com/doc/cn-1.0/fecify-shop-helper-cloudflare-r2.html">Cloudflare-R2-Anleitung</a></strong></li></ul><p>Verwendete PicList-Version: <strong>v3.5.0 (Juli 2026)</strong>.</p><hr><p>Vor Kurzem habe ich die Bilder dieses Blogs zu <strong>Cloudflare R2</strong> migriert und nutze sie zusammen mit <strong>PicList</strong>. Das Ergebnis ist sehr gut:</p><p>Vorteile:</p><p>✅ Kostenlos  ✅ Stabil  ✅ Schnell  ✅ Eigene Domain  ✅ Globale CDN-Beschleunigung  ✅ Keine Last auf dem VPS</p><hr><h1 id="PicList-konfigurieren"><a href="#PicList-konfigurieren" class="headerlink" title="PicList konfigurieren"></a>PicList konfigurieren</h1><ul><li>Bildhosting: für das Hochladen von Bildern</li><li>Cloud: damit PicList auf den Cloudflare-Bucket zugreifen kann</li></ul><h2 id="Bildhosting-Konfiguration"><a href="#Bildhosting-Konfiguration" class="headerlink" title="Bildhosting-Konfiguration"></a>Bildhosting-Konfiguration</h2><p>In der linken Navigation <strong>Bildhosting</strong> → <strong>AWS S3</strong> → <strong>Neue Konfiguration</strong> öffnen:</p><img src="https://img.weigshare.com/img/001.002_PicList_orign.png" width="120"/><h3 id="Pflichtfelder"><a href="#Pflichtfelder" class="headerlink" title="Pflichtfelder"></a>Pflichtfelder</h3><pre><code>● Konfigurationsname: beliebig● AccessKeyId: 18e1************************c0858● secretAccessKey: c8a3********************************************************fa6e● Benutzerdefinierter Endpoint: https://770*************************39d8.r2.cloudflarestorage.com</code></pre><p>Alle Werte können hier abgerufen werden: <a href="https://img.weigshare.com/img/001.005_CF_API_token.png">API-Abbildung</a>.</p><ul><li>Berechtigung: <strong>Administrator Lesen und Schreiben</strong> (sonst schlägt der Cloud-Zugriff von PicList fehl).</li><li>Die Zugangsdaten werden nur einmal angezeigt. Deshalb unbedingt speichern, sonst müssen sie neu erstellt werden.</li></ul><p>● Bucket: Bei mir heißt er <strong>hexo-img</strong>. <a href="https://img.weigshare.com/img/001.003_CDF_bucket.png">Abbildung</a></p><hr><h3 id="Optionale-Felder"><a href="#Optionale-Felder" class="headerlink" title="Optionale Felder"></a>Optionale Felder</h3><p>■ Upload-Pfad: <strong>&#x2F;</strong> (Stammverzeichnis)</p><p>Ich möchte die Dateien im Verzeichnis <strong>img</strong> speichern und verwende deshalb <strong>&#x2F;img&#x2F;</strong>. <a href="https://img.weigshare.com/img/001.004_Directory.png">Abbildung</a></p><p>● Benutzerdefinierte Domain: <a href="https://img.weigshare.com/">https://img.weigshare.com/</a><br>(Sie kann nach dem Verknüpfen der Domain gesetzt werden. Danach verwenden hochgeladene Dateien URLs unter dieser Domain.) <a href="https://img.weigshare.com/img/001.004_Directory.png">Abbildung</a></p><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">https://img.weigeshare.com/img/x.png<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>☐ Ohne benutzerdefinierte Domain erhält man möglicherweise einen Link wie diesen, der sich eventuell nicht direkt öffnen lässt:</p><pre class="line-numbers language-text" data-language="text"><code class="language-text">https://770*************************39d8.r2.cloudflarestorage.com/img/0.%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202026-07-08%20181820.png<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>☐ Region: <strong>auto</strong> (oder us-east-1)</p><ul><li>Zugriffsrichtlinie für hochgeladene Objekte: <span style="color:#ff69b4;font-weight:bold;">public-read</span> (offizielle Empfehlung)</li></ul><hr><h2 id="Cloud-Konfiguration"><a href="#Cloud-Konfiguration" class="headerlink" title="Cloud-Konfiguration"></a>Cloud-Konfiguration</h2><p>In der linken Navigation <strong>Cloud</strong> → <strong>S3 API</strong> → <strong>Neue Konfiguration</strong> → <strong>Speichern</strong> öffnen:</p><p><img src="https://img.weigshare.com/img/001.005_piclist_cloud_configuration1.png" height="280"/> <img src="https://img.weigshare.com/img/001.005_piclist_cloud_configuration2.png" height="280"/></p><h3 id="Pflichtfelder-1"><a href="#Pflichtfelder-1" class="headerlink" title="Pflichtfelder"></a>Pflichtfelder</h3><pre><code>● Konfigurationsname: beliebig● Access Key Id: 18e1************************c0858● Access Key Secret: c8a3********************************************************fa6e● Endpoint / benutzerdefinierter Endpoint: https://770*************************39d8.r2.cloudflarestorage.com</code></pre><p>Den API-Token gibt es hier: <a href="https://img.weigshare.com/img/001.005_CF_API_token.png">API</a>.</p><ul><li>Berechtigung: <strong>Administrator Lesen und Schreiben</strong> (sonst schlägt der Cloud-Zugriff von PicList fehl).</li></ul><p>● Bucket-Name: <strong>hexo-img</strong>. <a href="https://img.weigshare.com/img/001.003_CDF_bucket.png">Abbildung</a></p><p>■ Startverzeichnis: <strong>&#x2F;</strong></p><ul><li>Ich speichere unter <strong>&#x2F;img&#x2F;</strong>: <a href="https://img.weigshare.com/img/001.004_Directory.png">Abbildung</a></li></ul><h3 id="Optionale-Felder-1"><a href="#Optionale-Felder-1" class="headerlink" title="Optionale Felder"></a>Optionale Felder</h3><p>■ Dateiberechtigung beim Upload: public-read (öffentlich lesbar, offiziell empfohlen)</p><hr><h1 id="Haufige-Fragen"><a href="#Haufige-Fragen" class="headerlink" title="Häufige Fragen"></a>Häufige Fragen</h1><h2 id="Upload-erfolgreich-aber-das-Bild-lasst-sich-nicht-offnen"><a href="#Upload-erfolgreich-aber-das-Bild-lasst-sich-nicht-offnen" class="headerlink" title="Upload erfolgreich, aber das Bild lässt sich nicht öffnen"></a>Upload erfolgreich, aber das Bild lässt sich nicht öffnen</h2><p>Prüfen:</p><ul><li>Ob der Bucket öffentlichen Zugriff erlaubt.</li><li>Ob die benutzerdefinierte Domain verknüpft ist.</li><li>Ob die DNS-Auflösung bereits funktioniert.</li></ul><h2 id="AccessDenied"><a href="#AccessDenied" class="headerlink" title="AccessDenied"></a>AccessDenied</h2><p>Prüfen:</p><ul><li>Ob die Access Key ID korrekt ist.</li><li>Ob der Secret Access Key korrekt ist.</li><li>Ob der API-Token Lese- und Schreibrechte besitzt.</li></ul><h2 id="SignatureDoesNotMatch"><a href="#SignatureDoesNotMatch" class="headerlink" title="SignatureDoesNotMatch"></a>SignatureDoesNotMatch</h2><p>Prüfen:</p><ul><li>Ob der Endpoint korrekt eingetragen ist.</li></ul><h1 id="Fazit"><a href="#Fazit" class="headerlink" title="Fazit"></a>Fazit</h1><p>Mein aktueller Blog-Stack:</p><pre class="line-numbers language-text" data-language="text"><code class="language-text">Hexo + Butterfly + Github + Cloudflare R2 + Cloudflare CDN<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>Wer für einen Blog eine langfristig stabile Bildhosting-Lösung sucht, sollte PicList + Cloudflare R2 definitiv ausprobieren.</p>]]>
    </content>
    <id>https://www.weigshare.com/posts/PicList-Cloudflare-R2-Guide/</id>
    <link href="https://www.weigshare.com/posts/PicList-Cloudflare-R2-Guide/"/>
    <published>2026-07-08T13:10:08.000Z</published>
    <summary>Einsteigerfreundliche Anleitung für PicList und Cloudflare R2 als Bilderhosting mit eigener Domain und globaler CDN-Auslieferung.</summary>
    <title>Schnelles, kostenloses Bilderhosting mit PicList + Cloudflare R2 einrichten</title>
    <updated>2026-10-21T08:39:31.052Z</updated>
  </entry>
  <entry>
    <author>
      <name>Wei.G</name>
    </author>
    <category term="Python" scheme="https://www.weigshare.com/categories/Python/"/>
    <category term="Python" scheme="https://www.weigshare.com/tags/Python/"/>
    <category term="PyQt6" scheme="https://www.weigshare.com/tags/PyQt6/"/>
    <category term="Labor" scheme="https://www.weigshare.com/tags/Labor/"/>
    <category term="Chemische Analyse" scheme="https://www.weigshare.com/tags/Chemische-Analyse/"/>
    <category term="Normen" scheme="https://www.weigshare.com/tags/Normen/"/>
    <category term="Standard-Titrationslösung" scheme="https://www.weigshare.com/tags/Standard-Titrationslosung/"/>
    <category term="Standardlösung" scheme="https://www.weigshare.com/tags/Standardlosung/"/>
    <content>
      <![CDATA[<h1 id="Warum-ich-das-Programm-gebaut-habe"><a href="#Warum-ich-das-Programm-gebaut-habe" class="headerlink" title="Warum ich das Programm gebaut habe"></a>Warum ich das Programm gebaut habe</h1><p>Bei chemischen Analysen endet die Arbeit nach dem Ansetzen und Einstellen einer Maßlösung nicht. Danach müssen Konzentrationen berechnet, Korrekturwerte berücksichtigt, Parallelbestimmungen verglichen und die Ergebnisse geprüft werden. Wird das alles von Hand erledigt, kostet es viel Zeit und bei größeren Datenmengen steigt das Risiko für Rechen- oder Prüffehler.</p><ul><li><p>Ich habe das Programm neben der Arbeit entwickelt. Der Start war im April, die erste produktive Version war im November fertig. Insgesamt stecken mehr als sechs Monate Arbeit darin – und es war zugleich meine erste richtige GUI-Desktopanwendung.</p></li><li><p>Während der Entwicklung habe ich mir Python und PyQt6 selbst beigebracht und Gestaltung, Rechenlogik, Tests und Bereitstellung eigenständig umgesetzt. QFluentWidgets sorgt für eine angenehmere Bedienung im Alltag.</p></li><li><p>Im praktischen Einsatz spart das Tool pro Person mehr als eine Stunde Prüfarbeit pro Woche. Damit wurde eine kleine Idee aus einem späten Abend Wirklichkeit: einmal ein halbes Jahr investieren und danach jede Woche eine Stunde „zurückgewinnen“. 😆</p></li><li><p>Nach meinem kürzlichen Jobwechsel hatte ich endlich Zeit, das Projekt aufzuräumen. Deshalb stelle ich es nun als Open Source zur Verfügung.</p></li></ul><p><strong><a href="https://www.weigshare.com/standard">Web-Vorschau</a> ⬅</strong> Hier öffnen</p><h1 id="Standardlosungs-Berechnungs-und-Prufsystem"><a href="#Standardlosungs-Berechnungs-und-Prufsystem" class="headerlink" title="Standardlösungs-Berechnungs- und Prüfsystem"></a>Standardlösungs-Berechnungs- und Prüfsystem</h1><div align="left" style="display:flex;gap:10px;flex-wrap:wrap;justify-content:left;">  <img src="https://img.shields.io/badge/Python-3.12-blue" alt="Python">  <img src="https://img.shields.io/badge/PyQt6-GUI-green" alt="PyQt6">  <img src="https://img.shields.io/badge/SQLite-Database-blue" alt="SQLite">  <img src="https://img.shields.io/badge/GPL--3.0-red" alt="GPL3"></div><p>Eine Desktop-Anwendung zur Standardisierung, Berechnung und Prüfung von Standardlösungen im Labor.</p><p>Unterstützt werden Temperaturkorrektur, Bürettenkorrektur, vier Parallelbestimmungen durch eine Person, acht Parallelbestimmungen durch zwei Personen sowie die automatische Berechnung der relativen Spannweite. Dadurch wird die Verwaltung von Standardlösungen effizienter.</p><img src="https://img.weigshare.com/img/002.StandardSolution_Review_System_Demo_GIF.gif" ><p>Nach Eingabe der Messdaten werden Berechnung und Prüfung automatisch durchgeführt. Die <a href="https://github.com/weigefenxiang/StandardSolutionReviewSystem/releases">exe</a> kann direkt verwendet werden.</p><hr><h2 id="Funktionen"><a href="#Funktionen" class="headerlink" title="Funktionen"></a>Funktionen</h2><p>✅ Temperaturkorrektur<br>✅ Korrektur des Bürettenwerts<br>✅ Automatische Berechnung der Konzentration der Standardlösung</p><p>✅ Vier Parallelbestimmungen durch eine Person<br>✅ Acht Parallelbestimmungen durch zwei Personen<br>✅ Berechnung der relativen Spannweite<br>✅ Berechnung der auszugebenden Konzentration</p><hr><h2 id="Unterstutzte-Standardlosungen"><a href="#Unterstutzte-Standardlosungen" class="headerlink" title="Unterstützte Standardlösungen"></a>Unterstützte Standardlösungen</h2><ul><li><p>Salzsäure, Natriumhydroxid, Schwefelsäure, Kaliumpermanganat, Silbernitrat, Natriumthiosulfat, Ethylendiamintetraessigsäure (EDTA), Zinkchlorid, Kaliumhydroxid-Ethanol, Natriumcarbonat usw.</p></li><li><p>HCl, NaOH, H₂SO₄, KMnO₄, AgNO₃, Na₂S₂O₃, EDTA, ZnCl₂, KOH-Ethanol, Na₂CO₃, Custom Molar Mass (g&#x2F;mol)</p></li><li><p><strong>Benutzerdefiniert</strong></p></li></ul><hr><h2 id="Benutzeroberflache"><a href="#Benutzeroberflache" class="headerlink" title="Benutzeroberfläche"></a>Benutzeroberfläche</h2><h3 id="Hauptfenster"><a href="#Hauptfenster" class="headerlink" title="Hauptfenster"></a>Hauptfenster</h3><img src="https://img.weigshare.com/img/002.StandardSolution_Review_System_Demo.png" ><h4 id="Alte-Oberflache"><a href="#Alte-Oberflache" class="headerlink" title="Alte Oberfläche"></a>Alte Oberfläche</h4><p>Die Oberfläche wurde mehrfach überarbeitet.</p><img src=https://img.weigshare.com/img/002.002.StandardSolution_Review_System_Demo_old.png ><table><thead><tr><th><strong>Eingabe</strong></th><th><strong>Automatisch erzeugt</strong></th></tr></thead><tbody><tr><td>Masse der Primärsubstanz</td><td>Tatsächliches Titrationsvolumen</td></tr><tr><td>Verbrauchtes Titrationsvolumen</td><td>Vier Parallelkonzentrationen einer Person</td></tr><tr><td>Bürettenkorrektur</td><td>Acht Parallelkonzentrationen zweier Personen</td></tr><tr><td>Temperaturkorrektur</td><td>Relative Spannweite</td></tr><tr><td>Blindwertvolumen</td><td>Auszugebende Konzentration</td></tr></tbody></table><hr><h2 id="Ausfuhren"><a href="#Ausfuhren" class="headerlink" title="Ausführen"></a>Ausführen</h2><h3 id="Release-Version"><a href="#Release-Version" class="headerlink" title="Release-Version"></a>Release-Version</h3><p>Die <a href="https://github.com/weigefenxiang/StandardSolutionReviewSystem/releases">exe</a> herunterladen und starten:</p><pre class="line-numbers language-text" data-language="text"><code class="language-text">StandardSolution_ReviewSystem.exe<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><h2 id="Aus-dem-Quellcode-starten"><a href="#Aus-dem-Quellcode-starten" class="headerlink" title="Aus dem Quellcode starten"></a>Aus dem Quellcode starten</h2><details>    <summary>Zum Aufklappen klicken</summary><h3 id="Entwicklungsumgebung"><a href="#Entwicklungsumgebung" class="headerlink" title="Entwicklungsumgebung"></a>Entwicklungsumgebung</h3><ul><li>Windows 11</li><li>Python 3.12</li><li>PyQt6</li><li>QFluentWidgets</li><li>SQLite</li><li>Nuitka (für das Packaging)</li></ul><h3 id="Abhangigkeiten-installieren"><a href="#Abhangigkeiten-installieren" class="headerlink" title="Abhängigkeiten installieren"></a>Abhängigkeiten installieren</h3><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">pip <span class="token function">install</span> <span class="token parameter variable">-r</span> requirements.txt<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><h3 id="Programm-starten"><a href="#Programm-starten" class="headerlink" title="Programm starten"></a>Programm starten</h3><pre class="line-numbers language-bash" data-language="bash"><code class="language-bash">python Flu_Main.py<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><h2 id="Open-Source-Lizenz"><a href="#Open-Source-Lizenz" class="headerlink" title="Open-Source-Lizenz"></a>Open-Source-Lizenz</h2><p>Dieses Projekt wird unter der GPL-3.0 License veröffentlicht.</p><p>Bei Nutzung, Änderung und Weitergabe sind die Bedingungen der GPL-3.0 einzuhalten.</p><h2 id="Verwendete-Open-Source-Komponenten"><a href="#Verwendete-Open-Source-Komponenten" class="headerlink" title="Verwendete Open-Source-Komponenten"></a>Verwendete Open-Source-Komponenten</h2><p>Das Projekt verwendet unter anderem:</p><ul><li>Python, PyQt6, QFluentWidgets, SQLite, Nuitka</li></ul><p>Vielen Dank an alle Entwicklerinnen und Entwickler der verwendeten Open-Source-Projekte.</p></details>]]>
    </content>
    <id>https://www.weigshare.com/posts/StandardSolution-Review-Soft/</id>
    <link href="https://www.weigshare.com/posts/StandardSolution-Review-Soft/"/>
    <published>2026-07-02T01:19:11.000Z</published>
    <summary>Windows-Desktopanwendung auf Basis von Python, PyQt6, QFluentWidgets und SQLite für Berechnung und Prüfung von Standardlösungen mit Temperatur- und Bürettenkorrektur, Parallelwerten und automatischer relativer Spannweite.</summary>
    <title>Berechnungs- und Prüfsystem für Standardlösungen im Labor</title>
    <updated>2026-10-21T08:39:31.052Z</updated>
  </entry>
</feed>
