<?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.053Z</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>Si vous administrez habituellement qBittorrent depuis un navigateur — notamment sur un <strong>NAS, dans Docker ou depuis un téléphone</strong> — WeiG qB WebUI rend les opérations quotidiennes bien plus confortables. <strong><a href="https://weigefenxiang.github.io/WeiG-qB-WebUI/">Aperçu en ligne</a></strong></p><p>Il y a environ sept ans, j’ai rejoint quelques trackers privés. À l’époque, j’avais installé qBittorrent 4.1.9 sur mon NAS : c’était la toute dernière version. Je n’aurais jamais imaginé l’utiliser encore aujourd’hui.</p><p>J’ai bien tenté une grosse mise à jour une fois (vers la 4.2.5, si ma mémoire est bonne), mais les tâches torrent ont disparu du client et je ne pouvais plus continuer à partager. Avec tout ce que j’avais accumulé, la remise en état était devenue un vrai casse-tête. Depuis, lorsqu’une version fonctionne correctement, je préfère ne pas y toucher.</p><p>Après mes études et mon entrée dans la vie active, je passe beaucoup moins de temps devant un ordinateur. Je gère désormais surtout mon NAS depuis mon téléphone. Or, l’interface Web d’origine n’est pas très pratique sur petit écran. J’ai essayé d’autres interfaces alternatives, mais leur compatibilité avec les anciennes versions laissait souvent à désirer.</p><p>C’est ce qui m’a donné envie de créer WeiG qB WebUI. Le projet prend en charge plusieurs versions stables de qBittorrent, de 4.1.x à 5.2.x. Si vous rencontrez un problème ou avez une suggestion, n’hésitez pas à laisser un commentaire.</p><p><strong>WeiG qB WebUI</strong> est une <strong>IU Web alternative</strong> pour qBittorrent, pensée pour ordinateur comme pour mobile :</p><ul><li>📱 Interface adaptée aux téléphones</li><li>🌙 Mode sombre</li><li>🧱 Compatible avec les anciennes versions de qBittorrent</li><li>✅ Prend en charge <strong>qBittorrent 4.1.x → 5.2.x</strong></li><li>🐳 Fonctionne sous Windows, Linux, Docker et NAS</li></ul><p><a href="https://github.com/weigefenxiang/WeiG-qB-WebUI">Projet</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="Apercu-de-l’interface"><a href="#Apercu-de-l’interface" class="headerlink" title="Aperçu de l’interface"></a>Aperçu de l’interface</h2><h3 id="Bureau"><a href="#Bureau" class="headerlink" title="Bureau"></a>Bureau</h3><p align="center">  <img src="https://img.weigshare.com/img/004.001.weig-qb-webui-desktop-overview.gif" alt="Interface bureau de WeiG qB WebUI" style="display:block;width:100%;max-width:900px;height:auto;margin:0 auto;"></p><h3 id="Mobile"><a href="#Mobile" class="headerlink" title="Mobile"></a>Mobile</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="Démonstration de WeiG qB WebUI sur téléphone">    <img src="https://img.weigshare.com/img/004.003.weig-qb-webui-mobile-overview.png" alt="Aperçu des écrans mobiles de WeiG qB WebUI">  </div></div><h2 id="Installation-pour-debutants"><a href="#Installation-pour-debutants" class="headerlink" title="Installation pour débutants"></a>Installation pour débutants</h2><details><summary><b>Première installation ? Déplier le guide d'une minute</b></summary><h3 id="1-Extraire-l’archive"><a href="#1-Extraire-l’archive" class="headerlink" title="1. Extraire l’archive"></a>1. Extraire l’archive</h3><p>Téléchargez la dernière version stable <a href="https://github.com/weigefenxiang/WeiG-qB-WebUI/releases/latest/download/weig-qb-webui.zip"><strong>weig-qb-webui.zip</strong></a> et décompressez l’archive. Le dossier porte déjà le bon nom :</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>Le dossier <strong><code>weig-qb-webui</code> entier</strong> est la racine WebUI. Ne copiez pas uniquement <code>public</code> ou <code>private</code>.</p><h3 id="2-Deplacer-le-dossier-vers-un-emplacement-permanent"><a href="#2-Deplacer-le-dossier-vers-un-emplacement-permanent" class="headerlink" title="2. Déplacer le dossier vers un emplacement permanent"></a>2. Déplacer le dossier vers un emplacement permanent</h3><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>C’est ce chemin qu’il faudra renseigner dans qBittorrent.</p><h3 id="3-Activer-dans-qBittorrent"><a href="#3-Activer-dans-qBittorrent" class="headerlink" title="3. Activer dans qBittorrent"></a>3. Activer dans qBittorrent</h3><p>Ouvrez qBittorrent :</p><p><strong>Outils → Options… → WebUI</strong></p><p>Ce sont les termes de l’interface française officielle actuelle de qBittorrent. Ensuite :</p><ol><li>Activez <strong>Utiliser l’IU Web alternative</strong>.</li><li>Repérez <strong>Emplacement des fichiers :</strong>.</li><li>Saisissez le chemin du dossier <code>weig-qb-webui</code>.</li></ol><p>Exemple Windows :</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>Exemple Linux :</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>Cliquez sur <strong>OK</strong> pour enregistrer.</li><li>Rechargez la page WebUI. Si l’ancienne interface reste en cache, essayez <code>Ctrl + F5</code>.</li></ol><blockquote><p><strong>Vérification du chemin :</strong> <code>public</code>, <code>private</code>, <code>VERSION</code> et les autres fichiers doivent être directement visibles dans le dossier indiqué.</p></blockquote><blockquote><p><strong>Docker :</strong> qBittorrent fonctionne dans un conteneur. Il faut donc généralement saisir le chemin visible depuis le conteneur, et non le chemin de l’hôte.</p></blockquote></details><h2 id="Installation-en-une-commande"><a href="#Installation-en-une-commande" class="headerlink" title="Installation en une commande"></a>Installation en une commande</h2><p>Le script Linux &#x2F; NAS se télécharge depuis l’adresse Dev Pages ci-dessous. <strong>Cette adresse ne choisit pas la version installée :</strong> sans <code>-dev</code>, l’installateur utilise la version GitHub stable et vérifiée de <code>main</code> ; avec <code>-dev</code>, la version de développement de <code>dev</code> identifiée par son SHA Git exact. Le script reste dans le dossier courant pour les mises à jour et restaurations.</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>Afficher l'emplacement du script et le dossier d'installation par défaut</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>Répertoire WebUI par défaut :</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>Avec l’utilisateur <code>root</code> :</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>Installation Docker / plusieurs conteneurs / chemins</b></summary><h4 id="Hote-et-conteneur"><a href="#Hote-et-conteneur" class="headerlink" title="Hôte et conteneur"></a>Hôte et conteneur</h4><ul><li><strong>Hôte</strong> : le système Linux&#x2F;NAS qui exécute Docker.</li><li><strong>Conteneur</strong> : l’environnement dans lequel qBittorrent s’exécute.</li></ul><p>Exemple :</p><pre class="line-numbers language-text" data-language="text"><code class="language-text">Hôte :      /root/qbittorrent/config   ↓ monté versConteneur : /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>Si la WebUI est installée sur l’hôte dans :</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>alors <strong>Emplacement des fichiers :</strong> dans qBittorrent doit être :</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="Un-seul-conteneur-qBittorrent"><a href="#Un-seul-conteneur-qBittorrent" class="headerlink" title="Un seul conteneur qBittorrent"></a>Un seul conteneur qBittorrent</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>Le programme d’installation essaie de détecter automatiquement le conteneur et le montage <code>/config</code>.</p><h4 id="Lister-les-conteneurs"><a href="#Lister-les-conteneurs" class="headerlink" title="Lister les conteneurs"></a>Lister les conteneurs</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>Ou :</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>Choisir explicitement un conteneur :</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>S’il y a plusieurs conteneurs qBittorrent, le programme d’installation refuse d’en choisir un au hasard.</p><h4 id="Cas-3-plusieurs-conteneurs-qBittorrent"><a href="#Cas-3-plusieurs-conteneurs-qBittorrent" class="headerlink" title="Cas 3 : plusieurs conteneurs qBittorrent"></a>Cas 3 : plusieurs conteneurs qBittorrent</h4><p>Si vous avez <code>qbittorrent</code> et <code>qbittorrent-test</code>, affichez les conteneurs puis sélectionnez celui à configurer : l’installateur ne choisit pas au hasard.</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="Indiquer-le-chemin-hote-correspondant-a-config"><a href="#Indiquer-le-chemin-hote-correspondant-a-config" class="headerlink" title="Indiquer le chemin hôte correspondant à /config"></a>Indiquer le chemin hôte correspondant à <code>/config</code></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 :</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>Autre 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="Choisir-le-chemin-WebUI"><a href="#Choisir-le-chemin-WebUI" class="headerlink" title="Choisir le chemin WebUI"></a>Choisir le chemin WebUI</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="Cas-6-mettre-a-jour-plusieurs-dossiers-WebUI-existants"><a href="#Cas-6-mettre-a-jour-plusieurs-dossiers-WebUI-existants" class="headerlink" title="Cas 6 : mettre à jour plusieurs dossiers WebUI existants"></a>Cas 6 : mettre à jour plusieurs dossiers WebUI existants</h4><p>Avec plusieurs instances qBittorrent, répétez <code>-o</code> pour indiquer chaque dossier. L’archive est téléchargée et vérifiée une seule fois ; le basculement commence après la préparation de toutes les cibles. Les trois dernières sauvegardes sont conservées séparément pour chacune dans <code>~/.config/weig-qb-webui/backups/</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">-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>N’utilisez pas <code>-configure</code> avec plusieurs cibles : chaque instance garde son chemin WebUI configuré. Lancez <code>sh install.sh -help</code> pour les options.</p><h4 id="Verifier-les-chemins-apres-l’installation"><a href="#Verifier-les-chemins-apres-l’installation" class="headerlink" title="Vérifier les chemins après l’installation"></a>Vérifier les chemins après l’installation</h4><p>Une fois l’installation terminée, le script affiche des chemins similaires à ceux-ci. Le premier correspond au dossier réel sur l’hôte ; le second est le chemin à renseigner dans <strong>Files location</strong> de qBittorrent, à l’intérieur du conteneur.</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>Afficher le dossier d'installation</b></summary><pre class="line-numbers language-text" data-language="text"><code class="language-text">C:\Users\&lt;votre-nom>\AppData\Local\weig-qb-webui<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre></details><h2 id="Options-courantes"><a href="#Options-courantes" class="headerlink" title="Options courantes"></a>Options courantes</h2><details><summary><b>Linux et Windows utilisent les mêmes options ; PowerShell ignore la casse des noms de paramètres (déplier)</b></summary><p>Les noms des paramètres PowerShell ne sont pas sensibles à la casse.</p><table><thead><tr><th>Usage</th><th>Linux &#x2F; Docker &#x2F; NAS</th><th>Windows PowerShell</th></tr></thead><tbody><tr><td>Dernière version stable</td><td>Par défaut</td><td>Par défaut</td></tr><tr><td>Release précise</td><td><code>-version 1.2.0</code></td><td><code>-version 1.2.0</code></td></tr><tr><td>Version de développement</td><td><code>-dev</code></td><td><code>-dev</code></td></tr><tr><td>Dossier d’installation</td><td><code>-o /path</code> (répétable sous Linux)</td><td><code>-o D:\path</code> ou <code>-output D:\path</code></td></tr><tr><td>Fichier de configuration qBittorrent personnalisé</td><td>—</td><td><code>-qbconfig D:\path\qBittorrent.ini</code></td></tr><tr><td>Configurer qBittorrent</td><td><code>-configure</code></td><td><code>-configure</code></td></tr><tr><td>Restaurer l’installation précédente</td><td><code>-rollback</code></td><td><code>-rollback</code></td></tr><tr><td>Désinstallation complète (sans sauvegardes de l’installateur)</td><td><code>-uninstall -purge</code></td><td><code>-uninstall -purge</code></td></tr><tr><td>Aide</td><td><code>-help</code></td><td><code>-help</code></td></tr><tr><td>Choisir un conteneur Docker</td><td><code>--container=NAME</code></td><td>—</td></tr><tr><td>Lister les conteneurs Docker</td><td><code>--list-containers</code></td><td>—</td></tr><tr><td>Chemin hôte monté sur <code>/config</code></td><td><code>--config-root=/path</code></td><td>—</td></tr></tbody></table></details><details><summary><b>Remarques : (cliquer pour développer)</b></summary><ul><li>Sans <code>-dev</code>, l’installateur utilise le GitHub Release stable et vérifié depuis <code>main</code> ; avec <code>-dev</code>, la version actuelle de <code>dev</code> à son SHA Git exact.</li><li><code>-o</code> signifie <strong>output</strong>. Sous Linux, répétez-le pour mettre à jour plusieurs dossiers WebUI existants avec une seule archive vérifiée.</li><li>Les sauvegardes se trouvent dans <code>~/.config/weig-qb-webui/backups/</code> ; seules les trois plus récentes sont conservées par cible.</li><li><code>-configure</code> active <strong>Use alternative WebUI</strong> et définit <strong>Files location</strong> dans qBittorrent. Une seule cible à la fois.</li><li><code>-rollback</code> restaure la dernière sauvegarde de la cible choisie. Plusieurs <code>-o</code> permettent de revenir en arrière sur plusieurs cibles explicites.</li><li><code>-uninstall -purge</code> supprime le WebUI et les sauvegardes &#x2F; l’état de retour arrière propres à la cible. Les autres installations ne sont pas touchées, et le dossier commun est supprimé s’il devient vide.</li><li>Pour garder les sauvegardes en vue d’un futur <code>-rollback</code>, omettez <code>-purge</code>.</li><li><code>-version 1.2.0</code> choisit un GitHub Release précis. S’il n’existe pas, l’installation échoue <strong>sans basculer vers latest ou dev</strong>.</li><li><code>-help</code> affiche les options actuellement disponibles.</li><li>Avec plusieurs conteneurs Docker, consultez <code>--list-containers</code> puis ciblez-en un avec <code>--container=NAME</code>, ou utilisez <code>--config-root=/path</code>.</li></ul><h3 id="Version-precise-et-repertoire-d’installation"><a href="#Version-precise-et-repertoire-d’installation" class="headerlink" title="Version précise et répertoire d’installation"></a>Version précise et répertoire d’installation</h3><p>Linux :</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 :</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="Retour-arriere"><a href="#Retour-arriere" class="headerlink" title="Retour arrière"></a>Retour arrière</h3><p>Retour arrière :</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="Desinstallation-en-une-commande"><a href="#Desinstallation-en-une-commande" class="headerlink" title="Désinstallation en une commande"></a>Désinstallation en une commande</h2><details><summary><b>Désinstallation complète Linux / NAS, Docker et Windows PowerShell</b></summary><p>Par défaut, nous recommandons la <strong>désinstallation complète sans conserver les sauvegardes de l’installateur</strong> : suppression du WebUI, désactivation de l’interface alternative correspondant à la cible, purge des sauvegardes &#x2F; de l’état de rollback appartenant à cette cible, puis suppression du script d’installation téléchargé dans le dossier courant.</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>Pour un répertoire personnalisé, ajoutez <code>-o /path/to/weig-qb-webui</code>.</p><h3 id="Docker-1"><a href="#Docker-1" class="headerlink" title="Docker"></a>Docker</h3><p>Un seul conteneur &#x2F; détection automatique :</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>Plusieurs conteneurs :</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>Avec <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>Pour un répertoire personnalisé, ajoutez <code>-o D:\weig-qb-webui</code>.</p><p><code>-purge</code> ne supprime que les sauvegardes appartenant à la cible en cours de désinstallation et ne touche pas aux autres installations. Si le répertoire d’état partagé devient vide, <code>~/.config/weig-qb-webui</code> sous Linux (root : <code>/root/.config/weig-qb-webui</code>) ou <code>%APPDATA%\weig-qb-webui</code> sous Windows est également supprimé.</p><p>Pour conserver les sauvegardes afin d’utiliser <code>-rollback</code> plus tard, retirez simplement <code>-purge</code>.</p></details><h2 id="Aide-supplementaire"><a href="#Aide-supplementaire" class="headerlink" title="Aide supplémentaire"></a>Aide supplémentaire</h2><p>Pour Docker, NAS, les chemins personnalisés, les mises à jour et le déploiement manuel, consultez <a href="https://github.com/weigefenxiang/WeiG-qB-WebUI/blob/main/translations/installation-guide/deployment-guide.fr.md">Installation, mise à niveau et déploiement manuel</a>.</p><h2 id="Licence"><a href="#Licence" class="headerlink" title="Licence"></a>Licence</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>Guide pour installer WeiG qB WebUI et l’utiliser comme IU Web alternative de qBittorrent sous Windows, Linux, NAS et Docker.</summary>
    <title>WeiG qB WebUI : guide débutant pour l’IU Web alternative de qBittorrent</title>
    <updated>2026-10-21T08:39:31.053Z</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="Compilation de firmware" scheme="https://www.weigshare.com/tags/Compilation-de-firmware/"/>
    <content>
      <![CDATA[<p>Vous voulez une image OpenWrt adaptée à votre routeur sans installer toute une chaîne de compilation sur votre machine ? Ouvrez le <a href="https://www.weigshare.com/wrt">configurateur en ligne Wei.G</a>, choisissez la source, la cible, les paquets et les options souhaitées, puis envoyez la demande à GitHub Actions. La compilation se fait ensuite dans le 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="Demarrage-rapide"><a href="#Demarrage-rapide" class="headerlink" title="Démarrage rapide"></a>Démarrage rapide</h2><p><span style="color:#ffc107;">⚠️ </span> <span style="color:#ff7b72;">Le flashage d’un firmware comporte des risques. Vérifiez d’abord le modèle du routeur, le partitionnement et la méthode de flashage. En cas de doute, ne flashez pas.</span></p><ul><li>Connectez-vous à <strong><a href="https://github.com/">GitHub</a></strong></li><li>Ouvrez le <strong><a href="https://www.weigshare.com/wrt">personnalisateur en ligne Wei.G</a></strong></li><li>Si vous débutez, suivez le tutoriel ci-dessous 👇</li></ul><h2 id="Contexte"><a href="#Contexte" class="headerlink" title="Contexte"></a>Contexte</h2><ul><li><strong>【Un point de départ plus simple】</strong> Le projet permet de découvrir la compilation d’un firmware personnalisé sans devoir commencer par mettre en place toute une chaîne de compilation locale.</li><li><strong>【Paquets et dépendances】</strong> Certains plugins ou dépendances doivent être intégrés au firmware au moment de la compilation.</li><li><strong>【Configuration】</strong> OpenWrt propose de nombreuses options et, en Chine continentale, les conditions réseau peuvent compliquer encore davantage le téléchargement des dépendances.</li><li><strong>【Temps】</strong> Une compilation complète peut durer plusieurs heures et tout de même échouer ; le diagnostic peut donc coûter beaucoup de temps.</li><li><strong>【Objectif】</strong> À terme, chacun devrait pouvoir forker le projet et héberger son propre site de compilation OpenWrt avec GitHub <strong>Pages + Actions</strong>.</li><li><strong>【État actuel】</strong> Le projet est encore en phase de test. Des bugs peuvent subsister et une utilisation intensive du workflow partagé peut rencontrer les politiques ou quotas de GitHub.</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="Appareils-pris-en-charge"><a href="#Appareils-pris-en-charge" class="headerlink" title="Appareils pris en charge"></a>Appareils pris en charge</h2><p>Seules les cibles suivantes ont été vérifiées pour le moment. Les autres appareils n’ont pas encore été testés. Si vous ne disposez pas d’une méthode de récupération, n’utilisez pas cet outil.</p><ul><li><strong>Sources : <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>Accessible depuis un ordinateur ou un téléphone</li></ul><h2 id="Preparation"><a href="#Preparation" class="headerlink" title="Préparation"></a>Préparation</h2><p><span style="color:#ffc107;">⚠️ </span> <span style="color:#ff7b72;">Le flashage d’un firmware comporte des risques. Vérifiez d’abord le modèle du routeur, le partitionnement et la méthode de flashage. En cas de doute, ne flashez pas.</span></p><ul><li>Connectez-vous à un compte <strong><a href="https://github.com/">GitHub</a></strong>. Sans compte, vous ne pourrez pas lancer de compilation.</li><li>Ouvrez le <strong><a href="https://www.weigshare.com/wrt">personnalisateur en ligne Wei.G</a></strong>.<ul><li><strong><a href="https://dev.weig-wrt.pages.dev/">Page Cloudflare dev</a></strong> (fonctions expérimentales et nouveautés, avec un risque de bugs)</li></ul></li></ul><!-- Capture 1 : page d’accueil montrant Source, Branch, Target et la zone des plugins --><h2 id="1-Choisir-les-parametres"><a href="#1-Choisir-les-parametres" class="headerlink" title="1. Choisir les paramètres"></a>1. Choisir les paramètres</h2><ul><li><p>Après avoir choisi une source, recherchez le modèle ou l’environnement correspondant. Vous pouvez aussi charger une config existante.</p></li><li><p>Sélectionnez <strong>Source → Branch → Target System → Subtarget → Target Profile</strong>.</p><ul><li>Exemple pour x86&#x2F;64 : <strong>ImmortalWrt → openwrt-24.10 → x86 → 64 → Generic x86&#x2F;64</strong></li></ul></li><li><p>Dans <strong>Advanced menuconfig › LuCI › 3. Applications</strong>, cochez les applications souhaitées.</p></li><li><p>Les autres réglages de <strong>Advanced menuconfig</strong> peuvent être adaptés selon vos besoins.</p></li></ul><p>Configurez ensuite si nécessaire le <strong>fuseau horaire</strong>, le <strong>thème du firmware</strong>, les <strong>serveurs NTP</strong> et le <strong>miroir de paquets</strong>.</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="Configuration-existante"><a href="#Configuration-existante" class="headerlink" title="Configuration existante"></a>Configuration existante</h3><p>Si vous disposez déjà d’un fichier <code>.config</code>, <code>config.buildinfo</code> ou d’une requête précédemment téléchargée, cliquez sur <strong>Charger la configuration</strong> en bas. Dans la boîte de confirmation, vérifiez la source, la branche, le Target Profile, les plugins et les réglages du firmware.</p><h2 id="2-Envoyer-la-compilation"><a href="#2-Envoyer-la-compilation" class="headerlink" title="2. Envoyer la compilation"></a>2. Envoyer la compilation</h2><p>Cliquez sur <strong>Envoyer la compilation cloud</strong> en bas à droite.</p><p>Choisissez <strong>Télécharger la requête et ouvrir GitHub</strong>. Le navigateur télécharge un fichier JSON puis ouvre automatiquement une nouvelle page GitHub Issue.</p><p>Déplacez le fichier téléchargé dans la zone de l’Issue puis cliquez sur <strong>Create</strong>.</p><p>Le bot répond dans l’Issue avec le lien Actions correspondant à cette compilation.</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-Telecharger-le-firmware"><a href="#3-Telecharger-le-firmware" class="headerlink" title="3. Télécharger le firmware"></a>3. Télécharger le firmware</h2><p>La compilation prend généralement 2 à 4 heures. Une fois terminée, ouvrez la page Actions et téléchargez les éléments dans <strong>Artifacts</strong> :</p><ul><li><code>FIRMWARE-ALL-XXX</code> : tous les fichiers de firmware et les sommes de contrôle. Pour un premier flashage, recherchez généralement un fichier tel que <code>factory</code>.</li><li><code>CONFIG-XXX</code> : configuration envoyée, configuration finale et différences. Il est conseillé de la conserver.</li><li><code>BUILD-LOGS-XXX</code> : journaux complets de compilation, utiles pour le diagnostic.</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="Questions-frequentes"><a href="#Questions-frequentes" class="headerlink" title="Questions fréquentes"></a>Questions fréquentes</h2><ul><li><strong>Que faire si la compilation échoue ?</strong> Téléchargez <code>BUILD-LOGS-…</code> et examinez le dernier <code>Error</code>. Vous pouvez aussi signaler le problème dans l’Issue.</li><li><strong>Comment annuler ?</strong> Répondez <code>/cancel</code> dans votre Issue de compilation.</li><li><strong>Combien de compilations simultanées ?</strong> Un compte ne peut exécuter que deux tâches en même temps ; les suivantes attendent.</li><li><strong>Pourquoi n’y a-t-il pas de bouton de téléchargement ?</strong> GitHub demande généralement d’être connecté pour télécharger les Artifacts d’Actions.</li><li><strong>File d’attente trop longue sur le dépôt public ?</strong> À l’avenir, vous pourrez <a href="https://github.com/weigefenxiang/WeiG-OpenWrt-AutoBuild">forker ce projet</a> puis lancer les compilations dans votre propre dépôt en suivant les indications du site, ce qui évitera la file d’attente partagée.</li></ul><p>Projet : <a href="https://github.com/weigefenxiang/WeiG-OpenWrt-AutoBuild">WeiG-OpenWrt-AutoBuild</a></p><h2 id="Remerciements"><a href="#Remerciements" class="headerlink" title="Remerciements"></a>Remerciements</h2><ul><li><p><strong>Sources :</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>Référence :</strong> <a href="https://github.com/P3TERX/Actions-OpenWrt">P3TERX</a></p></li><li><p><strong>Les auteurs des plugins LuCI</strong></p></li><li><p><strong>Toutes les personnes</strong> ayant participé au projet</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>Créez une image OpenWrt personnalisée avec le configurateur en ligne Wei.G et GitHub Actions, sans installer d’environnement de compilation local.</summary>
    <title>Construire son propre firmware OpenWrt dans le cloud : guide pour débutants</title>
    <updated>2026-10-21T08:39:31.053Z</updated>
  </entry>
  <entry>
    <author>
      <name>Wei.G</name>
    </author>
    <category term="Création de site" scheme="https://www.weigshare.com/categories/Creation-de-site/"/>
    <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="Hébergement d’images" scheme="https://www.weigshare.com/tags/Hebergement-d%E2%80%99images/"/>
    <content>
      <![CDATA[<h1 id="Avant-de-commencer"><a href="#Avant-de-commencer" class="headerlink" title="Avant de commencer"></a>Avant de commencer</h1><p>PicList fonctionne désormais très bien avec Cloudflare R2, mais la première configuration comporte encore quelques pièges classiques :</p><ul><li>il y a plusieurs champs à remplir et il est facile de placer une valeur au mauvais endroit ;</li><li>il n’existe pas de bouton de test de connexion pour cette configuration ;<ul><li>le moyen le plus fiable de vérifier les réglages reste donc d’envoyer réellement une image.</li></ul></li></ul><p>Ce guide explique pas à pas comment connecter <strong>PicList</strong> à <strong>Cloudflare R2</strong> et l’utiliser comme hébergement d’images rapide avec domaine personnalisé et CDN.</p><p>Si le bucket R2 n’est pas encore créé, vous pouvez aussi consulter :</p><ul><li><strong><a href="https://www.fecify.com/doc/cn-1.0/fecify-shop-helper-cloudflare-r2.html">Tutoriel Cloudflare R2</a></strong></li></ul><p>Version de PicList utilisée ici : <strong>v3.5.0 (juillet 2026)</strong>.</p><hr><p>J’ai récemment migré les images du blog vers <strong>Cloudflare R2</strong> et je l’utilise avec <strong>PicList</strong>. Le résultat est très satisfaisant.</p><p>Avantages :</p><p>✅ Gratuit  ✅ Stable  ✅ Rapide  ✅ Domaine personnalisé  ✅ CDN mondial  ✅ Aucune charge sur un VPS</p><hr><h1 id="Configurer-PicList"><a href="#Configurer-PicList" class="headerlink" title="Configurer PicList"></a>Configurer PicList</h1><ul><li>Hébergement d’images : utilisé pour envoyer les images</li><li>Cloud : utilisé par PicList pour accéder au bucket Cloudflare</li></ul><h2 id="Configuration-de-l’hebergement-d’images"><a href="#Configuration-de-l’hebergement-d’images" class="headerlink" title="Configuration de l’hébergement d’images"></a>Configuration de l’hébergement d’images</h2><p>Dans la navigation de gauche, ouvrez <strong>Hébergement d’images</strong> → <strong>AWS S3</strong> → <strong>Nouvelle configuration</strong> :</p><img src="https://img.weigshare.com/img/001.002_PicList_orign.png" width="120"/><h3 id="Champs-obligatoires"><a href="#Champs-obligatoires" class="headerlink" title="Champs obligatoires"></a>Champs obligatoires</h3><pre><code>● Nom de la configuration : au choix● AccessKeyId : 18e1************************c0858● secretAccessKey : c8a3********************************************************fa6e● Endpoint personnalisé : https://770*************************39d8.r2.cloudflarestorage.com</code></pre><p>Ces informations sont disponibles ici : <a href="https://img.weigshare.com/img/001.005_CF_API_token.png">capture de l’API</a>.</p><ul><li>Autorisation : <strong>lecture et écriture administrateur</strong> (sinon l’accès Cloud de PicList échouera).</li><li>Les identifiants ne sont affichés qu’une seule fois. Enregistrez-les, sinon il faudra les recréer.</li></ul><p>● Bucket : le mien s’appelle <strong>hexo-img</strong>. <a href="https://img.weigshare.com/img/001.003_CDF_bucket.png">Capture</a></p><hr><h3 id="Champs-facultatifs"><a href="#Champs-facultatifs" class="headerlink" title="Champs facultatifs"></a>Champs facultatifs</h3><p>■ Chemin d’envoi : <strong>&#x2F;</strong> (racine)</p><p>Je souhaite stocker les fichiers dans le dossier <strong>img</strong>, j’utilise donc <strong>&#x2F;img&#x2F;</strong>. <a href="https://img.weigshare.com/img/001.004_Directory.png">Capture</a></p><p>● Domaine personnalisé : <a href="https://img.weigshare.com/">https://img.weigshare.com/</a><br>(Il peut être configuré après avoir associé le domaine. Les fichiers envoyés utiliseront alors des liens sous ce domaine.) <a href="https://img.weigshare.com/img/001.004_Directory.png">Capture</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>☐ Sans domaine personnalisé, un lien de ce type peut être renvoyé et il peut ne pas être accessible directement :</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> (ou us-east-1)</p><ul><li>Politique d’accès des objets envoyés : <span style="color:#ff69b4;font-weight:bold;">public-read</span> (recommandation officielle)</li></ul><hr><h2 id="Configuration-Cloud"><a href="#Configuration-Cloud" class="headerlink" title="Configuration Cloud"></a>Configuration Cloud</h2><p>Dans la navigation de gauche, ouvrez <strong>Cloud</strong> → <strong>S3 API</strong> → <strong>Nouvelle configuration</strong> → <strong>Enregistrer</strong> :</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="Champs-obligatoires-1"><a href="#Champs-obligatoires-1" class="headerlink" title="Champs obligatoires"></a>Champs obligatoires</h3><pre><code>● Nom de la configuration : au choix● Access Key Id : 18e1************************c0858● Access Key Secret : c8a3********************************************************fa6e● endpoint / endpoint personnalisé : https://770*************************39d8.r2.cloudflarestorage.com</code></pre><p>Obtenez le jeton API ici : <a href="https://img.weigshare.com/img/001.005_CF_API_token.png">API</a>.</p><ul><li>Autorisation : <strong>lecture et écriture administrateur</strong> (sinon l’accès Cloud de PicList échouera).</li></ul><p>● Nom du bucket : <strong>hexo-img</strong>. <a href="https://img.weigshare.com/img/001.003_CDF_bucket.png">Capture</a></p><p>■ Répertoire de départ : <strong>&#x2F;</strong></p><ul><li>Je stocke les fichiers sous <strong>&#x2F;img&#x2F;</strong> : <a href="https://img.weigshare.com/img/001.004_Directory.png">Capture</a></li></ul><h3 id="Champs-facultatifs-1"><a href="#Champs-facultatifs-1" class="headerlink" title="Champs facultatifs"></a>Champs facultatifs</h3><p>■ Autorisation des fichiers envoyés : public-read (lecture publique, recommandation officielle)</p><hr><h1 id="Questions-frequentes"><a href="#Questions-frequentes" class="headerlink" title="Questions fréquentes"></a>Questions fréquentes</h1><h2 id="L’envoi-reussit-mais-l’image-ne-s’ouvre-pas"><a href="#L’envoi-reussit-mais-l’image-ne-s’ouvre-pas" class="headerlink" title="L’envoi réussit mais l’image ne s’ouvre pas"></a>L’envoi réussit mais l’image ne s’ouvre pas</h2><p>Vérifiez :</p><ul><li>que le bucket autorise l’accès public ;</li><li>que le domaine personnalisé est bien associé ;</li><li>que la résolution DNS est active.</li></ul><h2 id="AccessDenied"><a href="#AccessDenied" class="headerlink" title="AccessDenied"></a>AccessDenied</h2><p>Vérifiez :</p><ul><li>que l’Access Key ID est correct ;</li><li>que le Secret Access Key est correct ;</li><li>que le jeton API dispose des droits de lecture et d’écriture.</li></ul><h2 id="SignatureDoesNotMatch"><a href="#SignatureDoesNotMatch" class="headerlink" title="SignatureDoesNotMatch"></a>SignatureDoesNotMatch</h2><p>Vérifiez :</p><ul><li>que l’Endpoint est correct.</li></ul><h1 id="Conclusion"><a href="#Conclusion" class="headerlink" title="Conclusion"></a>Conclusion</h1><p>La pile actuelle de mon blog :</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>Si vous recherchez une solution d’hébergement d’images stable sur le long terme pour un blog, PicList + Cloudflare R2 mérite vraiment d’être essayé.</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>Guide pour débutants afin d’utiliser PicList avec Cloudflare R2 comme hébergement d’images, avec domaine personnalisé et diffusion via CDN mondial.</summary>
    <title>Mettre en place un hébergement d’images rapide et gratuit avec PicList + Cloudflare R2</title>
    <updated>2026-10-21T08:39:31.053Z</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="Laboratoire" scheme="https://www.weigshare.com/tags/Laboratoire/"/>
    <category term="Analyse chimique" scheme="https://www.weigshare.com/tags/Analyse-chimique/"/>
    <category term="Normes" scheme="https://www.weigshare.com/tags/Normes/"/>
    <category term="Solution titrée" scheme="https://www.weigshare.com/tags/Solution-titree/"/>
    <category term="Solution étalon" scheme="https://www.weigshare.com/tags/Solution-etalon/"/>
    <content>
      <![CDATA[<h1 id="Pourquoi-j’ai-cree-cet-outil"><a href="#Pourquoi-j’ai-cree-cet-outil" class="headerlink" title="Pourquoi j’ai créé cet outil"></a>Pourquoi j’ai créé cet outil</h1><p>En analyse chimique, le travail ne s’arrête pas à la préparation et à l’étalonnage des solutions titrantes. Il faut ensuite calculer les concentrations, appliquer les corrections, comparer les essais parallèles et valider les résultats. Tout faire manuellement prend du temps et, lorsque les données s’accumulent, augmente le risque d’erreur de calcul ou de vérification.</p><ul><li><p>J’ai développé ce système sur mon temps libre. Le projet a commencé en avril et la première version réellement utilisable a été terminée en novembre, soit plus de six mois de travail. C’était aussi ma première véritable application de bureau avec interface graphique.</p></li><li><p>J’ai appris Python et PyQt6 au fil du projet, puis réalisé seul la conception, la logique de calcul, les tests et le déploiement. QFluentWidgets m’a permis d’obtenir une interface plus agréable au quotidien.</p></li><li><p>Une fois utilisé en conditions réelles, l’outil a permis d’économiser plus d’une heure de vérification par personne et par semaine. C’était l’idée de départ : passer six mois à fabriquer un outil pour « récupérer » ensuite une heure chaque semaine. 😆</p></li><li><p>Ayant récemment quitté mon emploi, j’ai enfin eu le temps de nettoyer le projet et j’ai choisi de le publier en open source.</p></li></ul><p><strong><a href="https://www.weigshare.com/standard">Aperçu Web</a> ⬅</strong> Ouvrir</p><h1 id="Systeme-de-calcul-et-de-verification-des-solutions-etalons"><a href="#Systeme-de-calcul-et-de-verification-des-solutions-etalons" class="headerlink" title="Système de calcul et de vérification des solutions étalons"></a>Système de calcul et de vérification des solutions étalons</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>Une application de bureau destinée à l’étalonnage, au calcul et à la vérification des solutions étalons en laboratoire.</p><p>Elle prend en charge la correction de température, la correction de burette, quatre essais parallèles réalisés par une personne, huit essais parallèles réalisés par deux personnes et le calcul automatique de l’étendue relative, afin d’améliorer l’efficacité de la gestion des solutions étalons.</p><img src="https://img.weigshare.com/img/002.StandardSolution_Review_System_Demo_GIF.gif" ><p>Après saisie des données expérimentales, le calcul et la vérification sont effectués automatiquement. Téléchargez l’<a href="https://github.com/weigefenxiang/StandardSolutionReviewSystem/releases">exe</a> pour commencer.</p><hr><h2 id="Fonctionnalites"><a href="#Fonctionnalites" class="headerlink" title="Fonctionnalités"></a>Fonctionnalités</h2><p>✅ Calcul de correction de température<br>✅ Correction de la burette<br>✅ Calcul automatique de la concentration de la solution étalon</p><p>✅ Quatre essais parallèles pour une personne<br>✅ Huit essais parallèles pour deux personnes<br>✅ Calcul de l’étendue relative<br>✅ Calcul de la concentration à reporter</p><hr><h2 id="Solutions-etalons-prises-en-charge"><a href="#Solutions-etalons-prises-en-charge" class="headerlink" title="Solutions étalons prises en charge"></a>Solutions étalons prises en charge</h2><ul><li><p>Acide chlorhydrique, hydroxyde de sodium, acide sulfurique, permanganate de potassium, nitrate d’argent, thiosulfate de sodium, acide éthylènediaminetétraacétique (EDTA), chlorure de zinc, hydroxyde de potassium dans l’éthanol, carbonate de sodium, etc.</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>Personnalisé</strong></p></li></ul><hr><h2 id="Interface-du-logiciel"><a href="#Interface-du-logiciel" class="headerlink" title="Interface du logiciel"></a>Interface du logiciel</h2><h3 id="Interface-principale"><a href="#Interface-principale" class="headerlink" title="Interface principale"></a>Interface principale</h3><img src="https://img.weigshare.com/img/002.StandardSolution_Review_System_Demo.png" ><h4 id="Ancienne-interface"><a href="#Ancienne-interface" class="headerlink" title="Ancienne interface"></a>Ancienne interface</h4><p>L’interface a connu plusieurs itérations.</p><img src=https://img.weigshare.com/img/002.002.StandardSolution_Review_System_Demo_old.png ><table><thead><tr><th><strong>Saisie prise en charge</strong></th><th><strong>Généré automatiquement</strong></th></tr></thead><tbody><tr><td>Masse de la substance de référence</td><td>Volume réel de titrage</td></tr><tr><td>Volume de titrant consommé</td><td>Quatre concentrations parallèles par une personne</td></tr><tr><td>Correction de burette</td><td>Huit concentrations parallèles par deux personnes</td></tr><tr><td>Correction de température</td><td>Étendue relative</td></tr><tr><td>Volume du blanc</td><td>Concentration à reporter</td></tr></tbody></table><hr><h2 id="Execution"><a href="#Execution" class="headerlink" title="Exécution"></a>Exécution</h2><h3 id="Version-publiee"><a href="#Version-publiee" class="headerlink" title="Version publiée"></a>Version publiée</h3><p>Téléchargez puis lancez l’<a href="https://github.com/weigefenxiang/StandardSolutionReviewSystem/releases">exe</a> :</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="Execution-depuis-le-code-source"><a href="#Execution-depuis-le-code-source" class="headerlink" title="Exécution depuis le code source"></a>Exécution depuis le code source</h2><details>    <summary>Cliquez pour développer</summary><h3 id="Environnement-de-developpement"><a href="#Environnement-de-developpement" class="headerlink" title="Environnement de développement"></a>Environnement de développement</h3><ul><li>Windows 11</li><li>Python 3.12</li><li>PyQt6</li><li>QFluentWidgets</li><li>SQLite</li><li>Nuitka (pour le packaging)</li></ul><h3 id="Installer-les-dependances"><a href="#Installer-les-dependances" class="headerlink" title="Installer les dépendances"></a>Installer les dépendances</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="Lancer-le-programme"><a href="#Lancer-le-programme" class="headerlink" title="Lancer le programme"></a>Lancer le programme</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="Licence-open-source"><a href="#Licence-open-source" class="headerlink" title="Licence open source"></a>Licence open source</h2><p>Ce projet est publié sous licence GPL-3.0.</p><p>Toute utilisation, modification ou redistribution doit respecter les conditions de la GPL-3.0.</p><h2 id="Composants-open-source-tiers"><a href="#Composants-open-source-tiers" class="headerlink" title="Composants open source tiers"></a>Composants open source tiers</h2><p>Le projet utilise notamment :</p><ul><li>Python, PyQt6, QFluentWidgets, SQLite, Nuitka</li></ul><p>Merci à tous les développeurs des projets open source utilisés.</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>Application Windows développée avec Python, PyQt6, QFluentWidgets et SQLite pour calculer et vérifier les solutions étalons, avec corrections de température et de burette, séries parallèles et calcul automatique de l’étendue relative.</summary>
    <title>Système de calcul et de vérification des solutions étalons en laboratoire</title>
    <updated>2026-10-21T08:39:31.053Z</updated>
  </entry>
</feed>
