<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>If you love something, set it free.</title>
  <icon>https://blog.doracoin.cc/icon.png</icon>
  <subtitle>哆啦钢镚的博客</subtitle>
  <link href="https://blog.doracoin.cc/atom.xml" rel="self"/>
  
  <link href="https://blog.doracoin.cc/"/>
  <updated>2026-03-31T16:37:02.643Z</updated>
  <id>https://blog.doracoin.cc/</id>
  
  <author>
    <name>Doracoin</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>FossFLOW：开源等距投影图表编辑器</title>
    <link href="https://blog.doracoin.cc/posts/opensource/54018.html"/>
    <id>https://blog.doracoin.cc/posts/opensource/54018.html</id>
    <published>2026-03-27T08:36:13.000Z</published>
    <updated>2026-03-31T16:37:02.643Z</updated>
    
    <content type="html"><![CDATA[<span id="more"></span><h2 id="0-为什么关注这个项目"><a href="#0-为什么关注这个项目" class="headerlink" title="0. 为什么关注这个项目"></a>0. 为什么关注这个项目</h2><p>在技术文档编写、架构设计或项目演示中，我们常常需要绘制美观的技术架构图。传统的绘图工具如 Visio 功能强大但收费昂贵，而在线工具又存在隐私和数据安全问题。我一直在寻找一款既开源免费、又能离线使用、还能创建精美 3D 风格技术架构图的工具。</p><p>直到我发现了 FossFLOW，这款专注于等距投影（Isometric）图表编辑的开源工具，完美契合了我的需求。</p><hr><h2 id="1-项目概览"><a href="#1-项目概览" class="headerlink" title="1. 项目概览"></a>1. 项目概览</h2><p>这个项目属于：</p><ul><li>自托管工具</li><li>开发工具</li><li>UI 组件</li></ul><p>项目定位：一款基于浏览器的等距投影图表编辑器，用于创建美观的技术架构图</p><p>Github：<a href="https://github.com/stan-smith/FossFLOW">https://github.com/stan-smith/FossFLOW</a></p><p>Star: 截至 2026 年 3 月，该项目已获得相当数量的关注（具体 Star 数请查看 GitHub 页面）</p><p>License：MIT</p><p>语言&#x2F;技术栈：</p><ul><li>React（前端框架）</li><li>Isoflow&#x2F;Fossflow 库（底层绘图引擎）</li><li>Progressive Web App（PWA，渐进式网页应用）</li></ul><p>项目成熟度&#x2F;复杂度：</p><ul><li>生产可用</li><li>中等复杂度</li></ul><hr><h2 id="2-解决什么问题"><a href="#2-解决什么问题" class="headerlink" title="2. 解决什么问题"></a>2. 解决什么问题</h2><h3 id="2-1-这个领域原本怎么做"><a href="#2-1-这个领域原本怎么做" class="headerlink" title="2.1 这个领域原本怎么做"></a>2.1 这个领域原本怎么做</h3><p>在传统的技术架构图绘制场景中，开发者通常有以下几种选择：</p><ul><li><strong>专业绘图软件</strong>：如 Microsoft Visio、Lucidchart 等，功能强大但价格昂贵</li><li><strong>在线绘图工具</strong>：如 Draw.io、Excalidraw 等，免费但需要联网使用</li><li><strong>代码生成工具</strong>：如 Graphviz、Mermaid 等，适合程序员但学习曲线陡峭</li><li><strong>设计软件</strong>：如 Figma、Sketch 等，灵活但不够专业化</li></ul><h3 id="2-2-现有方案问题"><a href="#2-2-现有方案问题" class="headerlink" title="2.2 现有方案问题"></a>2.2 现有方案问题</h3><ol><li><strong>成本问题</strong>：商业软件授权费用高，不适合个人开发者或小团队</li><li><strong>隐私顾虑</strong>：在线工具需要将数据上传到第三方服务器</li><li><strong>网络依赖</strong>：部分工具必须联网才能使用，限制了使用场景</li><li><strong>专业性不足</strong>：通用绘图工具缺少针对技术场景的优化</li><li><strong>学习成本</strong>：部分工具需要投入大量时间学习</li></ol><h3 id="2-3-这个项目的思路"><a href="#2-3-这个项目的思路" class="headerlink" title="2.3 这个项目的思路"></a>2.3 这个项目的思路</h3><p>FossFLOW 采用了以下设计理念：</p><ul><li><strong>完全开源免费</strong>：MIT 许可证，允许任何人自由使用和修改</li><li><strong>本地优先</strong>：作为 PWA 应用，可以在浏览器中完全离线运行</li><li><strong>专注等距投影</strong>：专门针对 3D 风格技术架构图进行优化</li><li><strong>开箱即用</strong>：无需安装复杂环境，打开浏览器即可使用</li><li><strong>灵活部署</strong>：支持自托管，可部署在私有服务器上</li></ul><hr><h2 id="3-架构分析"><a href="#3-架构分析" class="headerlink" title="3. 架构分析"></a>3. 架构分析</h2><h3 id="3-1-整体架构"><a href="#3-1-整体架构" class="headerlink" title="3.1 整体架构"></a>3.1 整体架构</h3><p>FossFLOW 采用单体仓库（Monorepo）结构，包含两个核心包：</p><figure class="highlight crystal"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs crystal">FossFLOW/<br>├── packages/<br>│   ├── fossflow-<span class="hljs-class"><span class="hljs-keyword">lib</span>    <span class="hljs-comment"># React 组件库（绘图引擎）</span></span><br>│   └── fossflow-app    <span class="hljs-comment"># PWA 应用（用户界面）</span><br>└── e2e-tests           <span class="hljs-comment"># 端到端测试</span><br></code></pre></td></tr></table></figure><h3 id="3-2-关键模块"><a href="#3-2-关键模块" class="headerlink" title="3.2 关键模块"></a>3.2 关键模块</h3><ol><li><p><strong>fossflow-lib（核心库）</strong></p><ul><li>基于 React 构建的绘图组件库</li><li>负责等距投影的渲染和交互逻辑</li><li>提供丰富的节点和连接器类型</li><li>已发布到 NPM，可独立使用</li></ul></li><li><p><strong>fossflow-app（应用层）</strong></p><ul><li>PWA 应用外壳</li><li>提供用户界面和操作工具</li><li>处理文件导入导出</li><li>管理本地存储</li></ul></li><li><p><strong>存储系统</strong></p><ul><li>Session Storage：临时保存会话数据</li><li>Export&#x2F;Import：JSON 文件导入导出</li><li>Auto-Save：自动保存机制（每 5 秒）</li></ul></li></ol><hr><h2 id="4-核心设计思想"><a href="#4-核心设计思想" class="headerlink" title="4. 核心设计思想"></a>4. 核心设计思想</h2><h3 id="4-1-技术选型分析"><a href="#4-1-技术选型分析" class="headerlink" title="4.1 技术选型分析"></a>4.1 技术选型分析</h3><p>为什么使用：</p><ul><li><strong>React</strong>：成熟的 UI 框架，组件化开发，生态丰富</li><li><strong>PWA</strong>：离线支持、跨平台、无需安装</li><li><strong>Monorepo</strong>：代码共享、版本管理、便于维护</li></ul><p>为什么不使用：</p><ul><li><strong>Electron</strong>：虽然也能跨平台，但体积更大，资源占用更多</li><li><strong>Canvas&#x2F;SVG 直接操作</strong>：React 提供了更好的抽象层</li></ul><h3 id="4-2-设计思想分析"><a href="#4-2-设计思想分析" class="headerlink" title="4.2 设计思想分析"></a>4.2 设计思想分析</h3><p>这个项目体现：</p><ul><li><strong>本地优先（Local-first）</strong>：数据优先保存在本地，减少对外部服务的依赖</li><li><strong>渐进增强</strong>：作为 PWA，在不同环境下都能正常工作</li><li><strong>模块化设计</strong>：库和应用分离，便于复用和维护</li><li><strong>开源协作</strong>：欢迎社区贡献，保持项目活力</li></ul><hr><h2 id="5-功能分析"><a href="#5-功能分析" class="headerlink" title="5. 功能分析"></a>5. 功能分析</h2><h3 id="5-1-整体架构"><a href="#5-1-整体架构" class="headerlink" title="5.1 整体架构"></a>5.1 整体架构</h3><ul><li>纯前端应用（Pure Frontend）</li><li>前后端分离（可选自托管后端）</li><li>PWA 架构</li></ul><h3 id="5-2-核心模块"><a href="#5-2-核心模块" class="headerlink" title="5.2 核心模块"></a>5.2 核心模块</h3><p><strong>画布系统</strong>：</p><ul><li>无限画布支持</li><li>网格对齐辅助</li><li>缩放和平移导航</li></ul><p><strong>组件库</strong>：</p><ul><li>丰富的预定义等距图标（服务器、数据库、网络设备等）</li><li>支持自定义图标导入</li><li>拖拽式添加元素</li></ul><p><strong>连接工具</strong>：</p><ul><li>智能连接器（支持点击和拖拽两种模式）</li><li>自动路径规划</li><li>连接器样式自定义</li></ul><p><strong>文件管理</strong>：</p><ul><li>Quick Save：快速保存到浏览器会话</li><li>Export：导出为 JSON 文件</li><li>Import：从 JSON 文件加载</li><li>Auto-Save：自动保存（每 5 秒）</li></ul><p><strong>部署选项</strong>：</p><ul><li>在线版本：<a href="https://stan-smith.github.io/FossFLOW/">https://stan-smith.github.io/FossFLOW/</a></li><li>Docker 部署：支持一键部署</li><li>本地开发：完整的开发环境</li></ul><h3 id="5-3-数据流分析"><a href="#5-3-数据流分析" class="headerlink" title="5.3 数据流分析"></a>5.3 数据流分析</h3><figure class="highlight crystal"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs crystal">用户操作<br> ↓<br>React 组件状态更新<br> ↓<br>fossflow-<span class="hljs-class"><span class="hljs-keyword">lib</span> 渲染引擎</span><br> ↓<br>Canvas/SVG 绘制<br> ↓<br>浏览器显示<br></code></pre></td></tr></table></figure><p>保存流程：</p><figure class="highlight pgsql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs pgsql">用户保存<br> ↓<br>序列化为 <span class="hljs-type">JSON</span><br> ↓<br><span class="hljs-keyword">Session</span> <span class="hljs-keyword">Storage</span> / 文件下载<br></code></pre></td></tr></table></figure><hr><h2 id="6-部署与体验"><a href="#6-部署与体验" class="headerlink" title="6. 部署与体验"></a>6. 部署与体验</h2><h3 id="6-1-部署难度"><a href="#6-1-部署难度" class="headerlink" title="6.1 部署难度"></a>6.1 部署难度</h3><p><strong>在线版本</strong>：</p><ul><li>零部署，直接访问 <a href="https://stan-smith.github.io/FossFLOW/">https://stan-smith.github.io/FossFLOW/</a> 即可使用</li><li>适合作为临时或轻度使用</li></ul><p><strong>Docker 部署</strong>（推荐）：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 使用 Docker Compose（推荐，包含持久化存储）</span><br>docker compose up<br><br><span class="hljs-comment"># 或直接运行</span><br>docker run -p 80:80 -v $(<span class="hljs-built_in">pwd</span>)/diagrams:/data/diagrams stnsmith/fossflow:latest<br></code></pre></td></tr></table></figure><p><strong>HTTP 基础认证</strong>（可选）：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs bash">docker run -p 80:80 \<br>  -e HTTP_AUTH_USER=admin \<br>  -e HTTP_AUTH_PASSWORD=secret \<br>  stnsmith/fossflow:latest<br></code></pre></td></tr></table></figure><p><strong>本地开发</strong>：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash">git <span class="hljs-built_in">clone</span> https://github.com/stan-smith/FossFLOW<br><span class="hljs-built_in">cd</span> FossFLOW<br>npm install<br>npm run build:lib<br>npm run dev<br></code></pre></td></tr></table></figure><p>总体来说，部署难度较低，Docker 一键部署非常适合生产环境。</p><h3 id="6-2-资源占用"><a href="#6-2-资源占用" class="headerlink" title="6.2 资源占用"></a>6.2 资源占用</h3><ul><li><strong>客户端</strong>：作为 PWA 应用，资源占用主要取决于浏览器和图表复杂度</li><li><strong>服务端</strong>（自托管）：Nginx 静态服务，资源占用极低</li><li><strong>存储</strong>： diagrams 目录用于存储导出的 JSON 文件，占用空间很小</li></ul><h3 id="6-3-使用体验"><a href="#6-3-使用体验" class="headerlink" title="6.3 使用体验"></a>6.3 使用体验</h3><p><strong>优点</strong>：</p><ul><li>界面简洁直观，上手容易</li><li>拖拽操作流畅，响应迅速</li><li>等距投影效果出色，图表美观</li><li>离线工作无压力，数据安全有保障</li><li>导出格式标准，便于分享和备份</li></ul><p><strong>改进空间</strong>：</p><ul><li>组件库相对有限，需要自行导入自定义图标</li><li>缺少协作功能，不适合团队实时协作</li><li>中文文档较少，主要依赖英文文档</li></ul><hr><h2 id="7-类似项目对比"><a href="#7-类似项目对比" class="headerlink" title="7. 类似项目对比"></a>7. 类似项目对比</h2><table><thead><tr><th>项目</th><th>复杂度</th><th>技术栈</th><th>适用场景</th></tr></thead><tbody><tr><td>FossFLOW</td><td>中等</td><td>React + PWA</td><td>等距技术架构图</td></tr><tr><td>Draw.io</td><td>复杂</td><td>JavaScript</td><td>通用流程图</td></tr><tr><td>Excalidraw</td><td>中等</td><td>React</td><td>手绘风格图表</td></tr><tr><td>Mermaid</td><td>简单</td><td>JavaScript</td><td>代码生成图表</td></tr><tr><td>Graphviz</td><td>复杂</td><td>C&#x2F;C++</td><td>自动布局图论</td></tr></tbody></table><p>FossFLOW 的独特优势在于专注于等距投影风格，特别适合绘制 3D 视觉效果的技术架构图，如云基础设施、网络拓扑等。</p><hr><h2 id="8-优缺点分析"><a href="#8-优缺点分析" class="headerlink" title="8. 优缺点分析"></a>8. 优缺点分析</h2><p>优点：</p><ul><li>完全开源免费，MIT 许可证</li><li>离线优先，数据隐私有保障</li><li>等距投影效果专业，图表美观</li><li>部署简单，支持 Docker 一键部署</li><li>PWA 特性，跨平台兼容性好</li><li>Monorepo 结构，代码组织清晰</li></ul><p>缺点：</p><ul><li>社区规模相对较小</li><li>中文文档和资源较少</li><li>组件库有待丰富</li><li>缺少实时协作功能</li><li>高级功能（如批量操作）有限</li></ul><hr><h2 id="9-我的判断"><a href="#9-我的判断" class="headerlink" title="9. 我的判断"></a>9. 我的判断</h2><p>我认为：</p><p><strong>这个项目适合</strong>：</p><ul><li>需要频繁绘制技术架构图的开发者</li><li>注重数据隐私和离线使用的用户</li><li>喜欢 3D 等距投影风格的创作者</li><li>寻求 Visio 等商业软件替代方案的个人或团队</li><li>需要在文档、演示中使用精美图表的技术作者</li></ul><p><strong>这个项目不适合</strong>：</p><ul><li>需要复杂协作功能的团队</li><li>需要大量预制模板的企业用户</li><li>对图表样式有特殊定制需求的场景</li></ul><p><strong>未来发展</strong>：<br>随着远程办公和在线协作的普及，开源绘图工具的需求会持续增长。FossFLOW 如果能够：</p><ol><li>丰富组件库，提供更多行业专用图标</li><li>增加协作功能，支持多人实时编辑</li><li>完善文档和本地化，降低使用门槛</li><li>与其他工具集成（如 Markdown 编辑器、文档系统）</li></ol><p>有望成为技术架构图领域的重要选择。对于个人开发者和小型团队来说，FossFLOW 已经是一款足够优秀的工具，值得尝试和推荐。</p><hr>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;span id=&quot;more&quot;&gt;&lt;/span&gt;

&lt;h2 id=&quot;0-为什么关注这个项目&quot;&gt;&lt;a href=&quot;#0-为什么关注这个项目&quot; class=&quot;headerlink&quot; title=&quot;0. 为什么关注这个项目&quot;&gt;&lt;/a&gt;0.</summary>
        
      
    
    
    
    <category term="开源项目" scheme="https://blog.doracoin.cc/categories/opensource/"/>
    
    
    <category term="开源" scheme="https://blog.doracoin.cc/tags/%E5%BC%80%E6%BA%90/"/>
    
  </entry>
  
  <entry>
    <title>现代化-HTTP-基准性能测试工具：wrk</title>
    <link href="https://blog.doracoin.cc/posts/opensource/55027.html"/>
    <id>https://blog.doracoin.cc/posts/opensource/55027.html</id>
    <published>2026-03-26T05:46:13.000Z</published>
    <updated>2026-03-31T16:37:02.645Z</updated>
    
    <content type="html"><![CDATA[<span id="more"></span><h2 id="0-为什么关注这个项目"><a href="#0-为什么关注这个项目" class="headerlink" title="0. 为什么关注这个项目"></a>0. 为什么关注这个项目</h2><p>这一段是：<strong>认知记录</strong></p><ul><li>我在寻找一款高性能的HTTP基准测试工具</li><li>我需要测试Web服务的性能和并发能力</li><li>我希望找到一个轻量级、易于使用的性能测试工具</li></ul><p>这会让我以后回头看时，我会知道自己当时的思考路径，这是非常有价值的。</p><hr><h2 id="1-项目概览"><a href="#1-项目概览" class="headerlink" title="1. 项目概览"></a>1. 项目概览</h2><p>这个项目属于：</p><ul><li>开发工具</li><li>基础设施</li></ul><p>项目定位：wrk是一款现代化的HTTP基准性能测试工具，使用Lua脚本进行配置，能够产生显著的负载来测试Web服务的性能。</p><p>Github：<a href="https://github.com/wg/wrk">https://github.com/wg/wrk</a></p><p>Star：29.4k+</p><p>License：Apache-2.0</p><p>语言&#x2F;技术栈：</p><ul><li>C</li><li>Lua</li></ul><p>项目成熟度&#x2F;复杂度：</p><ul><li>生产可用</li><li>极简</li></ul><hr><h2 id="2-解决什么问题"><a href="#2-解决什么问题" class="headerlink" title="2. 解决什么问题"></a>2. 解决什么问题</h2><h3 id="2-1-这个领域原本怎么做"><a href="#2-1-这个领域原本怎么做" class="headerlink" title="2.1 这个领域原本怎么做"></a>2.1 这个领域原本怎么做</h3><p>传统的HTTP性能测试要么使用简单的工具如ab（Apache Bench），要么使用复杂的商业工具，缺乏灵活性和性能。</p><h3 id="2-2-现有方案问题"><a href="#2-2-现有方案问题" class="headerlink" title="2.2 现有方案问题"></a>2.2 现有方案问题</h3><ul><li>ab：功能简单，无法进行复杂的测试场景</li><li>商业工具：成本高，部署复杂</li><li>其他开源工具：性能不足，配置复杂</li></ul><h3 id="2-3-这个项目的思路"><a href="#2-3-这个项目的思路" class="headerlink" title="2.3 这个项目的思路"></a>2.3 这个项目的思路</h3><p>wrk通过使用C语言实现核心功能，结合Lua脚本的灵活性，提供高性能、可定制的HTTP基准测试能力。</p><hr><h2 id="3-架构分析"><a href="#3-架构分析" class="headerlink" title="3. 架构分析"></a>3. 架构分析</h2><h3 id="3-1-整体架构"><a href="#3-1-整体架构" class="headerlink" title="3.1 整体架构"></a>3.1 整体架构</h3><p>wrk的架构包括：</p><ul><li>核心引擎：使用C语言实现，负责生成负载和收集统计数据</li><li>Lua脚本：用于自定义请求和处理响应</li><li>多线程设计：利用多核CPU生成高并发负载</li></ul><h3 id="3-2-关键模块"><a href="#3-2-关键模块" class="headerlink" title="3.2 关键模块"></a>3.2 关键模块</h3><ul><li>连接管理：高效管理HTTP连接</li><li>请求生成：根据Lua脚本生成HTTP请求</li><li>响应处理：处理HTTP响应并收集数据</li><li>统计分析：计算性能指标如QPS、延迟等</li></ul><hr><h2 id="4-核心设计思想"><a href="#4-核心设计思想" class="headerlink" title="4. 核心设计思想"></a>4. 核心设计思想</h2><h3 id="4-1-技术选型分析"><a href="#4-1-技术选型分析" class="headerlink" title="4.1 技术选型分析"></a>4.1 技术选型分析</h3><p>为什么使用：</p><ul><li>C：提供高性能和低内存占用</li><li>Lua：提供灵活的脚本能力，便于定制测试场景</li></ul><h3 id="4-2-设计思想分析"><a href="#4-2-设计思想分析" class="headerlink" title="4.2 设计思想分析"></a>4.2 设计思想分析</h3><p>这个项目体现：</p><ul><li>高性能：使用C语言和多线程设计，最大化利用系统资源</li><li>灵活性：通过Lua脚本支持复杂的测试场景</li><li>简洁性：命令行界面简洁，易于使用</li><li>可扩展性：支持自定义Lua脚本</li></ul><hr><h2 id="5-功能分析"><a href="#5-功能分析" class="headerlink" title="5. 功能分析"></a>5. 功能分析</h2><h3 id="5-1-整体架构"><a href="#5-1-整体架构" class="headerlink" title="5.1 整体架构"></a>5.1 整体架构</h3><ul><li>单体架构：单一二进制文件，易于部署</li><li>多线程设计：利用多核CPU生成高并发负载</li></ul><h3 id="5-2-核心模块"><a href="#5-2-核心模块" class="headerlink" title="5.2 核心模块"></a>5.2 核心模块</h3><ul><li>连接池：高效管理HTTP连接</li><li>负载生成：生成指定并发数的HTTP请求</li><li>脚本支持：通过Lua脚本自定义请求和处理逻辑</li><li>统计功能：收集和计算性能指标</li></ul><h3 id="5-3-数据流分析"><a href="#5-3-数据流分析" class="headerlink" title="5.3 数据流分析"></a>5.3 数据流分析</h3><figure class="highlight"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs">启动测试<br> ↓<br>初始化连接池<br> ↓<br>执行Lua脚本准备请求<br> ↓<br>多线程生成负载<br> ↓<br>收集响应数据<br> ↓<br>计算性能指标<br> ↓<br>输出测试结果<br></code></pre></td></tr></table></figure><hr><h2 id="6-部署与体验"><a href="#6-部署与体验" class="headerlink" title="6. 部署与体验"></a>6. 部署与体验</h2><h3 id="6-1-部署难度"><a href="#6-1-部署难度" class="headerlink" title="6.1 部署难度"></a>6.1 部署难度</h3><ul><li>部署方式：简单，只需编译或下载二进制文件</li><li>配置：通过命令行参数和Lua脚本配置</li><li>依赖：几乎无依赖，仅需系统库</li></ul><h3 id="6-2-资源占用"><a href="#6-2-资源占用" class="headerlink" title="6.2 资源占用"></a>6.2 资源占用</h3><ul><li>内存：低，取决于并发数</li><li>CPU：高，充分利用多核CPU</li><li>网络：取决于测试流量</li></ul><h3 id="6-3-使用体验"><a href="#6-3-使用体验" class="headerlink" title="6.3 使用体验"></a>6.3 使用体验</h3><ul><li>命令行界面：简洁易用，参数丰富</li><li>性能：生成高并发负载，测试结果准确</li><li>脚本支持：通过Lua脚本实现复杂测试场景</li><li>结果输出：详细的性能指标和统计数据</li></ul><hr><h2 id="7-类似项目对比"><a href="#7-类似项目对比" class="headerlink" title="7. 类似项目对比"></a>7. 类似项目对比</h2><table><thead><tr><th>项目</th><th>复杂度</th><th>技术栈</th><th>适用场景</th></tr></thead><tbody><tr><td>wrk</td><td>简单</td><td>C, Lua</td><td>高性能HTTP基准测试</td></tr><tr><td>ab (Apache Bench)</td><td>简单</td><td>C</td><td>基本HTTP性能测试</td></tr><tr><td>JMeter</td><td>复杂</td><td>Java</td><td>复杂测试场景，功能丰富</td></tr><tr><td>k6</td><td>中等</td><td>JavaScript</td><td>现代负载测试，功能丰富</td></tr></tbody></table><hr><h2 id="8-优缺点分析"><a href="#8-优缺点分析" class="headerlink" title="8. 优缺点分析"></a>8. 优缺点分析</h2><p>优点：</p><ul><li>高性能，能够生成高并发负载</li><li>轻量级，资源占用低</li><li>灵活，支持Lua脚本定制测试场景</li><li>简洁易用，命令行界面友好</li><li>开源免费，社区活跃</li></ul><p>缺点：</p><ul><li>功能相对简单，缺乏高级测试功能</li><li>Lua脚本学习成本</li><li>仅支持HTTP&#x2F;HTTPS协议</li><li>没有图形界面，结果分析需要手动处理</li></ul><hr><h2 id="9-我的判断"><a href="#9-我的判断" class="headerlink" title="9. 我的判断"></a>9. 我的判断</h2><p>我认为：</p><p>这个项目：</p><ul><li>适合谁：需要高性能HTTP基准测试的开发者和运维人员，需要快速测试Web服务性能的用户</li><li>不适合谁：需要复杂测试场景的用户，需要图形界面的用户</li><li>未来如何：wrk作为一款轻量级、高性能的HTTP基准测试工具，将继续在性能测试领域发挥重要作用。随着Web技术的发展，它可能需要适应新的HTTP协议和Web技术</li></ul><hr>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;span id=&quot;more&quot;&gt;&lt;/span&gt;

&lt;h2 id=&quot;0-为什么关注这个项目&quot;&gt;&lt;a href=&quot;#0-为什么关注这个项目&quot; class=&quot;headerlink&quot; title=&quot;0. 为什么关注这个项目&quot;&gt;&lt;/a&gt;0.</summary>
        
      
    
    
    
    <category term="开源项目" scheme="https://blog.doracoin.cc/categories/opensource/"/>
    
    
    <category term="开源" scheme="https://blog.doracoin.cc/tags/%E5%BC%80%E6%BA%90/"/>
    
  </entry>
  
  <entry>
    <title>用于-Java-的可扩展网络爬虫框架：webmagic</title>
    <link href="https://blog.doracoin.cc/posts/opensource/31116.html"/>
    <id>https://blog.doracoin.cc/posts/opensource/31116.html</id>
    <published>2026-03-26T05:45:00.000Z</published>
    <updated>2026-03-31T16:37:02.645Z</updated>
    
    <content type="html"><![CDATA[<span id="more"></span><h2 id="0-为什么关注这个项目"><a href="#0-为什么关注这个项目" class="headerlink" title="0. 为什么关注这个项目"></a>0. 为什么关注这个项目</h2><p>这一段是：<strong>认知记录</strong></p><ul><li>我在寻找一款Java语言的网络爬虫框架</li><li>我需要一个可扩展、易用的爬虫工具</li><li>我希望找到一个开源、活跃的爬虫框架</li></ul><p>这会让我以后回头看时，我会知道自己当时的思考路径，这是非常有价值的。</p><hr><h2 id="1-项目概览"><a href="#1-项目概览" class="headerlink" title="1. 项目概览"></a>1. 项目概览</h2><p>这个项目属于：</p><ul><li>开发工具</li></ul><p>项目定位：webmagic是一款基于Java的可扩展网络爬虫框架，提供简洁的API和丰富的功能，适合各种网络爬虫场景。</p><p>Github：<a href="https://github.com/code4craft/webmagic">https://github.com/code4craft/webmagic</a></p><p>Star：16.8k+</p><p>License：Apache-2.0</p><p>语言&#x2F;技术栈：</p><ul><li>Java</li><li>HttpClient</li><li>Jsoup</li></ul><p>项目成熟度&#x2F;复杂度：</p><ul><li>生产可用</li><li>中等</li></ul><hr><h2 id="2-解决什么问题"><a href="#2-解决什么问题" class="headerlink" title="2. 解决什么问题"></a>2. 解决什么问题</h2><h3 id="2-1-这个领域原本怎么做"><a href="#2-1-这个领域原本怎么做" class="headerlink" title="2.1 这个领域原本怎么做"></a>2.1 这个领域原本怎么做</h3><p>传统的网络爬虫要么使用原生Java代码编写，要么使用复杂的爬虫框架，开发效率低，维护困难。</p><h3 id="2-2-现有方案问题"><a href="#2-2-现有方案问题" class="headerlink" title="2.2 现有方案问题"></a>2.2 现有方案问题</h3><ul><li>原生代码：开发效率低，需要处理很多细节</li><li>其他爬虫框架：学习成本高，配置复杂</li><li>商业爬虫工具：成本高，灵活性有限</li></ul><h3 id="2-3-这个项目的思路"><a href="#2-3-这个项目的思路" class="headerlink" title="2.3 这个项目的思路"></a>2.3 这个项目的思路</h3><p>webmagic通过提供简洁的API和模块化设计，简化爬虫开发，同时保持灵活性和可扩展性。</p><hr><h2 id="3-架构分析"><a href="#3-架构分析" class="headerlink" title="3. 架构分析"></a>3. 架构分析</h2><h3 id="3-1-整体架构"><a href="#3-1-整体架构" class="headerlink" title="3.1 整体架构"></a>3.1 整体架构</h3><p>webmagic的架构包括：</p><ul><li>核心模块：提供爬虫的基本功能</li><li>扩展模块：提供各种扩展功能</li><li>下载器：负责页面下载</li><li>解析器：负责页面解析</li><li>管道：负责结果处理</li><li>调度器：负责URL管理</li></ul><h3 id="3-2-关键模块"><a href="#3-2-关键模块" class="headerlink" title="3.2 关键模块"></a>3.2 关键模块</h3><ul><li>下载器：处理HTTP请求和响应</li><li>解析器：使用Jsoup解析HTML</li><li>管道：处理爬取结果</li><li>调度器：管理待爬取的URL</li><li>爬虫引擎：协调各个组件的工作</li></ul><hr><h2 id="4-核心设计思想"><a href="#4-核心设计思想" class="headerlink" title="4. 核心设计思想"></a>4. 核心设计思想</h2><h3 id="4-1-技术选型分析"><a href="#4-1-技术选型分析" class="headerlink" title="4.1 技术选型分析"></a>4.1 技术选型分析</h3><p>为什么使用：</p><ul><li>Java：跨平台，稳定可靠</li><li>HttpClient：处理HTTP请求</li><li>Jsoup：解析HTML</li></ul><h3 id="4-2-设计思想分析"><a href="#4-2-设计思想分析" class="headerlink" title="4.2 设计思想分析"></a>4.2 设计思想分析</h3><p>这个项目体现：</p><ul><li>模块化：各组件职责明确，易于扩展</li><li>简洁API：提供简洁的API，降低使用成本</li><li>可扩展性：支持自定义组件</li><li>灵活性：适应不同的爬虫场景</li></ul><hr><h2 id="5-功能分析"><a href="#5-功能分析" class="headerlink" title="5. 功能分析"></a>5. 功能分析</h2><h3 id="5-1-整体架构"><a href="#5-1-整体架构" class="headerlink" title="5.1 整体架构"></a>5.1 整体架构</h3><ul><li>模块化架构：核心组件 + 扩展组件</li><li>管道式处理：数据在组件间流动</li></ul><h3 id="5-2-核心模块"><a href="#5-2-核心模块" class="headerlink" title="5.2 核心模块"></a>5.2 核心模块</h3><ul><li>下载器：支持HTTP请求，cookie管理，代理设置</li><li>解析器：支持CSS选择器，XPath，正则表达式</li><li>管道：支持控制台输出，文件保存，数据库存储</li><li>调度器：支持URL去重，优先级管理</li><li>爬虫引擎：支持多线程，自动重试</li></ul><h3 id="5-3-数据流分析"><a href="#5-3-数据流分析" class="headerlink" title="5.3 数据流分析"></a>5.3 数据流分析</h3><figure class="highlight livecodeserver"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs livecodeserver">启动爬虫<br> ↓<br>初始化组件<br> ↓<br>下载页面<br> ↓<br>解析页面<br> ↓<br>提取链接和数据<br> ↓<br>处理结果<br> ↓<br>调度新<span class="hljs-built_in">URL</span><br></code></pre></td></tr></table></figure><hr><h2 id="6-部署与体验"><a href="#6-部署与体验" class="headerlink" title="6. 部署与体验"></a>6. 部署与体验</h2><h3 id="6-1-部署难度"><a href="#6-1-部署难度" class="headerlink" title="6.1 部署难度"></a>6.1 部署难度</h3><ul><li>部署方式：作为依赖库引入项目</li><li>配置：通过代码配置，相对简单</li><li>依赖：需要Java环境</li></ul><h3 id="6-2-资源占用"><a href="#6-2-资源占用" class="headerlink" title="6.2 资源占用"></a>6.2 资源占用</h3><ul><li>内存：低到中等，取决于爬取规模</li><li>CPU：低到中等，取决于并发数</li><li>网络：取决于爬取频率和数据量</li></ul><h3 id="6-3-使用体验"><a href="#6-3-使用体验" class="headerlink" title="6.3 使用体验"></a>6.3 使用体验</h3><ul><li>API设计：简洁易用，学习成本低</li><li>扩展性：支持自定义组件</li><li>文档：提供详细的文档和示例</li><li>社区：活跃，有丰富的插件和扩展</li></ul><hr><h2 id="7-类似项目对比"><a href="#7-类似项目对比" class="headerlink" title="7. 类似项目对比"></a>7. 类似项目对比</h2><table><thead><tr><th>项目</th><th>复杂度</th><th>技术栈</th><th>适用场景</th></tr></thead><tbody><tr><td>webmagic</td><td>中等</td><td>Java</td><td>Java项目，中小型爬虫</td></tr><tr><td>Scrapy</td><td>中等</td><td>Python</td><td>Python项目，大型爬虫</td></tr><tr><td>Jsoup</td><td>简单</td><td>Java</td><td>简单的HTML解析</td></tr><tr><td>HttpClient</td><td>简单</td><td>Java</td><td>HTTP请求处理</td></tr></tbody></table><hr><h2 id="8-优缺点分析"><a href="#8-优缺点分析" class="headerlink" title="8. 优缺点分析"></a>8. 优缺点分析</h2><p>优点：</p><ul><li>简洁易用的API</li><li>模块化设计，易于扩展</li><li>丰富的功能和插件</li><li>活跃的社区</li><li>良好的文档</li></ul><p>缺点：</p><ul><li>仅支持Java语言</li><li>大型爬虫场景性能可能不如其他框架</li><li>分布式爬取支持有限</li></ul><hr><h2 id="9-我的判断"><a href="#9-我的判断" class="headerlink" title="9. 我的判断"></a>9. 我的判断</h2><p>我认为：</p><p>这个项目：</p><ul><li>适合谁：Java开发者，需要中小型爬虫的项目，希望快速开发爬虫的用户</li><li>不适合谁：非Java项目，需要大规模分布式爬取的场景</li><li>未来如何：webmagic作为Java生态中的优秀爬虫框架，将继续在Java项目中发挥重要作用。随着Web技术的发展，它也需要不断适应新的网页技术和反爬机制</li></ul><hr>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;span id=&quot;more&quot;&gt;&lt;/span&gt;

&lt;h2 id=&quot;0-为什么关注这个项目&quot;&gt;&lt;a href=&quot;#0-为什么关注这个项目&quot; class=&quot;headerlink&quot; title=&quot;0. 为什么关注这个项目&quot;&gt;&lt;/a&gt;0.</summary>
        
      
    
    
    
    <category term="开源项目" scheme="https://blog.doracoin.cc/categories/opensource/"/>
    
    
    <category term="开源" scheme="https://blog.doracoin.cc/tags/%E5%BC%80%E6%BA%90/"/>
    
  </entry>
  
  <entry>
    <title>开源数据库同步工具：SymmetricDS</title>
    <link href="https://blog.doracoin.cc/posts/opensource/60978.html"/>
    <id>https://blog.doracoin.cc/posts/opensource/60978.html</id>
    <published>2026-03-26T05:43:51.000Z</published>
    <updated>2026-03-31T16:37:02.645Z</updated>
    
    <content type="html"><![CDATA[<span id="more"></span><h2 id="0-为什么关注这个项目"><a href="#0-为什么关注这个项目" class="headerlink" title="0. 为什么关注这个项目"></a>0. 为什么关注这个项目</h2><p>这一段是：<strong>认知记录</strong></p><ul><li>我在寻找一款功能强大的数据库同步工具</li><li>我需要在不同数据库之间实现数据同步</li><li>我希望找到一个开源、可靠的数据库同步解决方案</li></ul><p>这会让我以后回头看时，我会知道自己当时的思考路径，这是非常有价值的。</p><hr><h2 id="1-项目概览"><a href="#1-项目概览" class="headerlink" title="1. 项目概览"></a>1. 项目概览</h2><p>这个项目属于：</p><ul><li>自托管工具</li><li>开发工具</li><li>基础设施</li></ul><p>项目定位：SymmetricDS是一款开源的数据库同步工具，支持跨平台、跨数据库的数据同步，适用于分布式环境和边缘计算场景。</p><p>Github：<a href="https://github.com/JumpMind/symmetric-ds">https://github.com/JumpMind/symmetric-ds</a></p><p>Star：2.8k+</p><p>License：GPL-3.0</p><p>语言&#x2F;技术栈：</p><ul><li>Java</li><li>Spring Framework</li><li>支持多种数据库（MySQL, PostgreSQL, Oracle, SQL Server等）</li></ul><p>项目成熟度&#x2F;复杂度：</p><ul><li>生产可用</li><li>企业级</li><li>复杂</li></ul><hr><h2 id="2-解决什么问题"><a href="#2-解决什么问题" class="headerlink" title="2. 解决什么问题"></a>2. 解决什么问题</h2><h3 id="2-1-这个领域原本怎么做"><a href="#2-1-这个领域原本怎么做" class="headerlink" title="2.1 这个领域原本怎么做"></a>2.1 这个领域原本怎么做</h3><p>传统的数据库同步要么使用数据库自带的复制功能，要么使用ETL工具，要么手动编写同步脚本。</p><h3 id="2-2-现有方案问题"><a href="#2-2-现有方案问题" class="headerlink" title="2.2 现有方案问题"></a>2.2 现有方案问题</h3><ul><li>数据库自带复制：通常只支持同类型数据库，配置复杂</li><li>ETL工具：功能强大但复杂，资源占用高</li><li>手动脚本：维护成本高，容易出错</li><li>商业同步工具：成本高，灵活性有限</li></ul><h3 id="2-3-这个项目的思路"><a href="#2-3-这个项目的思路" class="headerlink" title="2.3 这个项目的思路"></a>2.3 这个项目的思路</h3><p>SymmetricDS通过统一的架构，支持跨平台、跨数据库的数据同步，提供灵活的配置和丰富的功能，满足不同场景的需求。</p><hr><h2 id="3-架构分析"><a href="#3-架构分析" class="headerlink" title="3. 架构分析"></a>3. 架构分析</h2><h3 id="3-1-整体架构"><a href="#3-1-整体架构" class="headerlink" title="3.1 整体架构"></a>3.1 整体架构</h3><p>SymmetricDS的架构包括：</p><ul><li>服务器节点：中心服务器，管理同步配置和数据</li><li>客户端节点：边缘节点，接收和发送同步数据</li><li>同步引擎：处理数据捕获、传输和应用</li><li>配置管理：管理同步规则和拓扑结构</li></ul><h3 id="3-2-关键模块"><a href="#3-2-关键模块" class="headerlink" title="3.2 关键模块"></a>3.2 关键模块</h3><ul><li>数据捕获：捕获数据库变更</li><li>数据传输：通过HTTP&#x2F;HTTPS传输数据</li><li>数据应用：应用变更到目标数据库</li><li>冲突解决：处理数据冲突</li><li>监控管理：监控同步状态和性能</li></ul><hr><h2 id="4-核心设计思想"><a href="#4-核心设计思想" class="headerlink" title="4. 核心设计思想"></a>4. 核心设计思想</h2><h3 id="4-1-技术选型分析"><a href="#4-1-技术选型分析" class="headerlink" title="4.1 技术选型分析"></a>4.1 技术选型分析</h3><p>为什么使用：</p><ul><li>Java：跨平台，稳定可靠</li><li>Spring Framework：提供丰富的企业级功能</li><li>支持多种数据库：满足不同场景的需求</li></ul><h3 id="4-2-设计思想分析"><a href="#4-2-设计思想分析" class="headerlink" title="4.2 设计思想分析"></a>4.2 设计思想分析</h3><p>这个项目体现：</p><ul><li>分布式架构：支持多节点部署</li><li>灵活性：支持多种数据库和同步拓扑</li><li>可靠性：提供数据一致性保障</li><li>可扩展性：支持大规模部署</li></ul><hr><h2 id="5-功能分析"><a href="#5-功能分析" class="headerlink" title="5. 功能分析"></a>5. 功能分析</h2><h3 id="5-1-整体架构"><a href="#5-1-整体架构" class="headerlink" title="5.1 整体架构"></a>5.1 整体架构</h3><ul><li>分布式架构：中心服务器 + 客户端节点</li><li>模块化设计：按功能划分为不同模块</li></ul><h3 id="5-2-核心模块"><a href="#5-2-核心模块" class="headerlink" title="5.2 核心模块"></a>5.2 核心模块</h3><ul><li>数据同步：支持双向、单向同步</li><li>冲突解决：提供多种冲突解决策略</li><li>监控管理：实时监控同步状态</li><li>配置管理：灵活的同步规则配置</li><li>安全机制：支持HTTPS和加密</li></ul><h3 id="5-3-数据流分析"><a href="#5-3-数据流分析" class="headerlink" title="5.3 数据流分析"></a>5.3 数据流分析</h3><figure class="highlight"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs">数据库变更<br> ↓<br>数据捕获<br> ↓<br>数据传输<br> ↓<br>数据应用<br> ↓<br>目标数据库<br></code></pre></td></tr></table></figure><hr><h2 id="6-部署与体验"><a href="#6-部署与体验" class="headerlink" title="6. 部署与体验"></a>6. 部署与体验</h2><h3 id="6-1-部署难度"><a href="#6-1-部署难度" class="headerlink" title="6.1 部署难度"></a>6.1 部署难度</h3><ul><li>部署方式：支持独立部署、Docker部署</li><li>配置：需要配置同步规则和拓扑结构，相对复杂</li><li>依赖：需要Java运行环境和目标数据库</li></ul><h3 id="6-2-资源占用"><a href="#6-2-资源占用" class="headerlink" title="6.2 资源占用"></a>6.2 资源占用</h3><ul><li>内存：中等，约512MB-2GB</li><li>CPU：中等，取决于同步数据量</li><li>存储：取决于同步数据量和历史记录</li></ul><h3 id="6-3-使用体验"><a href="#6-3-使用体验" class="headerlink" title="6.3 使用体验"></a>6.3 使用体验</h3><ul><li>配置界面：提供Web管理界面，配置相对复杂</li><li>性能：同步速度取决于网络和数据量</li><li>可靠性：稳定可靠，适合生产环境</li></ul><hr><h2 id="7-类似项目对比"><a href="#7-类似项目对比" class="headerlink" title="7. 类似项目对比"></a>7. 类似项目对比</h2><table><thead><tr><th>项目</th><th>复杂度</th><th>技术栈</th><th>适用场景</th></tr></thead><tbody><tr><td>SymmetricDS</td><td>复杂</td><td>Java</td><td>跨数据库同步，分布式环境</td></tr><tr><td>Debezium</td><td>中等</td><td>Java</td><td>基于CDC的数据变更捕获</td></tr><tr><td>Oracle GoldenGate</td><td>复杂</td><td>未知</td><td>企业级数据复制</td></tr><tr><td>MySQL Replication</td><td>简单</td><td>内置</td><td>MySQL数据库复制</td></tr></tbody></table><hr><h2 id="8-优缺点分析"><a href="#8-优缺点分析" class="headerlink" title="8. 优缺点分析"></a>8. 优缺点分析</h2><p>优点：</p><ul><li>支持跨数据库同步</li><li>功能丰富，配置灵活</li><li>稳定可靠，适合生产环境</li><li>开源免费，可自由修改</li><li>支持分布式部署</li></ul><p>缺点：</p><ul><li>配置复杂，学习成本高</li><li>资源占用相对较高</li><li>文档相对较少</li><li>社区活跃度一般</li></ul><hr><h2 id="9-我的判断"><a href="#9-我的判断" class="headerlink" title="9. 我的判断"></a>9. 我的判断</h2><p>我认为：</p><p>这个项目：</p><ul><li>适合谁：需要跨数据库同步的企业，分布式环境，边缘计算场景</li><li>不适合谁：对配置复杂度敏感的用户，小型项目，简单数据同步需求</li><li>未来如何：SymmetricDS作为一款成熟的数据库同步工具，将继续在企业级应用中发挥重要作用。随着边缘计算的兴起，其分布式同步能力将更加重要</li></ul><hr>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;span id=&quot;more&quot;&gt;&lt;/span&gt;

&lt;h2 id=&quot;0-为什么关注这个项目&quot;&gt;&lt;a href=&quot;#0-为什么关注这个项目&quot; class=&quot;headerlink&quot; title=&quot;0. 为什么关注这个项目&quot;&gt;&lt;/a&gt;0.</summary>
        
      
    
    
    
    <category term="开源项目" scheme="https://blog.doracoin.cc/categories/opensource/"/>
    
    
    <category term="开源" scheme="https://blog.doracoin.cc/tags/%E5%BC%80%E6%BA%90/"/>
    
  </entry>
  
  <entry>
    <title>使用Google出品的-cAdvisor-监控Docker容器</title>
    <link href="https://blog.doracoin.cc/posts/opensource/43656.html"/>
    <id>https://blog.doracoin.cc/posts/opensource/43656.html</id>
    <published>2026-03-26T05:42:41.000Z</published>
    <updated>2026-03-31T16:37:02.643Z</updated>
    
    <content type="html"><![CDATA[<span id="more"></span><h2 id="0-为什么关注这个项目"><a href="#0-为什么关注这个项目" class="headerlink" title="0. 为什么关注这个项目"></a>0. 为什么关注这个项目</h2><p>这一段是：<strong>认知记录</strong></p><ul><li>我在寻找一款轻量级的Docker容器监控工具</li><li>我需要实时了解容器的资源使用情况</li><li>我希望找到一个与Prometheus等监控系统集成的工具</li></ul><p>这会让我以后回头看时，我会知道自己当时的思考路径，这是非常有价值的。</p><hr><h2 id="1-项目概览"><a href="#1-项目概览" class="headerlink" title="1. 项目概览"></a>1. 项目概览</h2><p>这个项目属于：</p><ul><li>自托管工具</li><li>开发工具</li><li>基础设施</li></ul><p>项目定位：cAdvisor (Container Advisor) 是Google开发的一款容器监控工具，用于收集、聚合和导出容器的性能指标。</p><p>Github：<a href="https://github.com/google/cadvisor">https://github.com/google/cadvisor</a></p><p>Star：14.7k+</p><p>License：Apache-2.0</p><p>语言&#x2F;技术栈：</p><ul><li>Go</li><li>Docker API</li></ul><p>项目成熟度&#x2F;复杂度：</p><ul><li>生产可用</li><li>企业级</li><li>中等</li></ul><hr><h2 id="2-解决什么问题"><a href="#2-解决什么问题" class="headerlink" title="2. 解决什么问题"></a>2. 解决什么问题</h2><h3 id="2-1-这个领域原本怎么做"><a href="#2-1-这个领域原本怎么做" class="headerlink" title="2.1 这个领域原本怎么做"></a>2.1 这个领域原本怎么做</h3><p>传统的容器监控要么使用Docker自带的命令，要么使用复杂的监控系统，缺乏专门针对容器的轻量级监控工具。</p><h3 id="2-2-现有方案问题"><a href="#2-2-现有方案问题" class="headerlink" title="2.2 现有方案问题"></a>2.2 现有方案问题</h3><ul><li>Docker自带命令：只能查看基本信息，缺乏历史数据和聚合功能</li><li>通用监控系统：配置复杂，资源占用高</li><li>其他容器监控工具：功能有限，集成性差</li></ul><h3 id="2-3-这个项目的思路"><a href="#2-3-这个项目的思路" class="headerlink" title="2.3 这个项目的思路"></a>2.3 这个项目的思路</h3><p>cAdvisor通过直接与Docker API交互，收集容器的资源使用情况，提供实时监控和历史数据，并支持与Prometheus等监控系统集成。</p><hr><h2 id="3-架构分析"><a href="#3-架构分析" class="headerlink" title="3. 架构分析"></a>3. 架构分析</h2><h3 id="3-1-整体架构"><a href="#3-1-整体架构" class="headerlink" title="3.1 整体架构"></a>3.1 整体架构</h3><p>cAdvisor的架构包括：</p><ul><li>数据收集：通过Docker API收集容器信息</li><li>数据处理：聚合和分析容器指标</li><li>数据导出：通过REST API和Prometheus格式导出数据</li><li>Web界面：提供可视化监控界面</li></ul><h3 id="3-2-关键模块"><a href="#3-2-关键模块" class="headerlink" title="3.2 关键模块"></a>3.2 关键模块</h3><ul><li>容器发现：自动发现和监控容器</li><li>指标收集：收集CPU、内存、网络、磁盘等指标</li><li>数据聚合：聚合容器和主机级别的指标</li><li>数据导出：支持多种格式的数据导出</li><li>Web界面：提供实时监控和历史数据查看</li></ul><hr><h2 id="4-核心设计思想"><a href="#4-核心设计思想" class="headerlink" title="4. 核心设计思想"></a>4. 核心设计思想</h2><h3 id="4-1-技术选型分析"><a href="#4-1-技术选型分析" class="headerlink" title="4.1 技术选型分析"></a>4.1 技术选型分析</h3><p>为什么使用：</p><ul><li>Go：提供良好的性能和并发处理能力</li><li>Docker API：直接与Docker交互，获取容器信息</li></ul><h3 id="4-2-设计思想分析"><a href="#4-2-设计思想分析" class="headerlink" title="4.2 设计思想分析"></a>4.2 设计思想分析</h3><p>这个项目体现：</p><ul><li>轻量化：资源占用低，适合在容器环境中运行</li><li>集成性：支持与Prometheus等监控系统集成</li><li>自动发现：自动发现和监控容器，无需手动配置</li><li>标准化：提供标准化的容器性能指标</li></ul><hr><h2 id="5-功能分析"><a href="#5-功能分析" class="headerlink" title="5. 功能分析"></a>5. 功能分析</h2><h3 id="5-1-整体架构"><a href="#5-1-整体架构" class="headerlink" title="5.1 整体架构"></a>5.1 整体架构</h3><ul><li>单体架构：单一二进制文件，易于部署</li><li>模块化设计：按功能划分为不同模块</li></ul><h3 id="5-2-核心模块"><a href="#5-2-核心模块" class="headerlink" title="5.2 核心模块"></a>5.2 核心模块</h3><ul><li>容器监控：收集容器的CPU、内存、网络、磁盘等指标</li><li>数据聚合：聚合容器和主机级别的指标</li><li>数据导出：支持REST API和Prometheus格式</li><li>Web界面：提供实时监控和历史数据查看</li><li>自动发现：自动发现和监控容器</li></ul><h3 id="5-3-数据流分析"><a href="#5-3-数据流分析" class="headerlink" title="5.3 数据流分析"></a>5.3 数据流分析</h3><figure class="highlight"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs">cAdvisor启动<br> ↓<br>发现容器<br> ↓<br>收集容器指标<br> ↓<br>聚合数据<br> ↓<br>导出数据<br> ↓<br>Web界面展示<br></code></pre></td></tr></table></figure><hr><h2 id="6-部署与体验"><a href="#6-部署与体验" class="headerlink" title="6. 部署与体验"></a>6. 部署与体验</h2><h3 id="6-1-部署难度"><a href="#6-1-部署难度" class="headerlink" title="6.1 部署难度"></a>6.1 部署难度</h3><ul><li>部署方式：非常简单，可作为容器运行</li><li>配置：默认配置即可满足大多数需求</li><li>依赖：仅需Docker环境</li></ul><h3 id="6-2-资源占用"><a href="#6-2-资源占用" class="headerlink" title="6.2 资源占用"></a>6.2 资源占用</h3><ul><li>内存：低，约50-100MB</li><li>CPU：低，仅在收集数据时占用</li><li>存储：低，仅存储临时数据</li></ul><h3 id="6-3-使用体验"><a href="#6-3-使用体验" class="headerlink" title="6.3 使用体验"></a>6.3 使用体验</h3><ul><li>Web界面：直观易用，提供实时监控</li><li>性能：对容器性能影响小</li><li>集成：与Prometheus等监控系统集成方便</li></ul><hr><h2 id="7-类似项目对比"><a href="#7-类似项目对比" class="headerlink" title="7. 类似项目对比"></a>7. 类似项目对比</h2><table><thead><tr><th>项目</th><th>复杂度</th><th>技术栈</th><th>适用场景</th></tr></thead><tbody><tr><td>cAdvisor</td><td>简单</td><td>Go</td><td>容器监控，与Prometheus集成</td></tr><tr><td>Prometheus + Grafana</td><td>复杂</td><td>Go, TypeScript</td><td>全面监控解决方案</td></tr><tr><td>Docker Stats</td><td>简单</td><td>内置</td><td>基本容器监控</td></tr><tr><td>Datadog</td><td>复杂</td><td>未知</td><td>企业级监控</td></tr></tbody></table><hr><h2 id="8-优缺点分析"><a href="#8-优缺点分析" class="headerlink" title="8. 优缺点分析"></a>8. 优缺点分析</h2><p>优点：</p><ul><li>轻量级，资源占用低</li><li>部署简单，易于使用</li><li>与Prometheus等监控系统集成良好</li><li>自动发现和监控容器</li><li>提供实时和历史数据</li></ul><p>缺点：</p><ul><li>功能相对简单，缺乏高级分析</li><li>存储能力有限，依赖外部系统存储历史数据</li><li>界面功能有限，主要依赖外部工具展示数据</li></ul><hr><h2 id="9-我的判断"><a href="#9-我的判断" class="headerlink" title="9. 我的判断"></a>9. 我的判断</h2><p>我认为：</p><p>这个项目：</p><ul><li>适合谁：需要轻量级容器监控的开发者和运维人员，使用Prometheus生态系统的团队</li><li>不适合谁：需要高级分析和可视化的企业级用户，对监控有特殊需求的场景</li><li>未来如何：cAdvisor作为容器监控的基础工具，将继续与容器生态系统一起发展，特别是与Kubernetes和Prometheus的集成会更加紧密</li></ul><hr>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;span id=&quot;more&quot;&gt;&lt;/span&gt;

&lt;h2 id=&quot;0-为什么关注这个项目&quot;&gt;&lt;a href=&quot;#0-为什么关注这个项目&quot; class=&quot;headerlink&quot; title=&quot;0. 为什么关注这个项目&quot;&gt;&lt;/a&gt;0.</summary>
        
      
    
    
    
    <category term="开源项目" scheme="https://blog.doracoin.cc/categories/opensource/"/>
    
    
    <category term="开源" scheme="https://blog.doracoin.cc/tags/%E5%BC%80%E6%BA%90/"/>
    
  </entry>
  
  <entry>
    <title>开源WAF防火墙：VeryNginx</title>
    <link href="https://blog.doracoin.cc/posts/opensource/38989.html"/>
    <id>https://blog.doracoin.cc/posts/opensource/38989.html</id>
    <published>2026-03-26T05:41:34.000Z</published>
    <updated>2026-03-31T16:37:02.645Z</updated>
    
    <content type="html"><![CDATA[<span id="more"></span><h2 id="0-为什么关注这个项目"><a href="#0-为什么关注这个项目" class="headerlink" title="0. 为什么关注这个项目"></a>0. 为什么关注这个项目</h2><p>这一段是：<strong>认知记录</strong></p><ul><li>我在寻找一款轻量级的Web应用防火墙解决方案</li><li>我需要保护网站免受常见的Web攻击</li><li>我希望找到一个基于Nginx的WAF，以便与现有Nginx部署集成</li></ul><p>这会让我以后回头看时，我会知道自己当时的思考路径，这是非常有价值的。</p><hr><h2 id="1-项目概览"><a href="#1-项目概览" class="headerlink" title="1. 项目概览"></a>1. 项目概览</h2><p>这个项目属于：</p><ul><li>自托管工具</li><li>基础设施</li></ul><p>项目定位：VeryNginx是一个基于Nginx的开源Web应用防火墙(WAF)，提供简单易用的Web界面，用于配置和管理Nginx的安全规则。</p><p>Github：<a href="https://github.com/alexazhou/VeryNginx">https://github.com/alexazhou/VeryNginx</a></p><p>Star：4.7k+</p><p>License：MIT</p><p>语言&#x2F;技术栈：</p><ul><li>Nginx</li><li>Lua</li><li>Python</li><li>JavaScript</li></ul><p>项目成熟度&#x2F;复杂度：</p><ul><li>实验性</li><li>中等</li></ul><hr><h2 id="2-解决什么问题"><a href="#2-解决什么问题" class="headerlink" title="2. 解决什么问题"></a>2. 解决什么问题</h2><h3 id="2-1-这个领域原本怎么做"><a href="#2-1-这个领域原本怎么做" class="headerlink" title="2.1 这个领域原本怎么做"></a>2.1 这个领域原本怎么做</h3><p>传统的Web应用防火墙要么是商业产品，要么配置复杂，要么功能有限。</p><h3 id="2-2-现有方案问题"><a href="#2-2-现有方案问题" class="headerlink" title="2.2 现有方案问题"></a>2.2 现有方案问题</h3><ul><li>商业WAF：成本高，灵活性有限</li><li>传统Nginx安全配置：需要手动编辑配置文件，复杂且容易出错</li><li>其他开源WAF：配置复杂，学习成本高</li></ul><h3 id="2-3-这个项目的思路"><a href="#2-3-这个项目的思路" class="headerlink" title="2.3 这个项目的思路"></a>2.3 这个项目的思路</h3><p>VeryNginx通过在Nginx中集成Lua模块，提供Web界面来配置和管理安全规则，简化了WAF的配置和使用。</p><hr><h2 id="3-架构分析"><a href="#3-架构分析" class="headerlink" title="3. 架构分析"></a>3. 架构分析</h2><h3 id="3-1-整体架构"><a href="#3-1-整体架构" class="headerlink" title="3.1 整体架构"></a>3.1 整体架构</h3><p>VeryNginx的架构包括：</p><ul><li>Nginx：作为Web服务器和反向代理</li><li>Lua模块：用于实现WAF功能</li><li>Web管理界面：用于配置和管理WAF规则</li><li>规则引擎：处理和应用安全规则</li></ul><h3 id="3-2-关键模块"><a href="#3-2-关键模块" class="headerlink" title="3.2 关键模块"></a>3.2 关键模块</h3><ul><li>访问控制：IP黑白名单，URL访问控制</li><li>攻击防护：SQL注入，XSS，CSRF等攻击防护</li><li>流量控制：速率限制，请求大小限制</li><li>内容过滤：敏感内容过滤</li><li>日志分析：安全事件日志记录和分析</li></ul><hr><h2 id="4-核心设计思想"><a href="#4-核心设计思想" class="headerlink" title="4. 核心设计思想"></a>4. 核心设计思想</h2><h3 id="4-1-技术选型分析"><a href="#4-1-技术选型分析" class="headerlink" title="4.1 技术选型分析"></a>4.1 技术选型分析</h3><p>为什么使用：</p><ul><li>Nginx：高性能的Web服务器和反向代理</li><li>Lua：轻量级脚本语言，适合嵌入Nginx</li><li>Python：用于Web管理界面</li><li>JavaScript：用于前端交互</li></ul><h3 id="4-2-设计思想分析"><a href="#4-2-设计思想分析" class="headerlink" title="4.2 设计思想分析"></a>4.2 设计思想分析</h3><p>这个项目体现：</p><ul><li>插件化：通过Lua模块扩展Nginx功能</li><li>轻量化：基于Nginx，资源占用低</li><li>易用性：提供Web界面，简化配置</li><li>集成性：与Nginx无缝集成</li></ul><hr><h2 id="5-功能分析"><a href="#5-功能分析" class="headerlink" title="5. 功能分析"></a>5. 功能分析</h2><h3 id="5-1-整体架构"><a href="#5-1-整体架构" class="headerlink" title="5.1 整体架构"></a>5.1 整体架构</h3><ul><li>分层架构：Nginx + Lua模块 + Web管理界面</li><li>模块化设计：按功能划分为不同模块</li></ul><h3 id="5-2-核心模块"><a href="#5-2-核心模块" class="headerlink" title="5.2 核心模块"></a>5.2 核心模块</h3><ul><li>访问控制：IP黑白名单，URL访问控制</li><li>攻击防护：SQL注入，XSS，CSRF等攻击防护</li><li>流量控制：速率限制，请求大小限制</li><li>内容过滤：敏感内容过滤</li><li>日志分析：安全事件日志记录和分析</li><li>Web管理界面：可视化配置和管理</li></ul><h3 id="5-3-数据流分析"><a href="#5-3-数据流分析" class="headerlink" title="5.3 数据流分析"></a>5.3 数据流分析</h3><figure class="highlight"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs">用户请求<br> ↓<br>Nginx接收<br> ↓<br>Lua模块处理<br> ↓<br>应用安全规则<br> ↓<br>允许或阻止请求<br> ↓<br>返回响应<br></code></pre></td></tr></table></figure><hr><h2 id="6-部署与体验"><a href="#6-部署与体验" class="headerlink" title="6. 部署与体验"></a>6. 部署与体验</h2><h3 id="6-1-部署难度"><a href="#6-1-部署难度" class="headerlink" title="6.1 部署难度"></a>6.1 部署难度</h3><ul><li>部署方式：需要在Nginx中安装Lua模块，配置相对复杂</li><li>配置：通过Web界面进行配置，相对简单</li><li>依赖：需要Nginx和Lua模块</li></ul><h3 id="6-2-资源占用"><a href="#6-2-资源占用" class="headerlink" title="6.2 资源占用"></a>6.2 资源占用</h3><ul><li>内存：低，基于Nginx，资源占用小</li><li>CPU：低，处理请求速度快</li><li>存储：低，配置文件和日志占用小</li></ul><h3 id="6-3-使用体验"><a href="#6-3-使用体验" class="headerlink" title="6.3 使用体验"></a>6.3 使用体验</h3><ul><li>Web界面：直观易用，配置方便</li><li>性能：对Nginx性能影响小</li><li>功能：满足基本的Web安全需求</li></ul><hr><h2 id="7-类似项目对比"><a href="#7-类似项目对比" class="headerlink" title="7. 类似项目对比"></a>7. 类似项目对比</h2><table><thead><tr><th>项目</th><th>复杂度</th><th>技术栈</th><th>适用场景</th></tr></thead><tbody><tr><td>VeryNginx</td><td>中等</td><td>Nginx, Lua</td><td>小型网站，个人项目</td></tr><tr><td>ModSecurity</td><td>复杂</td><td>多种语言</td><td>企业级应用，复杂场景</td></tr><tr><td>OpenWAF</td><td>中等</td><td>Nginx, Lua</td><td>中小型网站</td></tr><tr><td>商业WAF</td><td>复杂</td><td>未知</td><td>企业级应用，高安全需求</td></tr></tbody></table><hr><h2 id="8-优缺点分析"><a href="#8-优缺点分析" class="headerlink" title="8. 优缺点分析"></a>8. 优缺点分析</h2><p>优点：</p><ul><li>基于Nginx，性能好，资源占用低</li><li>提供Web界面，配置方便</li><li>开源免费，可自由修改</li><li>与Nginx无缝集成</li></ul><p>缺点：</p><ul><li>功能相对简单，不适合复杂场景</li><li>社区活跃度较低</li><li>文档相对较少</li><li>维护更新不频繁</li></ul><hr><h2 id="9-我的判断"><a href="#9-我的判断" class="headerlink" title="9. 我的判断"></a>9. 我的判断</h2><p>我认为：</p><p>这个项目：</p><ul><li>适合谁：小型网站，个人项目，需要基本Web安全防护的用户</li><li>不适合谁：企业级应用，对安全要求高的场景</li><li>未来如何：VeryNginx作为一款轻量级的WAF解决方案，适合特定场景使用。虽然社区活跃度不高，但对于需要基本Web安全防护的用户来说，仍然是一个不错的选择</li></ul><hr>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;span id=&quot;more&quot;&gt;&lt;/span&gt;

&lt;h2 id=&quot;0-为什么关注这个项目&quot;&gt;&lt;a href=&quot;#0-为什么关注这个项目&quot; class=&quot;headerlink&quot; title=&quot;0. 为什么关注这个项目&quot;&gt;&lt;/a&gt;0.</summary>
        
      
    
    
    
    <category term="开源项目" scheme="https://blog.doracoin.cc/categories/opensource/"/>
    
    
    <category term="开源" scheme="https://blog.doracoin.cc/tags/%E5%BC%80%E6%BA%90/"/>
    
  </entry>
  
  <entry>
    <title>学习开源3D博客</title>
    <link href="https://blog.doracoin.cc/posts/opensource/37944.html"/>
    <id>https://blog.doracoin.cc/posts/opensource/37944.html</id>
    <published>2026-03-26T05:40:23.000Z</published>
    <updated>2026-03-31T16:37:02.644Z</updated>
    
    <content type="html"><![CDATA[<span id="more"></span><h2 id="0-为什么关注这个项目"><a href="#0-为什么关注这个项目" class="headerlink" title="0. 为什么关注这个项目"></a>0. 为什么关注这个项目</h2><p>这一段是：<strong>认知记录</strong></p><ul><li>我在寻找一款创意十足的个人博客解决方案</li><li>我对3D网页技术感兴趣，希望了解如何在网页中实现3D效果</li><li>我希望找到一个可以展示个人作品的现代化、视觉效果出色的网站模板</li></ul><p>这会让我以后回头看时，我会知道自己当时的思考路径，这是非常有价值的。</p><hr><h2 id="1-项目概览"><a href="#1-项目概览" class="headerlink" title="1. 项目概览"></a>1. 项目概览</h2><p>这个项目属于：</p><ul><li>自托管工具</li><li>开发工具</li><li>UI组件</li></ul><p>项目定位：开源3D博客是一个使用Three.js构建的现代化3D个人作品集网站，展示了如何在网页中实现沉浸式3D体验。</p><p>Github：<a href="https://github.com/brunosimon/folio-2019">https://github.com/brunosimon/folio-2019</a></p><p>Star：13.2k+</p><p>License：MIT</p><p>语言&#x2F;技术栈：</p><ul><li>JavaScript</li><li>Three.js</li><li>GSAP (GreenSock Animation Platform)</li><li>WebGL</li></ul><p>项目成熟度&#x2F;复杂度：</p><ul><li>生产可用</li><li>复杂</li></ul><hr><h2 id="2-解决什么问题"><a href="#2-解决什么问题" class="headerlink" title="2. 解决什么问题"></a>2. 解决什么问题</h2><h3 id="2-1-这个领域原本怎么做"><a href="#2-1-这个领域原本怎么做" class="headerlink" title="2.1 这个领域原本怎么做"></a>2.1 这个领域原本怎么做</h3><p>传统的个人博客和作品集网站通常使用平面设计，缺乏视觉冲击力和互动性。</p><h3 id="2-2-现有方案问题"><a href="#2-2-现有方案问题" class="headerlink" title="2.2 现有方案问题"></a>2.2 现有方案问题</h3><ul><li>平面设计：视觉效果有限，缺乏互动性</li><li>3D实现复杂：传统3D网页技术学习成本高</li><li>性能问题：3D效果可能导致性能下降</li></ul><h3 id="2-3-这个项目的思路"><a href="#2-3-这个项目的思路" class="headerlink" title="2.3 这个项目的思路"></a>2.3 这个项目的思路</h3><p>通过使用Three.js和WebGL技术，创建一个视觉效果出色、互动性强的3D个人作品集网站，同时保持良好的性能。</p><hr><h2 id="3-架构分析"><a href="#3-架构分析" class="headerlink" title="3. 架构分析"></a>3. 架构分析</h2><h3 id="3-1-整体架构"><a href="#3-1-整体架构" class="headerlink" title="3.1 整体架构"></a>3.1 整体架构</h3><p>开源3D博客采用纯前端架构，主要组件包括：</p><ul><li>Three.js场景：构建3D环境和对象</li><li>动画系统：使用GSAP实现流畅的动画效果</li><li>交互系统：处理用户输入和响应</li><li>内容管理：展示作品集和个人信息</li></ul><h3 id="3-2-关键模块"><a href="#3-2-关键模块" class="headerlink" title="3.2 关键模块"></a>3.2 关键模块</h3><ul><li>3D场景管理：创建和管理3D环境</li><li>动画系统：实现平滑的过渡和交互效果</li><li>响应式设计：适配不同设备屏幕</li><li>性能优化：确保3D效果不影响页面加载速度</li></ul><hr><h2 id="4-核心设计思想"><a href="#4-核心设计思想" class="headerlink" title="4. 核心设计思想"></a>4. 核心设计思想</h2><h3 id="4-1-技术选型分析"><a href="#4-1-技术选型分析" class="headerlink" title="4.1 技术选型分析"></a>4.1 技术选型分析</h3><p>为什么使用：</p><ul><li>Three.js：简化WebGL开发，提供丰富的3D功能</li><li>GSAP：提供高性能的动画效果</li><li>WebGL：实现硬件加速的3D渲染</li></ul><h3 id="4-2-设计思想分析"><a href="#4-2-设计思想分析" class="headerlink" title="4.2 设计思想分析"></a>4.2 设计思想分析</h3><p>这个项目体现：</p><ul><li>视觉创新：利用3D技术创造独特的视觉体验</li><li>交互设计：提供沉浸式的用户交互</li><li>性能优化：确保3D效果不影响页面性能</li><li>现代前端：使用最新的前端技术和最佳实践</li></ul><hr><h2 id="5-功能分析"><a href="#5-功能分析" class="headerlink" title="5. 功能分析"></a>5. 功能分析</h2><h3 id="5-1-整体架构"><a href="#5-1-整体架构" class="headerlink" title="5.1 整体架构"></a>5.1 整体架构</h3><ul><li>纯前端架构：所有功能在浏览器中运行</li><li>模块化设计：按功能划分为不同模块</li></ul><h3 id="5-2-核心模块"><a href="#5-2-核心模块" class="headerlink" title="5.2 核心模块"></a>5.2 核心模块</h3><ul><li>3D场景：创建和管理3D环境</li><li>动画系统：实现平滑的过渡和交互效果</li><li>响应式设计：适配不同设备屏幕</li><li>作品集展示：以3D方式展示个人作品</li><li>交互系统：处理用户输入和响应</li></ul><h3 id="5-3-数据流分析"><a href="#5-3-数据流分析" class="headerlink" title="5.3 数据流分析"></a>5.3 数据流分析</h3><figure class="highlight mathematica"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs mathematica">用户访问<br> ↓<br>页面加载<br> ↓<br><span class="hljs-number">3</span><span class="hljs-built_in">D</span>场景初始化<br> ↓<br>动画系统启动<br> ↓<br>用户交互<br> ↓<br><span class="hljs-number">3</span><span class="hljs-built_in">D</span>场景响应<br></code></pre></td></tr></table></figure><hr><h2 id="6-部署与体验"><a href="#6-部署与体验" class="headerlink" title="6. 部署与体验"></a>6. 部署与体验</h2><h3 id="6-1-部署难度"><a href="#6-1-部署难度" class="headerlink" title="6.1 部署难度"></a>6.1 部署难度</h3><ul><li>部署方式：简单，只需托管静态文件</li><li>配置：无需特殊配置</li><li>依赖：无后端依赖，纯前端项目</li></ul><h3 id="6-2-资源占用"><a href="#6-2-资源占用" class="headerlink" title="6.2 资源占用"></a>6.2 资源占用</h3><ul><li>内存：较高，取决于3D场景复杂度</li><li>CPU：中等，需要处理3D渲染</li><li>网络：需要加载Three.js等库文件</li></ul><h3 id="6-3-使用体验"><a href="#6-3-使用体验" class="headerlink" title="6.3 使用体验"></a>6.3 使用体验</h3><ul><li>视觉效果：出色，3D效果震撼</li><li>交互体验：流畅，响应及时</li><li>加载速度：可能较慢，需要加载3D资源</li><li>兼容性：需要现代浏览器支持WebGL</li></ul><hr><h2 id="7-类似项目对比"><a href="#7-类似项目对比" class="headerlink" title="7. 类似项目对比"></a>7. 类似项目对比</h2><table><thead><tr><th>项目</th><th>复杂度</th><th>技术栈</th><th>适用场景</th></tr></thead><tbody><tr><td>开源3D博客</td><td>复杂</td><td>Three.js, GSAP</td><td>个人作品集，创意展示</td></tr><tr><td>传统静态博客</td><td>简单</td><td>HTML, CSS, JavaScript</td><td>个人博客，内容展示</td></tr><tr><td>WordPress博客</td><td>中等</td><td>PHP, WordPress</td><td>内容管理，博客系统</td></tr><tr><td>其他3D网页</td><td>复杂</td><td>Three.js, WebGL</td><td>创意展示，交互体验</td></tr></tbody></table><hr><h2 id="8-优缺点分析"><a href="#8-优缺点分析" class="headerlink" title="8. 优缺点分析"></a>8. 优缺点分析</h2><p>优点：</p><ul><li>视觉效果出色，具有强烈的视觉冲击力</li><li>交互性强，提供沉浸式体验</li><li>代码结构清晰，易于学习和扩展</li><li>开源免费，可自由修改和使用</li></ul><p>缺点：</p><ul><li>性能要求较高，可能在低配置设备上运行不流畅</li><li>学习成本高，需要了解Three.js和WebGL</li><li>加载速度可能较慢，需要加载3D资源</li><li>维护成本较高，3D代码比平面代码更复杂</li></ul><hr><h2 id="9-我的判断"><a href="#9-我的判断" class="headerlink" title="9. 我的判断"></a>9. 我的判断</h2><p>我认为：</p><p>这个项目：</p><ul><li>适合谁：创意设计师，前端开发者，希望展示个人作品的专业人士</li><li>不适合谁：对性能要求极高的场景，需要快速加载的网站，对3D技术不熟悉的开发者</li><li>未来如何：随着WebGL技术的发展和硬件性能的提升，3D网页技术会越来越普及。这个项目作为3D网页开发的优秀示例，具有很高的学习和参考价值</li></ul><hr>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;span id=&quot;more&quot;&gt;&lt;/span&gt;

&lt;h2 id=&quot;0-为什么关注这个项目&quot;&gt;&lt;a href=&quot;#0-为什么关注这个项目&quot; class=&quot;headerlink&quot; title=&quot;0. 为什么关注这个项目&quot;&gt;&lt;/a&gt;0.</summary>
        
      
    
    
    
    <category term="开源项目" scheme="https://blog.doracoin.cc/categories/opensource/"/>
    
    
    <category term="开源" scheme="https://blog.doracoin.cc/tags/%E5%BC%80%E6%BA%90/"/>
    
  </entry>
  
  <entry>
    <title>学习搭建-兰空图床</title>
    <link href="https://blog.doracoin.cc/posts/opensource/63455.html"/>
    <id>https://blog.doracoin.cc/posts/opensource/63455.html</id>
    <published>2026-03-26T05:39:17.000Z</published>
    <updated>2026-03-31T16:37:02.644Z</updated>
    
    <content type="html"><![CDATA[<span id="more"></span><h2 id="0-为什么关注这个项目"><a href="#0-为什么关注这个项目" class="headerlink" title="0. 为什么关注这个项目"></a>0. 为什么关注这个项目</h2><p>这一段是：<strong>认知记录</strong></p><ul><li>我在寻找一款开源、轻量级的图床系统</li><li>我需要一个可以自托管的图片存储和管理解决方案</li><li>我希望找到一个界面美观、功能丰富的图床工具</li></ul><p>这会让我以后回头看时，我会知道自己当时的思考路径，这是非常有价值的。</p><hr><h2 id="1-项目概览"><a href="#1-项目概览" class="headerlink" title="1. 项目概览"></a>1. 项目概览</h2><p>这个项目属于：</p><ul><li>自托管工具</li><li>开发工具</li></ul><p>项目定位：兰空图床是一款功能丰富、界面美观的开源图床系统，支持多种存储方式和图片管理功能。</p><p>Github：<a href="https://github.com/lsky-org/lsky-pro">https://github.com/lsky-org/lsky-pro</a></p><p>Star：15.6k+</p><p>License：GPL-3.0</p><p>语言&#x2F;技术栈：</p><ul><li>PHP</li><li>Laravel</li><li>Vue.js</li><li>MySQL</li></ul><p>项目成熟度&#x2F;复杂度：</p><ul><li>生产可用</li><li>中等</li></ul><hr><h2 id="2-解决什么问题"><a href="#2-解决什么问题" class="headerlink" title="2. 解决什么问题"></a>2. 解决什么问题</h2><h3 id="2-1-这个领域原本怎么做"><a href="#2-1-这个领域原本怎么做" class="headerlink" title="2.1 这个领域原本怎么做"></a>2.1 这个领域原本怎么做</h3><p>传统的图片存储要么使用第三方图床服务，要么使用简单的文件服务器，缺乏管理功能。</p><h3 id="2-2-现有方案问题"><a href="#2-2-现有方案问题" class="headerlink" title="2.2 现有方案问题"></a>2.2 现有方案问题</h3><ul><li>第三方图床：可能有存储限制，数据安全无法保障</li><li>简单文件服务器：缺乏管理功能，使用不便</li><li>其他图床系统：功能单一，界面不美观</li></ul><h3 id="2-3-这个项目的思路"><a href="#2-3-这个项目的思路" class="headerlink" title="2.3 这个项目的思路"></a>2.3 这个项目的思路</h3><p>兰空图床提供了一个功能丰富、界面美观的自托管图床解决方案，支持多种存储方式，提供完整的图片管理功能。</p><hr><h2 id="3-架构分析"><a href="#3-架构分析" class="headerlink" title="3. 架构分析"></a>3. 架构分析</h2><h3 id="3-1-整体架构"><a href="#3-1-整体架构" class="headerlink" title="3.1 整体架构"></a>3.1 整体架构</h3><p>兰空图床采用前后端分离架构，主要组件包括：</p><ul><li>后端：基于Laravel的PHP应用，提供API服务</li><li>前端：基于Vue.js的管理界面</li><li>数据库：MySQL</li><li>存储：支持本地存储、对象存储等多种存储方式</li></ul><h3 id="3-2-关键模块"><a href="#3-2-关键模块" class="headerlink" title="3.2 关键模块"></a>3.2 关键模块</h3><ul><li>用户管理：支持多用户，权限控制</li><li>图片管理：上传、删除、编辑图片</li><li>存储管理：支持多种存储方式</li><li>配置管理：系统配置和设置</li><li>相册管理：图片分类管理</li><li>水印功能：支持图片水印</li></ul><hr><h2 id="4-核心设计思想"><a href="#4-核心设计思想" class="headerlink" title="4. 核心设计思想"></a>4. 核心设计思想</h2><h3 id="4-1-技术选型分析"><a href="#4-1-技术选型分析" class="headerlink" title="4.1 技术选型分析"></a>4.1 技术选型分析</h3><p>为什么使用：</p><ul><li>PHP：广泛使用的服务器端语言</li><li>Laravel：成熟的PHP框架，提供丰富的功能</li><li>Vue.js：现代化的前端框架，提供良好的用户体验</li><li>MySQL：可靠的关系型数据库</li></ul><h3 id="4-2-设计思想分析"><a href="#4-2-设计思想分析" class="headerlink" title="4.2 设计思想分析"></a>4.2 设计思想分析</h3><p>这个项目体现：</p><ul><li>模块化：采用模块化设计，易于扩展</li><li>多存储支持：支持多种存储方式，灵活适配不同场景</li><li>用户友好：界面美观，操作简单</li><li>功能丰富：提供完整的图片管理功能</li><li>可配置性：提供丰富的配置选项</li></ul><hr><h2 id="5-功能分析"><a href="#5-功能分析" class="headerlink" title="5. 功能分析"></a>5. 功能分析</h2><h3 id="5-1-整体架构"><a href="#5-1-整体架构" class="headerlink" title="5.1 整体架构"></a>5.1 整体架构</h3><ul><li>前后端分离：后端提供API，前端负责展示</li><li>模块化设计：核心功能和扩展功能分离</li></ul><h3 id="5-2-核心模块"><a href="#5-2-核心模块" class="headerlink" title="5.2 核心模块"></a>5.2 核心模块</h3><ul><li>用户管理：支持多用户注册、登录、权限控制</li><li>图片上传：支持拖拽上传、批量上传</li><li>图片管理：支持图片预览、编辑、删除</li><li>存储管理：支持本地存储、阿里云OSS、腾讯云COS等</li><li>相册管理：支持创建相册，分类管理图片</li><li>水印功能：支持图片水印，保护版权</li><li>链接生成：支持生成多种格式的图片链接</li></ul><h3 id="5-3-数据流分析"><a href="#5-3-数据流分析" class="headerlink" title="5.3 数据流分析"></a>5.3 数据流分析</h3><figure class="highlight"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs">用户上传图片<br> ↓<br>前端处理<br> ↓<br>API请求<br> ↓<br>后端处理<br> ↓<br>存储到指定存储<br> ↓<br>数据库记录<br> ↓<br>返回图片链接<br></code></pre></td></tr></table></figure><hr><h2 id="6-部署与体验"><a href="#6-部署与体验" class="headerlink" title="6. 部署与体验"></a>6. 部署与体验</h2><h3 id="6-1-部署难度"><a href="#6-1-部署难度" class="headerlink" title="6.1 部署难度"></a>6.1 部署难度</h3><ul><li>部署方式：支持Docker、PHP环境直接部署</li><li>配置：简单，提供详细的部署文档</li><li>依赖：需要PHP环境、MySQL数据库</li></ul><h3 id="6-2-资源占用"><a href="#6-2-资源占用" class="headerlink" title="6.2 资源占用"></a>6.2 资源占用</h3><ul><li>内存：适中，约512MB-1GB</li><li>CPU：低到中等，取决于上传和访问量</li><li>存储：根据图片数量和大小，基础安装约100MB</li></ul><h3 id="6-3-使用体验"><a href="#6-3-使用体验" class="headerlink" title="6.3 使用体验"></a>6.3 使用体验</h3><ul><li>管理界面：美观、直观易用</li><li>上传速度：快速，支持批量上传</li><li>功能丰富：满足大多数图床需求</li><li>响应速度：页面加载迅速</li></ul><hr><h2 id="7-类似项目对比"><a href="#7-类似项目对比" class="headerlink" title="7. 类似项目对比"></a>7. 类似项目对比</h2><table><thead><tr><th>项目</th><th>复杂度</th><th>技术栈</th><th>适用场景</th></tr></thead><tbody><tr><td>兰空图床</td><td>中等</td><td>PHP, Laravel, Vue</td><td>个人和小型团队图片管理</td></tr><tr><td>Chevereto</td><td>中等</td><td>PHP</td><td>类似兰空图床，功能丰富</td></tr><tr><td>PicGo</td><td>简单</td><td>Electron</td><td>本地图片上传工具</td></tr><tr><td>Imgur</td><td>复杂</td><td>未知</td><td>第三方图床服务</td></tr></tbody></table><hr><h2 id="8-优缺点分析"><a href="#8-优缺点分析" class="headerlink" title="8. 优缺点分析"></a>8. 优缺点分析</h2><p>优点：</p><ul><li>开源免费，可自托管</li><li>界面美观，用户体验好</li><li>支持多种存储方式</li><li>功能丰富，满足大多数需求</li><li>支持多用户，适合团队使用</li></ul><p>缺点：</p><ul><li>基于PHP，性能可能不如Go等语言</li><li>资源占用相对较高</li><li>部署需要PHP环境，相对复杂</li><li>部分高级功能需要配置</li></ul><hr><h2 id="9-我的判断"><a href="#9-我的判断" class="headerlink" title="9. 我的判断"></a>9. 我的判断</h2><p>我认为：</p><p>这个项目：</p><ul><li>适合谁：需要自托管图床的个人用户，小型团队，需要图片管理功能的网站</li><li>不适合谁：对性能要求极高的场景，需要大规模图片存储的企业</li><li>未来如何：兰空图床作为一款功能丰富、界面美观的开源图床系统，有很大的发展潜力。随着用户需求的增长，它有望不断完善功能，成为开源图床领域的重要选择</li></ul><hr>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;span id=&quot;more&quot;&gt;&lt;/span&gt;

&lt;h2 id=&quot;0-为什么关注这个项目&quot;&gt;&lt;a href=&quot;#0-为什么关注这个项目&quot; class=&quot;headerlink&quot; title=&quot;0. 为什么关注这个项目&quot;&gt;&lt;/a&gt;0.</summary>
        
      
    
    
    
    <category term="开源项目" scheme="https://blog.doracoin.cc/categories/opensource/"/>
    
    
    <category term="开源" scheme="https://blog.doracoin.cc/tags/%E5%BC%80%E6%BA%90/"/>
    
  </entry>
  
  <entry>
    <title>学习开源建站工具-Halo</title>
    <link href="https://blog.doracoin.cc/posts/opensource/41411.html"/>
    <id>https://blog.doracoin.cc/posts/opensource/41411.html</id>
    <published>2026-03-26T05:38:07.000Z</published>
    <updated>2026-03-31T16:37:02.644Z</updated>
    
    <content type="html"><![CDATA[<span id="more"></span><h2 id="0-为什么关注这个项目"><a href="#0-为什么关注这个项目" class="headerlink" title="0. 为什么关注这个项目"></a>0. 为什么关注这个项目</h2><p>这一段是：<strong>认知记录</strong></p><ul><li>我在寻找一款开源、轻量级的建站工具</li><li>我希望搭建一个个人博客或网站，需要易于使用且功能丰富的平台</li><li>我对基于Java的开源项目感兴趣，希望了解其架构和实现</li></ul><p>这会让我以后回头看时，我会知道自己当时的思考路径，这是非常有价值的。</p><hr><h2 id="1-项目概览"><a href="#1-项目概览" class="headerlink" title="1. 项目概览"></a>1. 项目概览</h2><p>这个项目属于：</p><ul><li>自托管工具</li><li>开发工具</li></ul><p>项目定位：Halo是一款现代化的开源建站工具，基于Java开发，提供丰富的主题和插件系统，适合搭建个人博客、企业网站等。</p><p>Github：<a href="https://github.com/halo-dev/halo">https://github.com/halo-dev/halo</a></p><p>Star：20.1k+</p><p>License：GPL-3.0</p><p>语言&#x2F;技术栈：</p><ul><li>Java</li><li>Spring Boot</li><li>Vue.js</li><li>MySQL&#x2F;MariaDB</li></ul><p>项目成熟度&#x2F;复杂度：</p><ul><li>生产可用</li><li>企业级</li><li>中等</li></ul><hr><h2 id="2-解决什么问题"><a href="#2-解决什么问题" class="headerlink" title="2. 解决什么问题"></a>2. 解决什么问题</h2><h3 id="2-1-这个领域原本怎么做"><a href="#2-1-这个领域原本怎么做" class="headerlink" title="2.1 这个领域原本怎么做"></a>2.1 这个领域原本怎么做</h3><p>传统的建站方式要么使用静态网站生成器，要么使用WordPress等PHP-based CMS，要么定制开发。</p><h3 id="2-2-现有方案问题"><a href="#2-2-现有方案问题" class="headerlink" title="2.2 现有方案问题"></a>2.2 现有方案问题</h3><ul><li>静态网站生成器：缺乏动态功能，管理不便</li><li>WordPress：依赖PHP，安全性问题，资源占用高</li><li>定制开发：成本高，维护困难</li><li>其他CMS：功能复杂，学习成本高</li></ul><h3 id="2-3-这个项目的思路"><a href="#2-3-这个项目的思路" class="headerlink" title="2.3 这个项目的思路"></a>2.3 这个项目的思路</h3><p>Halo采用Java技术栈，提供现代化的管理界面，支持主题和插件扩展，既保持了轻量级的特点，又提供了丰富的功能。</p><hr><h2 id="3-架构分析"><a href="#3-架构分析" class="headerlink" title="3. 架构分析"></a>3. 架构分析</h2><h3 id="3-1-整体架构"><a href="#3-1-整体架构" class="headerlink" title="3.1 整体架构"></a>3.1 整体架构</h3><p>Halo采用前后端分离架构，主要组件包括：</p><ul><li>后端：基于Spring Boot的Java应用，提供API服务</li><li>前端：基于Vue.js的管理界面</li><li>数据库：支持MySQL&#x2F;MariaDB</li><li>存储：支持本地存储和对象存储</li></ul><h3 id="3-2-关键模块"><a href="#3-2-关键模块" class="headerlink" title="3.2 关键模块"></a>3.2 关键模块</h3><ul><li>内容管理：文章、页面、分类、标签等管理</li><li>主题系统：支持自定义主题</li><li>插件系统：支持功能扩展</li><li>用户管理：多用户支持和权限控制</li><li>评论系统：内置评论功能</li><li>配置管理：系统配置和设置</li></ul><hr><h2 id="4-核心设计思想"><a href="#4-核心设计思想" class="headerlink" title="4. 核心设计思想"></a>4. 核心设计思想</h2><h3 id="4-1-技术选型分析"><a href="#4-1-技术选型分析" class="headerlink" title="4.1 技术选型分析"></a>4.1 技术选型分析</h3><p>为什么使用：</p><ul><li>Java：提供良好的性能和稳定性</li><li>Spring Boot：简化后端开发，提供丰富的生态</li><li>Vue.js：现代化的前端框架，提供良好的用户体验</li><li>MySQL&#x2F;MariaDB：可靠的关系型数据库</li></ul><h3 id="4-2-设计思想分析"><a href="#4-2-设计思想分析" class="headerlink" title="4.2 设计思想分析"></a>4.2 设计思想分析</h3><p>这个项目体现：</p><ul><li>模块化：采用模块化设计，易于扩展</li><li>插件化：支持通过插件扩展功能</li><li>主题化：支持自定义主题，提供丰富的视觉效果</li><li>前后端分离：提高开发效率和用户体验</li><li>可配置性：提供丰富的配置选项</li></ul><hr><h2 id="5-功能分析"><a href="#5-功能分析" class="headerlink" title="5. 功能分析"></a>5. 功能分析</h2><h3 id="5-1-整体架构"><a href="#5-1-整体架构" class="headerlink" title="5.1 整体架构"></a>5.1 整体架构</h3><ul><li>前后端分离：后端提供API，前端负责展示</li><li>模块化设计：核心功能和扩展功能分离</li></ul><h3 id="5-2-核心模块"><a href="#5-2-核心模块" class="headerlink" title="5.2 核心模块"></a>5.2 核心模块</h3><ul><li>内容管理：文章、页面、分类、标签管理</li><li>主题系统：支持主题安装和自定义</li><li>插件系统：支持功能扩展</li><li>用户管理：多用户支持和权限控制</li><li>评论系统：内置评论功能，支持第三方评论集成</li><li>媒体管理：图片和文件管理</li><li>SEO优化：内置SEO功能</li></ul><h3 id="5-3-数据流分析"><a href="#5-3-数据流分析" class="headerlink" title="5.3 数据流分析"></a>5.3 数据流分析</h3><figure class="highlight"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs">用户请求<br> ↓<br>前端处理<br> ↓<br>API请求<br> ↓<br>后端处理<br> ↓<br>数据库操作<br> ↓<br>响应返回<br></code></pre></td></tr></table></figure><hr><h2 id="6-部署与体验"><a href="#6-部署与体验" class="headerlink" title="6. 部署与体验"></a>6. 部署与体验</h2><h3 id="6-1-部署难度"><a href="#6-1-部署难度" class="headerlink" title="6.1 部署难度"></a>6.1 部署难度</h3><ul><li>部署方式：支持Docker、Java jar包、宝塔面板等多种部署方式</li><li>配置：简单，提供详细的部署文档</li><li>依赖：需要Java运行环境和数据库</li></ul><h3 id="6-2-资源占用"><a href="#6-2-资源占用" class="headerlink" title="6.2 资源占用"></a>6.2 资源占用</h3><ul><li>内存：适中，约512MB-1GB</li><li>CPU：低到中等，取决于访问量</li><li>存储：根据内容多少，基础安装约100MB</li></ul><h3 id="6-3-使用体验"><a href="#6-3-使用体验" class="headerlink" title="6.3 使用体验"></a>6.3 使用体验</h3><ul><li>管理界面：现代化、直观易用</li><li>响应速度：快速，页面加载迅速</li><li>功能丰富：满足大多数建站需求</li><li>扩展性：支持主题和插件扩展</li></ul><hr><h2 id="7-类似项目对比"><a href="#7-类似项目对比" class="headerlink" title="7. 类似项目对比"></a>7. 类似项目对比</h2><table><thead><tr><th>项目</th><th>复杂度</th><th>技术栈</th><th>适用场景</th></tr></thead><tbody><tr><td>Halo</td><td>中等</td><td>Java, Spring Boot, Vue</td><td>个人博客，企业网站，内容管理</td></tr><tr><td>WordPress</td><td>中等</td><td>PHP, MySQL</td><td>个人博客，企业网站，内容管理</td></tr><tr><td>Hexo</td><td>简单</td><td>Node.js</td><td>静态博客</td></tr><tr><td>Hugo</td><td>简单</td><td>Go</td><td>静态博客</td></tr><tr><td>Ghost</td><td>中等</td><td>Node.js</td><td>个人博客，内容发布</td></tr></tbody></table><hr><h2 id="8-优缺点分析"><a href="#8-优缺点分析" class="headerlink" title="8. 优缺点分析"></a>8. 优缺点分析</h2><p>优点：</p><ul><li>基于Java，性能稳定</li><li>前后端分离，用户体验好</li><li>支持主题和插件扩展</li><li>管理界面现代化，易于使用</li><li>开源免费，社区活跃</li></ul><p>缺点：</p><ul><li>资源占用比静态网站生成器高</li><li>插件生态相对WordPress较小</li><li>部署需要Java环境，相对复杂</li><li>部分高级功能需要插件支持</li></ul><hr><h2 id="9-我的判断"><a href="#9-我的判断" class="headerlink" title="9. 我的判断"></a>9. 我的判断</h2><p>我认为：</p><p>这个项目：</p><ul><li>适合谁：需要搭建个人博客、企业网站的用户，希望使用Java技术栈的开发者，需要现代化管理界面的用户</li><li>不适合谁：对性能要求极高的场景，需要大量复杂插件的用户，希望零配置部署的用户</li><li>未来如何：Halo作为一款现代化的开源建站工具，有很大的发展潜力。随着Java生态的发展和社区的活跃，它有望成为开源建站领域的重要选择，特别是对于Java开发者和企业用户</li></ul><hr>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;span id=&quot;more&quot;&gt;&lt;/span&gt;

&lt;h2 id=&quot;0-为什么关注这个项目&quot;&gt;&lt;a href=&quot;#0-为什么关注这个项目&quot; class=&quot;headerlink&quot; title=&quot;0. 为什么关注这个项目&quot;&gt;&lt;/a&gt;0.</summary>
        
      
    
    
    
    <category term="开源项目" scheme="https://blog.doracoin.cc/categories/opensource/"/>
    
    
    <category term="开源" scheme="https://blog.doracoin.cc/tags/%E5%BC%80%E6%BA%90/"/>
    
  </entry>
  
  <entry>
    <title>学习搭建：docker-firefox</title>
    <link href="https://blog.doracoin.cc/posts/opensource/39011.html"/>
    <id>https://blog.doracoin.cc/posts/opensource/39011.html</id>
    <published>2026-03-26T05:36:59.000Z</published>
    <updated>2026-03-31T16:37:02.644Z</updated>
    
    <content type="html"><![CDATA[<span id="more"></span><h2 id="0-为什么关注这个项目"><a href="#0-为什么关注这个项目" class="headerlink" title="0. 为什么关注这个项目"></a>0. 为什么关注这个项目</h2><p>这一段是：<strong>认知记录</strong></p><ul><li>我在寻找一种安全、隔离的方式运行Firefox浏览器</li><li>我希望在容器中运行浏览器，以避免在主机上安装过多软件</li><li>我需要一个可以在任何支持Docker的环境中快速部署的Firefox解决方案</li></ul><p>这会让我以后回头看时，我会知道自己当时的思考路径，这是非常有价值的。</p><hr><h2 id="1-项目概览"><a href="#1-项目概览" class="headerlink" title="1. 项目概览"></a>1. 项目概览</h2><p>这个项目属于：</p><ul><li>自托管工具</li><li>开发工具</li></ul><p>项目定位：docker-firefox是一个基于Docker的Firefox浏览器容器化解决方案，提供隔离、安全的浏览器运行环境。</p><p>Github：<a href="https://github.com/jlesage/docker-firefox">https://github.com/jlesage/docker-firefox</a></p><p>Star：4.5k+</p><p>License：MIT</p><p>语言&#x2F;技术栈：</p><ul><li>Docker</li><li>Alpine Linux</li><li>Firefox</li><li>X11</li></ul><p>项目成熟度&#x2F;复杂度：</p><ul><li>生产可用</li><li>中等</li></ul><hr><h2 id="2-解决什么问题"><a href="#2-解决什么问题" class="headerlink" title="2. 解决什么问题"></a>2. 解决什么问题</h2><h3 id="2-1-这个领域原本怎么做"><a href="#2-1-这个领域原本怎么做" class="headerlink" title="2.1 这个领域原本怎么做"></a>2.1 这个领域原本怎么做</h3><p>传统的浏览器运行方式是直接在主机上安装，这可能会导致系统污染，存在安全风险，且难以在不同环境中一致部署。</p><h3 id="2-2-现有方案问题"><a href="#2-2-现有方案问题" class="headerlink" title="2.2 现有方案问题"></a>2.2 现有方案问题</h3><ul><li>直接安装浏览器：可能导致系统污染，存在安全风险</li><li>虚拟机运行：资源占用高，启动速度慢</li><li>其他容器化方案：配置复杂，功能不全</li></ul><h3 id="2-3-这个项目的思路"><a href="#2-3-这个项目的思路" class="headerlink" title="2.3 这个项目的思路"></a>2.3 这个项目的思路</h3><p>docker-firefox通过容器化技术，提供一个隔离、安全的Firefox运行环境，同时配置简单，易于部署和使用。</p><hr><h2 id="3-架构分析"><a href="#3-架构分析" class="headerlink" title="3. 架构分析"></a>3. 架构分析</h2><h3 id="3-1-整体架构"><a href="#3-1-整体架构" class="headerlink" title="3.1 整体架构"></a>3.1 整体架构</h3><p>docker-firefox的架构包括：</p><ul><li>基础镜像：基于Alpine Linux，轻量且安全</li><li>Firefox浏览器：最新版本的Firefox</li><li>桌面环境：X11和轻量级窗口管理器</li><li>VNC服务器：用于远程访问浏览器界面</li><li>网络配置：支持网络隔离和代理设置</li></ul><h3 id="3-2-关键模块"><a href="#3-2-关键模块" class="headerlink" title="3.2 关键模块"></a>3.2 关键模块</h3><ul><li>容器管理：处理容器的启动、停止和配置</li><li>显示系统：提供X11和VNC服务</li><li>浏览器配置：管理Firefox的设置和插件</li><li>网络隔离：提供网络安全隔离</li><li>持久化存储：保存用户数据和设置</li></ul><hr><h2 id="4-核心设计思想"><a href="#4-核心设计思想" class="headerlink" title="4. 核心设计思想"></a>4. 核心设计思想</h2><h3 id="4-1-技术选型分析"><a href="#4-1-技术选型分析" class="headerlink" title="4.1 技术选型分析"></a>4.1 技术选型分析</h3><p>为什么使用：</p><ul><li>Docker：提供容器化隔离环境</li><li>Alpine Linux：轻量级基础镜像，减少资源占用</li><li>Firefox：功能丰富的开源浏览器</li><li>X11：提供图形界面支持</li><li>VNC：支持远程访问</li></ul><h3 id="4-2-设计思想分析"><a href="#4-2-设计思想分析" class="headerlink" title="4.2 设计思想分析"></a>4.2 设计思想分析</h3><p>这个项目体现：</p><ul><li>隔离性：容器化提供安全隔离环境</li><li>轻量化：使用Alpine Linux作为基础镜像</li><li>易用性：配置简单，开箱即用</li><li>可移植性：可以在任何支持Docker的环境中运行</li><li>安全性：减少浏览器对主机系统的影响</li></ul><hr><h2 id="5-功能分析"><a href="#5-功能分析" class="headerlink" title="5. 功能分析"></a>5. 功能分析</h2><h3 id="5-1-整体架构"><a href="#5-1-整体架构" class="headerlink" title="5.1 整体架构"></a>5.1 整体架构</h3><ul><li>容器化架构：基于Docker容器运行</li><li>分层设计：基础镜像 + 浏览器 + 显示系统</li></ul><h3 id="5-2-核心模块"><a href="#5-2-核心模块" class="headerlink" title="5.2 核心模块"></a>5.2 核心模块</h3><ul><li>浏览器：Firefox最新版本</li><li>显示系统：X11和VNC</li><li>网络：支持网络隔离和代理</li><li>存储：支持持久化用户数据</li><li>安全：容器隔离，减少安全风险</li></ul><h3 id="5-3-数据流分析"><a href="#5-3-数据流分析" class="headerlink" title="5.3 数据流分析"></a>5.3 数据流分析</h3><figure class="highlight tp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs tp">用户访问<br> ↓<br>VNC客户端连接<br> ↓<br>容器内VNC服务器<br> ↓<br><span class="hljs-keyword">X</span><span class="hljs-number">11</span>显示系统<br> ↓<br>Firefox浏览器<br> ↓<br>网络请求处理<br></code></pre></td></tr></table></figure><hr><h2 id="6-部署与体验"><a href="#6-部署与体验" class="headerlink" title="6. 部署与体验"></a>6. 部署与体验</h2><h3 id="6-1-部署难度"><a href="#6-1-部署难度" class="headerlink" title="6.1 部署难度"></a>6.1 部署难度</h3><ul><li>部署方式：非常简单，只需运行Docker命令</li><li>配置：通过环境变量和卷挂载进行配置</li><li>依赖：仅需Docker环境</li></ul><h3 id="6-2-资源占用"><a href="#6-2-资源占用" class="headerlink" title="6.2 资源占用"></a>6.2 资源占用</h3><ul><li>内存：适中，约500MB-1GB</li><li>CPU：低到中等，取决于浏览器使用情况</li><li>存储：基础镜像约200MB，加上用户数据</li></ul><h3 id="6-3-使用体验"><a href="#6-3-使用体验" class="headerlink" title="6.3 使用体验"></a>6.3 使用体验</h3><ul><li>启动速度：较快，容器启动时间约10-20秒</li><li>响应速度：与本地浏览器相当</li><li>界面：完整的Firefox界面，支持所有功能</li><li>兼容性：支持所有Firefox扩展和功能</li></ul><hr><h2 id="7-类似项目对比"><a href="#7-类似项目对比" class="headerlink" title="7. 类似项目对比"></a>7. 类似项目对比</h2><table><thead><tr><th>项目</th><th>复杂度</th><th>技术栈</th><th>适用场景</th></tr></thead><tbody><tr><td>docker-firefox</td><td>简单</td><td>Docker, Alpine Linux</td><td>隔离的浏览器环境，安全浏览</td></tr><tr><td>docker-chrome</td><td>简单</td><td>Docker, Alpine Linux</td><td>类似docker-firefox，但使用Chrome</td></tr><tr><td>虚拟机浏览器</td><td>复杂</td><td>虚拟机技术</td><td>更完全的隔离，但资源占用高</td></tr><tr><td>本地浏览器</td><td>简单</td><td>直接安装</td><td>性能最佳，但缺乏隔离</td></tr></tbody></table><hr><h2 id="8-优缺点分析"><a href="#8-优缺点分析" class="headerlink" title="8. 优缺点分析"></a>8. 优缺点分析</h2><p>优点：</p><ul><li>隔离性好，提高安全性</li><li>配置简单，易于部署</li><li>跨平台支持，可在任何Docker环境中运行</li><li>资源占用相对较低</li><li>支持持久化存储</li></ul><p>缺点：</p><ul><li>图形性能可能不如本地浏览器</li><li>首次启动需要拉取镜像，时间较长</li><li>某些硬件加速功能可能受限</li><li>需要VNC客户端访问，不如本地浏览器直接</li></ul><hr><h2 id="9-我的判断"><a href="#9-我的判断" class="headerlink" title="9. 我的判断"></a>9. 我的判断</h2><p>我认为：</p><p>这个项目：</p><ul><li>适合谁：需要安全隔离浏览环境的用户，希望在容器中运行浏览器的开发者，需要在不同环境中一致部署浏览器的场景</li><li>不适合谁：对浏览器性能要求极高的用户，需要使用硬件加速功能的用户</li><li>未来如何：docker-firefox作为一个实用的容器化浏览器解决方案，有其特定的应用场景。随着容器技术的普及，这类解决方案会越来越受欢迎，特别是在安全要求较高的环境中</li></ul><hr>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;span id=&quot;more&quot;&gt;&lt;/span&gt;

&lt;h2 id=&quot;0-为什么关注这个项目&quot;&gt;&lt;a href=&quot;#0-为什么关注这个项目&quot; class=&quot;headerlink&quot; title=&quot;0. 为什么关注这个项目&quot;&gt;&lt;/a&gt;0.</summary>
        
      
    
    
    
    <category term="开源项目" scheme="https://blog.doracoin.cc/categories/opensource/"/>
    
    
    <category term="开源" scheme="https://blog.doracoin.cc/tags/%E5%BC%80%E6%BA%90/"/>
    
  </entry>
  
  <entry>
    <title>学习搭建：GoProxy是一款轻量级、内网穿透代理服务器</title>
    <link href="https://blog.doracoin.cc/posts/opensource/8417.html"/>
    <id>https://blog.doracoin.cc/posts/opensource/8417.html</id>
    <published>2026-03-26T05:36:01.000Z</published>
    <updated>2026-03-31T16:37:02.644Z</updated>
    
    <content type="html"><![CDATA[<span id="more"></span><h2 id="0-为什么关注这个项目"><a href="#0-为什么关注这个项目" class="headerlink" title="0. 为什么关注这个项目"></a>0. 为什么关注这个项目</h2><p>这一段是：<strong>认知记录</strong></p><ul><li>我在寻找一款轻量级的内网穿透工具，用于远程访问内网服务</li><li>我需要一个简单易用的代理服务器，支持多种协议</li><li>我希望找到一个可以自托管的代理解决方案，以确保数据安全</li></ul><p>这会让我以后回头看时，我会知道自己当时的思考路径，这是非常有价值的。</p><hr><h2 id="1-项目概览"><a href="#1-项目概览" class="headerlink" title="1. 项目概览"></a>1. 项目概览</h2><p>这个项目属于：</p><ul><li>自托管工具</li><li>基础设施</li></ul><p>项目定位：GoProxy是一款轻量级、功能强大的内网穿透代理服务器，支持HTTP、HTTPS、TCP、UDP等多种协议。</p><p>Github：<a href="https://github.com/snail007/goproxy">https://github.com/snail007/goproxy</a></p><p>Star：18.9k+</p><p>License：MIT</p><p>语言&#x2F;技术栈：</p><ul><li>Go</li></ul><p>项目成熟度&#x2F;复杂度：</p><ul><li>生产可用</li><li>中等</li></ul><hr><h2 id="2-解决什么问题"><a href="#2-解决什么问题" class="headerlink" title="2. 解决什么问题"></a>2. 解决什么问题</h2><h3 id="2-1-这个领域原本怎么做"><a href="#2-1-这个领域原本怎么做" class="headerlink" title="2.1 这个领域原本怎么做"></a>2.1 这个领域原本怎么做</h3><p>传统的内网穿透工具要么功能单一，要么配置复杂，要么需要依赖第三方服务。</p><h3 id="2-2-现有方案问题"><a href="#2-2-现有方案问题" class="headerlink" title="2.2 现有方案问题"></a>2.2 现有方案问题</h3><ul><li>ngrok：需要依赖第三方服务，免费版有流量限制</li><li>frp：配置相对复杂，功能较多但学习成本高</li><li>传统VPN：部署复杂，资源占用高</li><li>端口映射：需要公网IP，配置繁琐</li></ul><h3 id="2-3-这个项目的思路"><a href="#2-3-这个项目的思路" class="headerlink" title="2.3 这个项目的思路"></a>2.3 这个项目的思路</h3><p>GoProxy通过简单的命令行配置，提供轻量级的内网穿透功能，支持多种协议，同时允许用户完全自托管，不依赖第三方服务。</p><hr><h2 id="3-架构分析"><a href="#3-架构分析" class="headerlink" title="3. 架构分析"></a>3. 架构分析</h2><h3 id="3-1-整体架构"><a href="#3-1-整体架构" class="headerlink" title="3.1 整体架构"></a>3.1 整体架构</h3><p>GoProxy采用客户端-服务器架构，主要组件包括：</p><ul><li>服务端：运行在公网服务器上，接收来自客户端的连接</li><li>客户端：运行在内网环境中，连接到服务端并转发本地服务</li><li>协议处理：支持HTTP、HTTPS、TCP、UDP等多种协议</li></ul><h3 id="3-2-关键模块"><a href="#3-2-关键模块" class="headerlink" title="3.2 关键模块"></a>3.2 关键模块</h3><ul><li>协议处理模块：处理不同协议的转发</li><li>认证模块：确保连接安全</li><li>配置管理：处理命令行配置和配置文件</li><li>连接管理：管理客户端与服务端之间的连接</li><li>日志系统：记录运行状态和错误信息</li></ul><hr><h2 id="4-核心设计思想"><a href="#4-核心设计思想" class="headerlink" title="4. 核心设计思想"></a>4. 核心设计思想</h2><h3 id="4-1-技术选型分析"><a href="#4-1-技术选型分析" class="headerlink" title="4.1 技术选型分析"></a>4.1 技术选型分析</h3><p>为什么使用：</p><ul><li>Go：提供良好的并发性能和跨平台支持，适合网络代理服务</li></ul><h3 id="4-2-设计思想分析"><a href="#4-2-设计思想分析" class="headerlink" title="4.2 设计思想分析"></a>4.2 设计思想分析</h3><p>这个项目体现：</p><ul><li>轻量化：单一二进制文件，无依赖，资源占用低</li><li>简单易用：命令行配置，无需复杂设置</li><li>多功能：支持多种协议和转发方式</li><li>安全可靠：支持认证和加密</li><li>自托管：完全掌控服务，不依赖第三方</li></ul><hr><h2 id="5-功能分析"><a href="#5-功能分析" class="headerlink" title="5. 功能分析"></a>5. 功能分析</h2><h3 id="5-1-整体架构"><a href="#5-1-整体架构" class="headerlink" title="5.1 整体架构"></a>5.1 整体架构</h3><ul><li>客户端-服务器架构：客户端运行在内网，服务端运行在公网</li><li>单一二进制文件：服务端和客户端都使用同一个二进制文件，通过不同参数区分</li></ul><h3 id="5-2-核心模块"><a href="#5-2-核心模块" class="headerlink" title="5.2 核心模块"></a>5.2 核心模块</h3><ul><li>HTTP代理：支持HTTP&#x2F;HTTPS请求转发</li><li>TCP代理：支持TCP端口转发</li><li>UDP代理：支持UDP流量转发</li><li>认证系统：支持用户名密码认证</li><li>加密传输：支持TLS加密</li><li>负载均衡：支持多客户端负载均衡</li></ul><h3 id="5-3-数据流分析"><a href="#5-3-数据流分析" class="headerlink" title="5.3 数据流分析"></a>5.3 数据流分析</h3><figure class="highlight"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs">用户请求<br> ↓<br>公网服务端接收<br> ↓<br>转发到内网客户端<br> ↓<br>内网服务处理<br> ↓<br>响应返回给用户<br></code></pre></td></tr></table></figure><hr><h2 id="6-部署与体验"><a href="#6-部署与体验" class="headerlink" title="6. 部署与体验"></a>6. 部署与体验</h2><h3 id="6-1-部署难度"><a href="#6-1-部署难度" class="headerlink" title="6.1 部署难度"></a>6.1 部署难度</h3><ul><li>服务端部署：简单，只需在公网服务器上运行二进制文件</li><li>客户端部署：简单，在内网机器上运行二进制文件并配置连接信息</li><li>配置：命令行参数或配置文件，简单易懂</li></ul><h3 id="6-2-资源占用"><a href="#6-2-资源占用" class="headerlink" title="6.2 资源占用"></a>6.2 资源占用</h3><ul><li>内存：轻量级，仅需几十MB内存</li><li>CPU：低CPU占用，适合在小服务器上运行</li><li>网络：根据实际流量消耗带宽</li></ul><h3 id="6-3-使用体验"><a href="#6-3-使用体验" class="headerlink" title="6.3 使用体验"></a>6.3 使用体验</h3><ul><li>命令行界面：简单直观，易于使用</li><li>启动速度：快速启动，响应及时</li><li>稳定性：稳定可靠，适合长期运行</li><li>兼容性：支持多种操作系统和平台</li></ul><hr><h2 id="7-类似项目对比"><a href="#7-类似项目对比" class="headerlink" title="7. 类似项目对比"></a>7. 类似项目对比</h2><table><thead><tr><th>项目</th><th>复杂度</th><th>技术栈</th><th>适用场景</th></tr></thead><tbody><tr><td>GoProxy</td><td>简单</td><td>Go</td><td>轻量级内网穿透，多种协议支持</td></tr><tr><td>frp</td><td>中等</td><td>Go</td><td>功能丰富的内网穿透，适合复杂场景</td></tr><tr><td>ngrok</td><td>简单</td><td>Go</td><td>开箱即用，但依赖第三方服务</td></tr><tr><td>WireGuard</td><td>中等</td><td>C</td><td>安全的VPN解决方案</td></tr><tr><td>OpenVPN</td><td>复杂</td><td>C</td><td>功能丰富的VPN，但配置复杂</td></tr></tbody></table><hr><h2 id="8-优缺点分析"><a href="#8-优缺点分析" class="headerlink" title="8. 优缺点分析"></a>8. 优缺点分析</h2><p>优点：</p><ul><li>轻量级，资源占用低</li><li>配置简单，易于使用</li><li>支持多种协议</li><li>完全自托管，不依赖第三方</li><li>跨平台支持</li><li>开源免费</li></ul><p>缺点：</p><ul><li>高级功能相对较少</li><li>文档相对简单</li><li>社区规模不如frp等项目</li><li>部分功能可能不如专业工具完善</li></ul><hr><h2 id="9-我的判断"><a href="#9-我的判断" class="headerlink" title="9. 我的判断"></a>9. 我的判断</h2><p>我认为：</p><p>这个项目：</p><ul><li>适合谁：需要轻量级内网穿透解决方案的个人用户和小型团队，希望自托管代理服务的用户，需要支持多种协议的用户</li><li>不适合谁：需要复杂高级功能的企业用户，对性能有极高要求的场景</li><li>未来如何：GoProxy作为一款轻量级的内网穿透工具，有其独特的优势，适合特定场景使用。随着远程办公和边缘计算的兴起，这类工具的需求会持续增长，GoProxy有望在保持轻量化的同时，不断完善功能，成为内网穿透领域的重要选择</li></ul><hr>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;span id=&quot;more&quot;&gt;&lt;/span&gt;

&lt;h2 id=&quot;0-为什么关注这个项目&quot;&gt;&lt;a href=&quot;#0-为什么关注这个项目&quot; class=&quot;headerlink&quot; title=&quot;0. 为什么关注这个项目&quot;&gt;&lt;/a&gt;0.</summary>
        
      
    
    
    
    <category term="开源项目" scheme="https://blog.doracoin.cc/categories/opensource/"/>
    
    
    <category term="开源" scheme="https://blog.doracoin.cc/tags/%E5%BC%80%E6%BA%90/"/>
    
  </entry>
  
  <entry>
    <title>学习-K3S---轻量级的-K8S</title>
    <link href="https://blog.doracoin.cc/posts/opensource/22910.html"/>
    <id>https://blog.doracoin.cc/posts/opensource/22910.html</id>
    <published>2026-03-26T05:34:56.000Z</published>
    <updated>2026-03-31T16:37:02.643Z</updated>
    
    <content type="html"><![CDATA[<span id="more"></span><h2 id="0-为什么关注这个项目"><a href="#0-为什么关注这个项目" class="headerlink" title="0. 为什么关注这个项目"></a>0. 为什么关注这个项目</h2><p>这一段是：<strong>认知记录</strong></p><ul><li>我在寻找一个轻量级的Kubernetes解决方案，适合资源受限的环境</li><li>我需要在边缘设备上部署容器编排系统</li><li>我希望简化Kubernetes的部署和管理流程</li></ul><p>这会让我以后回头看时，我会知道自己当时的思考路径，这是非常有价值的。</p><hr><h2 id="1-项目概览"><a href="#1-项目概览" class="headerlink" title="1. 项目概览"></a>1. 项目概览</h2><p>这个项目属于：</p><ul><li>基础设施</li><li>开发工具</li></ul><p>项目定位：K3S是一个轻量级的Kubernetes发行版，专为边缘计算、IoT设备和资源受限环境设计，提供完整的Kubernetes功能。</p><p>Github：<a href="https://github.com/k3s-io/k3s">https://github.com/k3s-io/k3s</a></p><p>Star：26.8k+</p><p>License：Apache-2.0</p><p>语言&#x2F;技术栈：</p><ul><li>Go</li></ul><p>项目成熟度&#x2F;复杂度：</p><ul><li>生产可用</li><li>企业级</li><li>极简</li></ul><hr><h2 id="2-解决什么问题"><a href="#2-解决什么问题" class="headerlink" title="2. 解决什么问题"></a>2. 解决什么问题</h2><h3 id="2-1-这个领域原本怎么做"><a href="#2-1-这个领域原本怎么做" class="headerlink" title="2.1 这个领域原本怎么做"></a>2.1 这个领域原本怎么做</h3><p>传统的Kubernetes部署需要大量资源，包括至少3个主节点和多个工作节点，对硬件要求较高。</p><h3 id="2-2-现有方案问题"><a href="#2-2-现有方案问题" class="headerlink" title="2.2 现有方案问题"></a>2.2 现有方案问题</h3><ul><li>标准Kubernetes资源占用高，不适合边缘设备</li><li>部署和管理复杂，需要专业知识</li><li>对于小型环境来说过于臃肿</li><li>边缘计算场景下网络条件受限，标准Kubernetes的网络配置复杂</li></ul><h3 id="2-3-这个项目的思路"><a href="#2-3-这个项目的思路" class="headerlink" title="2.3 这个项目的思路"></a>2.3 这个项目的思路</h3><p>K3S通过移除不必要的组件，简化安装和配置过程，降低资源占用，同时保持与标准Kubernetes的兼容性，使容器编排能够在边缘设备上运行。</p><hr><h2 id="3-架构分析"><a href="#3-架构分析" class="headerlink" title="3. 架构分析"></a>3. 架构分析</h2><h3 id="3-1-整体架构"><a href="#3-1-整体架构" class="headerlink" title="3.1 整体架构"></a>3.1 整体架构</h3><p>K3S的架构包括：</p><ul><li>服务器节点：运行API服务器、调度器等核心组件</li><li>代理节点：运行容器运行时和kubelet</li><li>嵌入式数据库：默认使用SQLite，也支持外部数据库</li><li>简化的网络：默认使用Flannel，也支持其他CNI插件</li></ul><h3 id="3-2-关键模块"><a href="#3-2-关键模块" class="headerlink" title="3.2 关键模块"></a>3.2 关键模块</h3><ul><li>k3s-server：主服务器组件，包含API服务器、调度器等</li><li>k3s-agent：代理节点组件，包含kubelet和容器运行时</li><li>嵌入式数据库：用于存储集群状态</li><li>自动部署的组件：如CoreDNS、Metrics Server等</li><li>可选组件：Ingress Controller、LoadBalancer等</li></ul><hr><h2 id="4-核心设计思想"><a href="#4-核心设计思想" class="headerlink" title="4. 核心设计思想"></a>4. 核心设计思想</h2><h3 id="4-1-技术选型分析"><a href="#4-1-技术选型分析" class="headerlink" title="4.1 技术选型分析"></a>4.1 技术选型分析</h3><p>为什么使用：</p><ul><li>Go：提供高性能和跨平台支持，适合边缘设备</li></ul><h3 id="4-2-设计思想分析"><a href="#4-2-设计思想分析" class="headerlink" title="4.2 设计思想分析"></a>4.2 设计思想分析</h3><p>这个项目体现：</p><ul><li>轻量化：移除不必要的组件，减少资源占用</li><li>简化部署：单一二进制文件，一键安装</li><li>兼容性：与标准Kubernetes API完全兼容</li><li>边缘友好：优化网络和存储，适合边缘环境</li><li>高可用：支持多服务器节点部署</li></ul><hr><h2 id="5-功能分析"><a href="#5-功能分析" class="headerlink" title="5. 功能分析"></a>5. 功能分析</h2><h3 id="5-1-整体架构"><a href="#5-1-整体架构" class="headerlink" title="5.1 整体架构"></a>5.1 整体架构</h3><ul><li>单体二进制：所有组件打包为单个二进制文件</li><li>简化的控制平面：合并多个Kubernetes组件为少数进程</li><li>嵌入式存储：默认使用SQLite，减少外部依赖</li></ul><h3 id="5-2-核心模块"><a href="#5-2-核心模块" class="headerlink" title="5.2 核心模块"></a>5.2 核心模块</h3><ul><li>API服务器：处理用户请求和集群管理</li><li>调度器：负责容器调度</li><li>kubelet：管理容器生命周期</li><li>容器运行时：默认使用containerd</li><li>网络插件：默认使用Flannel</li><li>存储插件：支持多种存储后端</li></ul><h3 id="5-3-数据流分析"><a href="#5-3-数据流分析" class="headerlink" title="5.3 数据流分析"></a>5.3 数据流分析</h3><figure class="highlight"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs">用户请求<br> ↓<br>API服务器处理<br> ↓<br>调度器分配资源<br> ↓<br>kubelet执行容器操作<br> ↓<br>容器运行时运行容器<br></code></pre></td></tr></table></figure><hr><h2 id="6-部署与体验"><a href="#6-部署与体验" class="headerlink" title="6. 部署与体验"></a>6. 部署与体验</h2><h3 id="6-1-部署难度"><a href="#6-1-部署难度" class="headerlink" title="6.1 部署难度"></a>6.1 部署难度</h3><ul><li>单节点部署：非常简单，一键安装</li><li>高可用部署：中等，需要配置外部数据库</li><li>边缘设备部署：简单，支持多种硬件平台</li></ul><h3 id="6-2-资源占用"><a href="#6-2-资源占用" class="headerlink" title="6.2 资源占用"></a>6.2 资源占用</h3><ul><li>内存：最低仅需512MB</li><li>CPU：支持单核处理器</li><li>存储：最小化安装仅需数百MB</li></ul><h3 id="6-3-使用体验"><a href="#6-3-使用体验" class="headerlink" title="6.3 使用体验"></a>6.3 使用体验</h3><ul><li>安装过程：简单快速，一键完成</li><li>命令行工具：与标准kubectl完全兼容</li><li>管理界面：支持与标准Kubernetes管理工具集成</li><li>性能：启动速度快，响应及时</li></ul><hr><h2 id="7-类似项目对比"><a href="#7-类似项目对比" class="headerlink" title="7. 类似项目对比"></a>7. 类似项目对比</h2><table><thead><tr><th>项目</th><th>复杂度</th><th>技术栈</th><th>适用场景</th></tr></thead><tbody><tr><td>K3S</td><td>简单</td><td>Go</td><td>边缘计算，IoT设备，资源受限环境</td></tr><tr><td>MicroK8s</td><td>简单</td><td>Go</td><td>开发环境，小型部署</td></tr><tr><td>Minikube</td><td>简单</td><td>Go</td><td>本地开发和测试</td></tr><tr><td>标准Kubernetes</td><td>复杂</td><td>Go</td><td>大型企业部署，生产环境</td></tr><tr><td>OpenShift</td><td>复杂</td><td>Go</td><td>企业级Kubernetes平台</td></tr></tbody></table><hr><h2 id="8-优缺点分析"><a href="#8-优缺点分析" class="headerlink" title="8. 优缺点分析"></a>8. 优缺点分析</h2><p>优点：</p><ul><li>轻量级，资源占用低</li><li>部署简单，一键安装</li><li>与标准Kubernetes完全兼容</li><li>适合边缘计算和IoT场景</li><li>支持高可用部署</li><li>社区活跃，持续发展</li></ul><p>缺点：</p><ul><li>某些高级Kubernetes功能可能需要额外配置</li><li>大规模部署的性能可能不如标准Kubernetes</li><li>企业级支持不如商业Kubernetes发行版</li></ul><hr><h2 id="9-我的判断"><a href="#9-我的判断" class="headerlink" title="9. 我的判断"></a>9. 我的判断</h2><p>我认为：</p><p>这个项目：</p><ul><li>适合谁：边缘计算场景，IoT设备管理，资源受限环境，开发和测试环境，小型生产部署</li><li>不适合谁：需要大规模部署的企业级应用，对高级Kubernetes功能有特殊需求的场景</li><li>未来如何：K3S有很大的发展潜力，随着边缘计算的兴起，它将成为边缘设备容器编排的标准解决方案，同时也会不断完善其功能，满足更多场景的需求</li></ul><hr>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;span id=&quot;more&quot;&gt;&lt;/span&gt;

&lt;h2 id=&quot;0-为什么关注这个项目&quot;&gt;&lt;a href=&quot;#0-为什么关注这个项目&quot; class=&quot;headerlink&quot; title=&quot;0. 为什么关注这个项目&quot;&gt;&lt;/a&gt;0.</summary>
        
      
    
    
    
    <category term="开源项目" scheme="https://blog.doracoin.cc/categories/opensource/"/>
    
    
    <category term="开源" scheme="https://blog.doracoin.cc/tags/%E5%BC%80%E6%BA%90/"/>
    
  </entry>
  
  <entry>
    <title>学习-Podman：用于管理-OCI-容器和-Pod-的工具</title>
    <link href="https://blog.doracoin.cc/posts/opensource/3645.html"/>
    <id>https://blog.doracoin.cc/posts/opensource/3645.html</id>
    <published>2026-03-26T05:33:48.000Z</published>
    <updated>2026-03-31T16:37:02.644Z</updated>
    
    <content type="html"><![CDATA[<span id="more"></span><h2 id="0-为什么关注这个项目"><a href="#0-为什么关注这个项目" class="headerlink" title="0. 为什么关注这个项目"></a>0. 为什么关注这个项目</h2><p>这一段是：<strong>认知记录</strong></p><ul><li>我在寻找Docker的替代方案，希望更安全、更轻量的容器管理工具</li><li>我对无守护进程的容器管理方式感兴趣</li><li>我需要一个支持Pod概念的容器工具，以便更好地管理容器组</li></ul><p>这会让我以后回头看时，我会知道自己当时的思考路径，这是非常有价值的。</p><hr><h2 id="1-项目概览"><a href="#1-项目概览" class="headerlink" title="1. 项目概览"></a>1. 项目概览</h2><p>这个项目属于：</p><ul><li>开发工具</li><li>基础设施</li></ul><p>项目定位：Podman是一款无守护进程的容器引擎，用于管理OCI容器和Pod，提供与Docker兼容的命令行界面。</p><p>Github：<a href="https://github.com/containers/podman">https://github.com/containers/podman</a></p><p>Star：30.2k+</p><p>License：Apache-2.0</p><p>语言&#x2F;技术栈：</p><ul><li>Go</li><li>C</li></ul><p>项目成熟度&#x2F;复杂度：</p><ul><li>生产可用</li><li>中等</li></ul><hr><h2 id="2-解决什么问题"><a href="#2-解决什么问题" class="headerlink" title="2. 解决什么问题"></a>2. 解决什么问题</h2><h3 id="2-1-这个领域原本怎么做"><a href="#2-1-这个领域原本怎么做" class="headerlink" title="2.1 这个领域原本怎么做"></a>2.1 这个领域原本怎么做</h3><p>传统的容器管理主要依赖Docker，它使用守护进程模式运行，需要root权限，存在一定的安全风险。</p><h3 id="2-2-现有方案问题"><a href="#2-2-现有方案问题" class="headerlink" title="2.2 现有方案问题"></a>2.2 现有方案问题</h3><ul><li>Docker需要root权限运行，存在安全隐患</li><li>Docker使用守护进程模式，增加了系统复杂度</li><li>Docker对Pod的支持有限</li><li>Docker的架构相对复杂，资源占用较高</li></ul><h3 id="2-3-这个项目的思路"><a href="#2-3-这个项目的思路" class="headerlink" title="2.3 这个项目的思路"></a>2.3 这个项目的思路</h3><p>Podman采用无守护进程架构，支持以非root用户运行容器，提供与Docker兼容的命令行界面，同时原生支持Pod概念。</p><hr><h2 id="3-架构分析"><a href="#3-架构分析" class="headerlink" title="3. 架构分析"></a>3. 架构分析</h2><h3 id="3-1-整体架构"><a href="#3-1-整体架构" class="headerlink" title="3.1 整体架构"></a>3.1 整体架构</h3><p>Podman采用无守护进程架构，主要组件包括：</p><ul><li>podman：主命令行工具</li><li>conmon：容器监控器</li><li>runc：容器运行时</li><li>CNI：容器网络接口</li><li>overlayfs：存储驱动</li></ul><h3 id="3-2-关键模块"><a href="#3-2-关键模块" class="headerlink" title="3.2 关键模块"></a>3.2 关键模块</h3><ul><li>容器管理：创建、启动、停止、删除容器</li><li>Pod管理：创建和管理Pod，支持多个容器在同一Pod中共享网络</li><li>镜像管理：拉取、推送、构建镜像</li><li>网络管理：配置容器网络</li><li>存储管理：管理容器存储</li></ul><hr><h2 id="4-核心设计思想"><a href="#4-核心设计思想" class="headerlink" title="4. 核心设计思想"></a>4. 核心设计思想</h2><h3 id="4-1-技术选型分析"><a href="#4-1-技术选型分析" class="headerlink" title="4.1 技术选型分析"></a>4.1 技术选型分析</h3><p>为什么使用：</p><ul><li>Go：提供良好的并发性能和跨平台支持</li><li>C：用于底层系统调用和性能关键部分</li></ul><h3 id="4-2-设计思想分析"><a href="#4-2-设计思想分析" class="headerlink" title="4.2 设计思想分析"></a>4.2 设计思想分析</h3><p>这个项目体现：</p><ul><li>无守护进程：减少系统复杂度和安全风险</li><li>非root运行：提高安全性，允许普通用户管理容器</li><li>兼容性：与Docker命令行兼容，降低迁移成本</li><li>原生Pod支持：更好地支持容器组管理</li><li>模块化：采用模块化设计，易于扩展</li></ul><hr><h2 id="5-功能分析"><a href="#5-功能分析" class="headerlink" title="5. 功能分析"></a>5. 功能分析</h2><h3 id="5-1-整体架构"><a href="#5-1-整体架构" class="headerlink" title="5.1 整体架构"></a>5.1 整体架构</h3><ul><li>无守护进程架构：直接与容器运行时交互，不需要中间守护进程</li><li>模块化设计：由多个组件组成，职责明确</li></ul><h3 id="5-2-核心模块"><a href="#5-2-核心模块" class="headerlink" title="5.2 核心模块"></a>5.2 核心模块</h3><ul><li>容器管理：支持容器的全生命周期管理</li><li>Pod管理：原生支持Pod概念，可同时管理多个相关容器</li><li>镜像管理：支持镜像的拉取、推送、构建和管理</li><li>网络管理：支持多种网络模式，如bridge、host、none等</li><li>存储管理：支持多种存储驱动，如overlayfs、btrfs等</li><li>安全特性：支持rootless容器，提高安全性</li></ul><h3 id="5-3-数据流分析"><a href="#5-3-数据流分析" class="headerlink" title="5.3 数据流分析"></a>5.3 数据流分析</h3><figure class="highlight"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs">用户命令<br> ↓<br>podman 命令解析<br> ↓<br>与容器运行时交互<br> ↓<br>容器操作执行<br> ↓<br>结果返回给用户<br></code></pre></td></tr></table></figure><hr><h2 id="6-部署与体验"><a href="#6-部署与体验" class="headerlink" title="6. 部署与体验"></a>6. 部署与体验</h2><h3 id="6-1-部署难度"><a href="#6-1-部署难度" class="headerlink" title="6.1 部署难度"></a>6.1 部署难度</h3><ul><li>安装：简单，支持多种包管理器和操作系统</li><li>配置：默认配置即可满足大多数需求</li><li>集成：与现有Docker工具和流程兼容</li></ul><h3 id="6-2-资源占用"><a href="#6-2-资源占用" class="headerlink" title="6.2 资源占用"></a>6.2 资源占用</h3><ul><li>内存：轻量级，资源占用低于Docker</li><li>CPU：高效，性能与Docker相当</li><li>存储：与Docker使用相同的镜像格式，存储效率高</li></ul><h3 id="6-3-使用体验"><a href="#6-3-使用体验" class="headerlink" title="6.3 使用体验"></a>6.3 使用体验</h3><ul><li>命令行：与Docker命令完全兼容，学习成本低</li><li>性能：启动速度快，响应及时</li><li>可靠性：稳定，适合生产环境使用</li><li>安全性：支持rootless模式，提高系统安全性</li></ul><hr><h2 id="7-类似项目对比"><a href="#7-类似项目对比" class="headerlink" title="7. 类似项目对比"></a>7. 类似项目对比</h2><table><thead><tr><th>项目</th><th>复杂度</th><th>技术栈</th><th>适用场景</th></tr></thead><tbody><tr><td>Podman</td><td>中等</td><td>Go、C</td><td>无守护进程容器管理，rootless容器，Pod管理</td></tr><tr><td>Docker</td><td>中等</td><td>Go</td><td>传统容器管理，生态系统丰富</td></tr><tr><td>Containerd</td><td>低</td><td>Go</td><td>底层容器运行时，适合集成到其他系统</td></tr><tr><td>LXC</td><td>复杂</td><td>C</td><td>系统级容器，更接近虚拟机</td></tr><tr><td>rkt</td><td>中等</td><td>Go</td><td>安全优先的容器运行时</td></tr></tbody></table><hr><h2 id="8-优缺点分析"><a href="#8-优缺点分析" class="headerlink" title="8. 优缺点分析"></a>8. 优缺点分析</h2><p>优点：</p><ul><li>无守护进程架构，减少安全风险</li><li>支持rootless容器，提高安全性</li><li>与Docker命令兼容，迁移成本低</li><li>原生支持Pod概念，更好地管理容器组</li><li>轻量级，资源占用低</li><li>开源社区活跃，持续发展</li></ul><p>缺点：</p><ul><li>某些高级Docker功能可能支持不完全</li><li>生态系统不如Docker丰富</li><li>部分第三方工具可能对Podman支持有限</li><li>学习曲线虽然低，但仍需要了解其特有功能</li></ul><hr><h2 id="9-我的判断"><a href="#9-我的判断" class="headerlink" title="9. 我的判断"></a>9. 我的判断</h2><p>我认为：</p><p>这个项目：</p><ul><li>适合谁：需要更安全容器管理的组织，希望减少系统复杂度的开发者，需要Pod管理功能的用户</li><li>不适合谁：严重依赖Docker特有功能的用户，需要丰富生态系统的用户</li><li>未来如何：Podman有很大的发展潜力，作为Docker的替代品，它在安全性和架构上的优势将使其成为容器管理的重要选择，特别是在企业环境中</li></ul><hr>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;span id=&quot;more&quot;&gt;&lt;/span&gt;

&lt;h2 id=&quot;0-为什么关注这个项目&quot;&gt;&lt;a href=&quot;#0-为什么关注这个项目&quot; class=&quot;headerlink&quot; title=&quot;0. 为什么关注这个项目&quot;&gt;&lt;/a&gt;0.</summary>
        
      
    
    
    
    <category term="开源项目" scheme="https://blog.doracoin.cc/categories/opensource/"/>
    
    
    <category term="开源" scheme="https://blog.doracoin.cc/tags/%E5%BC%80%E6%BA%90/"/>
    
  </entry>
  
  <entry>
    <title>学习搭建：远程桌面软件-rustdesk</title>
    <link href="https://blog.doracoin.cc/posts/opensource/19486.html"/>
    <id>https://blog.doracoin.cc/posts/opensource/19486.html</id>
    <published>2026-03-26T05:32:47.000Z</published>
    <updated>2026-03-31T16:37:02.645Z</updated>
    
    <content type="html"><![CDATA[<span id="more"></span><h2 id="0-为什么关注这个项目"><a href="#0-为什么关注这个项目" class="headerlink" title="0. 为什么关注这个项目"></a>0. 为什么关注这个项目</h2><p>这一段是：<strong>认知记录</strong></p><ul><li>我在寻找一款开源、安全的远程桌面解决方案</li><li>我需要一个无需配置、开箱即用的远程控制工具</li><li>我希望找到一个可以自托管的远程桌面软件，以保护数据安全</li></ul><p>这会让我以后回头看时，我会知道自己当时的思考路径，这是非常有价值的。</p><hr><h2 id="1-项目概览"><a href="#1-项目概览" class="headerlink" title="1. 项目概览"></a>1. 项目概览</h2><p>这个项目属于：</p><ul><li>自托管工具</li><li>开发工具</li><li>基础设施</li></ul><p>项目定位：一款开源、安全、开箱即用的远程桌面软件，无需任何配置，让用户完全掌控数据。</p><p>Github：<a href="https://github.com/rustdesk/rustdesk">https://github.com/rustdesk/rustdesk</a></p><p>Star：68.3k+</p><p>License：AGPL-3.0</p><p>语言&#x2F;技术栈：</p><ul><li>Rust</li><li>Flutter</li><li>C++</li></ul><p>项目成熟度&#x2F;复杂度：</p><ul><li>生产可用</li><li>中等</li></ul><hr><h2 id="2-解决什么问题"><a href="#2-解决什么问题" class="headerlink" title="2. 解决什么问题"></a>2. 解决什么问题</h2><h3 id="2-1-这个领域原本怎么做"><a href="#2-1-这个领域原本怎么做" class="headerlink" title="2.1 这个领域原本怎么做"></a>2.1 这个领域原本怎么做</h3><p>传统的远程桌面工具要么需要复杂的配置，要么依赖第三方服务器，要么存在安全隐患。</p><h3 id="2-2-现有方案问题"><a href="#2-2-现有方案问题" class="headerlink" title="2.2 现有方案问题"></a>2.2 现有方案问题</h3><ul><li>TeamViewer：收费软件，依赖第三方服务器</li><li>AnyDesk：部分功能收费，同样依赖第三方服务器</li><li>VNC：配置复杂，安全性较差</li><li>RDP：仅支持Windows，需要端口转发</li></ul><h3 id="2-3-这个项目的思路"><a href="#2-3-这个项目的思路" class="headerlink" title="2.3 这个项目的思路"></a>2.3 这个项目的思路</h3><p>RustDesk 采用 P2P 连接方式，优先直接连接，仅在需要时使用中继服务器，同时提供自托管选项，确保数据安全和隐私保护。</p><hr><h2 id="3-架构分析"><a href="#3-架构分析" class="headerlink" title="3. 架构分析"></a>3. 架构分析</h2><h3 id="3-1-整体架构"><a href="#3-1-整体架构" class="headerlink" title="3.1 整体架构"></a>3.1 整体架构</h3><p>RustDesk 采用客户端-服务器架构，主要组件包括：</p><ul><li>客户端：跨平台桌面应用，支持 Windows、macOS、Linux、Android、iOS</li><li>中继服务器：当 P2P 连接失败时使用</li><li>ID 服务器：用于用户身份验证和连接建立</li></ul><h3 id="3-2-关键模块"><a href="#3-2-关键模块" class="headerlink" title="3.2 关键模块"></a>3.2 关键模块</h3><ul><li>屏幕捕获：不同平台的屏幕捕获实现</li><li>远程控制：鼠标、键盘事件的传输和处理</li><li>文件传输：支持在远程会话中传输文件</li><li>音频传输：支持远程音频</li><li>加密模块：确保通信安全</li><li>P2P 连接：实现直接点对点连接</li></ul><hr><h2 id="4-核心设计思想"><a href="#4-核心设计思想" class="headerlink" title="4. 核心设计思想"></a>4. 核心设计思想</h2><h3 id="4-1-技术选型分析"><a href="#4-1-技术选型分析" class="headerlink" title="4.1 技术选型分析"></a>4.1 技术选型分析</h3><p>为什么使用：</p><ul><li>Rust：提供内存安全和高性能</li><li>Flutter：实现跨平台客户端</li><li>C++：用于部分平台特定的功能实现</li></ul><h3 id="4-2-设计思想分析"><a href="#4-2-设计思想分析" class="headerlink" title="4.2 设计思想分析"></a>4.2 设计思想分析</h3><p>这个项目体现：</p><ul><li>安全优先：端到端加密，保护通信安全</li><li>去中心化：优先 P2P 连接，减少对中心化服务器的依赖</li><li>开箱即用：无需复杂配置，安装即可使用</li><li>跨平台：支持多种操作系统和设备</li></ul><hr><h2 id="5-功能分析"><a href="#5-功能分析" class="headerlink" title="5. 功能分析"></a>5. 功能分析</h2><h3 id="5-1-整体架构"><a href="#5-1-整体架构" class="headerlink" title="5.1 整体架构"></a>5.1 整体架构</h3><ul><li>客户端-服务器架构：客户端负责用户交互，服务器负责连接建立和中继</li><li>跨平台：支持 Windows、macOS、Linux、Android、iOS</li></ul><h3 id="5-2-核心模块"><a href="#5-2-核心模块" class="headerlink" title="5.2 核心模块"></a>5.2 核心模块</h3><ul><li>远程控制：实现鼠标和键盘的远程控制</li><li>屏幕共享：实时共享远程屏幕</li><li>文件传输：在远程会话中传输文件</li><li>音频传输：支持远程音频</li><li>多显示器支持：可以选择显示远程主机的多个显示器</li><li>自托管服务器：支持部署自己的 ID 和中继服务器</li></ul><h3 id="5-3-数据流分析"><a href="#5-3-数据流分析" class="headerlink" title="5.3 数据流分析"></a>5.3 数据流分析</h3><figure class="highlight"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs">用户发起连接<br> ↓<br>ID 服务器验证身份<br> ↓<br>尝试 P2P 连接<br> ↓<br>如果 P2P 失败，使用中继服务器<br> ↓<br>建立加密通信通道<br> ↓<br>远程控制和数据传输<br></code></pre></td></tr></table></figure><hr><h2 id="6-部署与体验"><a href="#6-部署与体验" class="headerlink" title="6. 部署与体验"></a>6. 部署与体验</h2><h3 id="6-1-部署难度"><a href="#6-1-部署难度" class="headerlink" title="6.1 部署难度"></a>6.1 部署难度</h3><ul><li>客户端：非常简单，直接下载安装即可</li><li>自托管服务器：中等，需要配置 ID 服务器和中继服务器</li></ul><h3 id="6-2-资源占用"><a href="#6-2-资源占用" class="headerlink" title="6.2 资源占用"></a>6.2 资源占用</h3><ul><li>客户端：轻量级，资源占用低</li><li>服务器：中等，取决于并发连接数</li></ul><h3 id="6-3-使用体验"><a href="#6-3-使用体验" class="headerlink" title="6.3 使用体验"></a>6.3 使用体验</h3><ul><li>界面简洁直观，操作简单</li><li>连接速度快，响应及时</li><li>画质清晰，支持不同分辨率</li><li>支持文件传输，使用方便</li><li>自托管选项提供更高的安全性</li></ul><hr><h2 id="7-类似项目对比"><a href="#7-类似项目对比" class="headerlink" title="7. 类似项目对比"></a>7. 类似项目对比</h2><table><thead><tr><th>项目</th><th>复杂度</th><th>技术栈</th><th>适用场景</th></tr></thead><tbody><tr><td>RustDesk</td><td>中等</td><td>Rust、Flutter</td><td>个人和企业远程支持，自托管需求</td></tr><tr><td>TeamViewer</td><td>复杂</td><td>未知</td><td>商业远程支持，跨平台需求</td></tr><tr><td>AnyDesk</td><td>中等</td><td>未知</td><td>商业远程支持，性能要求高</td></tr><tr><td>VNC</td><td>简单</td><td>多种语言</td><td>技术人员远程管理，局域网使用</td></tr><tr><td>RDP</td><td>中等</td><td>微软技术</td><td>Windows 环境远程管理</td></tr></tbody></table><hr><h2 id="8-优缺点分析"><a href="#8-优缺点分析" class="headerlink" title="8. 优缺点分析"></a>8. 优缺点分析</h2><p>优点：</p><ul><li>开源免费，可自托管</li><li>开箱即用，无需配置</li><li>跨平台支持</li><li>优先 P2P 连接，速度快</li><li>安全性高，端到端加密</li></ul><p>缺点：</p><ul><li>部分高级功能可能不如商业产品</li><li>自托管服务器需要一定技术知识</li><li>网络环境复杂时连接可能不稳定</li></ul><hr><h2 id="9-我的判断"><a href="#9-我的判断" class="headerlink" title="9. 我的判断"></a>9. 我的判断</h2><p>我认为：</p><p>这个项目：</p><ul><li>适合谁：需要远程桌面功能的个人用户，注重数据安全的企业，需要自托管解决方案的组织</li><li>不适合谁：对远程桌面功能有极高要求的专业用户，没有技术能力部署自托管服务器的用户</li><li>未来如何：有很大的发展潜力，社区活跃，功能不断完善，有望成为开源远程桌面的标准解决方案</li></ul><hr>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;span id=&quot;more&quot;&gt;&lt;/span&gt;

&lt;h2 id=&quot;0-为什么关注这个项目&quot;&gt;&lt;a href=&quot;#0-为什么关注这个项目&quot; class=&quot;headerlink&quot; title=&quot;0. 为什么关注这个项目&quot;&gt;&lt;/a&gt;0.</summary>
        
      
    
    
    
    <category term="开源项目" scheme="https://blog.doracoin.cc/categories/opensource/"/>
    
    
    <category term="开源" scheme="https://blog.doracoin.cc/tags/%E5%BC%80%E6%BA%90/"/>
    
  </entry>
  
  <entry>
    <title>学习搭建：开源聊天服务器</title>
    <link href="https://blog.doracoin.cc/posts/opensource/1362.html"/>
    <id>https://blog.doracoin.cc/posts/opensource/1362.html</id>
    <published>2026-03-26T05:31:39.000Z</published>
    <updated>2026-03-31T16:37:02.644Z</updated>
    
    <content type="html"><![CDATA[<span id="more"></span><h2 id="0-为什么关注这个项目"><a href="#0-为什么关注这个项目" class="headerlink" title="0. 为什么关注这个项目"></a>0. 为什么关注这个项目</h2><p>这一段是：<strong>认知记录</strong></p><ul><li>我在寻找一款可以自托管的聊天服务器，以保护团队通信隐私</li><li>我需要一个替代商业聊天工具的开源解决方案</li><li>我希望了解不同开源聊天服务器的特点和适用场景</li></ul><p>这会让我以后回头看时，我会知道自己当时的思考路径，这是非常有价值的。</p><hr><h2 id="1-项目概览"><a href="#1-项目概览" class="headerlink" title="1. 项目概览"></a>1. 项目概览</h2><p>这个项目属于：</p><ul><li>自托管工具</li><li>基础设施</li></ul><p>项目定位：开源聊天服务器是一类允许用户完全掌控数据和通信的团队协作工具，提供类似商业聊天软件的功能，但具有更高的隐私性和可定制性。</p><p>主要开源聊天服务器项目：</p><ul><li>Matrix：去中心化通信协议和网络</li><li>Rocket.Chat：功能丰富的团队协作平台</li><li>Mattermost：企业级开源团队协作平台</li><li>Letschat：轻量级开源聊天应用</li><li>Jitsi：开源视频会议解决方案</li><li>Jami：去中心化通信平台</li><li>Signal：注重隐私的加密通信应用</li><li>Chatwoot：开源客户支持平台</li></ul><hr><h2 id="2-解决什么问题"><a href="#2-解决什么问题" class="headerlink" title="2. 解决什么问题"></a>2. 解决什么问题</h2><h3 id="2-1-这个领域原本怎么做"><a href="#2-1-这个领域原本怎么做" class="headerlink" title="2.1 这个领域原本怎么做"></a>2.1 这个领域原本怎么做</h3><p>传统的团队通信主要依赖商业聊天软件如 Slack、Microsoft Teams 等，这些服务通常需要付费订阅，且数据存储在第三方服务器上。</p><h3 id="2-2-现有方案问题"><a href="#2-2-现有方案问题" class="headerlink" title="2.2 现有方案问题"></a>2.2 现有方案问题</h3><ul><li>数据隐私：商业服务的数据存储在第三方服务器，存在隐私泄露风险</li><li>成本：商业服务通常需要按用户付费，对于大型团队来说成本较高</li><li>定制性：商业服务的功能和集成选项有限</li><li>控制权：用户对服务的运行和数据没有完全控制权</li></ul><h3 id="2-3-这些项目的思路"><a href="#2-3-这些项目的思路" class="headerlink" title="2.3 这些项目的思路"></a>2.3 这些项目的思路</h3><p>开源聊天服务器通过自托管方式，让用户完全掌控数据和服务，同时提供丰富的协作功能，满足不同团队的需求。</p><hr><h2 id="3-架构分析"><a href="#3-架构分析" class="headerlink" title="3. 架构分析"></a>3. 架构分析</h2><h3 id="3-1-整体架构"><a href="#3-1-整体架构" class="headerlink" title="3.1 整体架构"></a>3.1 整体架构</h3><p>以 Matrix 为例，其架构包括：</p><ul><li>homeserver：用户数据存储和消息处理</li><li>客户端：多种平台的客户端应用</li><li>联邦网络：不同 homeserver 之间通过协议通信</li></ul><p>以 Rocket.Chat 为例，其架构包括：</p><ul><li>服务器端：基于 Node.js 的后端服务</li><li>数据库：支持 MongoDB</li><li>客户端：Web、移动应用和桌面应用</li></ul><h3 id="3-2-关键模块"><a href="#3-2-关键模块" class="headerlink" title="3.2 关键模块"></a>3.2 关键模块</h3><ul><li>消息传递系统：处理实时消息和历史消息</li><li>用户认证：支持多种认证方式</li><li>群组管理：创建和管理聊天群组</li><li>文件共享：支持文件上传和共享</li><li>集成系统：与其他工具和服务集成</li></ul><hr><h2 id="4-核心设计思想"><a href="#4-核心设计思想" class="headerlink" title="4. 核心设计思想"></a>4. 核心设计思想</h2><h3 id="4-1-技术选型分析"><a href="#4-1-技术选型分析" class="headerlink" title="4.1 技术选型分析"></a>4.1 技术选型分析</h3><p>各项目技术栈：</p><ul><li>Matrix：Python、JavaScript</li><li>Rocket.Chat：Node.js、MongoDB、JavaScript</li><li>Mattermost：Go、React、PostgreSQL&#x2F;MySQL</li><li>Letschat：Node.js、MongoDB</li><li>Jitsi：Java、JavaScript</li><li>Jami：C++</li><li>Signal：TypeScript、Rust</li><li>Chatwoot：Ruby on Rails、React</li></ul><h3 id="4-2-设计思想分析"><a href="#4-2-设计思想分析" class="headerlink" title="4.2 设计思想分析"></a>4.2 设计思想分析</h3><p>这些项目体现：</p><ul><li>去中心化：如 Matrix 和 Jami，不依赖中心化服务器</li><li>隐私优先：如 Signal，强调端到端加密</li><li>可扩展性：支持插件和集成</li><li>跨平台：提供多种客户端</li></ul><hr><h2 id="5-功能分析"><a href="#5-功能分析" class="headerlink" title="5. 功能分析"></a>5. 功能分析</h2><h3 id="5-1-整体架构"><a href="#5-1-整体架构" class="headerlink" title="5.1 整体架构"></a>5.1 整体架构</h3><ul><li>前后端分离：大多数项目采用前后端分离架构</li><li>客户端多样化：提供 Web、移动和桌面客户端</li><li>API 驱动：通过 API 实现客户端与服务器的通信</li></ul><h3 id="5-2-核心模块"><a href="#5-2-核心模块" class="headerlink" title="5.2 核心模块"></a>5.2 核心模块</h3><ul><li>实时消息：支持文本、表情、图片等多种消息类型</li><li>视频&#x2F;语音通话：部分项目支持实时通话</li><li>群组管理：支持创建不同类型的聊天群组</li><li>文件共享：支持文件上传和管理</li><li>集成系统：与 CI&#x2F;CD、监控等工具集成</li><li>安全特性：端到端加密、权限控制</li></ul><h3 id="5-3-数据流分析"><a href="#5-3-数据流分析" class="headerlink" title="5.3 数据流分析"></a>5.3 数据流分析</h3><figure class="highlight"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs">用户消息<br> ↓<br>客户端处理<br> ↓<br>服务器验证和存储<br> ↓<br>分发给其他用户<br> ↓<br>客户端渲染<br></code></pre></td></tr></table></figure><hr><h2 id="6-部署与体验"><a href="#6-部署与体验" class="headerlink" title="6. 部署与体验"></a>6. 部署与体验</h2><h3 id="6-1-部署难度"><a href="#6-1-部署难度" class="headerlink" title="6.1 部署难度"></a>6.1 部署难度</h3><ul><li>Matrix：中等，需要配置 homeserver 和域名</li><li>Rocket.Chat：中等，支持 Docker 部署</li><li>Mattermost：中等，支持多种部署方式</li><li>Letschat：简单，轻量级部署</li><li>Jitsi：中等，需要配置服务器和域名</li><li>Signal：复杂，需要较多的服务器资源</li><li>Chatwoot：中等，支持 Docker 部署</li></ul><h3 id="6-2-资源占用"><a href="#6-2-资源占用" class="headerlink" title="6.2 资源占用"></a>6.2 资源占用</h3><ul><li>Matrix：中等，取决于用户数量和消息量</li><li>Rocket.Chat：中等，需要较多的内存</li><li>Mattermost：中等，资源占用合理</li><li>Letschat：低，轻量级</li><li>Jitsi：高，视频通话需要较多资源</li><li>Signal：高，需要专用服务器</li><li>Chatwoot：中等，取决于用户数量</li></ul><h3 id="6-3-使用体验"><a href="#6-3-使用体验" class="headerlink" title="6.3 使用体验"></a>6.3 使用体验</h3><ul><li>Matrix：功能丰富，去中心化特性突出</li><li>Rocket.Chat：界面友好，功能全面</li><li>Mattermost：类似 Slack，企业级体验</li><li>Letschat：简单直观，适合小型团队</li><li>Jitsi：视频通话质量好，易于使用</li><li>Signal：注重隐私，安全性高</li><li>Chatwoot：专注于客户支持，功能针对性强</li></ul><hr><h2 id="7-类似项目对比"><a href="#7-类似项目对比" class="headerlink" title="7. 类似项目对比"></a>7. 类似项目对比</h2><table><thead><tr><th>项目</th><th>复杂度</th><th>技术栈</th><th>适用场景</th></tr></thead><tbody><tr><td>Matrix</td><td>复杂</td><td>Python、JavaScript</td><td>去中心化通信，注重隐私</td></tr><tr><td>Rocket.Chat</td><td>中等</td><td>Node.js、MongoDB</td><td>企业级团队协作</td></tr><tr><td>Mattermost</td><td>中等</td><td>Go、React</td><td>类似 Slack 的团队通信</td></tr><tr><td>Letschat</td><td>简单</td><td>Node.js、MongoDB</td><td>小型团队，轻量级需求</td></tr><tr><td>Jitsi</td><td>中等</td><td>Java、JavaScript</td><td>视频会议为主</td></tr><tr><td>Jami</td><td>复杂</td><td>C++</td><td>完全去中心化通信</td></tr><tr><td>Signal</td><td>复杂</td><td>TypeScript、Rust</td><td>注重隐私的个人通信</td></tr><tr><td>Chatwoot</td><td>中等</td><td>Ruby on Rails、React</td><td>客户支持和服务</td></tr></tbody></table><hr><h2 id="8-优缺点分析"><a href="#8-优缺点分析" class="headerlink" title="8. 优缺点分析"></a>8. 优缺点分析</h2><p>优点：</p><ul><li>数据隐私：完全掌控数据，避免第三方存储</li><li>成本节约：开源免费，只需服务器成本</li><li>定制性：可根据需求定制和扩展</li><li>安全性：可自行加强安全措施</li><li>无 vendor lock-in：不依赖特定供应商</li></ul><p>缺点：</p><ul><li>部署维护：需要技术人员进行部署和维护</li><li>功能丰富度：部分开源项目功能可能不如商业产品</li><li>集成生态：与其他服务的集成可能有限</li><li>升级管理：需要自行处理版本升级</li><li>技术支持：缺乏商业级技术支持</li></ul><hr><h2 id="9-我的判断"><a href="#9-我的判断" class="headerlink" title="9. 我的判断"></a>9. 我的判断</h2><p>我认为：</p><p>这些开源聊天服务器：</p><ul><li>适合谁：注重数据隐私的企业和团队，有技术能力进行部署和维护的组织，需要定制化通信解决方案的用户</li><li>不适合谁：对技术要求较低，希望即开即用的团队，对集成和支持有高要求的企业</li><li>未来如何：随着隐私意识的提高，开源聊天服务器的需求会持续增长，技术也会不断成熟，功能会更加丰富，有望成为企业通信的重要选择</li></ul><hr>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;span id=&quot;more&quot;&gt;&lt;/span&gt;

&lt;h2 id=&quot;0-为什么关注这个项目&quot;&gt;&lt;a href=&quot;#0-为什么关注这个项目&quot; class=&quot;headerlink&quot; title=&quot;0. 为什么关注这个项目&quot;&gt;&lt;/a&gt;0.</summary>
        
      
    
    
    
    <category term="开源项目" scheme="https://blog.doracoin.cc/categories/opensource/"/>
    
    
    <category term="开源" scheme="https://blog.doracoin.cc/tags/%E5%BC%80%E6%BA%90/"/>
    
  </entry>
  
  <entry>
    <title>学习搭建：在线白板画图服务---Excalidraw</title>
    <link href="https://blog.doracoin.cc/posts/opensource/20886.html"/>
    <id>https://blog.doracoin.cc/posts/opensource/20886.html</id>
    <published>2026-03-26T04:32:29.000Z</published>
    <updated>2026-03-31T16:37:02.644Z</updated>
    
    <content type="html"><![CDATA[<span id="more"></span><h2 id="0-为什么关注这个项目"><a href="#0-为什么关注这个项目" class="headerlink" title="0. 为什么关注这个项目"></a>0. 为什么关注这个项目</h2><p>这一段是：<strong>认知记录</strong></p><ul><li>我在寻找一款轻量级、功能强大的在线白板工具</li><li>我需要一个支持协作的绘图工具，用于团队头脑风暴和技术方案讨论</li><li>我希望找到一个可以自托管的开源白板解决方案</li></ul><p>这会让我以后回头看时，我会知道自己当时的思考路径，这是非常有价值的。</p><hr><h2 id="1-项目概览"><a href="#1-项目概览" class="headerlink" title="1. 项目概览"></a>1. 项目概览</h2><p>这个项目属于：</p><ul><li>自托管工具</li><li>开发工具</li><li>UI组件</li></ul><p>项目定位：一款轻量级、开源的在线白板绘图工具，专注于手绘风格的图表和协作编辑。</p><p>Github：<a href="https://github.com/excalidraw/excalidraw">https://github.com/excalidraw/excalidraw</a></p><p>Star：70.5k+</p><p>License：MIT</p><p>语言&#x2F;技术栈：</p><ul><li>TypeScript</li><li>React</li><li>Canvas API</li><li>WebAssembly</li></ul><p>项目成熟度&#x2F;复杂度：</p><ul><li>生产可用</li><li>中等</li></ul><hr><h2 id="2-解决什么问题"><a href="#2-解决什么问题" class="headerlink" title="2. 解决什么问题"></a>2. 解决什么问题</h2><h3 id="2-1-这个领域原本怎么做"><a href="#2-1-这个领域原本怎么做" class="headerlink" title="2.1 这个领域原本怎么做"></a>2.1 这个领域原本怎么做</h3><p>传统的在线白板工具要么功能过于复杂，要么需要付费使用，要么缺乏协作功能。</p><h3 id="2-2-现有方案问题"><a href="#2-2-现有方案问题" class="headerlink" title="2.2 现有方案问题"></a>2.2 现有方案问题</h3><ul><li>大多数在线白板工具需要付费订阅</li><li>部分工具功能过于臃肿，学习成本高</li><li>数据隐私问题，用户数据存储在第三方服务器</li><li>协作功能有限，实时编辑体验不佳</li></ul><h3 id="2-3-这个项目的思路"><a href="#2-3-这个项目的思路" class="headerlink" title="2.3 这个项目的思路"></a>2.3 这个项目的思路</h3><p>Excalidraw 采用纯前端实现，数据默认存储在本地，支持导出和导入，同时提供自托管选项，确保数据隐私。其手绘风格的界面简洁直观，专注于核心绘图功能。</p><hr><h2 id="3-架构分析"><a href="#3-架构分析" class="headerlink" title="3. 架构分析"></a>3. 架构分析</h2><h3 id="3-1-整体架构"><a href="#3-1-整体架构" class="headerlink" title="3.1 整体架构"></a>3.1 整体架构</h3><p>Excalidraw 采用纯前端架构，主要由以下部分组成：</p><ul><li>核心绘图引擎：基于 Canvas API 实现手绘效果</li><li>状态管理：使用 React 状态管理和自定义 hooks</li><li>协作功能：通过 WebSocket 实现实时协作</li><li>数据存储：支持本地存储、导出为 JSON 或图片</li></ul><h3 id="3-2-关键模块"><a href="#3-2-关键模块" class="headerlink" title="3.2 关键模块"></a>3.2 关键模块</h3><ul><li>绘图核心：处理画布渲染、图形操作和交互</li><li>协作系统：处理多用户实时编辑和冲突解决</li><li>导出功能：支持多种格式导出（PNG、SVG、JSON）</li><li>插件系统：允许扩展功能，如数学公式、图表等</li></ul><hr><h2 id="4-核心设计思想"><a href="#4-核心设计思想" class="headerlink" title="4. 核心设计思想"></a>4. 核心设计思想</h2><h3 id="4-1-技术选型分析"><a href="#4-1-技术选型分析" class="headerlink" title="4.1 技术选型分析"></a>4.1 技术选型分析</h3><p>为什么使用：</p><ul><li>TypeScript：提供类型安全，减少运行时错误</li><li>React：组件化开发，状态管理清晰</li><li>Canvas API：实现高性能的手绘效果</li><li>WebAssembly：用于复杂计算，提升性能</li></ul><h3 id="4-2-设计思想分析"><a href="#4-2-设计思想分析" class="headerlink" title="4.2 设计思想分析"></a>4.2 设计思想分析</h3><p>这个项目体现：</p><ul><li>轻量化：纯前端实现，无需后端服务</li><li>去中心化：数据默认存储在本地，用户完全掌控</li><li>可扩展性：插件系统允许功能扩展</li><li>用户体验优先：简洁直观的界面设计</li></ul><hr><h2 id="5-功能分析"><a href="#5-功能分析" class="headerlink" title="5. 功能分析"></a>5. 功能分析</h2><h3 id="5-1-整体架构"><a href="#5-1-整体架构" class="headerlink" title="5.1 整体架构"></a>5.1 整体架构</h3><ul><li>纯前端：所有功能在浏览器中运行，无需后端服务</li><li>前后端分离：可选的后端服务用于协作功能</li></ul><h3 id="5-2-核心模块"><a href="#5-2-核心模块" class="headerlink" title="5.2 核心模块"></a>5.2 核心模块</h3><ul><li>绘图工具：支持多种图形、箭头、文本等</li><li>协作系统：实时多人编辑</li><li>导出功能：支持 PNG、SVG、JSON 等格式</li><li>插件系统：支持数学公式、图表等扩展</li><li>主题系统：支持明暗主题切换</li></ul><h3 id="5-3-数据流分析"><a href="#5-3-数据流分析" class="headerlink" title="5.3 数据流分析"></a>5.3 数据流分析</h3><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs css">用户操作<br> ↓<br>前端状态更新<br> ↓<br><span class="hljs-selector-tag">Canvas</span> 渲染<br> ↓<br>本地存储/导出<br></code></pre></td></tr></table></figure><hr><h2 id="6-部署与体验"><a href="#6-部署与体验" class="headerlink" title="6. 部署与体验"></a>6. 部署与体验</h2><h3 id="6-1-部署难度"><a href="#6-1-部署难度" class="headerlink" title="6.1 部署难度"></a>6.1 部署难度</h3><ul><li>纯前端部署：非常简单，只需托管静态文件</li><li>协作功能部署：需要配置 WebSocket 服务器</li></ul><h3 id="6-2-资源占用"><a href="#6-2-资源占用" class="headerlink" title="6.2 资源占用"></a>6.2 资源占用</h3><ul><li>前端资源：轻量级，加载速度快</li><li>运行时：内存占用低，适合低配置设备</li></ul><h3 id="6-3-使用体验"><a href="#6-3-使用体验" class="headerlink" title="6.3 使用体验"></a>6.3 使用体验</h3><ul><li>界面简洁直观，学习成本低</li><li>手绘风格独特，视觉效果好</li><li>协作功能流畅，支持实时编辑</li><li>响应速度快，操作流畅</li></ul><hr><h2 id="7-类似项目对比"><a href="#7-类似项目对比" class="headerlink" title="7. 类似项目对比"></a>7. 类似项目对比</h2><table><thead><tr><th>项目</th><th>复杂度</th><th>技术栈</th><th>适用场景</th></tr></thead><tbody><tr><td>Excalidraw</td><td>中等</td><td>TypeScript, React</td><td>轻量级协作绘图，技术方案讨论</td></tr><tr><td>Miro</td><td>复杂</td><td>未知</td><td>企业级协作，功能丰富</td></tr><tr><td>Figma</td><td>复杂</td><td>未知</td><td>专业设计，原型制作</td></tr><tr><td>Draw.io</td><td>中等</td><td>JavaScript</td><td>流程图绘制，专业图表</td></tr></tbody></table><hr><h2 id="8-优缺点分析"><a href="#8-优缺点分析" class="headerlink" title="8. 优缺点分析"></a>8. 优缺点分析</h2><p>优点：</p><ul><li>轻量级，加载速度快</li><li>开源免费，支持自托管</li><li>手绘风格独特，视觉效果好</li><li>支持实时协作</li><li>数据隐私保护</li></ul><p>缺点：</p><ul><li>高级功能相对较少</li><li>协作功能需要额外部署</li><li>移动端体验有待改进</li></ul><hr><h2 id="9-我的判断"><a href="#9-我的判断" class="headerlink" title="9. 我的判断"></a>9. 我的判断</h2><p>我认为：</p><p>这个项目：</p><ul><li>适合谁：需要轻量级协作绘图工具的团队，技术人员，教育工作者</li><li>不适合谁：需要专业设计功能的设计师，需要复杂图表的业务分析师</li><li>未来如何：有很大的发展潜力，社区活跃，功能不断完善，有望成为开源协作绘图的标准工具</li></ul><hr>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;span id=&quot;more&quot;&gt;&lt;/span&gt;

&lt;h2 id=&quot;0-为什么关注这个项目&quot;&gt;&lt;a href=&quot;#0-为什么关注这个项目&quot; class=&quot;headerlink&quot; title=&quot;0. 为什么关注这个项目&quot;&gt;&lt;/a&gt;0.</summary>
        
      
    
    
    
    <category term="开源项目" scheme="https://blog.doracoin.cc/categories/opensource/"/>
    
    
    <category term="开源" scheme="https://blog.doracoin.cc/tags/%E5%BC%80%E6%BA%90/"/>
    
  </entry>
  
  <entry>
    <title>学习搭建：自托管评论系统-Artalk</title>
    <link href="https://blog.doracoin.cc/posts/opensource/64098.html"/>
    <id>https://blog.doracoin.cc/posts/opensource/64098.html</id>
    <published>2026-03-26T04:29:14.000Z</published>
    <updated>2026-03-31T16:37:02.644Z</updated>
    
    <content type="html"><![CDATA[<span id="more"></span><h2 id="0-为什么关注这个项目"><a href="#0-为什么关注这个项目" class="headerlink" title="0. 为什么关注这个项目"></a>0. 为什么关注这个项目</h2><p>这一段是：<strong>认知记录</strong></p><ul><li>我在寻找自托管的评论系统</li><li>我需要一个轻量级、易于集成的评论工具</li><li>我想了解如何搭建和使用 Artalk 作为网站评论系统</li></ul><p>这会让我以后回头看时，我会知道自己当时的思考路径，这是非常有价值的。</p><hr><h2 id="1-项目概览"><a href="#1-项目概览" class="headerlink" title="1. 项目概览"></a>1. 项目概览</h2><p>这个项目属于：</p><ul><li>自托管工具</li><li>开发工具</li><li>UI组件</li></ul><p>项目定位：轻量级、自托管的评论系统，支持多种平台集成</p><p>Github：<a href="https://github.com/ArtalkJS/Artalk">https://github.com/ArtalkJS/Artalk</a></p><p>Star：约 2k+（截至 2026 年）</p><p>License：MIT License</p><p>语言&#x2F;技术栈：TypeScript、Vue.js</p><p>项目成熟度&#x2F;复杂度：</p><ul><li>生产可用</li><li>中等</li><li>极简</li></ul><hr><h2 id="2-解决什么问题"><a href="#2-解决什么问题" class="headerlink" title="2. 解决什么问题"></a>2. 解决什么问题</h2><h3 id="2-1-这个领域原本怎么做"><a href="#2-1-这个领域原本怎么做" class="headerlink" title="2.1 这个领域原本怎么做"></a>2.1 这个领域原本怎么做</h3><p>在 Artalk 出现之前，网站评论主要使用第三方评论服务（如 Disqus、多说等），或者使用内置的评论功能。</p><h3 id="2-2-现有方案问题"><a href="#2-2-现有方案问题" class="headerlink" title="2.2 现有方案问题"></a>2.2 现有方案问题</h3><ul><li>第三方服务：可能存在数据隐私和安全问题，且依赖外部服务</li><li>内置评论：功能有限，集成复杂</li><li>缺乏个性化定制能力</li><li>难以与现有网站无缝集成</li></ul><h3 id="2-3-这个项目的思路"><a href="#2-3-这个项目的思路" class="headerlink" title="2.3 这个项目的思路"></a>2.3 这个项目的思路</h3><p>Artalk 提供了一个自托管的评论系统，支持多种平台集成，提供丰富的定制选项，同时注重用户隐私和数据安全。</p><hr><h2 id="3-架构分析"><a href="#3-架构分析" class="headerlink" title="3. 架构分析"></a>3. 架构分析</h2><h3 id="3-1-整体架构"><a href="#3-1-整体架构" class="headerlink" title="3.1 整体架构"></a>3.1 整体架构</h3><p>Artalk 采用前后端分离的架构设计：</p><ul><li>后端：基于 TypeScript 构建的服务器，处理评论的存储和管理</li><li>前端：基于 Vue.js 构建的评论组件，嵌入到网站中</li><li>数据库：支持 SQLite、MySQL、PostgreSQL</li><li>存储：支持本地存储或对象存储</li></ul><h3 id="3-2-关键模块"><a href="#3-2-关键模块" class="headerlink" title="3.2 关键模块"></a>3.2 关键模块</h3><ul><li>评论管理：处理评论的创建、编辑、删除</li><li>用户管理：处理用户认证和权限</li><li>数据存储：管理评论数据的存储和检索</li><li>前端组件：提供嵌入到网站的评论组件</li><li>管理界面：提供评论管理的后台界面</li></ul><hr><h2 id="4-核心设计思想"><a href="#4-核心设计思想" class="headerlink" title="4. 核心设计思想"></a>4. 核心设计思想</h2><h3 id="4-1-技术选型分析"><a href="#4-1-技术选型分析" class="headerlink" title="4.1 技术选型分析"></a>4.1 技术选型分析</h3><p>为什么使用 TypeScript：</p><ul><li>TypeScript 提供类型安全，减少错误</li><li>TypeScript 生态成熟，适合构建前后端应用</li><li>TypeScript 代码可维护性高</li></ul><p>为什么使用 Vue.js：</p><ul><li>Vue.js 轻量，适合构建嵌入组件</li><li>Vue.js 响应式设计，提供良好的用户体验</li><li>Vue.js 生态丰富，有大量组件可供使用</li></ul><h3 id="4-2-设计思想分析"><a href="#4-2-设计思想分析" class="headerlink" title="4.2 设计思想分析"></a>4.2 设计思想分析</h3><p>这个项目体现：</p><ul><li>轻量化：部署简单，资源占用少</li><li>自托管：数据完全控制在自己手中</li><li>灵活性：支持多种平台集成和定制</li><li>易用性：提供简单的嵌入方式</li></ul><hr><h2 id="5-功能分析"><a href="#5-功能分析" class="headerlink" title="5. 功能分析"></a>5. 功能分析</h2><h3 id="5-1-整体架构"><a href="#5-1-整体架构" class="headerlink" title="5.1 整体架构"></a>5.1 整体架构</h3><ul><li>前后端分离：前端使用 Vue.js，后端使用 TypeScript</li></ul><h3 id="5-2-核心模块"><a href="#5-2-核心模块" class="headerlink" title="5.2 核心模块"></a>5.2 核心模块</h3><ul><li>评论功能：支持评论的创建、回复、编辑、删除</li><li>用户系统：支持匿名评论和注册用户</li><li>管理后台：管理评论和用户</li><li>集成方案：支持多种平台，如 Hexo、Hugo、WordPress 等</li><li>定制选项：支持主题定制、配置调整</li><li>安全防护：支持评论审核、反垃圾评论</li></ul><h3 id="5-3-数据流分析"><a href="#5-3-数据流分析" class="headerlink" title="5.3 数据流分析"></a>5.3 数据流分析</h3><figure class="highlight"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs">用户请求<br> ↓<br>前端评论组件<br> ↓<br>后端 API<br> ↓<br>数据库<br> ↓<br>返回结果<br> ↓<br>前端展示<br></code></pre></td></tr></table></figure><hr><h2 id="6-部署与体验"><a href="#6-部署与体验" class="headerlink" title="6. 部署与体验"></a>6. 部署与体验</h2><h3 id="6-1-部署难度"><a href="#6-1-部署难度" class="headerlink" title="6.1 部署难度"></a>6.1 部署难度</h3><ul><li>低：支持多种部署方式，包括 Docker、二进制文件等</li><li>配置简单：只需设置数据库和基本参数</li><li>提供详细的部署文档</li></ul><h3 id="6-2-资源占用"><a href="#6-2-资源占用" class="headerlink" title="6.2 资源占用"></a>6.2 资源占用</h3><ul><li>低：资源占用小，适合部署在各种环境</li><li>可根据使用情况调整资源配置</li></ul><h3 id="6-3-使用体验"><a href="#6-3-使用体验" class="headerlink" title="6.3 使用体验"></a>6.3 使用体验</h3><ul><li>界面美观，操作流畅</li><li>功能完整，满足评论系统需求</li><li>响应速度快，用户体验良好</li><li>易于集成到各种网站</li></ul><h3 id="6-4-搭建步骤"><a href="#6-4-搭建步骤" class="headerlink" title="6.4 搭建步骤"></a>6.4 搭建步骤</h3><ol><li><strong>下载安装</strong>：从官网下载对应平台的二进制文件或使用 Docker</li><li><strong>配置</strong>：设置数据库和基本参数</li><li><strong>启动服务</strong>：运行 Artalk 服务</li><li><strong>集成到网站</strong>：在网站中嵌入评论组件</li><li><strong>配置评论</strong>：根据需要调整评论系统设置</li><li><strong>管理评论</strong>：使用管理后台管理评论和用户</li></ol><hr><h2 id="7-类似项目对比"><a href="#7-类似项目对比" class="headerlink" title="7. 类似项目对比"></a>7. 类似项目对比</h2><table><thead><tr><th>项目</th><th>复杂度</th><th>技术栈</th><th>适用场景</th></tr></thead><tbody><tr><td>Artalk</td><td>低</td><td>TypeScript、Vue.js</td><td>轻量级自托管评论系统</td></tr><tr><td>Disqus</td><td>低</td><td>商业服务</td><td>第三方评论服务</td></tr><tr><td>Isso</td><td>低</td><td>Python</td><td>自托管评论系统</td></tr><tr><td>Utterances</td><td>低</td><td>JavaScript</td><td>基于 GitHub Issues 的评论系统</td></tr></tbody></table><hr><h2 id="8-优缺点分析"><a href="#8-优缺点分析" class="headerlink" title="8. 优缺点分析"></a>8. 优缺点分析</h2><p>优点：</p><ul><li>轻量：部署简单，资源占用少</li><li>自托管：数据完全控制在自己手中</li><li>灵活：支持多种平台集成和定制</li><li>易用：提供简单的嵌入方式</li><li>开源免费：代码开放，无使用限制</li></ul><p>缺点：</p><ul><li>社区相对较小：用户和贡献者较少</li><li>功能相对简单：缺乏高级特性</li><li>集成文档可能不够完善</li></ul><hr><h2 id="9-我的判断"><a href="#9-我的判断" class="headerlink" title="9. 我的判断"></a>9. 我的判断</h2><p>我认为：</p><p>这个项目：</p><ul><li>适合谁：需要自托管评论系统的网站所有者，尤其是个人博客和小型网站</li><li>不适合谁：需要高级评论功能的大型网站</li><li>未来如何：作为轻量级自托管评论系统的优秀代表，Artalk 有很大的发展潜力，可能会通过社区贡献不断完善功能，成为个人网站和小型网站的首选评论解决方案</li></ul><hr>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;span id=&quot;more&quot;&gt;&lt;/span&gt;

&lt;h2 id=&quot;0-为什么关注这个项目&quot;&gt;&lt;a href=&quot;#0-为什么关注这个项目&quot; class=&quot;headerlink&quot; title=&quot;0. 为什么关注这个项目&quot;&gt;&lt;/a&gt;0.</summary>
        
      
    
    
    
    <category term="开源项目" scheme="https://blog.doracoin.cc/categories/opensource/"/>
    
    
    <category term="开源" scheme="https://blog.doracoin.cc/tags/%E5%BC%80%E6%BA%90/"/>
    
  </entry>
  
  <entry>
    <title>学习搭建：Bark-Server-自定义通知推送工具</title>
    <link href="https://blog.doracoin.cc/posts/opensource/42476.html"/>
    <id>https://blog.doracoin.cc/posts/opensource/42476.html</id>
    <published>2026-03-26T04:28:06.000Z</published>
    <updated>2026-03-31T16:37:02.644Z</updated>
    
    <content type="html"><![CDATA[<span id="more"></span><h2 id="0-为什么关注这个项目"><a href="#0-为什么关注这个项目" class="headerlink" title="0. 为什么关注这个项目"></a>0. 为什么关注这个项目</h2><p>这一段是：<strong>认知记录</strong></p><ul><li>我在寻找注重隐私的通知推送工具</li><li>我需要一个自托管的通知推送服务</li><li>我想了解如何搭建和使用 Bark-Server 作为自定义通知推送工具</li></ul><p>这会让我以后回头看时，我会知道自己当时的思考路径，这是非常有价值的。</p><hr><h2 id="1-项目概览"><a href="#1-项目概览" class="headerlink" title="1. 项目概览"></a>1. 项目概览</h2><p>这个项目属于：</p><ul><li>自托管工具</li><li>开发工具</li></ul><p>项目定位：注重隐私、安全可控的自定义通知推送工具</p><p>Github：<a href="https://github.com/Finb/bark-server">https://github.com/Finb/bark-server</a></p><p>Star：约 3k+（截至 2026 年）</p><p>License：MIT License</p><p>语言&#x2F;技术栈：Go</p><p>项目成熟度&#x2F;复杂度：</p><ul><li>生产可用</li><li>极简</li><li>低</li></ul><hr><h2 id="2-解决什么问题"><a href="#2-解决什么问题" class="headerlink" title="2. 解决什么问题"></a>2. 解决什么问题</h2><h3 id="2-1-这个领域原本怎么做"><a href="#2-1-这个领域原本怎么做" class="headerlink" title="2.1 这个领域原本怎么做"></a>2.1 这个领域原本怎么做</h3><p>在 Bark-Server 出现之前，通知推送主要依赖第三方服务（如 Apple Push Notification Service、Google Cloud Messaging 等），或者使用邮件、短信等方式。</p><h3 id="2-2-现有方案问题"><a href="#2-2-现有方案问题" class="headerlink" title="2.2 现有方案问题"></a>2.2 现有方案问题</h3><ul><li>第三方服务：可能存在数据隐私和安全问题</li><li>邮件&#x2F;短信：实时性差，成本高</li><li>缺乏自定义通知的灵活性</li><li>难以集成到自有的应用和系统中</li></ul><h3 id="2-3-这个项目的思路"><a href="#2-3-这个项目的思路" class="headerlink" title="2.3 这个项目的思路"></a>2.3 这个项目的思路</h3><p>Bark-Server 提供了一个自托管的通知推送服务，支持自定义通知内容，注重隐私和安全，同时提供简单易用的 API 接口，便于集成到各种应用和系统中。</p><hr><h2 id="3-架构分析"><a href="#3-架构分析" class="headerlink" title="3. 架构分析"></a>3. 架构分析</h2><h3 id="3-1-整体架构"><a href="#3-1-整体架构" class="headerlink" title="3.1 整体架构"></a>3.1 整体架构</h3><p>Bark-Server 采用简洁的架构设计：</p><ul><li>服务器：基于 Go 语言开发的 HTTP 服务器</li><li>存储：支持本地存储或 SQLite 数据库</li><li>API：提供 RESTful API 接口</li><li>推送服务：集成 Apple Push Notification Service</li></ul><h3 id="3-2-关键模块"><a href="#3-2-关键模块" class="headerlink" title="3.2 关键模块"></a>3.2 关键模块</h3><ul><li>通知处理：处理和存储通知</li><li>API 服务：提供 REST API 接口</li><li>推送服务：将通知推送到设备</li><li>设备管理：管理设备令牌</li></ul><hr><h2 id="4-核心设计思想"><a href="#4-核心设计思想" class="headerlink" title="4. 核心设计思想"></a>4. 核心设计思想</h2><h3 id="4-1-技术选型分析"><a href="#4-1-技术选型分析" class="headerlink" title="4.1 技术选型分析"></a>4.1 技术选型分析</h3><p>为什么使用 Go：</p><ul><li>Go 语言性能优异，适合高并发服务</li><li>Go 语言编译为静态二进制文件，部署简单</li><li>Go 语言生态成熟，适合构建网络服务</li></ul><h3 id="4-2-设计思想分析"><a href="#4-2-设计思想分析" class="headerlink" title="4.2 设计思想分析"></a>4.2 设计思想分析</h3><p>这个项目体现：</p><ul><li>轻量化：部署简单，资源占用少</li><li>隐私保护：数据完全控制在自己手中</li><li>灵活性：支持自定义通知内容和格式</li><li>易用性：提供简单的 API 接口</li></ul><hr><h2 id="5-功能分析"><a href="#5-功能分析" class="headerlink" title="5. 功能分析"></a>5. 功能分析</h2><h3 id="5-1-整体架构"><a href="#5-1-整体架构" class="headerlink" title="5.1 整体架构"></a>5.1 整体架构</h3><ul><li>单体服务：Bark-Server 是一个独立的 HTTP 服务器</li></ul><h3 id="5-2-核心模块"><a href="#5-2-核心模块" class="headerlink" title="5.2 核心模块"></a>5.2 核心模块</h3><ul><li>通知推送：推送通知到 iOS 设备</li><li>设备管理：管理设备令牌</li><li>通知历史：存储通知历史</li><li>API 接口：提供 RESTful API</li><li>安全认证：支持 token 认证</li></ul><h3 id="5-3-数据流分析"><a href="#5-3-数据流分析" class="headerlink" title="5.3 数据流分析"></a>5.3 数据流分析</h3><figure class="highlight arduino"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs arduino">客户端请求<br> ↓<br>Bark-<span class="hljs-built_in">Server</span> 服务器<br> ↓<br>处理通知<br> ↓<br>存储通知<br> ↓<br>推送通知到设备<br> ↓<br>返回结果<br> ↓<br>客户端<br></code></pre></td></tr></table></figure><hr><h2 id="6-部署与体验"><a href="#6-部署与体验" class="headerlink" title="6. 部署与体验"></a>6. 部署与体验</h2><h3 id="6-1-部署难度"><a href="#6-1-部署难度" class="headerlink" title="6.1 部署难度"></a>6.1 部署难度</h3><ul><li>低：支持多种部署方式，包括二进制文件、Docker 等</li><li>配置简单：只需设置必要的参数</li><li>提供详细的部署文档</li></ul><h3 id="6-2-资源占用"><a href="#6-2-资源占用" class="headerlink" title="6.2 资源占用"></a>6.2 资源占用</h3><ul><li>低：资源占用小，适合部署在各种环境</li><li>可根据使用情况调整资源配置</li></ul><h3 id="6-3-使用体验"><a href="#6-3-使用体验" class="headerlink" title="6.3 使用体验"></a>6.3 使用体验</h3><ul><li>接口简洁，易于集成</li><li>性能优异，响应速度快</li><li>支持与各种应用和系统集成</li></ul><h3 id="6-4-搭建步骤"><a href="#6-4-搭建步骤" class="headerlink" title="6.4 搭建步骤"></a>6.4 搭建步骤</h3><ol><li><strong>下载安装</strong>：从官网下载对应平台的二进制文件或使用 Docker</li><li><strong>配置</strong>：设置必要的参数，如端口、数据库等</li><li><strong>启动服务</strong>：运行 Bark-Server 服务</li><li><strong>注册设备</strong>：在 iOS 设备上安装 Bark 客户端并注册</li><li><strong>发送通知</strong>：使用 API 发送通知到设备</li><li><strong>查看通知</strong>：在 iOS 设备上查看收到的通知</li></ol><hr><h2 id="7-类似项目对比"><a href="#7-类似项目对比" class="headerlink" title="7. 类似项目对比"></a>7. 类似项目对比</h2><table><thead><tr><th>项目</th><th>复杂度</th><th>技术栈</th><th>适用场景</th></tr></thead><tbody><tr><td>Bark-Server</td><td>低</td><td>Go</td><td>轻量级通知推送服务</td></tr><tr><td>Pushbullet</td><td>中等</td><td>多种语言</td><td>跨平台通知推送</td></tr><tr><td>ntfy</td><td>低</td><td>Go</td><td>自托管通知服务</td></tr><tr><td>Gotify</td><td>低</td><td>Go</td><td>自托管通知服务</td></tr></tbody></table><hr><h2 id="8-优缺点分析"><a href="#8-优缺点分析" class="headerlink" title="8. 优缺点分析"></a>8. 优缺点分析</h2><p>优点：</p><ul><li>轻量：部署简单，资源占用少</li><li>隐私保护：数据完全控制在自己手中</li><li>灵活：支持自定义通知内容和格式</li><li>易用：提供简单的 API 接口</li><li>开源免费：代码开放，无使用限制</li></ul><p>缺点：</p><ul><li>仅支持 iOS 设备：不支持 Android 等其他平台</li><li>功能相对简单：缺乏高级特性</li><li>社区相对较小：用户和贡献者较少</li></ul><hr><h2 id="9-我的判断"><a href="#9-我的判断" class="headerlink" title="9. 我的判断"></a>9. 我的判断</h2><p>我认为：</p><p>这个项目：</p><ul><li>适合谁：需要自托管通知推送服务的 iOS 用户，尤其是对数据隐私有要求的场景</li><li>不适合谁：需要跨平台通知推送的用户</li><li>未来如何：作为轻量级通知推送服务的优秀代表，Bark-Server 有其独特的价值，可能会通过社区贡献不断完善功能，成为 iOS 用户的首选通知推送解决方案</li></ul><hr>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;span id=&quot;more&quot;&gt;&lt;/span&gt;

&lt;h2 id=&quot;0-为什么关注这个项目&quot;&gt;&lt;a href=&quot;#0-为什么关注这个项目&quot; class=&quot;headerlink&quot; title=&quot;0. 为什么关注这个项目&quot;&gt;&lt;/a&gt;0.</summary>
        
      
    
    
    
    <category term="开源项目" scheme="https://blog.doracoin.cc/categories/opensource/"/>
    
    
    <category term="开源" scheme="https://blog.doracoin.cc/tags/%E5%BC%80%E6%BA%90/"/>
    
  </entry>
  
  <entry>
    <title>学习搭建：Paperless-在线Office文档预览服务</title>
    <link href="https://blog.doracoin.cc/posts/opensource/8950.html"/>
    <id>https://blog.doracoin.cc/posts/opensource/8950.html</id>
    <published>2026-03-26T04:26:55.000Z</published>
    <updated>2026-03-31T16:37:02.644Z</updated>
    
    <content type="html"><![CDATA[<span id="more"></span><h2 id="0-为什么关注这个项目"><a href="#0-为什么关注这个项目" class="headerlink" title="0. 为什么关注这个项目"></a>0. 为什么关注这个项目</h2><p>这一段是：<strong>认知记录</strong></p><ul><li>我在寻找自托管的在线 Office 文档预览服务</li><li>我需要一个能够预览各种文档格式的工具</li><li>我想了解如何搭建和使用 Paperless 作为文档预览服务</li></ul><p>这会让我以后回头看时，我会知道自己当时的思考路径，这是非常有价值的。</p><hr><h2 id="1-项目概览"><a href="#1-项目概览" class="headerlink" title="1. 项目概览"></a>1. 项目概览</h2><p>这个项目属于：</p><ul><li>自托管工具</li><li>开发工具</li></ul><p>项目定位：在线 Office 文档预览服务，支持多种文档格式的预览</p><p>Github：<a href="https://github.com/paperless-ngx/paperless-ngx">https://github.com/paperless-ngx/paperless-ngx</a></p><p>Star：约 10k+（截至 2026 年）</p><p>License：GNU General Public License v3.0</p><p>语言&#x2F;技术栈：Python、Django、React</p><p>项目成熟度&#x2F;复杂度：</p><ul><li>生产可用</li><li>中等</li></ul><hr><h2 id="2-解决什么问题"><a href="#2-解决什么问题" class="headerlink" title="2. 解决什么问题"></a>2. 解决什么问题</h2><h3 id="2-1-这个领域原本怎么做"><a href="#2-1-这个领域原本怎么做" class="headerlink" title="2.1 这个领域原本怎么做"></a>2.1 这个领域原本怎么做</h3><p>在 Paperless 出现之前，文档预览主要依赖本地软件或云服务，缺乏自托管的解决方案。</p><h3 id="2-2-现有方案问题"><a href="#2-2-现有方案问题" class="headerlink" title="2.2 现有方案问题"></a>2.2 现有方案问题</h3><ul><li>本地软件：需要安装对应软件，不便于在线预览</li><li>云服务：可能存在数据隐私和安全问题</li><li>缺乏统一的文档预览解决方案</li><li>难以集成到现有系统中</li></ul><h3 id="2-3-这个项目的思路"><a href="#2-3-这个项目的思路" class="headerlink" title="2.3 这个项目的思路"></a>2.3 这个项目的思路</h3><p>Paperless 提供了一个自托管的在线文档预览服务，支持多种文档格式的预览，同时提供文档管理和搜索功能，满足企业和个人的文档处理需求。</p><hr><h2 id="3-架构分析"><a href="#3-架构分析" class="headerlink" title="3. 架构分析"></a>3. 架构分析</h2><h3 id="3-1-整体架构"><a href="#3-1-整体架构" class="headerlink" title="3.1 整体架构"></a>3.1 整体架构</h3><p>Paperless 采用前后端分离的架构设计：</p><ul><li>后端：基于 Django 构建的 Python 服务器，处理文档处理和存储</li><li>前端：基于 React 构建的 Web 界面，提供用户交互</li><li>数据库：支持 PostgreSQL 或 SQLite</li><li>存储：支持本地存储或对象存储</li><li>文档处理：集成多种文档处理工具</li></ul><h3 id="3-2-关键模块"><a href="#3-2-关键模块" class="headerlink" title="3.2 关键模块"></a>3.2 关键模块</h3><ul><li>文档处理：处理各种格式的文档</li><li>存储管理：管理文档的存储和检索</li><li>搜索系统：提供文档搜索功能</li><li>用户管理：处理用户认证和权限</li><li>集成系统：支持与其他系统集成</li></ul><hr><h2 id="4-核心设计思想"><a href="#4-核心设计思想" class="headerlink" title="4. 核心设计思想"></a>4. 核心设计思想</h2><h3 id="4-1-技术选型分析"><a href="#4-1-技术选型分析" class="headerlink" title="4.1 技术选型分析"></a>4.1 技术选型分析</h3><p>为什么使用 Python 和 Django：</p><ul><li>Python 有丰富的文档处理库</li><li>Django 提供了完整的 Web 框架功能</li><li>Python 生态成熟，适合构建文档处理服务</li></ul><p>为什么使用 React：</p><ul><li>React 适合构建复杂的单页应用</li><li>React 生态丰富，有大量组件可供使用</li><li>React 性能优异，用户体验好</li></ul><h3 id="4-2-设计思想分析"><a href="#4-2-设计思想分析" class="headerlink" title="4.2 设计思想分析"></a>4.2 设计思想分析</h3><p>这个项目体现：</p><ul><li>自托管：数据完全控制在自己手中</li><li>多功能：支持多种文档格式的预览和管理</li><li>可扩展性：支持与其他系统集成</li><li>易用性：提供直观的 Web 界面</li><li>安全性：注重数据隐私和安全</li></ul><hr><h2 id="5-功能分析"><a href="#5-功能分析" class="headerlink" title="5. 功能分析"></a>5. 功能分析</h2><h3 id="5-1-整体架构"><a href="#5-1-整体架构" class="headerlink" title="5.1 整体架构"></a>5.1 整体架构</h3><ul><li>前后端分离：前端使用 React，后端使用 Python&#x2F;Django</li></ul><h3 id="5-2-核心模块"><a href="#5-2-核心模块" class="headerlink" title="5.2 核心模块"></a>5.2 核心模块</h3><ul><li>文档上传：支持上传各种格式的文档</li><li>文档预览：在线预览文档内容</li><li>文档管理：组织和管理文档</li><li>搜索功能：搜索文档内容</li><li>OCR 功能：识别文档中的文本</li><li>标签系统：为文档添加标签</li><li>权限管理：基于角色的权限控制</li></ul><h3 id="5-3-数据流分析"><a href="#5-3-数据流分析" class="headerlink" title="5.3 数据流分析"></a>5.3 数据流分析</h3><figure class="highlight"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs">用户请求<br> ↓<br>前端 React 应用<br> ↓<br>后端 Django 服务<br> ↓<br>文档处理<br> ↓<br>存储系统<br> ↓<br>返回结果<br> ↓<br>前端展示<br></code></pre></td></tr></table></figure><hr><h2 id="6-部署与体验"><a href="#6-部署与体验" class="headerlink" title="6. 部署与体验"></a>6. 部署与体验</h2><h3 id="6-1-部署难度"><a href="#6-1-部署难度" class="headerlink" title="6.1 部署难度"></a>6.1 部署难度</h3><ul><li>中等：支持多种部署方式，包括 Docker、Kubernetes 等</li><li>配置相对简单，提供详细的部署文档</li><li>支持与各种存储系统集成</li></ul><h3 id="6-2-资源占用"><a href="#6-2-资源占用" class="headerlink" title="6.2 资源占用"></a>6.2 资源占用</h3><ul><li>中等：需要一定的服务器资源，特别是文档处理时</li><li>可根据使用情况调整资源配置</li></ul><h3 id="6-3-使用体验"><a href="#6-3-使用体验" class="headerlink" title="6.3 使用体验"></a>6.3 使用体验</h3><ul><li>界面美观，操作流畅</li><li>功能完整，满足文档预览和管理需求</li><li>响应速度快，用户体验良好</li><li>支持多平台访问</li></ul><h3 id="6-4-搭建步骤"><a href="#6-4-搭建步骤" class="headerlink" title="6.4 搭建步骤"></a>6.4 搭建步骤</h3><ol><li><strong>准备环境</strong>：安装 Docker 或 Kubernetes</li><li><strong>配置</strong>：设置数据库和存储</li><li><strong>部署 Paperless</strong>：使用 Docker 或其他方式部署</li><li><strong>访问界面</strong>：通过浏览器访问 Web 界面</li><li><strong>上传文档</strong>：上传需要预览的文档</li><li><strong>预览文档</strong>：在线查看文档内容</li><li><strong>管理文档</strong>：组织和管理上传的文档</li></ol><hr><h2 id="7-类似项目对比"><a href="#7-类似项目对比" class="headerlink" title="7. 类似项目对比"></a>7. 类似项目对比</h2><table><thead><tr><th>项目</th><th>复杂度</th><th>技术栈</th><th>适用场景</th></tr></thead><tbody><tr><td>Paperless-ngx</td><td>中等</td><td>Python、Django、React</td><td>自托管文档管理和预览</td></tr><tr><td>OnlyOffice</td><td>高</td><td>Node.js、React</td><td>在线 Office 套件</td></tr><tr><td>LibreOffice Online</td><td>高</td><td>Python、JavaScript</td><td>在线 Office 文档编辑和预览</td></tr><tr><td>Nextcloud</td><td>中等</td><td>PHP</td><td>云存储和文档管理</td></tr></tbody></table><hr><h2 id="8-优缺点分析"><a href="#8-优缺点分析" class="headerlink" title="8. 优缺点分析"></a>8. 优缺点分析</h2><p>优点：</p><ul><li>自托管：数据完全控制在自己手中</li><li>功能丰富：支持多种文档格式的预览和管理</li><li>易用性：提供直观的 Web 界面</li><li>可扩展：支持与其他系统集成</li><li>开源免费：代码开放，无使用限制</li></ul><p>缺点：</p><ul><li>部署相对复杂：需要配置数据库和存储</li><li>资源占用较高：文档处理需要一定的服务器资源</li><li>某些高级功能可能需要额外配置</li></ul><hr><h2 id="9-我的判断"><a href="#9-我的判断" class="headerlink" title="9. 我的判断"></a>9. 我的判断</h2><p>我认为：</p><p>这个项目：</p><ul><li>适合谁：需要自托管文档管理和预览服务的企业和个人，尤其是对数据隐私有要求的场景</li><li>不适合谁：小型团队或个人，可能会觉得部署和维护成本较高</li><li>未来如何：作为自托管文档管理的优秀代表，Paperless-ngx 有很大的发展潜力，可能会通过社区贡献不断完善功能，成为企业级文档管理的标准解决方案</li></ul><hr>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;span id=&quot;more&quot;&gt;&lt;/span&gt;

&lt;h2 id=&quot;0-为什么关注这个项目&quot;&gt;&lt;a href=&quot;#0-为什么关注这个项目&quot; class=&quot;headerlink&quot; title=&quot;0. 为什么关注这个项目&quot;&gt;&lt;/a&gt;0.</summary>
        
      
    
    
    
    <category term="开源项目" scheme="https://blog.doracoin.cc/categories/opensource/"/>
    
    
    <category term="开源" scheme="https://blog.doracoin.cc/tags/%E5%BC%80%E6%BA%90/"/>
    
  </entry>
  
  <entry>
    <title>学习搭建：chartmuseum</title>
    <link href="https://blog.doracoin.cc/posts/opensource/25722.html"/>
    <id>https://blog.doracoin.cc/posts/opensource/25722.html</id>
    <published>2026-03-26T04:25:42.000Z</published>
    <updated>2026-03-31T16:37:02.644Z</updated>
    
    <content type="html"><![CDATA[<span id="more"></span><h2 id="0-为什么关注这个项目"><a href="#0-为什么关注这个项目" class="headerlink" title="0. 为什么关注这个项目"></a>0. 为什么关注这个项目</h2><p>这一段是：<strong>认知记录</strong></p><ul><li>我在寻找 Helm Chart 仓库管理工具</li><li>我需要一个自托管的 Helm Chart 存储服务</li><li>我想了解如何搭建和使用 chartmuseum 作为 Helm Chart 仓库</li></ul><p>这会让我以后回头看时，我会知道自己当时的思考路径，这是非常有价值的。</p><hr><h2 id="1-项目概览"><a href="#1-项目概览" class="headerlink" title="1. 项目概览"></a>1. 项目概览</h2><p>这个项目属于：</p><ul><li>自托管工具</li><li>开发工具</li><li>基础设施</li></ul><p>项目定位：Helm Chart 仓库服务器，用于存储和管理 Helm Chart</p><p>Github：<a href="https://github.com/helm/chartmuseum">https://github.com/helm/chartmuseum</a></p><p>Star：约 3k+（截至 2026 年）</p><p>License：Apache License 2.0</p><p>语言&#x2F;技术栈：Go</p><p>项目成熟度&#x2F;复杂度：</p><ul><li>生产可用</li><li>中等</li><li>极简</li></ul><hr><h2 id="2-解决什么问题"><a href="#2-解决什么问题" class="headerlink" title="2. 解决什么问题"></a>2. 解决什么问题</h2><h3 id="2-1-这个领域原本怎么做"><a href="#2-1-这个领域原本怎么做" class="headerlink" title="2.1 这个领域原本怎么做"></a>2.1 这个领域原本怎么做</h3><p>在 chartmuseum 出现之前，Helm Chart 的存储主要依赖公共仓库（如 Helm Hub）或简单的文件系统存储。</p><h3 id="2-2-现有方案问题"><a href="#2-2-现有方案问题" class="headerlink" title="2.2 现有方案问题"></a>2.2 现有方案问题</h3><ul><li>公共仓库：可能存在访问限制和安全问题</li><li>文件系统存储：缺乏版本管理和 API 访问</li><li>缺乏专门的 Helm Chart 管理工具</li><li>难以实现私有 Chart 仓库</li></ul><h3 id="2-3-这个项目的思路"><a href="#2-3-这个项目的思路" class="headerlink" title="2.3 这个项目的思路"></a>2.3 这个项目的思路</h3><p>chartmuseum 提供了一个专门的 Helm Chart 仓库服务器，支持 Chart 的上传、下载、版本管理等功能，同时提供 REST API 接口，便于集成和自动化。</p><hr><h2 id="3-架构分析"><a href="#3-架构分析" class="headerlink" title="3. 架构分析"></a>3. 架构分析</h2><h3 id="3-1-整体架构"><a href="#3-1-整体架构" class="headerlink" title="3.1 整体架构"></a>3.1 整体架构</h3><p>chartmuseum 采用简洁的架构设计：</p><ul><li>服务器：基于 Go 语言开发的 HTTP 服务器</li><li>存储后端：支持多种存储后端，如本地文件系统、对象存储等</li><li>API：提供 RESTful API 接口</li><li>认证：支持基本认证和令牌认证</li></ul><h3 id="3-2-关键模块"><a href="#3-2-关键模块" class="headerlink" title="3.2 关键模块"></a>3.2 关键模块</h3><ul><li>存储管理：管理 Chart 的存储和检索</li><li>API 服务：提供 REST API 接口</li><li>认证授权：处理用户认证和访问控制</li><li>索引生成：生成 Chart 仓库索引</li></ul><hr><h2 id="4-核心设计思想"><a href="#4-核心设计思想" class="headerlink" title="4. 核心设计思想"></a>4. 核心设计思想</h2><h3 id="4-1-技术选型分析"><a href="#4-1-技术选型分析" class="headerlink" title="4.1 技术选型分析"></a>4.1 技术选型分析</h3><p>为什么使用 Go：</p><ul><li>Go 语言性能优异，适合高并发服务</li><li>Go 语言编译为静态二进制文件，部署简单</li><li>Go 语言生态成熟，适合构建网络服务</li></ul><h3 id="4-2-设计思想分析"><a href="#4-2-设计思想分析" class="headerlink" title="4.2 设计思想分析"></a>4.2 设计思想分析</h3><p>这个项目体现：</p><ul><li>轻量化：部署简单，资源占用少</li><li>灵活性：支持多种存储后端</li><li>标准兼容：符合 Helm Chart 仓库规范</li><li>可扩展性：支持认证、监控等扩展</li></ul><hr><h2 id="5-功能分析"><a href="#5-功能分析" class="headerlink" title="5. 功能分析"></a>5. 功能分析</h2><h3 id="5-1-整体架构"><a href="#5-1-整体架构" class="headerlink" title="5.1 整体架构"></a>5.1 整体架构</h3><ul><li>单体服务：chartmuseum 是一个独立的 HTTP 服务器</li></ul><h3 id="5-2-核心模块"><a href="#5-2-核心模块" class="headerlink" title="5.2 核心模块"></a>5.2 核心模块</h3><ul><li>Chart 管理：上传、下载、删除 Chart</li><li>版本管理：支持 Chart 的多个版本</li><li>索引生成：自动生成 Chart 仓库索引</li><li>存储后端：支持本地文件系统、S3、GCS 等</li><li>认证：支持基本认证和令牌认证</li><li>监控：提供 Prometheus 指标</li></ul><h3 id="5-3-数据流分析"><a href="#5-3-数据流分析" class="headerlink" title="5.3 数据流分析"></a>5.3 数据流分析</h3><figure class="highlight"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs">客户端请求<br> ↓<br>chartmuseum 服务器<br> ↓<br>认证授权<br> ↓<br>存储后端<br> ↓<br>返回结果<br> ↓<br>客户端<br></code></pre></td></tr></table></figure><hr><h2 id="6-部署与体验"><a href="#6-部署与体验" class="headerlink" title="6. 部署与体验"></a>6. 部署与体验</h2><h3 id="6-1-部署难度"><a href="#6-1-部署难度" class="headerlink" title="6.1 部署难度"></a>6.1 部署难度</h3><ul><li>低：支持多种部署方式，包括二进制文件、Docker、Kubernetes 等</li><li>配置简单：只需设置存储后端和认证信息</li><li>提供详细的部署文档</li></ul><h3 id="6-2-资源占用"><a href="#6-2-资源占用" class="headerlink" title="6.2 资源占用"></a>6.2 资源占用</h3><ul><li>低：资源占用小，适合部署在各种环境</li><li>可根据存储需求调整资源配置</li></ul><h3 id="6-3-使用体验"><a href="#6-3-使用体验" class="headerlink" title="6.3 使用体验"></a>6.3 使用体验</h3><ul><li>接口简洁，易于集成</li><li>性能优异，响应速度快</li><li>支持与 Helm 客户端无缝集成</li></ul><h3 id="6-4-搭建步骤"><a href="#6-4-搭建步骤" class="headerlink" title="6.4 搭建步骤"></a>6.4 搭建步骤</h3><ol><li><strong>下载安装</strong>：从官网下载对应平台的二进制文件或使用 Docker</li><li><strong>配置</strong>：设置存储后端、认证信息等参数</li><li><strong>启动服务</strong>：运行 chartmuseum 服务</li><li><strong>添加仓库</strong>：使用 Helm 命令添加 chartmuseum 作为仓库</li><li><strong>上传 Chart</strong>：使用 Helm 命令或 API 上传 Chart</li><li><strong>安装 Chart</strong>：从 chartmuseum 仓库安装 Chart</li></ol><hr><h2 id="7-类似项目对比"><a href="#7-类似项目对比" class="headerlink" title="7. 类似项目对比"></a>7. 类似项目对比</h2><table><thead><tr><th>项目</th><th>复杂度</th><th>技术栈</th><th>适用场景</th></tr></thead><tbody><tr><td>chartmuseum</td><td>低</td><td>Go</td><td>轻量级 Helm Chart 仓库</td></tr><tr><td>Harbor</td><td>高</td><td>Go、Vue.js</td><td>企业级容器和 Chart 仓库</td></tr><tr><td>JFrog Artifactory</td><td>高</td><td>Java</td><td>企业级制品仓库</td></tr><tr><td>Nexus</td><td>高</td><td>Java</td><td>企业级制品仓库</td></tr></tbody></table><hr><h2 id="8-优缺点分析"><a href="#8-优缺点分析" class="headerlink" title="8. 优缺点分析"></a>8. 优缺点分析</h2><p>优点：</p><ul><li>轻量：部署简单，资源占用少</li><li>灵活：支持多种存储后端</li><li>标准兼容：符合 Helm Chart 仓库规范</li><li>易于集成：提供 REST API 接口</li><li>开源免费：代码开放，无使用限制</li></ul><p>缺点：</p><ul><li>功能相对简单：缺乏企业级特性</li><li>缺乏高级认证和授权机制</li><li>社区相对较小：用户和贡献者较少</li></ul><hr><h2 id="9-我的判断"><a href="#9-我的判断" class="headerlink" title="9. 我的判断"></a>9. 我的判断</h2><p>我认为：</p><p>这个项目：</p><ul><li>适合谁：需要自托管 Helm Chart 仓库的开发者和企业，尤其是中小规模部署</li><li>不适合谁：需要企业级特性和高级认证授权的大型组织</li><li>未来如何：作为轻量级 Helm Chart 仓库的优秀代表，chartmuseum 有其独特的价值，可能会通过社区贡献不断完善功能，成为 Helm Chart 管理的标准工具</li></ul><hr>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;span id=&quot;more&quot;&gt;&lt;/span&gt;

&lt;h2 id=&quot;0-为什么关注这个项目&quot;&gt;&lt;a href=&quot;#0-为什么关注这个项目&quot; class=&quot;headerlink&quot; title=&quot;0. 为什么关注这个项目&quot;&gt;&lt;/a&gt;0.</summary>
        
      
    
    
    
    <category term="开源项目" scheme="https://blog.doracoin.cc/categories/opensource/"/>
    
    
    <category term="开源" scheme="https://blog.doracoin.cc/tags/%E5%BC%80%E6%BA%90/"/>
    
  </entry>
  
</feed>
