<?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.055Z</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>Если вы обычно управляете qBittorrent через браузер — особенно на <strong>NAS, в Docker или с телефона</strong> — WeiG qB WebUI делает повседневную работу заметно удобнее. <strong><a href="https://weigefenxiang.github.io/WeiG-qB-WebUI/">Онлайн-просмотр</a></strong></p><p>Около семи лет назад я зарегистрировался на нескольких приватных торрент-трекерах. Тогда я установил на NAS qBittorrent 4.1.9 — на тот момент это была последняя версия. Кто бы мог подумать, что я до сих пор буду ею пользоваться!</p><p>Однажды я попробовал обновиться через несколько крупных версий (кажется, до 4.2.5). После этого задания с торрентами исчезли из клиента, и продолжать раздачу стало невозможно. За годы их накопилось очень много, поэтому восстановление оказалось настоящей головной болью. С тех пор предпочитаю не трогать версию, которая работает стабильно.</p><p>После учёбы и начала работы я стал реже пользоваться компьютером. Теперь NAS почти всегда управляю с телефона, но штатный WebUI qBittorrent для маленького экрана неудобен. Я пробовал другие альтернативные интерфейсы, однако со старыми версиями многие из них работали плохо.</p><p>Так и появился WeiG qB WebUI. Сейчас он охватывает ряд стабильных версий qBittorrent от 4.1.x до 5.2.x. Если обнаружите проблему совместимости или захотите предложить улучшение, пишите в комментариях.</p><p><strong>WeiG qB WebUI</strong> — это <strong>альтернативный веб-интерфейс</strong> qBittorrent для настольных и мобильных устройств:</p><ul><li>📱 Адаптивный интерфейс для телефонов</li><li>🌙 Тёмный режим</li><li>🧱 Совместимость со старыми версиями qBittorrent</li><li>✅ Поддержка <strong>qBittorrent 4.1.x → 5.2.x</strong></li><li>🐳 Windows, Linux, Docker и NAS</li></ul><p><a href="https://github.com/weigefenxiang/WeiG-qB-WebUI">Проект</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="Предпросмотр-интерфейса"><a href="#Предпросмотр-интерфейса" class="headerlink" title="Предпросмотр интерфейса"></a>Предпросмотр интерфейса</h2><h3 id="Настольная-версия"><a href="#Настольная-версия" class="headerlink" title="Настольная версия"></a>Настольная версия</h3><p align="center">  <img src="https://img.weigshare.com/img/004.001.weig-qb-webui-desktop-overview.gif" alt="Настольный интерфейс WeiG qB WebUI" style="display:block;width:100%;max-width:900px;height:auto;margin:0 auto;"></p><h3 id="Мобильная-версия"><a href="#Мобильная-версия" class="headerlink" title="Мобильная версия"></a>Мобильная версия</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 на телефоне">    <img src="https://img.weigshare.com/img/004.003.weig-qb-webui-mobile-overview.png" alt="Скриншоты мобильного WeiG qB WebUI">  </div></div><h2 id="Установка-для-начинающих"><a href="#Установка-для-начинающих" class="headerlink" title="Установка для начинающих"></a>Установка для начинающих</h2><details><summary><b>Устанавливаете впервые? Откройте минутную инструкцию</b></summary><h3 id="1-Распакуйте-ZIP"><a href="#1-Распакуйте-ZIP" class="headerlink" title="1. Распакуйте ZIP"></a>1. Распакуйте ZIP</h3><p>Скачайте последнюю стабильную версию <a href="https://github.com/weigefenxiang/WeiG-qB-WebUI/releases/latest/download/weig-qb-webui.zip"><strong>weig-qb-webui.zip</strong></a> и распакуйте архив. Папка уже имеет нужное имя:</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>Вся папка <strong><code>weig-qb-webui</code></strong> является корнем WebUI. Не копируйте только <code>public</code> или <code>private</code>.</p><h3 id="2-Переместите-в-постоянное-место"><a href="#2-Переместите-в-постоянное-место" class="headerlink" title="2. Переместите в постоянное место"></a>2. Переместите в постоянное место</h3><p>Например:</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>Этот путь затем нужно указать в qBittorrent.</p><h3 id="3-Включите-в-qBittorrent"><a href="#3-Включите-в-qBittorrent" class="headerlink" title="3. Включите в qBittorrent"></a>3. Включите в qBittorrent</h3><p>Откройте qBittorrent:</p><p><strong>Сервис → Настройки… → WebUI</strong></p><p>Это текущие термины официального русского перевода qBittorrent. Затем:</p><ol><li>Включите <strong>Использовать альтернативный веб-интерфейс</strong>.</li><li>Найдите <strong>Расположение файлов:</strong>.</li><li>Укажите путь к папке <code>weig-qb-webui</code>.</li></ol><p>Пример 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>Пример 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>Нажмите <strong>OK</strong> для сохранения.</li><li>Обновите страницу WebUI. Если осталась старая версия из кэша, попробуйте <code>Ctrl + F5</code>.</li></ol><blockquote><p><strong>Проверка пути:</strong> в указанном каталоге должны сразу быть видны <code>public</code>, <code>private</code>, <code>VERSION</code> и другие файлы.</p></blockquote><blockquote><p><strong>Docker:</strong> qBittorrent работает внутри контейнера, поэтому обычно нужно указывать путь, видимый из контейнера, а не реальный путь хоста.</p></blockquote></details><h2 id="Установка-одной-командой"><a href="#Установка-одной-командой" class="headerlink" title="Установка одной командой"></a>Установка одной командой</h2><p>Скрипт для Linux &#x2F; NAS всегда загружается по постоянной ссылке Dev Pages ниже. <strong>Сама ссылка не определяет канал установки:</strong> без <code>-dev</code> устанавливается проверенный стабильный GitHub Release из <code>main</code>, а с <code>-dev</code> — текущая сборка <code>dev</code> с точной привязкой к Git SHA. Скрипт остаётся в текущем каталоге для обновления или отката.</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>Показать путь скрипта и каталог установки по умолчанию</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>Каталог 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>При запуске от <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>Docker / несколько контейнеров / объяснение путей</b></summary><h4 id="Хост-и-контейнер"><a href="#Хост-и-контейнер" class="headerlink" title="Хост и контейнер"></a>Хост и контейнер</h4><ul><li><strong>Хост</strong>: Linux&#x2F;NAS, на котором запущен Docker.</li><li><strong>Контейнер</strong>: изолированная среда, где работает qBittorrent.</li></ul><p>Пример:</p><pre class="line-numbers language-text" data-language="text"><code class="language-text">Хост:       /root/qbittorrent/config   ↓ смонтировано какКонтейнер:  /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>Если WebUI на хосте находится здесь:</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>то в <strong>Расположение файлов:</strong> qBittorrent нужно указать:</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="Один-контейнер-qBittorrent"><a href="#Один-контейнер-qBittorrent" class="headerlink" title="Один контейнер qBittorrent"></a>Один контейнер 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>Установщик попытается автоматически определить контейнер и монтирование <code>/config</code>.</p><h4 id="Показать-контейнеры"><a href="#Показать-контейнеры" class="headerlink" title="Показать контейнеры"></a>Показать контейнеры</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>Или:</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>Явно выбрать контейнер:</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>Если найдено несколько контейнеров qBittorrent, установщик не выбирает один случайно.</p><h4 id="Случай-3-несколько-контейнеров-qBittorrent"><a href="#Случай-3-несколько-контейнеров-qBittorrent" class="headerlink" title="Случай 3: несколько контейнеров qBittorrent"></a>Случай 3: несколько контейнеров qBittorrent</h4><p>Если запущены <code>qbittorrent</code> и <code>qbittorrent-test</code>, сначала выведите список, а затем явно укажите нужный контейнер. Установщик не выбирает наугад:</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="Указать-путь-хоста-смонтированный-как-config"><a href="#Указать-путь-хоста-смонтированный-как-config" class="headerlink" title="Указать путь хоста, смонтированный как /config"></a>Указать путь хоста, смонтированный как <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>Другой 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"><a href="#Указать-путь-WebUI" class="headerlink" title="Указать путь WebUI"></a>Указать путь 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="Случай-6-обновление-нескольких-существующих-папок-WebUI"><a href="#Случай-6-обновление-нескольких-существующих-папок-WebUI" class="headerlink" title="Случай 6: обновление нескольких существующих папок WebUI"></a>Случай 6: обновление нескольких существующих папок WebUI</h4><p>Для нескольких экземпляров qBittorrent можно повторить параметр <code>-o</code>. Пакет скачивается и проверяется один раз; переключение начинается после подготовки всех целей. В <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>Не используйте <code>-configure</code> с несколькими целями: каждый экземпляр qBittorrent сохранит свой текущий путь WebUI. Список параметров доступен через <code>sh install.sh -help</code>.</p><h4 id="Проверка-путей-после-установки"><a href="#Проверка-путей-после-установки" class="headerlink" title="Проверка путей после установки"></a>Проверка путей после установки</h4><p>После установки скрипт выводит примерно такие пути. Первый — фактическая папка на хосте, второй — путь внутри контейнера, который нужно указать в <strong>Files location</strong> 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>Показать каталог установки</b></summary><pre class="line-numbers language-text" data-language="text"><code class="language-text">C:\Users\&lt;имя-пользователя>\AppData\Local\weig-qb-webui<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre></details><h2 id="Основные-параметры"><a href="#Основные-параметры" class="headerlink" title="Основные параметры"></a>Основные параметры</h2><details><summary><b>В Linux и Windows одинаковые параметры; в PowerShell регистр букв не важен (раскрыть)</b></summary><p>Имена параметров PowerShell не зависят от регистра.</p><table><thead><tr><th>Назначение</th><th>Linux &#x2F; Docker &#x2F; NAS</th><th>Windows PowerShell</th></tr></thead><tbody><tr><td>Последний стабильный Release</td><td>По умолчанию</td><td>По умолчанию</td></tr><tr><td>Конкретный Release</td><td><code>-version 1.2.0</code></td><td><code>-version 1.2.0</code></td></tr><tr><td>Версия разработки</td><td><code>-dev</code></td><td><code>-dev</code></td></tr><tr><td>Каталог установки</td><td><code>-o /path</code> (в Linux можно повторять)</td><td><code>-o D:\path</code> или <code>-output D:\path</code></td></tr><tr><td>Собственный файл конфигурации qBittorrent</td><td>—</td><td><code>-qbconfig D:\path\qBittorrent.ini</code></td></tr><tr><td>Автоматически настроить qBittorrent</td><td><code>-configure</code></td><td><code>-configure</code></td></tr><tr><td>Откатить предыдущую установку</td><td><code>-rollback</code></td><td><code>-rollback</code></td></tr><tr><td>Полное удаление (не сохранять резервные копии установщика)</td><td><code>-uninstall -purge</code></td><td><code>-uninstall -purge</code></td></tr><tr><td>Справка</td><td><code>-help</code></td><td><code>-help</code></td></tr><tr><td>Выбрать Docker-контейнер</td><td><code>--container=NAME</code></td><td>—</td></tr><tr><td>Показать Docker-контейнеры</td><td><code>--list-containers</code></td><td>—</td></tr><tr><td>Путь хоста, смонтированный как <code>/config</code></td><td><code>--config-root=/path</code></td><td>—</td></tr></tbody></table></details><details><summary><b>Примечания: (нажмите, чтобы раскрыть)</b></summary><ul><li>Без <code>-dev</code> устанавливается проверенный стабильный GitHub Release из <code>main</code>. С <code>-dev</code> используется текущая сборка <code>dev</code>, закреплённая за конкретным Git SHA.</li><li><code>-o</code> означает <strong>output</strong>. В Linux параметр можно повторять, чтобы обновить несколько WebUI за одну проверенную загрузку.</li><li>Резервные копии находятся в <code>~/.config/weig-qb-webui/backups/</code>; для каждой цели отдельно сохраняются последние три.</li><li><code>-configure</code> включает в qBittorrent <strong>Use alternative WebUI</strong> и указывает <strong>Files location</strong>. Параметр работает только с одной целью.</li><li><code>-rollback</code> восстанавливает последнюю копию для выбранной цели; для отката нескольких целей повторите <code>-o</code>.</li><li><code>-uninstall -purge</code> удаляет WebUI и резервные копии &#x2F; состояние отката выбранной цели, сохраняя копии других установок. Общий каталог удаляется, только когда пуст.</li><li>Чтобы сохранить копии для будущего <code>-rollback</code>, не добавляйте <code>-purge</code> при удалении.</li><li><code>-version 1.2.0</code> задаёт конкретный GitHub Release. Если версии нет, будет ошибка: <strong>автоматического перехода на latest или dev не происходит</strong>.</li><li><code>-help</code> выводит поддерживаемые параметры.</li><li>Если контейнеров Docker несколько, используйте <code>--list-containers</code> и <code>--container=NAME</code>, либо укажите <code>--config-root=/path</code>.</li></ul><h3 id="Конкретная-версия-и-каталог-установки"><a href="#Конкретная-версия-и-каталог-установки" class="headerlink" title="Конкретная версия и каталог установки"></a>Конкретная версия и каталог установки</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="Откат"><a href="#Откат" class="headerlink" title="Откат"></a>Откат</h3><p>Откат:</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="Удаление-одной-командой"><a href="#Удаление-одной-командой" class="headerlink" title="Удаление одной командой"></a>Удаление одной командой</h2><details><summary><b>Полное удаление для Linux / NAS, Docker и Windows PowerShell</b></summary><p>По умолчанию рекомендуется <strong>полное удаление без сохранения резервных копий установщика</strong>: удалить WebUI, отключить соответствующий альтернативный WebUI, очистить принадлежащие этой цели резервные копии &#x2F; состояние rollback, а затем удалить загруженный скрипт установки из текущего каталога.</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>Для собственного пути установки добавьте <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>Один контейнер &#x2F; автоопределение:</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>Несколько контейнеров:</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>При использовании <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>Для собственного пути установки добавьте <code>-o D:\weig-qb-webui</code>.</p><p><code>-purge</code> удаляет только резервные копии текущей цели и не затрагивает другие установки. Если общий каталог состояния становится пустым, также удаляется <code>~/.config/weig-qb-webui</code> в Linux (для root: <code>/root/.config/weig-qb-webui</code>) или <code>%APPDATA%\weig-qb-webui</code> в Windows.</p><p>Чтобы сохранить резервные копии для последующего <code>-rollback</code>, просто уберите <code>-purge</code>.</p></details><h2 id="Дополнительная-помощь"><a href="#Дополнительная-помощь" class="headerlink" title="Дополнительная помощь"></a>Дополнительная помощь</h2><p>Docker, NAS, пользовательские пути, обновление и ручное развёртывание: <a href="https://github.com/weigefenxiang/WeiG-qB-WebUI/blob/main/translations/installation-guide/deployment-guide.ru.md">Установка, обновление и ручное развёртывание</a>.</p><h2 id="Лицензия"><a href="#Лицензия" class="headerlink" title="Лицензия"></a>Лицензия</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>Руководство для начинающих по установке WeiG qB WebUI и включению его как альтернативного веб-интерфейса qBittorrent в Windows, Linux, NAS и Docker.</summary>
    <title>WeiG qB WebUI: руководство для начинающих по альтернативному веб-интерфейсу qBittorrent</title>
    <updated>2026-10-21T08:39:31.055Z</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="Сборка прошивки" scheme="https://www.weigshare.com/tags/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0-%D0%BF%D1%80%D0%BE%D1%88%D0%B8%D0%B2%D0%BA%D0%B8/"/>
    <content>
      <![CDATA[<p>Нужна прошивка OpenWrt под ваш роутер, но не хочется сначала разворачивать полноценную среду сборки на компьютере? Откройте <a href="https://www.weigshare.com/wrt">онлайн-конфигуратор Wei.G</a>, выберите исходники, целевое устройство, пакеты и параметры прошивки, затем отправьте запрос в GitHub Actions — сборку выполнит облако.</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="Быстрый-старт"><a href="#Быстрый-старт" class="headerlink" title="Быстрый старт"></a>Быстрый старт</h2><p><span style="color:#ffc107;">⚠️ </span> <span style="color:#ff7b72;">Прошивка устройства связана с риском. Сначала проверьте модель роутера, разметку разделов и способ прошивки. Если не уверены — не прошивайте.</span></p><ul><li>Войдите в <strong><a href="https://github.com/">GitHub</a></strong></li><li>Откройте <strong><a href="https://www.weigshare.com/wrt">онлайн-конфигуратор Wei.G</a></strong></li><li>Если вы используете его впервые, следуйте инструкции ниже 👇</li></ul><h2 id="Предыстория"><a href="#Предыстория" class="headerlink" title="Предыстория"></a>Предыстория</h2><ul><li><strong>【Простой старт】</strong> Если хочется попробовать собрать собственную прошивку, но не хочется начинать с настройки всей локальной toolchain, этот проект даёт более простой вход.</li><li><strong>【Пакеты и зависимости】</strong> Некоторые плагины и зависимости нужно включить в прошивку ещё на этапе сборки.</li><li><strong>【Настройка】</strong> У OpenWrt много параметров сборки, а сетевые условия в материковом Китае могут дополнительно затруднять загрузку зависимостей.</li><li><strong>【Время】</strong> Полная сборка может занимать несколько часов и всё равно завершиться ошибкой, поэтому поиск причины тоже требует времени.</li><li><strong>【Цель】</strong> В дальнейшем любой пользователь сможет сделать fork проекта и запустить собственный сайт для сборки OpenWrt на GitHub <strong>Pages + Actions</strong>.</li><li><strong>【Текущий этап】</strong> Проект всё ещё тестируется. Ошибки возможны, а интенсивное использование общего workflow может упереться в политики или лимиты 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="Поддерживаемые-устройства"><a href="#Поддерживаемые-устройства" class="headerlink" title="Поддерживаемые устройства"></a>Поддерживаемые устройства</h2><p>Сейчас проверены только следующие цели. Остальные устройства ещё не тестировались. Если у вас нет способа восстановить устройство после неудачной прошивки, не используйте этот инструмент.</p><ul><li><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></strong></li><li><strong>x86 &#x2F; 64</strong></li><li>Доступ с компьютера и телефона</li></ul><h2 id="Подготовка"><a href="#Подготовка" class="headerlink" title="Подготовка"></a>Подготовка</h2><p><span style="color:#ffc107;">⚠️ </span> <span style="color:#ff7b72;">Прошивка устройства связана с риском. Сначала проверьте модель роутера, разметку разделов и способ прошивки. Если не уверены — не прошивайте.</span></p><ul><li>Войдите в аккаунт <strong><a href="https://github.com/">GitHub</a></strong>. Без аккаунта запустить сборку нельзя.</li><li>Откройте <strong><a href="https://www.weigshare.com/wrt">онлайн-конфигуратор Wei.G</a></strong>.<ul><li><strong><a href="https://dev.weig-wrt.pages.dev/">Cloudflare dev</a></strong> (экспериментальные и самые новые функции, возможны bugs)</li></ul></li></ul><!-- Скриншот 1: главная страница с областями Source, Branch, Target и плагинами --><h2 id="1-Выберите-параметры"><a href="#1-Выберите-параметры" class="headerlink" title="1. Выберите параметры"></a>1. Выберите параметры</h2><ul><li><p>После выбора источника найдите через поиск нужную модель или окружение. Также можно загрузить существующую config.</p></li><li><p>Выберите <strong>Source → Branch → Target System → Subtarget → Target Profile</strong>.</p><ul><li>Пример для x86&#x2F;64: <strong>ImmortalWrt → openwrt-24.10 → x86 → 64 → Generic x86&#x2F;64</strong></li></ul></li><li><p>В <strong>Advanced menuconfig › LuCI › 3. Applications</strong> отметьте нужные приложения.</p></li><li><p>Остальные расширенные параметры в <strong>Advanced menuconfig</strong> настройте по необходимости.</p></li></ul><p>Затем при необходимости задайте <strong>часовой пояс</strong>, <strong>тему прошивки</strong>, <strong>NTP-серверы</strong> и <strong>зеркало пакетов</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="Готовая-конфигурация"><a href="#Готовая-конфигурация" class="headerlink" title="Готовая конфигурация"></a>Готовая конфигурация</h3><p>Если у вас уже есть <code>.config</code>, <code>config.buildinfo</code> или ранее скачанный файл запроса, нажмите <strong>Загрузить конфигурацию</strong> в нижней части страницы. В окне подтверждения проверьте источник, ветку, Target Profile, плагины и настройки прошивки.</p><h2 id="2-Отправьте-сборку"><a href="#2-Отправьте-сборку" class="headerlink" title="2. Отправьте сборку"></a>2. Отправьте сборку</h2><p>Нажмите <strong>Отправить облачную сборку</strong> в правом нижнем углу.</p><p>Выберите <strong>Скачать запрос и открыть GitHub</strong>. Браузер загрузит JSON-файл и автоматически откроет страницу создания нового GitHub Issue.</p><p>Перетащите загруженный файл в поле Issue и нажмите <strong>Create</strong>.</p><p>Бот ответит в Issue ссылкой на Actions для этой сборки.</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-Скачайте-прошивку"><a href="#3-Скачайте-прошивку" class="headerlink" title="3. Скачайте прошивку"></a>3. Скачайте прошивку</h2><p>Сборка обычно занимает 2–4 часа. После завершения откройте страницу Actions и скачайте файлы из раздела <strong>Artifacts</strong>:</p><ul><li><code>FIRMWARE-ALL-XXX</code>: все файлы прошивки и контрольные суммы. Для первой прошивки обычно нужен файл типа <code>factory</code>.</li><li><code>CONFIG-XXX</code>: отправленная конфигурация, итоговая конфигурация и отличия. Рекомендуется сохранить.</li><li><code>BUILD-LOGS-XXX</code>: полные логи сборки для диагностики.</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="Частые-вопросы"><a href="#Частые-вопросы" class="headerlink" title="Частые вопросы"></a>Частые вопросы</h2><ul><li><strong>Что делать, если сборка завершилась ошибкой?</strong> Скачайте <code>BUILD-LOGS-…</code> и посмотрите последний <code>Error</code>. Также можно сообщить о проблеме в Issue.</li><li><strong>Как отменить?</strong> Ответьте <code>/cancel</code> в своём Issue сборки.</li><li><strong>Сколько сборок можно запускать одновременно?</strong> Один аккаунт может выполнять только две задачи одновременно, остальные ждут в очереди.</li><li><strong>Почему нет кнопки скачивания?</strong> Для скачивания GitHub Actions Artifacts обычно требуется войти в аккаунт.</li><li><strong>Слишком длинная очередь в публичном репозитории?</strong> В дальнейшем можно будет <a href="https://github.com/weigefenxiang/WeiG-OpenWrt-AutoBuild">сделать fork этого проекта</a> и запускать сборку в своём репозитории по подсказкам на странице, избегая общей очереди.</li></ul><p>Проект: <a href="https://github.com/weigefenxiang/WeiG-OpenWrt-AutoBuild">WeiG-OpenWrt-AutoBuild</a></p><h2 id="Благодарности"><a href="#Благодарности" class="headerlink" title="Благодарности"></a>Благодарности</h2><ul><li><p><strong>Исходники:</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>Ориентир:</strong> <a href="https://github.com/P3TERX/Actions-OpenWrt">P3TERX</a></p></li><li><p><strong>Авторы LuCI-плагинов</strong></p></li><li><p><strong>Все</strong>, кто участвовал в проекте</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>Создавайте собственную сборку OpenWrt через онлайн-конфигуратор Wei.G и GitHub Actions без локальной среды компиляции.</summary>
    <title>Собираем собственную прошивку OpenWrt в облаке: руководство для начинающих</title>
    <updated>2026-10-21T08:39:31.055Z</updated>
  </entry>
  <entry>
    <author>
      <name>Wei.G</name>
    </author>
    <category term="Создание сайта" scheme="https://www.weigshare.com/categories/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D1%81%D0%B0%D0%B9%D1%82%D0%B0/"/>
    <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="Хостинг изображений" scheme="https://www.weigshare.com/tags/%D0%A5%D0%BE%D1%81%D1%82%D0%B8%D0%BD%D0%B3-%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9/"/>
    <content>
      <![CDATA[<h1 id="Перед-началом"><a href="#Перед-началом" class="headerlink" title="Перед началом"></a>Перед началом</h1><p>PicList уже хорошо работает с Cloudflare R2, но при первой настройке всё ещё есть несколько моментов, в которых легко ошибиться:</p><ul><li>полей довольно много, и значение легко вписать не туда;</li><li>отдельной кнопки проверки соединения для этой схемы нет;<ul><li>поэтому самый надёжный способ проверить настройки — действительно загрузить изображение.</li></ul></li></ul><p>В этой статье пошагово показано, как подключить <strong>PicList</strong> к <strong>Cloudflare R2</strong> и использовать его как быстрый фотохостинг с собственным доменом и CDN.</p><p>Если бакет R2 ещё не создан, можно также воспользоваться этой инструкцией:</p><ul><li><strong><a href="https://www.fecify.com/doc/cn-1.0/fecify-shop-helper-cloudflare-r2.html">Руководство по Cloudflare R2</a></strong></li></ul><p>Версия PicList в этой статье: <strong>v3.5.0 (июль 2026 года)</strong>.</p><hr><p>Недавно я перенёс изображения блога в <strong>Cloudflare R2</strong> и использую его вместе с <strong>PicList</strong>. Результат получился очень удачным.</p><p>Преимущества:</p><p>✅ Бесплатно  ✅ Стабильно  ✅ Быстро  ✅ Собственный домен  ✅ Глобальный CDN  ✅ Без нагрузки на VPS</p><hr><h1 id="Настройка-PicList"><a href="#Настройка-PicList" class="headerlink" title="Настройка PicList"></a>Настройка PicList</h1><ul><li>Хостинг изображений: используется для загрузки изображений</li><li>Облако: используется PicList для доступа к bucket в Cloudflare</li></ul><h2 id="Настройка-хостинга-изображений"><a href="#Настройка-хостинга-изображений" class="headerlink" title="Настройка хостинга изображений"></a>Настройка хостинга изображений</h2><p>В левом меню откройте <strong>Хостинг изображений</strong> → <strong>AWS S3</strong> → <strong>Добавить конфигурацию</strong>:</p><img src="https://img.weigshare.com/img/001.002_PicList_orign.png" width="120"/><h3 id="Обязательные-поля"><a href="#Обязательные-поля" class="headerlink" title="Обязательные поля"></a>Обязательные поля</h3><pre><code>● Имя конфигурации: любое● AccessKeyId: 18e1************************c0858● secretAccessKey: c8a3********************************************************fa6e● Пользовательский endpoint: https://770*************************39d8.r2.cloudflarestorage.com</code></pre><p>Все эти данные можно получить здесь: <a href="https://img.weigshare.com/img/001.005_CF_API_token.png">снимок API</a>.</p><ul><li>Права: <strong>чтение и запись администратора</strong> (иначе облачный доступ PicList не сработает).</li><li>Учётные данные показываются только один раз. Сохраните их, иначе придётся создавать заново.</li></ul><p>● Bucket: у меня это <strong>hexo-img</strong>. <a href="https://img.weigshare.com/img/001.003_CDF_bucket.png">Снимок</a></p><hr><h3 id="Необязательные-поля"><a href="#Необязательные-поля" class="headerlink" title="Необязательные поля"></a>Необязательные поля</h3><p>■ Путь загрузки: <strong>&#x2F;</strong> (корневой каталог)</p><p>Я храню файлы в каталоге <strong>img</strong>, поэтому использую <strong>&#x2F;img&#x2F;</strong>. <a href="https://img.weigshare.com/img/001.004_Directory.png">Снимок</a></p><p>● Пользовательский домен: <a href="https://img.weigshare.com/">https://img.weigshare.com/</a><br>(Его можно настроить после привязки домена. После этого загруженные изображения будут получать ссылки с этим доменом.) <a href="https://img.weigshare.com/img/001.004_Directory.png">Снимок</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>☐ Если домен не настроен, может получиться такая ссылка, которая иногда не открывается напрямую:</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> (или us-east-1)</p><ul><li>Политика доступа к загруженному объекту: <span style="color:#ff69b4;font-weight:bold;">public-read</span> (официальная рекомендация)</li></ul><hr><h2 id="Настройка-облака"><a href="#Настройка-облака" class="headerlink" title="Настройка облака"></a>Настройка облака</h2><p>В левом меню откройте <strong>Облако</strong> → <strong>S3 API</strong> → <strong>Добавить конфигурацию</strong> → <strong>Сохранить</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="Обязательные-поля-1"><a href="#Обязательные-поля-1" class="headerlink" title="Обязательные поля"></a>Обязательные поля</h3><pre><code>● Имя конфигурации: любое● Access Key Id: 18e1************************c0858● Access Key Secret: c8a3********************************************************fa6e● endpoint / пользовательский endpoint: https://770*************************39d8.r2.cloudflarestorage.com</code></pre><p>API-токен можно получить здесь: <a href="https://img.weigshare.com/img/001.005_CF_API_token.png">API</a>.</p><ul><li>Права: <strong>чтение и запись администратора</strong> (иначе облачный доступ PicList не сработает).</li></ul><p>● Имя bucket: <strong>hexo-img</strong>. <a href="https://img.weigshare.com/img/001.003_CDF_bucket.png">Снимок</a></p><p>■ Начальный каталог: <strong>&#x2F;</strong></p><ul><li>Я сохраняю файлы в <strong>&#x2F;img&#x2F;</strong>. <a href="https://img.weigshare.com/img/001.004_Directory.png">Снимок</a></li></ul><h3 id="Необязательные-поля-1"><a href="#Необязательные-поля-1" class="headerlink" title="Необязательные поля"></a>Необязательные поля</h3><p>■ Права загружаемого файла: public-read (публичное чтение, официальная рекомендация)</p><hr><h1 id="Частые-вопросы"><a href="#Частые-вопросы" class="headerlink" title="Частые вопросы"></a>Частые вопросы</h1><h2 id="Загрузка-проходит-успешно-но-изображение-не-открывается"><a href="#Загрузка-проходит-успешно-но-изображение-не-открывается" class="headerlink" title="Загрузка проходит успешно, но изображение не открывается"></a>Загрузка проходит успешно, но изображение не открывается</h2><p>Проверьте:</p><ul><li>разрешён ли публичный доступ к Bucket;</li><li>привязан ли пользовательский домен;</li><li>вступили ли в силу DNS-записи.</li></ul><h2 id="Ошибка-AccessDenied"><a href="#Ошибка-AccessDenied" class="headerlink" title="Ошибка AccessDenied"></a>Ошибка AccessDenied</h2><p>Проверьте:</p><ul><li>правильность Access Key ID;</li><li>правильность Secret Access Key;</li><li>наличие у API Token прав на чтение и запись.</li></ul><h2 id="Ошибка-SignatureDoesNotMatch"><a href="#Ошибка-SignatureDoesNotMatch" class="headerlink" title="Ошибка SignatureDoesNotMatch"></a>Ошибка SignatureDoesNotMatch</h2><p>Проверьте:</p><ul><li>правильно ли указан Endpoint.</li></ul><h1 id="Итог"><a href="#Итог" class="headerlink" title="Итог"></a>Итог</h1><p>Текущий стек моего блога:</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>Если вам нужен стабильный долгосрочный хостинг изображений для блога, связка PicList + Cloudflare R2 определённо заслуживает внимания.</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>Пошаговое руководство для начинающих по настройке PicList с Cloudflare R2 как хранилища изображений с собственным доменом и глобальной CDN.</summary>
    <title>Быстрый и бесплатный фотохостинг на PicList + Cloudflare R2</title>
    <updated>2026-10-21T08:39:31.055Z</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="Лаборатория" scheme="https://www.weigshare.com/tags/%D0%9B%D0%B0%D0%B1%D0%BE%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D1%8F/"/>
    <category term="Химический анализ" scheme="https://www.weigshare.com/tags/%D0%A5%D0%B8%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9-%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7/"/>
    <category term="Стандарты" scheme="https://www.weigshare.com/tags/%D0%A1%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D1%8B/"/>
    <category term="Стандартный титрованный раствор" scheme="https://www.weigshare.com/tags/%D0%A1%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D1%8B%D0%B9-%D1%82%D0%B8%D1%82%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9-%D1%80%D0%B0%D1%81%D1%82%D0%B2%D0%BE%D1%80/"/>
    <category term="Стандартный раствор" scheme="https://www.weigshare.com/tags/%D0%A1%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D1%8B%D0%B9-%D1%80%D0%B0%D1%81%D1%82%D0%B2%D0%BE%D1%80/"/>
    <content>
      <![CDATA[<h1 id="Зачем-я-сделал-эту-программу"><a href="#Зачем-я-сделал-эту-программу" class="headerlink" title="Зачем я сделал эту программу"></a>Зачем я сделал эту программу</h1><p>В химическом анализе работа не заканчивается после приготовления и стандартизации титрованного раствора. Затем нужно рассчитать концентрацию, учесть поправки, сравнить параллельные определения и проверить итоговые данные. Если делать всё вручную, это занимает много времени, а при большом объёме данных растёт вероятность ошибки в расчётах или проверке.</p><ul><li><p>Я разрабатывал эту систему в свободное от работы время. Проект начался в апреле, а первая версия, пригодная для реальной работы, была закончена в ноябре — более шести месяцев разработки и одновременно моё первое полноценное GUI-приложение для настольного компьютера.</p></li><li><p>В процессе я самостоятельно освоил Python и PyQt6 и сам сделал интерфейс, расчётную логику, тестирование и развёртывание. QFluentWidgets помог сделать программу удобнее для повседневной работы.</p></li><li><p>После внедрения программа стала экономить больше часа проверки данных на человека каждую неделю. Так реализовалась маленькая идея, появившаяся однажды вечером: потратить полгода на инструмент, чтобы потом каждую неделю «возвращать» себе один час. 😆</p></li><li><p>Недавно я ушёл с работы и наконец нашёл время привести проект в порядок, после чего решил открыть исходный код.</p></li></ul><p><strong><a href="https://www.weigshare.com/standard">Веб-просмотр</a> ⬅</strong> Открыть</p><h1 id="Система-расчёта-и-проверки-стандартных-растворов"><a href="#Система-расчёта-и-проверки-стандартных-растворов" class="headerlink" title="Система расчёта и проверки стандартных растворов"></a>Система расчёта и проверки стандартных растворов</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>Настольное приложение для стандартизации, расчёта и проверки стандартных растворов в лаборатории.</p><p>Поддерживаются температурная поправка, поправка бюретки, четыре параллельных определения одним сотрудником, восемь параллельных определений двумя сотрудниками и автоматический расчёт относительного размаха, что повышает эффективность управления стандартными растворами.</p><img src="https://img.weigshare.com/img/002.StandardSolution_Review_System_Demo_GIF.gif" ><p>После ввода экспериментальных данных расчёт и проверка выполняются автоматически. Для начала работы скачайте <a href="https://github.com/weigefenxiang/StandardSolutionReviewSystem/releases">exe</a>.</p><hr><h2 id="Возможности"><a href="#Возможности" class="headerlink" title="Возможности"></a>Возможности</h2><p>✅ Расчёт температурной поправки<br>✅ Учёт поправки бюретки<br>✅ Автоматический расчёт концентрации стандартного раствора</p><p>✅ Четыре параллельных определения одним сотрудником<br>✅ Восемь параллельных определений двумя сотрудниками<br>✅ Расчёт относительного размаха<br>✅ Расчёт концентрации для отчёта</p><hr><h2 id="Поддерживаемые-стандартные-растворы"><a href="#Поддерживаемые-стандартные-растворы" class="headerlink" title="Поддерживаемые стандартные растворы"></a>Поддерживаемые стандартные растворы</h2><ul><li><p>Соляная кислота, гидроксид натрия, серная кислота, перманганат калия, нитрат серебра, тиосульфат натрия, этилендиаминтетрауксусная кислота (EDTA), хлорид цинка, гидроксид калия в этаноле, карбонат натрия и др.</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>Пользовательский вариант</strong></p></li></ul><hr><h2 id="Интерфейс-программы"><a href="#Интерфейс-программы" class="headerlink" title="Интерфейс программы"></a>Интерфейс программы</h2><h3 id="Главное-окно"><a href="#Главное-окно" class="headerlink" title="Главное окно"></a>Главное окно</h3><img src="https://img.weigshare.com/img/002.StandardSolution_Review_System_Demo.png" ><h4 id="Старый-интерфейс"><a href="#Старый-интерфейс" class="headerlink" title="Старый интерфейс"></a>Старый интерфейс</h4><p>Интерфейс прошёл несколько итераций.</p><img src=https://img.weigshare.com/img/002.002.StandardSolution_Review_System_Demo_old.png ><table><thead><tr><th><strong>Вводимые данные</strong></th><th><strong>Автоматически рассчитывается</strong></th></tr></thead><tbody><tr><td>Масса первичного стандарта</td><td>Фактический объём титрования</td></tr><tr><td>Расход титранта</td><td>Четыре параллельные концентрации одного сотрудника</td></tr><tr><td>Поправка бюретки</td><td>Восемь параллельных концентраций двух сотрудников</td></tr><tr><td>Температурная поправка</td><td>Относительный размах</td></tr><tr><td>Объём холостого опыта</td><td>Концентрация для отчёта</td></tr></tbody></table><hr><h2 id="Запуск"><a href="#Запуск" class="headerlink" title="Запуск"></a>Запуск</h2><h3 id="Готовая-версия"><a href="#Готовая-версия" class="headerlink" title="Готовая версия"></a>Готовая версия</h3><p>Скачайте и запустите <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="Запуск-из-исходного-кода"><a href="#Запуск-из-исходного-кода" class="headerlink" title="Запуск из исходного кода"></a>Запуск из исходного кода</h2><details>    <summary>Нажмите, чтобы раскрыть</summary><h3 id="Среда-разработки"><a href="#Среда-разработки" class="headerlink" title="Среда разработки"></a>Среда разработки</h3><ul><li>Windows 11</li><li>Python 3.12</li><li>PyQt6</li><li>QFluentWidgets</li><li>SQLite</li><li>Nuitka (для упаковки)</li></ul><h3 id="Установка-зависимостей"><a href="#Установка-зависимостей" class="headerlink" title="Установка зависимостей"></a>Установка зависимостей</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="Запуск-программы"><a href="#Запуск-программы" class="headerlink" title="Запуск программы"></a>Запуск программы</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="Лицензия"><a href="#Лицензия" class="headerlink" title="Лицензия"></a>Лицензия</h2><p>Проект распространяется по лицензии GPL-3.0.</p><p>При использовании, изменении и распространении проекта соблюдайте условия GPL-3.0.</p><h2 id="Сторонние-open-source-компоненты"><a href="#Сторонние-open-source-компоненты" class="headerlink" title="Сторонние open-source компоненты"></a>Сторонние open-source компоненты</h2><p>В проекте используются:</p><ul><li>Python, PyQt6, QFluentWidgets, SQLite, Nuitka</li></ul><p>Спасибо всем разработчикам используемых open-source проектов.</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 на Python, PyQt6, QFluentWidgets и SQLite для расчёта и проверки стандартных растворов с температурной и бюреточной поправками, параллельными результатами и автоматическим расчётом относительного размаха.</summary>
    <title>Система расчёта и проверки стандартных растворов для лаборатории</title>
    <updated>2026-10-21T08:39:31.055Z</updated>
  </entry>
</feed>
