<?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.054Z</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>약 7년 전, 몇몇 비공개 토렌트 트래커에 가입했습니다. 당시 NAS에 설치한 qBittorrent 4.1.9는 최신 버전이었는데, 지금까지 쓰게 될 줄은 몰랐습니다.</p><p>한 번은 메이저 버전 업데이트를 시도했습니다. 기억으로는 4.2.5였는데, 업데이트 후 클라이언트에서 토렌트 작업이 사라져 시딩을 이어 갈 수 없었습니다. 쌓여 있던 토렌트가 워낙 많아 복구하는 데 꽤 애를 먹었죠. 그 뒤로는 잘 돌아가는 버전을 굳이 건드리지 않게 됐습니다.</p><p>졸업하고 일을 시작한 뒤로는 PC 앞에 앉아 있는 시간이 줄었고, NAS도 대부분 휴대폰으로 관리합니다. 하지만 기본 WebUI는 작은 화면에서 쓰기 불편했습니다. 다른 대체 WebUI도 사용해 봤지만 구버전 qBittorrent와 호환되지 않는 경우가 적지 않았습니다.</p><p>그래서 직접 WeiG qB WebUI를 만들기 시작했습니다. 현재 qBittorrent 4.1.x부터 5.2.x까지 여러 안정 버전을 지원합니다. 호환성 문제나 개선 아이디어가 있다면 댓글로 알려 주세요.</p><p><strong>WeiG qB WebUI</strong>는 데스크톱과 모바일에서 사용할 수 있는 qBittorrent의 <strong>대체 WebUI</strong>입니다.</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>처음 설치하나요? 1분 가이드 펼치기</b></summary><h3 id="1-압축-풀기"><a href="#1-압축-풀기" class="headerlink" title="1. 압축 풀기"></a>1. 압축 풀기</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 공식 한국어 UI 용어입니다. 이어서:</p><ol><li><strong>대체 WebUI 사용</strong>을 켭니다.</li><li>**파일 위치:**를 찾습니다.</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>확인&#x2F;OK</strong>을 눌러 저장합니다.</li><li>qBittorrent 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는 컨테이너 안에서 실행되므로 호스트 경로를 그대로 입력할 수 없는 경우가 많습니다. 아래 Docker 안내를 확인하세요.</p></blockquote></details><h2 id="원클릭-설치"><a href="#원클릭-설치" class="headerlink" title="원클릭 설치"></a>원클릭 설치</h2><p>Linux &#x2F; NAS 설치 스크립트는 아래 고정 Dev Pages 주소에서 받습니다. <strong>스크립트 주소가 설치 채널을 결정하지는 않습니다.</strong> <code>-dev</code>가 없으면 <code>main</code>의 검증된 최신 GitHub 정식 버전을, <code>-dev</code>가 있으면 현재 <code>dev</code>의 exact-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>스크립트 위치와 기본 WebUI 설치 경로 보기</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>: Docker가 실제로 실행되는 Linux&#x2F;NAS 시스템입니다.</li><li><strong>컨테이너</strong>: qBittorrent가 실행되는 Docker 환경입니다.</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>에 설치되었다면 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><p>를 입력해야 합니다.</p><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>설치기가 실행 중인 qBittorrent 컨테이너와 <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><code>qbittorrent</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">--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>여러 컨테이너가 있으면 설치기는 임의로 선택하지 않습니다.</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>에 대상별로 최근 3개씩 따로 보관됩니다.</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>를 사용하지 마세요. 각 인스턴스는 기존 WebUI 경로를 유지합니다. 옵션은 <code>sh install.sh -help</code>에서 확인할 수 있습니다.</p><h4 id="설치-후-경로-확인"><a href="#설치-후-경로-확인" class="headerlink" title="설치 후 경로 확인"></a>설치 후 경로 확인</h4><p>설치가 완료되면 다음과 비슷한 경로가 표시됩니다. 첫 번째는 호스트의 실제 설치 위치이고, 두 번째는 qBittorrent의 <strong>Files location</strong>에 입력할 컨테이너 내부 경로입니다.</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>최신 정식 버전</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>Docker <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> 없이 실행하면 <code>main</code>의 검증된 GitHub 정식 릴리스를 설치합니다. <code>-dev</code>는 현재 <code>dev</code>의 exact-SHA 개발 빌드를 선택합니다.</li><li><code>-o</code>는 <strong>output</strong>의 약자로, Linux에서 여러 번 지정하면 한 번의 다운로드로 기존 WebUI 폴더들을 업데이트할 수 있습니다.</li><li>백업은 <code>~/.config/weig-qb-webui/backups/</code>에 저장되며 설치 대상별로 최신 3개씩 보관됩니다.</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와 백업, 롤백 상태를 제거하되 다른 대상의 백업은 그대로 두며 공유 폴더는 비었을 때만 정리합니다.</li><li>나중에 <code>-rollback</code>을 쓸 계획이라면 제거할 때 <code>-purge</code>를 생략하세요.</li><li><code>-version 1.2.0</code>처럼 GitHub 정식 릴리스를 지정할 수 있습니다. 없으면 오류가 나며 <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 설정을 비활성화한 뒤, 해당 대상의 installer-owned backups &#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>단일 컨테이너 자동 감지:</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>는 현재 제거 대상이 소유한 백업만 삭제하며 다른 설치의 백업은 건드리지 않습니다. 공유 상태 디렉터리가 비면 Linux의 <code>~/.config/weig-qb-webui</code>(root는 <code>/root/.config/weig-qb-webui</code>) 또는 Windows의 <code>%APPDATA%\weig-qb-webui</code>도 함께 제거됩니다.</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.ko.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>Windows, Linux, NAS, Docker에서 WeiG qB WebUI를 설치하고 qBittorrent의 대체 WebUI로 활성화하는 과정을 초보자 기준으로 설명합니다.</summary>
    <title>WeiG qB WebUI: qBittorrent 대체 WebUI 초보자 설치 가이드</title>
    <updated>2026-10-21T08:39:31.054Z</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/%ED%8E%8C%EC%9B%A8%EC%96%B4-%EB%B9%8C%EB%93%9C/"/>
    <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>**<a href="https://github.com/">GitHub</a>**에 로그인</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> 직접 펌웨어를 빌드해 보고 싶지만 로컬 툴체인을 준비하는 단계부터 막히고 싶지 않은 사람을 위한 진입점입니다.</li><li><strong>【패키지와 의존성】</strong> 일부 플러그인이나 의존성은 사용하기 전에 펌웨어에 포함해 빌드해야 합니다.</li><li><strong>【설정 부담】</strong> OpenWrt 빌드 옵션은 많고, 중국 본토의 네트워크 환경에서는 의존 파일 다운로드가 특히 번거로울 수 있습니다.</li><li><strong>【시간】</strong> 전체 빌드는 몇 시간이 걸릴 수 있고 그 뒤에도 실패할 수 있어, 원인을 직접 찾는 데도 시간이 많이 듭니다.</li><li><strong>【앞으로의 방향】</strong> 누구나 프로젝트를 Fork해 GitHub <strong>Pages + Actions</strong>로 자기만의 OpenWrt 온라인 빌드 사이트를 운영할 수 있게 하는 것이 장기 목표입니다.</li><li><strong>【현재 단계】</strong> 아직 테스트 단계라 버그가 남아 있을 수 있습니다. 공유 워크플로를 과도하게 사용하면 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>PC와 모바일에서 모두 접근 가능</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>**<a href="https://www.weigshare.com/wrt">Wei.G 온라인 커스터마이저</a>**를 엽니다.<ul><li><strong><a href="https://dev.weig-wrt.pages.dev/">Cloudflare dev 페이지</a></strong> (실험 기능, 최신 기능을 체험할 수 있지만 bug가 있을 수 있습니다)</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> 자신의 빌드 Issue에 <code>/cancel</code>이라고 답글을 남기세요.</li><li><strong>동시에 몇 개까지 빌드할 수 있나요?</strong> 한 계정에서 동시에 2개의 빌드 작업만 허용되며 그 이상은 대기합니다.</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>로컬 빌드 환경 없이 Wei.G OpenWrt 온라인 커스터마이저와 GitHub Actions를 이용해 원하는 OpenWrt 펌웨어를 클라우드에서 빌드합니다.</summary>
    <title>클라우드에서 나만의 OpenWrt 펌웨어 빌드하기: 초보자 가이드</title>
    <updated>2026-10-21T08:39:31.054Z</updated>
  </entry>
  <entry>
    <author>
      <name>Wei.G</name>
    </author>
    <category term="웹사이트 구축" scheme="https://www.weigshare.com/categories/%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8-%EA%B5%AC%EC%B6%95/"/>
    <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/%EC%9D%B4%EB%AF%B8%EC%A7%80-%ED%98%B8%EC%8A%A4%ED%8C%85/"/>
    <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년 7월)</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에서 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> 디렉터리 아래에 저장하므로 **&#x2F;img&#x2F;**를 사용합니다. <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>● 버킷 이름: <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에 읽기&#x2F;쓰기 권한이 있는지</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.054Z</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/%EC%8B%A4%ED%97%98%EC%8B%A4/"/>
    <category term="화학 분석" scheme="https://www.weigshare.com/tags/%ED%99%94%ED%95%99-%EB%B6%84%EC%84%9D/"/>
    <category term="표준" scheme="https://www.weigshare.com/tags/%ED%91%9C%EC%A4%80/"/>
    <category term="표준 적정액" scheme="https://www.weigshare.com/tags/%ED%91%9C%EC%A4%80-%EC%A0%81%EC%A0%95%EC%95%A1/"/>
    <category term="표준용액" scheme="https://www.weigshare.com/tags/%ED%91%9C%EC%A4%80%EC%9A%A9%EC%95%A1/"/>
    <content>
      <![CDATA[<h1 id="만든-이유"><a href="#만든-이유" class="headerlink" title="만든 이유"></a>만든 이유</h1><p>화학 분석에서는 표준 적정용액을 조제하고 표정한 뒤에도 해야 할 일이 많습니다. 농도를 계산하고, 보정값을 반영하고, 반복 측정 결과를 비교한 다음 최종 검토까지 해야 합니다. 이 과정을 전부 손으로 처리하면 시간이 오래 걸리고, 데이터가 많아질수록 계산 실수나 검토 누락이 생기기 쉽습니다.</p><ul><li><p>이 프로그램은 업무 외 시간을 이용해 만들었습니다. 4월에 시작해 11월에 첫 정식 버전을 완성했고, 6개월 넘게 걸린 제 첫 GUI 데스크톱 프로그램이기도 합니다.</p></li><li><p>개발하면서 Python과 PyQt6를 독학했고, 화면 설계부터 계산 로직, 테스트, 배포까지 직접 진행했습니다. QFluentWidgets는 실제 업무에서 더 편하게 사용할 수 있도록 UI를 다듬는 데 사용했습니다.</p></li><li><p>실제로 사용해 보니 한 사람당 매주 1시간 이상 검토 시간을 줄일 수 있었습니다. “반년 동안 도구 하나를 만들고, 그 뒤에는 매주 한 시간씩 편해지자”라는 어느 날 밤의 작은 생각을 실현한 셈입니다. 😆</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>온도 보정, 뷰렛 보정, 1인 4회 평행시험, 2인 8회 평행시험, 상대범위 자동 계산을 지원해 실험실 표준용액 관리 효율을 높입니다.</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>✅ 1인 4회 평행시험 계산<br>✅ 2인 8회 평행시험 계산<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>1인 4회 평행 농도</td></tr><tr><td>뷰렛 보정값</td><td>2인 8회 평행 농도</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 License로 공개됩니다.</p><p>사용, 수정, 배포 시 GPL-3.0 라이선스 조건을 따라주세요.</p><h2 id="서드파티-오픈소스-구성요소"><a href="#서드파티-오픈소스-구성요소" class="headerlink" title="서드파티 오픈소스 구성요소"></a>서드파티 오픈소스 구성요소</h2><p>다음 오픈소스 프로젝트를 사용합니다.</p><ul><li>Python, PyQt6, QFluentWidgets, SQLite, Nuitka</li></ul><p>모든 오픈소스 개발자의 기여에 감사드립니다.</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>Python, PyQt6, QFluentWidgets, SQLite로 만든 Windows용 실험실 도구로, 표준용액 계산과 검토, 온도·뷰렛 보정, 반복 측정 통계, 상대 범위 자동 계산을 지원합니다.</summary>
    <title>실험실 표준용액 계산·검토 시스템</title>
    <updated>2026-10-21T08:39:31.054Z</updated>
  </entry>
</feed>
