<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>Aroes</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://homulilly.com/</id>
  <link href="https://homulilly.com/" rel="alternate"/>
  <link href="https://homulilly.com/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, Aroes</rights>
  <subtitle>Aroes's Blog</subtitle>
  <title>Homulilly</title>
  <updated>2026-07-13T08:09:47.579Z</updated>
  <entry>
    <author>
      <name>Aroes</name>
    </author>
    <category term="Just-buy" scheme="https://homulilly.com/categories/Just-buy/"/>
    <category term="手办" scheme="https://homulilly.com/tags/%E6%89%8B%E5%8A%9E/"/>
    <category term="初音未来" scheme="https://homulilly.com/tags/%E5%88%9D%E9%9F%B3%E6%9C%AA%E6%9D%A5/"/>
    <category term="芙莉莲" scheme="https://homulilly.com/tags/%E8%8A%99%E8%8E%89%E8%8E%B2/"/>
    <content>
      <![CDATA[<p>大概还是 2015 年的时候，日元汇率跌倒了 4.9 ，沉迷过一阵子从日亚海淘一些手办，一个大概要 3、400 元左右，屯了不少。后来手办的价格就逐渐离谱起来了，像 <a href="https://www.alter-shanghai.cn/">Alter</a> 的都要 1000+ 起步了，就不再购买了，之后因为搬家，出掉了大部分，大概算是出坑了。</p><p>然而现在日元汇率已经跌倒 4.2 了，又有些蠢蠢欲动，重新看了看，发现一些景品手办造型、质量都非常不错，遂买了一些。</p><blockquote><p>景品手办的相比正厂手办精细度较低，可能会有一些瑕疵，但胜价格便宜，一般在 100 元左右，摆起来也不会因为落灰觉得肉疼。</p></blockquote><hr><p>下面推荐的都是看了实物效果是比较还原的，因此就直接使用网图了。</p><h2 id="初音未来"><a href="#初音未来" class="headerlink" title="初音未来"></a>初音未来</h2><p><strong>世界第一公主殿下</strong></p><h3 id="FURYU-初音未来-银莲花仙子"><a href="#FURYU-初音未来-银莲花仙子" class="headerlink" title="FURYU 初音未来 银莲花仙子"></a>FURYU 初音未来 银莲花仙子</h3><p>我最推荐这个，评价为无敌可爱。 </p><p><img src="https://img.nep.me/blog/figure-miku-anemone.webp" alt="figure-miku-anemone.jpg"></p><p>这种虽然叫泡面压，但是最好还是不要拿来压泡面。<br>以及只有本体，没有底座。</p><h3 id="FURYU-初音未来-四叶草花仙子"><a href="#FURYU-初音未来-四叶草花仙子" class="headerlink" title="FURYU 初音未来 四叶草花仙子"></a>FURYU 初音未来 四叶草花仙子</h3><p>可爱w</p><p><img src="https://img.nep.me/blog/figure-miku-clover.webp" alt="figure-miku-clover.jpg"></p><h3 id="FURYU-初音未来-酸浆果花仙子"><a href="#FURYU-初音未来-酸浆果花仙子" class="headerlink" title="FURYU 初音未来 酸浆果花仙子"></a>FURYU 初音未来 酸浆果花仙子</h3><p><img src="https://img.nep.me/blog/figure-miku-berry.webp" alt="figure-miku-berry.webp"></p><h3 id="TAITO-初音未来-x-Rody-跳跳馬-AMP-童話-ver"><a href="#TAITO-初音未来-x-Rody-跳跳馬-AMP-童話-ver" class="headerlink" title="TAITO 初音未来 x Rody 跳跳馬 AMP+ 童話 ver."></a>TAITO 初音未来 x Rody 跳跳馬 AMP+ 童話 ver.</h3><p>底座造型非常不错～</p><p><img src="https://img.nep.me/blog/figure-miku-rody.webp" alt="figure-miku-rody.webp"></p><h3 id="TAITO-初音未来-Fashion-学院风"><a href="#TAITO-初音未来-Fashion-学院风" class="headerlink" title="TAITO 初音未来 Fashion 学院风"></a>TAITO 初音未来 Fashion 学院风</h3><p>好好学习～</p><p><img src="https://img.nep.me/blog/figure-miku-preppy.webp" alt="figure-miku-preppy.webp"></p><h3 id="TAITO-初音未来-Fashion-田园风"><a href="#TAITO-初音未来-Fashion-田园风" class="headerlink" title="TAITO 初音未来 Fashion 田园风"></a>TAITO 初音未来 Fashion 田园风</h3><p>非常可爱</p><p><img src="https://img.nep.me/blog/figure-miku-country.webp" alt="figure-miku-country.webp"></p><h3 id="TAITO-初音未来-和风茶馆"><a href="#TAITO-初音未来-和风茶馆" class="headerlink" title="TAITO 初音未来 和风茶馆"></a>TAITO 初音未来 和风茶馆</h3><p>可爱~</p><p><img src="https://img.nep.me/blog/figure-miku-sakura.webp" alt="figure-miku-sakura.webp"></p><h3 id="FURYU-初音未来-BiCute-兔女郎-白色"><a href="#FURYU-初音未来-BiCute-兔女郎-白色" class="headerlink" title="FURYU 初音未来 BiCute 兔女郎 白色"></a>FURYU 初音未来 BiCute 兔女郎 白色</h3><p>兔女郎谁不爱，这个还有黑色的版本</p><p><img src="https://img.nep.me/blog/figure-miku-bunny-w.webp" alt="figure-miku-bunny-w.webp"></p><h3 id="眼镜厂-初音未来-x-高达-45周年-夏亚扎古-红色-原色"><a href="#眼镜厂-初音未来-x-高达-45周年-夏亚扎古-红色-原色" class="headerlink" title="眼镜厂 初音未来 x 高达 45周年 夏亚扎古 红色+原色"></a>眼镜厂 初音未来 x 高达 45周年 夏亚扎古 红色+原色</h3><p>这么大的体积，实心的，用料这么多，一定不会亏。</p><p><img src="https://img.nep.me/blog/figure-miku-gundam.webp" alt="figure-miku-gundam.webp"></p><h2 id="芙莉莲"><a href="#芙莉莲" class="headerlink" title="芙莉莲"></a>芙莉莲</h2><h3 id="TAITO-芙莉莲-行李箱"><a href="#TAITO-芙莉莲-行李箱" class="headerlink" title="TAITO 芙莉莲 行李箱"></a>TAITO 芙莉莲 行李箱</h3><p>脸部比较还原，推荐～</p><p><img src="https://img.nep.me/blog/figure-frieren.webp" alt="figure-frieren.webp"></p><h3 id="TAITO-芙莉莲-居家服"><a href="#TAITO-芙莉莲-居家服" class="headerlink" title="TAITO 芙莉莲 居家服"></a>TAITO 芙莉莲 居家服</h3><p>一起看书学习w</p><p><img src="https://img.nep.me/blog/figure-frieren-loungewear.webp" alt="figure-frieren-loungewear.jpg"></p><h3 id="SEGA-芙莉莲-小睡一刻-Yumemirize"><a href="#SEGA-芙莉莲-小睡一刻-Yumemirize" class="headerlink" title="SEGA 芙莉莲 小睡一刻 Yumemirize"></a>SEGA 芙莉莲 小睡一刻 Yumemirize</h3><p>人生的意义就在于睡觉，不过只有本体，没有床（</p><p>自带一个蓝色的枕头，也可以多买一只菲伦，给芙莉莲配上膝枕。</p><p><img src="https://img.nep.me/blog/figure-frieren-yumemirize.webp" alt="figure-frieren-yumemirize.png"></p><hr><p>景品虽然可能略有瑕疵，但是一个的价格能买 10 个，还要什么自行车。</p><p>手办还是摆出来才比较有意义。</p>]]>
    </content>
    <id>https://homulilly.com/post/figure-recommendations.html</id>
    <link href="https://homulilly.com/post/figure-recommendations.html"/>
    <published>2026-07-12T11:54:30.000Z</published>
    <summary>
      <![CDATA[<p>大概还是 2015 年的时候，日元汇率跌倒了 4.9 ，沉迷过一阵子从日亚海淘一些手办，一个大概要 3、400 元左右，屯了不少。后来手办的价格就逐渐离谱起来了，像 <a href="https://www.alter-shanghai.cn/">Alter</a> 的都要]]>
    </summary>
    <title>一些手办推荐</title>
    <updated>2026-07-13T08:09:47.579Z</updated>
  </entry>
  <entry>
    <author>
      <name>Aroes</name>
    </author>
    <category term="Project" scheme="https://homulilly.com/categories/Project/"/>
    <category term="Hexo" scheme="https://homulilly.com/tags/Hexo/"/>
    <category term="Hexo Theme" scheme="https://homulilly.com/tags/Hexo-Theme/"/>
    <category term="Flatpaper" scheme="https://homulilly.com/tags/Flatpaper/"/>
    <content>
      <![CDATA[<p>以前比较佛系，在只有少量友链的情况下也获得过其他博客的朋友圈带来的流量，所以这次做了 Flatpaper 这个主题后，我也希望能支持这个功能。</p><p>但是 Hexo 毕竟是静态站点，自身不支持抓取 RSS 的，本来想说造个轮子走 Cloudflare Workers，搜索的时候发现了 <a href="https://github.com/willow-god/Friend-Circle-Lite">Friend-Circle-Lite</a> 这个项目：</p><div class="flatpaper-note flatpaper-note--info"><span class="flatpaper-note__icon" aria-hidden="true"></span><div class="flatpaper-note__body"><p>Friend-Circle-Lite: 一个精简版，无后端，且仅利用 github action 运行的精简版友链朋友圈程序</p></div></div><p>使用 <strong>Friend-Circle-Lite</strong> 仅需一个 Github 账号，不需要服务器，甚至也不需要解析域名到 GitHub Pages 。</p><h2 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h2><p>主题已完成了代码更新，支持生成 FCL 所需的 <code>friend.json</code>，然后获取其生成的 <code>all.json</code> 创建朋友圈界面。</p><p>预览：<a href="https://homulilly.com/friends/" target="_blank" rel="noopener">Homulilly - 朋友圈</a></p><h3 id="获取-friend-json-链接"><a href="#获取-friend-json-链接" class="headerlink" title="获取 friend.json 链接"></a>获取 friend.json 链接</h3><p>设置友链内容后，Flatpaper 在生成站点内容时会自动选取填写了 <code>rss</code> 的友链条目，默认在主题目录下生成 <code>friend.json</code>。</p><p>所以对应的链接为 <code>https://example.com/friend.json</code></p><h3 id="设置-Friend-Circle-Lite"><a href="#设置-Friend-Circle-Lite" class="headerlink" title="设置 Friend-Circle-Lite"></a>设置 Friend-Circle-Lite</h3><p>具体可以查看项目的主页 <a href="https://github.com/willow-god/Friend-Circle-Lite#action%E9%83%A8%E7%BD%B2%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95">Friend-Circle-Lite - action部署使用方法</a></p><p>这里仅作简单介绍：</p><ul><li>访问 FCL 项目主页，点击 forks ，创建一个Public 公共的仓库，名称随意</li><li>按照说明修改仓库的权限</li><li>直接编辑 main 分支或是创建一个新的分支用于保存我们自己的配置（需要修改为默认分支）</li><li>修改配置 <code>conf.yaml</code>   <figure class="highlight yaml"><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><span class="line"><span class="attr">spider_settings:</span></span><br><span class="line"><span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line"><span class="comment"># 替换域名</span></span><br><span class="line"><span class="attr">json_url:</span> <span class="string">&quot;https://example.com/friend.json&quot;</span></span><br><span class="line"><span class="attr">article_count:</span> <span class="number">5</span></span><br></pre></td></tr></table></figure></li><li>点击顶部 Actions，指定的分支运行 Action：<code>Friend Circle Lite</code></li><li>等待运行结束，可以在 page 分支获取到 <code>all.json</code> ，也不需要解析域名，直接使用 RAW 链接即可：<figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https://raw.githubusercontent.com/&lt;USER&gt;/&lt;REPO&gt;/refs/heads/page/all.json</span><br></pre></td></tr></table></figure></li></ul><p>在主题的 <code>source/fcircle/</code> 下面创建 <code>index.md</code> ，填写下面的内容，替换 <code>fcl_all_json</code> 的链接。</p><figure class="highlight yaml"><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></pre></td><td class="code"><pre><span class="line"><span class="meta">---</span></span><br><span class="line"><span class="attr">title:</span> <span class="string">朋友圈</span></span><br><span class="line"><span class="attr">type:</span> <span class="string">friends-feed</span></span><br><span class="line"><span class="attr">comments:</span> <span class="literal">false</span></span><br><span class="line"><span class="attr">fcl_all_json:</span> <span class="string">https://raw.githubusercontent.com/&lt;UserName&gt;/&lt;RepoName&gt;/refs/heads/page/all.json</span></span><br><span class="line"><span class="attr">page_size:</span> <span class="number">20</span></span><br><span class="line"><span class="attr">source_label:</span></span><br><span class="line"><span class="meta">---</span></span><br></pre></td></tr></table></figure><div class="flatpaper-note flatpaper-note--info"><span class="flatpaper-note__icon" aria-hidden="true"></span><div class="flatpaper-note__body"><p>链接配置在页面里进行设置，所以支持不同的页面可以使用不同的链接，实现不同内容的展示。</p></div></div><h3 id="然后更新导航链接"><a href="#然后更新导航链接" class="headerlink" title="然后更新导航链接"></a>然后更新导航链接</h3><p>在主题的配置文件 <code>_config.flatpaper.yml</code> 中：</p><ol><li>确保你的导航菜单（<code>menu</code>）里添加了朋友圈页面（主题新增了 <code>users</code>、<code>compass</code> 或 <code>aperture</code> 作为图标！）：<figure class="highlight yaml"><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><span class="line"><span class="attr">menu:</span></span><br><span class="line">  <span class="string">朋友圈:</span> </span><br><span class="line">    <span class="attr">link:</span> <span class="string">/fcircle/</span></span><br><span class="line">    <span class="attr">icon:</span> <span class="string">users</span></span><br></pre></td></tr></table></figure></li></ol><h3 id="定期更新"><a href="#定期更新" class="headerlink" title="定期更新"></a>定期更新</h3><p>运行 Action 后，之后会每 4 小时自动更新一次，对于博客的朋友圈展示来说完全足够了。</p><p>Friend Circle Lite 除了支持生成 <code>all.json</code> 之外，自身就支持一个使用 GitHub Pages 的朋友圈页面展示，也支持在更新后发送邮件通知。</p><p>具体内容都可以在 GitHub 主页查看：</p><ul><li><a href="https://github.com/willow-god/Friend-Circle-Lite">Friend-Circle-Lite</a></li><li><a href="https://github.com/Homulilly/hexo-theme-flatpaper">Hexo Theme Flatpaper</a></li></ul>]]>
    </content>
    <id>https://homulilly.com/post/hexo-theme-flapaper-now-support-friend-circle-md.html</id>
    <link href="https://homulilly.com/post/hexo-theme-flapaper-now-support-friend-circle-md.html"/>
    <published>2026-06-24T17:04:04.000Z</published>
    <summary>
      <![CDATA[<p>以前比较佛系，在只有少量友链的情况下也获得过其他博客的朋友圈带来的流量，所以这次做了 Flatpaper 这个主题后，我也希望能支持这个功能。</p>
<p>但是 Hexo 毕竟是静态站点，自身不支持抓取 RSS 的，本来想说造个轮子走 Cloudflare Workers]]>
    </summary>
    <title>Hexo Theme Flatpaper 加入朋友圈大家庭</title>
    <updated>2026-06-29T13:58:15.950Z</updated>
  </entry>
  <entry>
    <author>
      <name>Aroes</name>
    </author>
    <category term="Project" scheme="https://homulilly.com/categories/Project/"/>
    <category term="Folio" scheme="https://homulilly.com/tags/Folio/"/>
    <category term="Photo Viewer" scheme="https://homulilly.com/tags/Photo-Viewer/"/>
    <category term="Electron" scheme="https://homulilly.com/tags/Electron/"/>
    <content>
      <![CDATA[<p>身为一个仓鼠党，下了一些图集，需要保存图片到一个文件夹、擦除 EXIF、快速重命名，工具倒是都有，但是都需要打开各种不同的软件，略有麻烦。 </p><p>于是根据我自己的需求，开发了一款新的看图软件 ：<a href="https://folio.nep.me/">Folio</a></p><img src="https://folio.nep.me/assets/hero.webp" alt="Preview" style="width:75%;max-width:100%;height:auto" /><p>Opus 强力驱动，代码开源： <a href="https://github.com/Homulilly/folio">GitHub - Folio</a></p><h2 id="Folio-能做什么"><a href="#Folio-能做什么" class="headerlink" title="Folio 能做什么"></a>Folio 能做什么</h2><p>Folio 目前主要围绕几个核心场景：</p><h3 id="多图并列浏览"><a href="#多图并列浏览" class="headerlink" title="多图并列浏览"></a>多图并列浏览</h3><p>这是 Folio 的核心功能之一。最多可以同时打开四张图片并排看，说是用来对比构图、细节、色彩、版本差异。其实就是为了 <strong>快速找图集中的 AWESOME 图片</strong> 。</p><p><img src="https://folio.nep.me/assets/multiview.webp" alt="多图预览"></p><h3 id="Exif-擦除"><a href="#Exif-擦除" class="headerlink" title="Exif 擦除"></a>Exif 擦除</h3><p>Folio 内置 Exif 信息查看与擦除功能，擦除支持指定分类。</p><blockquote><p>为什么有人会把信息写到 <code>ImageUnique ID</code> 里啊，Folio 可以擦除它，同时保留其他信息。</p></blockquote><h3 id="批量重命名"><a href="#批量重命名" class="headerlink" title="批量重命名"></a>批量重命名</h3><p>支持按规则批量重命名，内置了一些简单的规则，比如加序号、替换字段、按模板生成文件名等。执行前会有预览，避免一键把文件夹搞乱。</p><h3 id="格式转换"><a href="#格式转换" class="headerlink" title="格式转换"></a>格式转换</h3><p>可以把图片转换成 JPEG、PNG、WebP、AVIF、TIFF 等格式。</p><h3 id="支持拖拽"><a href="#支持拖拽" class="headerlink" title="支持拖拽"></a>支持拖拽</h3><p>在单图模式下，且是适应的缩放时，支持直接拖拽图片到其他文件夹、网页上传控件中。</p><h2 id="开发框架-Electron"><a href="#开发框架-Electron" class="headerlink" title="开发框架 Electron"></a>开发框架 Electron</h2><p>Folio 是用 Electron 做的。</p><p>好处很明显：跨平台、开发效率高、UI 能做得比较自由，花了周五加一个周末就做出了 MVP 版本，<mark>用 AI 起 MVP ，首选 Electron </mark>。</p><p>坏处也很明显：内存一下就起飞了，打开一个充满 40MB 的大图相册，内存直奔 2GB 。</p><h2 id="现在的状态"><a href="#现在的状态" class="headerlink" title="现在的状态"></a>现在的状态</h2><p>Folio 目前已经完成了主要 MVP 功能，包括基础看图、多图并列、Exif 查看与擦除、批量重命名、格式转换、缓存、预览图、设置持久化。 </p><p>后续会根据实际使用体验继续优化或是增加功能。</p><p>在这里记录一下。</p><h2 id="踩坑的地方"><a href="#踩坑的地方" class="headerlink" title="踩坑的地方"></a>踩坑的地方</h2><h3 id="macOS-15-的图标"><a href="#macOS-15-的图标" class="headerlink" title="macOS 15 的图标"></a>macOS 15 的图标</h3><p>在 macOS 26 上，使用纯白色背景的图片使用下面命令就可以创建图标，系统将自动处理圆角遮罩。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pnpx electron-icon-builder --input=resources/icon.png --output=resources --flatten</span><br></pre></td></tr></table></figure><p>但是在 macOS 15 上面，装完发现是大大的直角方块，考虑到 Apple 的生态，15 的占有率应该很低了，本来没打算处理的，但是 Claude 给了我一个脚本就解决了。</p><details class="flatpaper-note flatpaper-note--default"><summary class="flatpaper-note__title"><span class="flatpaper-note__icon" aria-hidden="true"></span><span class="flatpaper-note__label">mkicon.cjs</span><span class="flatpaper-note__chevron" aria-hidden="true"></span></summary><div class="flatpaper-note__body"><figure class="highlight plaintext"><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><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br></pre></td><td class="code"><pre><span class="line">用项目现成的 `sharp` 生成 macOS 形状的 1024 PNG。脚本(`mkicon.cjs`):</span><br><span class="line"></span><br><span class="line">```js</span><br><span class="line">const sharp = require(&#x27;sharp&#x27;)</span><br><span class="line">const SRC = &#x27;resources/icons/1024x1024.png&#x27;</span><br><span class="line">const OUT = process.argv[2]</span><br><span class="line">const C = 1024            // canvas</span><br><span class="line">const TILE = 952          // white squircle body (fills out near the edge)</span><br><span class="line">const OFF = (C - TILE) / 2 // 36</span><br><span class="line">const R = Math.round(TILE * 0.2237) // ≈ 213</span><br><span class="line"></span><br><span class="line">;(async () =&gt; &#123;</span><br><span class="line">  // 1) rounded mask for the tile</span><br><span class="line">  const mask = Buffer.from(</span><br><span class="line">    `&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;$&#123;TILE&#125;&quot; height=&quot;$&#123;TILE&#125;&quot;&gt;&lt;rect x=&quot;0&quot; y=&quot;0&quot; width=&quot;$&#123;TILE&#125;&quot; height=&quot;$&#123;TILE&#125;&quot; rx=&quot;$&#123;R&#125;&quot; ry=&quot;$&#123;R&#125;&quot; fill=&quot;#fff&quot;/&gt;&lt;/svg&gt;`,</span><br><span class="line">  )</span><br><span class="line">  const maskPng = await sharp(mask).png().toBuffer()</span><br><span class="line"></span><br><span class="line">  // 2) artwork resized to TILE and clipped to the rounded mask</span><br><span class="line">  const tile = await sharp(SRC)</span><br><span class="line">    .resize(TILE, TILE, &#123; fit: &#x27;cover&#x27; &#125;)</span><br><span class="line">    .composite([&#123; input: maskPng, blend: &#x27;dest-in&#x27; &#125;])</span><br><span class="line">    .png()</span><br><span class="line">    .toBuffer()</span><br><span class="line"></span><br><span class="line">  // 3) soft drop shadow: a black rounded rect, shifted down, blurred</span><br><span class="line">  const shadowSvg = Buffer.from(</span><br><span class="line">    `&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;$&#123;C&#125;&quot; height=&quot;$&#123;C&#125;&quot;&gt;&lt;rect x=&quot;$&#123;OFF&#125;&quot; y=&quot;$&#123;OFF + 8&#125;&quot; width=&quot;$&#123;TILE&#125;&quot; height=&quot;$&#123;TILE&#125;&quot; rx=&quot;$&#123;R&#125;&quot; ry=&quot;$&#123;R&#125;&quot; fill=&quot;rgba(0,0,0,0.32)&quot;/&gt;&lt;/svg&gt;`,</span><br><span class="line">  )</span><br><span class="line">  const shadow = await sharp(shadowSvg).blur(13).png().toBuffer()</span><br><span class="line"></span><br><span class="line">  // 4) compose: transparent canvas -&gt; shadow -&gt; tile</span><br><span class="line">  await sharp(&#123; create: &#123; width: C, height: C, channels: 4, background: &#123; r: 0, g: 0, b: 0, alpha: 0 &#125; &#125; &#125;)</span><br><span class="line">    .composite([</span><br><span class="line">      &#123; input: shadow, left: 0, top: 0 &#125;,</span><br><span class="line">      &#123; input: tile, left: OFF, top: OFF &#125;,</span><br><span class="line">    ])</span><br><span class="line">    .png()</span><br><span class="line">    .toFile(OUT)</span><br><span class="line">  console.log(&#x27;wrote&#x27;, OUT)</span><br><span class="line">&#125;)().catch((e) =&gt; &#123; console.error(e); process.exit(1) &#125;)</span><br></pre></td></tr></table></figure></div></details><details class="flatpaper-note flatpaper-note--info"><summary class="flatpaper-note__title"><span class="flatpaper-note__icon" aria-hidden="true"></span><span class="flatpaper-note__label">使用方法</span><span class="flatpaper-note__chevron" aria-hidden="true"></span></summary><div class="flatpaper-note__body"><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><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><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cd</span> apps/desktop</span><br><span class="line"></span><br><span class="line"><span class="comment"># 1) 生成 macOS 形状的 1024 PNG</span></span><br><span class="line">NODE_PATH=<span class="string">&quot;<span class="subst">$(pwd)</span>/node_modules:<span class="subst">$(pwd)</span>/../../node_modules&quot;</span> \</span><br><span class="line">  node /path/to/mkicon.cjs /tmp/icon-mac-1024.png</span><br><span class="line"></span><br><span class="line"><span class="comment"># 2) 切出 iconset 的 10 个标准尺寸</span></span><br><span class="line">ISET=/tmp/Folio.iconset</span><br><span class="line"><span class="built_in">rm</span> -rf <span class="string">&quot;<span class="variable">$ISET</span>&quot;</span> &amp;&amp; <span class="built_in">mkdir</span> -p <span class="string">&quot;<span class="variable">$ISET</span>&quot;</span></span><br><span class="line"><span class="function"><span class="title">mk</span></span>()&#123; sips -z <span class="string">&quot;<span class="variable">$2</span>&quot;</span> <span class="string">&quot;<span class="variable">$2</span>&quot;</span> /tmp/icon-mac-1024.png --out <span class="string">&quot;<span class="variable">$ISET</span>/<span class="variable">$1</span>&quot;</span> &gt;/dev/null; &#125;</span><br><span class="line">mk icon_16x16.png 16</span><br><span class="line">mk icon_16x16@2x.png 32</span><br><span class="line">mk icon_32x32.png 32</span><br><span class="line">mk icon_32x32@2x.png 64</span><br><span class="line">mk icon_128x128.png 128</span><br><span class="line">mk icon_128x128@2x.png 256</span><br><span class="line">mk icon_256x256.png 256</span><br><span class="line">mk icon_256x256@2x.png 512</span><br><span class="line">mk icon_512x512.png 512</span><br><span class="line">mk icon_512x512@2x.png 1024</span><br><span class="line"></span><br><span class="line"><span class="comment"># 3) 打包成 icns 并替换</span></span><br><span class="line">iconutil -c icns <span class="string">&quot;<span class="variable">$ISET</span>&quot;</span> -o resources/icons/icon.icns</span><br></pre></td></tr></table></figure></div></details><h3 id="HEIC、HEIF-与-JXL"><a href="#HEIC、HEIF-与-JXL" class="headerlink" title="HEIC、HEIF 与 JXL"></a>HEIC、HEIF 与 JXL</h3><p>APP 基于图片的支持能力很大程度上直接取决于 Chromium，不过大部分分发的图集也都是主流格式，也不是太大的问题，对于 HEIC、HEIF 与 JXL 在 macOS 上走了 sips&#x2F;imageIO 用于浏览查看， Windows 还暂不支持。</p><p>对于 JXL 目前 Chrome 已经恢复支持了，只是还需要通过 <code>chrome://flags</code> 开启，但是 Electron 里面测试了一下还未恢复支持，我觉得可能再等等就可以不需要使用第三方库了，JXL 还是很少遇到的。</p><p>而 HEIF 的分发需要版权费，目前对于我自己的需求来说倒是暂时用不上。</p><p>先不考虑支持。</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>Folio 是我给按照自己的使用需求来创建的，得益于 Electron ，界面还是很现代化的。</p><p>目前 Folio 并不是图库管理软件，而是更直接的日常图片工作流：打开、浏览、对比、查看信息、清理隐私、重命名、转换格式。</p><p>如果你经常需要处理一堆图片，尤其是经常要对比多张图，Folio 应该会是一个挺顺手的工具。</p><h2 id="已知问题"><a href="#已知问题" class="headerlink" title="已知问题"></a>已知问题</h2><ul><li><input checked="" disabled="" type="checkbox"> 多图模式下没有预载，切换会需要等待载入</li><li><input checked="" disabled="" type="checkbox"> 进入大图模式时，没有服用预览图作为过度</li><li><input checked="" disabled="" type="checkbox"> 全屏模式快捷功能栏与标题栏有空隙</li><li><input disabled="" type="checkbox"> 没有处理图片格式关联，需要先打开软件才行</li></ul><h2 id="TODO"><a href="#TODO" class="headerlink" title="TODO"></a>TODO</h2><ul><li><input checked="" disabled="" type="checkbox"> 支持 Ctrl + 滚轮切换图片</li><li><input checked="" disabled="" type="checkbox"> 限制分组切换速度，罗技鼠标和 mac 触摸板滑动的是真快呀</li><li><input checked="" disabled="" type="checkbox"> 多图模式预览直接支持拖拽</li><li><input disabled="" type="checkbox"> 图片裁剪，这个一看就很简单</li><li><input disabled="" type="checkbox"> 图片压缩，批量压缩，这个也是 Sharp 就支持的，比较简单</li><li><input disabled="" type="checkbox"> 没有签名，现在我想给 APPLE 交 99 美元都不收。</li></ul>]]>
    </content>
    <id>https://homulilly.com/post/new-photo-viewer-folio.html</id>
    <link href="https://homulilly.com/post/new-photo-viewer-folio.html"/>
    <published>2026-06-23T18:35:32.000Z</published>
    <summary>
      <![CDATA[<p>身为一个仓鼠党，下了一些图集，需要保存图片到一个文件夹、擦除 EXIF、快速重命名，工具倒是都有，但是都需要打开各种不同的软件，略有麻烦。 </p>
<p>于是根据我自己的需求，开发了一款新的看图软件 ：<a href="https://folio.nep.me/">Fol]]>
    </summary>
    <title>开发了一款适合查看图集的看图软件 ：Folio</title>
    <updated>2026-07-09T03:41:49.056Z</updated>
  </entry>
  <entry>
    <author>
      <name>Aroes</name>
    </author>
    <category term="Note" scheme="https://homulilly.com/categories/Note/"/>
    <category term="Apple Developer" scheme="https://homulilly.com/tags/Apple-Developer/"/>
    <content>
      <![CDATA[<h2 id="问题描述"><a href="#问题描述" class="headerlink" title="问题描述"></a>问题描述</h2><p>我的 Apple 账户换过地区，而且也换了邮箱，由 <code>A[at]gmail.com</code> 换到 <code>B[at]gmail.com</code> ，在日常使用中倒是没有影响，直到接触了 vibe coding ，将 App 安装到真机时需要创建 Apple Developer 账户，登陆 <a href="https://developer.apple.com/">https://developer.apple.com</a> 时发现右上角的账户显示还旧的 <code>A[at]gmail.com</code>。</p><p><img src="https://img.nep.me/blog/apple-dev-email.webp" alt="apple-dev-email.png"></p><p>我在 <a href="https://account.apple.com/">https://account.apple.com/</a> 中已经确认了，主邮箱已更改，旧的邮箱也没有保留，登陆也是使用的新邮箱登陆。 </p><p>我以为需要购买 99 美元的开发者服务后才可以解锁一些信息修改面板。 正好这也不影响我在 Xcode 每 7 天打包一次 APP，就拖了一阵子没有处理。</p><p>但是，每 7 天打包一次实在是太麻烦了，有时出门打开 APP 提示已无法使用，遂打算上交这笔 99 美元的 “保护费”。</p><p>结果点击填完信息罪后点击 <strong>Enroll</strong> 时直接提示错误：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">We are unable to process your request.</span><br><span class="line">An unknown error occurred.</span><br></pre></td></tr></table></figure><p>emm… 这让我觉得邮箱可能真是个问题，但是看了 Apple Account 网页确实找不到旧邮箱的信息。</p><h2 id="解决-Apple-Developer-显示旧邮箱"><a href="#解决-Apple-Developer-显示旧邮箱" class="headerlink" title="解决 Apple Developer 显示旧邮箱"></a>解决 Apple Developer 显示旧邮箱</h2><p>直到我打开了网页的 Apple Store ，点击右上角的购物袋，再点击里面的 <strong>账户</strong> 发现下面账户部分，配送地址的右侧有一个联系信息还是 <strong>旧的邮箱与电话</strong>，已经好久没有在在线商店购买过东西了，所以一直没有发现。</p><p>点击编辑这个联系信息，明明也都写了 <strong>任意</strong> ，总之我还是修改了为了新的邮箱。 </p><p>返回 Apple Developer 网站后发现，右上角的信息显示是现在的 <code>B[at]gmail.com</code> 了，奇妙的调用。</p><h3 id="步骤操作"><a href="#步骤操作" class="headerlink" title="步骤操作"></a>步骤操作</h3><ul><li>打开 Apple Store 网页</li><li>点击右上角购物袋</li><li>点击 <strong>账户</strong></li><li>编辑配送地址旁边的 <strong>联系信息</strong></li><li>将旧邮箱、旧电话改为新的联系信息</li><li>回到 Apple Developer 后，右上角邮箱显示恢复正常</li></ul><h3 id="解决申请-Apple-Developer-账户时-Enroll-报错"><a href="#解决申请-Apple-Developer-账户时-Enroll-报错" class="headerlink" title="解决申请 Apple Developer 账户时 Enroll 报错"></a>解决申请 Apple Developer 账户时 Enroll 报错</h3><p>修改 Apple Store 联系信息后，Apple Developer 右上角显示的邮箱已经更新，但点击 Enroll 注册开发者账户时，仍然提示：</p><p><mark>An unknown error occurred</mark>.</p><p>邮件联系了支持服务，一直没有回应，在我继续检查 Apple 账户页面时发现，两步验证的手机还是旧的，与当前的账户所在地区不一致，因为一直使用设备验证，忘记了。</p><p><strong>修改为与账户所在地区匹配的手机号码后，再点击 Enroll 就可以进入下一步了</strong>。</p>]]>
    </content>
    <id>https://homulilly.com/post/fix-apple-developer-apple-account-email-mismatch.html</id>
    <link href="https://homulilly.com/post/fix-apple-developer-apple-account-email-mismatch.html"/>
    <published>2026-06-22T08:31:59.000Z</published>
    <summary>
      <![CDATA[<h2 id="问题描述"><a href="#问题描述" class="headerlink" title="问题描述"></a>问题描述</h2><p>我的 Apple 账户换过地区，而且也换了邮箱，由 <code>A[at]gmail.com</code> 换到 <code]]>
    </summary>
    <title>修复 Apple Developer 邮箱与 Apple 账户邮箱不一致的问题</title>
    <updated>2026-06-29T19:44:50.786Z</updated>
  </entry>
  <entry>
    <author>
      <name>Aroes</name>
    </author>
    <category term="Project" scheme="https://homulilly.com/categories/Project/"/>
    <category term="Hexo" scheme="https://homulilly.com/tags/Hexo/"/>
    <category term="Hexo Theme" scheme="https://homulilly.com/tags/Hexo-Theme/"/>
    <category term="Flatpaper" scheme="https://homulilly.com/tags/Flatpaper/"/>
    <content>
      <![CDATA[<p>Hexo 主题 Flatpaper 现在支持设置开屏大图(Hero Image)了。 Hero 部分的信息默认复用站点标题、简介、头像、社交链接，也支持自定义显示的信息。 支持设置背景图片，也可以不设置。</p><p>还支持放一些 Sticker 贴纸，<strong>可以拖动</strong>。</p><img src="https://img.nep.me/blog/homlilly-og.webp" alt="homlilly-og.png" style="width:50%;max-width:100%;height:auto" /><span id="more"></span><p>这个功能适合想让首页第一屏更有识别度的站点：个人博客可以放一张代表近期状态的照片，摄影站可以放作品封面，作品集可以用视觉图建立风格，轻量手账站也可以继续使用默认纸张背景和便签贴纸，不需要的话也可以直接关闭，关闭后不会输出样式文件到站点中。</p><p>效果查看本站 <a href="https://homulilly.com/">首页</a> 即可。<br>演示网站关闭了背景图片： <a href="https://flatpaper.nep.me/">Flatpaper Demo</a> ，下面是配置说明。</p><h2 id="开启-Hero"><a href="#开启-Hero" class="headerlink" title="开启 Hero"></a>开启 Hero</h2><p>Hero 默认关闭，不影响已有站点。要启用它，在主题配置里设置：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">home_hero:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br></pre></td></tr></table></figure><p>开启后，Hero 只会在首页第一页显示。继续翻页或进入文章页时，页面会回到原本的列表和阅读布局。</p><h2 id="文案与头像"><a href="#文案与头像" class="headerlink" title="文案与头像"></a>文案与头像</h2><p>Hero 默认会复用 <code>profile</code> 里的头像、简介、社交链接与 RSS。如果你想让首页开屏使用独立内容，可以在 <code>home_hero</code> 里覆盖：</p><figure class="highlight yaml"><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><span class="line"><span class="attr">home_hero:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">title:</span> <span class="string">我的手账</span></span><br><span class="line">  <span class="attr">subtitle:</span> <span class="string">今日份记录</span></span><br><span class="line">  <span class="attr">bio:</span> <span class="string">写给路过此处的你。</span></span><br><span class="line">  <span class="attr">avatar:</span> <span class="string">/images/avatar.jpg</span></span><br><span class="line">  <span class="attr">avatar_shape:</span> <span class="string">circle</span></span><br></pre></td></tr></table></figure><p>这些字段的作用分别是：</p><ul><li><code>title</code>：Hero 主标题，默认使用站点标题。</li><li><code>subtitle</code>：标题上方的小标签文字，默认可复用 profile role。</li><li><code>bio</code>：标题下方的简介文字，默认可复用 profile bio。</li><li><code>avatar</code>：头像图片路径。</li><li><code>avatar_shape</code>：头像形状，支持 <code>circle</code> 或默认方形。</li></ul><p>如果没有配置头像，Hero 会显示一个主题内置的简化头像块，保证布局不会空掉。</p><h2 id="背景图"><a href="#背景图" class="headerlink" title="背景图"></a>背景图</h2><p>Hero 可以保持默认纸张背景，也可以设置图片背景。最简单的配置是一张图：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">home_hero:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">image:</span> <span class="string">/images/hero.jpg</span></span><br></pre></td></tr></table></figure><p><code>image</code> 支持站内相对路径，也支持完整 URL。站内图片可以放在 Hexo 的 <code>source/images/</code> 目录下，然后用 <code>/images/hero.jpg</code> 引用。</p><p>建议选择横向图，画面主体不要过于贴边。Hero 中央会叠加标题、简介、头像和社交链接，右上角还可能有工具按钮，所以图片需要给内容层留出空间。</p><h2 id="随机背景图"><a href="#随机背景图" class="headerlink" title="随机背景图"></a>随机背景图</h2><p>如果想让首页每次打开都有一点变化，可以把 <code>image</code> 写成数组：</p><figure class="highlight yaml"><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></pre></td><td class="code"><pre><span class="line"><span class="attr">home_hero:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">image:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">/images/hero-1.jpg</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">/images/hero-2.jpg</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">/images/hero-3.jpg</span></span><br></pre></td></tr></table></figure><p>浏览器载入时会从数组里随机挑选一张。这个方式适合一组同风格图片，比如同一套摄影、同一个角色主题、同一个颜色主题，或者一组季节感封面。</p><h2 id="图片遮罩"><a href="#图片遮罩" class="headerlink" title="图片遮罩"></a>图片遮罩</h2><h2 id="图片遮罩-1"><a href="#图片遮罩-1" class="headerlink" title="图片遮罩"></a>图片遮罩</h2><p>主题在使用壁纸后会添加阴影遮罩降低亮度，Hero 提供 <code>image_overlay</code> 来控制图片上方的暗色渐变遮罩，主题的默认是 0.2 - 0.2 的均匀遮罩：</p><p>可以根据图片效果调整</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">home_hero:</span></span><br><span class="line">  <span class="attr">image_overlay:</span> [<span class="number">0.2</span>, <span class="number">0.2</span>]</span><br></pre></td></tr></table></figure><p>数组里第一个值是顶部透明度，第二个值是底部透明度，范围是 <code>0</code> 到 <code>1</code>。数值越高，遮罩越深，当数值不同时，会有自上而下的渐变效果。</p><p>常见调整思路：</p><ul><li>图片偏亮时，增大数字，例如 <code>[0.25, 0.35]</code>。 可以形成上浅下深的渐变遮罩。</li><li>图片本身已经很暗时，降低数字，例如 <code>[0.1, 0.1]</code>。</li></ul><p>当然你无需每次重启服务器，可以在这里提前预览调整 ：<a href="https://hexotag.nep.me/hero">FlatPaper Tools - Hero</a></p><h2 id="跳转箭头"><a href="#跳转箭头" class="headerlink" title="跳转箭头"></a>跳转箭头</h2><p>Hero 底部有一个向下的箭头，用来进入首页内容区。默认目标是首页文章列表区域，也可以自定义：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">home_hero:</span></span><br><span class="line">  <span class="attr">cta_link:</span> <span class="string">&quot;#flatpaper-home-content&quot;</span></span><br></pre></td></tr></table></figure><p>如果你在首页放了自定义锚点，也可以把 <code>cta_link</code> 指向那个位置。</p><h2 id="工具按钮与社交链接"><a href="#工具按钮与社交链接" class="headerlink" title="工具按钮与社交链接"></a>工具按钮与社交链接</h2><p>Hero 右上角会显示主题工具按钮，例如明暗模式切换；如果启用了可拖动 sticker，还会显示重排 sticker 的按钮。社交链接区域则复用 <code>profile.social</code> 或主题全局 <code>social</code> 配置。</p><p>这样 Hero 不只是静态封面，也保留了进入站点内容、切换阅读模式和访问外部主页的入口。</p><h2 id="Sticker-贴纸"><a href="#Sticker-贴纸" class="headerlink" title="Sticker 贴纸"></a>Sticker 贴纸</h2><p>Hero 仍然保留 FlatPaper 的手账感贴纸。内置便签和自定义图片 sticker 可以同时使用：</p><figure class="highlight yaml"><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></pre></td><td class="code"><pre><span class="line"><span class="attr">home_hero:</span></span><br><span class="line">  <span class="attr">stickers:</span></span><br><span class="line">    <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">    <span class="attr">draggable:</span> <span class="literal">true</span></span><br><span class="line">    <span class="attr">note_text:</span> <span class="string">今日</span></span><br><span class="line">    <span class="attr">items:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">image:</span> <span class="string">/images/stickers/github.png</span></span><br><span class="line">        <span class="attr">alt:</span> <span class="string">GitHub</span></span><br><span class="line">        <span class="attr">size:</span> <span class="number">96</span></span><br><span class="line">        <span class="attr">link:</span> <span class="string">https://github.com/yourname</span></span><br></pre></td></tr></table></figure><p><code>stickers</code> 的几个常用字段：</p><ul><li><code>enable</code>：是否显示贴纸。</li><li><code>draggable</code>：是否允许拖动贴纸。</li><li><code>note_text</code>：内置便签贴纸的文字。</li><li><code>items</code>：自定义图片贴纸列表。</li><li><code>size</code>：单个图片贴纸尺寸。</li><li><code>link</code>：可选链接，配置后贴纸可以作为入口跳转；不配置时贴纸只是装饰。</li></ul><p>配置了 <code>link</code> 的 sticker 不会在点击时立刻跳转，而是先弹出访问确认。这样在拖动贴纸、整理位置或误点时，不会直接离开当前页面；确认后才会打开对应链接。</p><p>自定义图片 sticker 最多渲染 5 张。加上内置便签后，Hero 最多显示 6 个 sticker。</p><h2 id="完整示例"><a href="#完整示例" class="headerlink" title="完整示例"></a>完整示例</h2><p>下面是一段较完整的 Hero 配置：</p><figure class="highlight yaml"><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><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">home_hero:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">title:</span> <span class="string">我的手账</span></span><br><span class="line">  <span class="attr">subtitle:</span> <span class="string">今日份记录</span></span><br><span class="line">  <span class="attr">bio:</span> <span class="string">生活不是每天都精彩，但总有值得收藏的片段。</span></span><br><span class="line">  <span class="attr">avatar:</span> <span class="string">/images/avatar.jpg</span></span><br><span class="line">  <span class="attr">avatar_shape:</span> <span class="string">circle</span></span><br><span class="line">  <span class="attr">image:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">/images/hero-1.jpg</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">/images/hero-2.jpg</span></span><br><span class="line">  <span class="attr">image_overlay:</span> [<span class="number">0.22</span>, <span class="number">0.58</span>]</span><br><span class="line">  <span class="attr">cta_link:</span> <span class="string">&quot;#flatpaper-home-content&quot;</span></span><br><span class="line">  <span class="attr">stickers:</span></span><br><span class="line">    <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">    <span class="attr">draggable:</span> <span class="literal">true</span></span><br><span class="line">    <span class="attr">note_text:</span> <span class="string">今日</span></span><br><span class="line">    <span class="attr">items:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">image:</span> <span class="string">/images/stickers/github.png</span></span><br><span class="line">        <span class="attr">alt:</span> <span class="string">GitHub</span></span><br><span class="line">        <span class="attr">size:</span> <span class="number">96</span></span><br><span class="line">        <span class="attr">link:</span> <span class="string">https://github.com/yourname</span></span><br></pre></td></tr></table></figure><h2 id="移动端表现"><a href="#移动端表现" class="headerlink" title="移动端表现"></a>移动端表现</h2><p>在窄屏上，Hero 会优先保证文字、头像和操作入口的稳定性。图片背景不会强行压缩所有内容，也不会让正文入口被视觉元素遮住。这样桌面端可以更有开屏感，移动端仍然保持 FlatPaper 一贯的阅读节奏。</p><h2 id="用工具生成配置"><a href="#用工具生成配置" class="headerlink" title="用工具生成配置"></a>用工具生成配置</h2><p>如果不想手写 YAML，可以使用 FlatPaper Tools 的 <a href="https://hexotag.nep.me/hero">Hero 工具</a>。它现在提供两个独立片段：</p><ul><li>遮罩配置：生成 <code>image_overlay</code>，并用示例图预览遮罩效果。</li><li>Sticker 配置：生成 <code>stickers</code>，填写图片地址后可以在底部预览贴纸图像。</li></ul><p>复制出来的片段会带有 <code># home_hero:</code> 注释作为定位提示。粘贴到已有 <code>home_hero:</code> 下方时，只需要保留子项缩进即可。</p><div class="flatpaper-note flatpaper-note--info"><span class="flatpaper-note__icon" aria-hidden="true"></span><div class="flatpaper-note__body"><p>示例网站的贴纸来自于：<a href="https://github.com/fenxer/llm-things">https://github.com/fenxer/llm-things</a></p></div></div><p><img src="https://img.nep.me/sticker/claudecode.webp" alt="claudecode.png"></p>]]>
    </content>
    <id>https://homulilly.com/post/hexo-theme-flapaper-now-support-hero-image.html</id>
    <link href="https://homulilly.com/post/hexo-theme-flapaper-now-support-hero-image.html"/>
    <published>2026-06-22T06:46:00.000Z</published>
    <summary>
      <![CDATA[<p>Hexo 主题 Flatpaper 现在支持设置开屏大图(Hero Image)了。 Hero 部分的信息默认复用站点标题、简介、头像、社交链接，也支持自定义显示的信息。 支持设置背景图片，也可以不设置。</p>
<p>还支持放一些 Sticker 贴纸，<strong>可以拖动</strong>。</p>
<img src="https://img.nep.me/blog/homlilly-og.webp" alt="homlilly-og.png" style="width:50%;max-width:100%;height:auto" />]]>
    </summary>
    <title>Hexo 主题 Flatpaper 现在支持开屏大图了</title>
    <updated>2026-06-24T17:05:22.252Z</updated>
  </entry>
  <entry>
    <author>
      <name>Aroes</name>
    </author>
    <category term="Project" scheme="https://homulilly.com/categories/Project/"/>
    <category term="Hexo" scheme="https://homulilly.com/tags/Hexo/"/>
    <category term="Hexo Theme" scheme="https://homulilly.com/tags/Hexo-Theme/"/>
    <category term="Flatpaper" scheme="https://homulilly.com/tags/Flatpaper/"/>
    <content>
      <![CDATA[<p>2026 年了 ，还有人给 Hexo 整新的主题，只能说 AI 还是太好用了。</p><p>主要还是 因为 Hexo 和 NEXT 主题都已经用了超过 10 年了，略微有些腻了。 </p><p>制作的过程也很简单，描述一下想要的效果，发送给 ChatGPT，让他使用 <code>gpt-image-2</code> 生成效果图，开始抽卡，然后选一张满意的。</p><p>打开 Claude Code &#x2F; Codex :</p><blockquote><p>帮我制作一款适用于 Hexo 博客的主题，风格参考 @图片</p></blockquote><p>几分钟后就好了。</p><p>当然一开始只是基础的功能，后续还需要根据需求来添加。</p><p>对话一天的成果：</p><p><img src="https://img.nep.me/blog/flatpaper-home.webp" alt="flatpaper-home.webp"></p><ul><li><a href="https://flatpaper.nep.me/">LIVE DEMO</a></li><li><a href="https://github.com/Homulilly/hexo-theme-flatpaper">GitHub - hexo-theme-flatpaper</a></li><li>增加了 <a href="https://flatpaper-docs.nep.me/">主题文档</a></li></ul><p>后续放弃了虚线的样式：<br><img src="https://img.nep.me/blog/flatpaper-preview.webp" alt="flatpaper-preview.webp"></p><h2 id="主题详情"><a href="#主题详情" class="headerlink" title="主题详情"></a>主题详情</h2><ul><li>支持暗色主题</li><li>首页三栏，文章、其他页面两栏</li><li>可以指定设置四个顶部指定文章(后续感觉可以增加类型，比如放张图片)</li><li>代码块使用 macOS 样式，支持 light\sand\dark 三种模式，支持折叠代码块</li><li>代码块支持点击行号高亮，双击复制单行</li><li>支持 Twikoo&#x2F;Artalk 评论系统</li><li>支持 Fancybox 5.0 图片灯箱</li><li>支持 <a href="https://homulilly.com/links/">友情链接</a> 页面</li><li>使用 <a href="https://lucide.dev/icons/">Lucide Icons</a>，不过目前只是预置了一部分</li><li>支持 Umami 评论系统，支持设置上报域名，本地预览不会统计了</li><li>兼容 Next 主题的 <a href="https://homulilly.com/post/hexo-use-note-and-tabs-block.html">NOTE 提示块</a> </li><li>NOTE 提示块支持使用 VitePress 的写法</li></ul><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">::: success</span><br><span class="line">NOTE 提示块</span><br><span class="line">:::</span><br></pre></td></tr></table></figure><div class="flatpaper-note flatpaper-note--success"><span class="flatpaper-note__icon" aria-hidden="true"></span><div class="flatpaper-note__body"><p>NOTE 提示块</p></div></div><h2 id="安装方法"><a href="#安装方法" class="headerlink" title="安装方法"></a>安装方法</h2><figure class="highlight sh"><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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 在你的 Hexo 站点文件夹内</span></span><br><span class="line">git <span class="built_in">clone</span> https://github.com/Homulilly/hexo-theme-flatpaper.git themes/flatpaper</span><br><span class="line"></span><br><span class="line"><span class="comment"># 在 &lt;site&gt;/_config.yml 中启用</span></span><br><span class="line">theme: flatpaper</span><br><span class="line"></span><br><span class="line"><span class="comment"># 复制并编辑主题配置</span></span><br><span class="line"><span class="built_in">cp</span> themes/flatpaper/_config.yml _config.flatpaper.yml</span><br><span class="line"></span><br><span class="line">hexo g &amp;&amp; hexo s</span><br></pre></td></tr></table></figure><h2 id="TODO"><a href="#TODO" class="headerlink" title="TODO"></a>TODO</h2><ul><li><input checked="" disabled="" type="checkbox"> Profile 的社交图标支持自定义</li><li><input checked="" disabled="" type="checkbox"> <del>Logo 支持图标、文字(填写一个或是同时填写)</del> 换成了一个菜单了</li><li><input disabled="" type="checkbox"> 搜索索引的现在只有标题与摘要不知道是不是应该索引全文</li><li><input checked="" disabled="" type="checkbox"> 代码块支持单击行号，高亮，双击复制对应行</li><li><input checked="" disabled="" type="checkbox"> Welcome Card 图片可以指定 </li><li><input checked="" disabled="" type="checkbox"> <a href="https://homulilly.com/post/hexo-use-note-and-tabs-block.html#4-%E4%BD%BF%E7%94%A8-Tabs-%E6%A0%87%E7%AD%BE">Tabs 标签</a> 样式</li><li><input checked="" disabled="" type="checkbox"> 点击评论按钮跳转到评论区</li><li><input checked="" disabled="" type="checkbox"> Artalk</li><li><input checked="" disabled="" type="checkbox"> 支持引入自定义 css &#x2F; js </li><li><input disabled="" type="checkbox"> 文章列表支持切换列表模式</li><li><input checked="" disabled="" type="checkbox"> 支持了 Hero</li><li><input checked="" disabled="" type="checkbox"> 重构了样式，不再以虚线边框驱动了</li></ul><p>先记录一下。</p>]]>
    </content>
    <id>https://homulilly.com/post/yet-another-flat-theme-for-hexo.html</id>
    <link href="https://homulilly.com/post/yet-another-flat-theme-for-hexo.html"/>
    <published>2026-05-16T07:31:35.000Z</published>
    <summary>
      <![CDATA[<p>2026 年了 ，还有人给 Hexo 整新的主题，只能说 AI 还是太好用了。</p>
<p>主要还是 因为 Hexo 和 NEXT 主题都已经用了超过 10 年了，略微有些腻了。 </p>
<p>制作的过程也很简单，描述一下想要的效果，发送给 ChatGPT，让他使用 <]]>
    </summary>
    <title>又一个 Hexo 博客的主题：FlatPaper</title>
    <updated>2026-06-29T20:43:08.530Z</updated>
  </entry>
  <entry>
    <author>
      <name>Aroes</name>
    </author>
    <category term="Project" scheme="https://homulilly.com/categories/Project/"/>
    <category term="Arknights Endfield" scheme="https://homulilly.com/tags/Arknights-Endfield/"/>
    <content>
      <![CDATA[<p>《明日方舟 终末地》目前看起来还可以，最近的更新降低了最高探索等级的怪物等级，说明运营还在关心玩家。 </p><p>两个星期体验下来，发现在前期搭建完基建与产线后，后期主要就是刷取基质了，刷出武器适配的基质的概率是 1&#x2F;24 ，但是我脸黑，刷了将近 100 个才给莱万汀的专武刷出来，而且刷着刷着发现预选词条选的也不对，次选词条我是选择的技能 夜幕，只能适配两把武器，改成 <strong>攻击提升</strong> 后居然可以适配四把六星武器。</p><p>记住武器词条的什么太麻烦了，整了一个小工具： <a href="https://endfield.ooo.run/zh/farm-on-region?egion=1&main=attr_str,attr_agi,attr_will&sub=attr_atk">https://endfield.ooo.run/farm-on-region</a> </p><p><img src="https://img.nep.me/endfield/blog/ef-zh-region-wuling-02.webp" alt="ef-zh-region-wuling-02.png"></p><p>刷之前，直接预览一下结果，不过只是一个网页小工具，刷还是要自己刷的。</p><p>还可以快速查看基质是否值得锁定 <a href="https://endfield.ooo.run/zh/check-essence">https://endfield.ooo.run/zh/check-essence</a></p>]]>
    </content>
    <id>https://homulilly.com/post/build-a-toolkit-for-arknights-endfield.html</id>
    <link href="https://homulilly.com/post/build-a-toolkit-for-arknights-endfield.html"/>
    <published>2026-02-06T01:06:43.000Z</published>
    <summary>
      <![CDATA[<p>《明日方舟 终末地》目前看起来还可以，最近的更新降低了最高探索等级的怪物等级，说明运营还在关心玩家。 </p>
<p>两个星期体验下来，发现在前期搭建完基建与产线后，后期主要就是刷取基质了，刷出武器适配的基质的概率是 1&#x2F;24 ，但是我脸黑，刷了将近 100 个才]]>
    </summary>
    <title>整了一个明日方舟 终末地的基质刷取小工具</title>
    <updated>2026-07-17T05:24:30.621Z</updated>
  </entry>
  <entry>
    <author>
      <name>Aroes</name>
    </author>
    <category term="Games" scheme="https://homulilly.com/categories/Games/"/>
    <category term="Arknights Endfield" scheme="https://homulilly.com/tags/Arknights-Endfield/"/>
    <content>
      <![CDATA[<p>又忍不住玩手游了，试试新出的 《明日方舟:终末地》，开服居然只开放第二章。</p><p>卡池机制看起来有些良心，但是当感觉抽卡游戏良心时就需要意识到已经上当了，实际上由于大保底不继承且会提前取消的机制使其没有看上去的那么好。</p><p>1 月 22 开服下载的，记录一下，看看这次能玩多久。</p><p>Update: 前半个月感觉很好，每天都有新鲜感，但是平均每天都要重复劳动 30min 左右还是太久了（</p><span id="more"></span><p>日常时间总结：<br>除了剧情与活动剧情以外，在前期完成了拉电线、摆好据点生产线。<br>每天上线需要</p><ul><li>倒买倒卖: 5min</li><li>给好友助力：大概 5min</li><li>送物资：可以直接扔给好友，如果为了一点羊毛自己送三次 5min x3</li></ul><p>感觉还行，体力回满需要一天半的时间，两天清一次体力，打个两把就行，还能摆道具助力。 </p><h2 id="开服福利"><a href="#开服福利" class="headerlink" title="开服福利"></a>开服福利</h2><ul><li>新手 40 连，保底一常驻六星，我不想说我出了签到送的 <strong>小羊</strong></li></ul><h2 id="人物卡池"><a href="#人物卡池" class="headerlink" title="人物卡池"></a>人物卡池</h2><h3 id="抽卡货币"><a href="#抽卡货币" class="headerlink" title="抽卡货币"></a>抽卡货币</h3><p><strong>嵌晶玉</strong> ，后文简称钻，氪金货币是 <strong>衍质源石</strong>，源石一颗可以兑换 75 钻，不区分氪金获取和免费获取。</p><h3 id="抽卡票"><a href="#抽卡票" class="headerlink" title="抽卡票"></a>抽卡票</h3><p>每票等于卡池一抽，500 钻。</p><ul><li><strong>普池票</strong> ：基础寻访</li><li><strong>特许票</strong> ：抽 UP 池</li><li><strong>当期特许票</strong> ：抽当期 UP 池，过期作废</li></ul><h3 id="常驻卡池"><a href="#常驻卡池" class="headerlink" title="常驻卡池"></a>常驻卡池</h3><p>目前卡池包含五常驻六星，80 抽保底一个六星，300 抽自选</p><h3 id="概率与机制"><a href="#概率与机制" class="headerlink" title="概率与机制"></a>概率与机制</h3><p>六星概率 <strong>0.8%</strong> ， UP 角色概率占一半 <strong>0.4%</strong> ，若第 65 次依然没有六星，每次抽取六星概率提升 5% ，不过六星保底次数可以跨池继承，因此没有必要单抽。</p><blockquote><p>若假设前 65 抽不出货，根据后续每抽概率提升 5%，期望出货抽数在 72 抽。</p></blockquote><ul><li><strong>30</strong> 抽赠送一次免费 10 连（不计入保底统计）</li><li><strong>60</strong> 抽赠送 <strong>下次</strong> 卡池 10 连</li><li><strong>10</strong> 抽保底五星</li><li><strong>80</strong> 抽保底六星，<strong>小保底</strong> ，继承到下个卡池。</li><li><strong>120</strong> 抽保底 <strong>UP</strong> （仅限一次）， <strong>大保底</strong>， <strong>不继承</strong> 到下个卡池。<ul><li>前 80 抽的保底出了当期 UP 取消该机制</li><li>前 80 抽的保底歪了，可以在第 120 抽获取当期 UP，同时会重置 80 抽的保底，120 抽保底并不是第二个六星必出 UP。</li></ul></li><li>240 抽赠送 UP 角色送突破素材</li><li>非常驻角色出现在 <strong>三个连续</strong> 特殊寻访卡池中</li></ul><h3 id="抽卡策略"><a href="#抽卡策略" class="headerlink" title="抽卡策略"></a>抽卡策略</h3><ol><li><p>当然只抽 60 最赚，直接每次白嫖额外 20 抽。</p></li><li><p>正常是满 <strong>120</strong> 抽再下池，保证获取当期 UP ，如果加上上个池子送的 10 抽，抽卡副产物兑换 5 抽，新卡池的签到送 5 抽，需准备 100 抽，约 50000 钻 （667源石），按不含双倍计算需 1550 元（648元 &#x3D; 280 源石）</p></li><li><p>邪道抽卡，前一个卡池垫 30 抽的 80 抽保底，预计可以在 40、70 抽获取小保底，根据 120 抽大保底的规则，在足够非(Gemini 说大约不足三成)时可以利益最大化，在两次小保底歪的情况下通过 120 抽获取三个六星。</p></li></ol><p><del>要记得，当开始算计手游厂商时，我们又上当了。</del></p><h2 id="武器卡池"><a href="#武器卡池" class="headerlink" title="武器卡池"></a>武器卡池</h2><ul><li>特殊货币 <strong>武库配额</strong>，抽人物卡池赠送<ul><li>六星 2000</li><li>五星 200</li><li>四星 20</li></ul></li><li>十连需 <strong>1980</strong></li><li>2480 兑换常驻六星武器（目测是轮换）</li><li>80 抽保底</li><li>120 抽送突破素材</li></ul><h2 id="突破机制"><a href="#突破机制" class="headerlink" title="突破机制"></a>突破机制</h2><h3 id="人物"><a href="#人物" class="headerlink" title="人物"></a>人物</h3><p>含本体六只满破，目前突破主要是倍率，无关键机制。</p><h3 id="武器"><a href="#武器" class="headerlink" title="武器"></a>武器</h3><p>一样含本体六把，不自动突破，加第三词条的属性上限</p><h2 id="游戏干什么"><a href="#游戏干什么" class="headerlink" title="游戏干什么"></a>游戏干什么</h2><ul><li>推图</li><li>剧情</li><li>建造： <ul><li>拉电线（滑起来很爽）</li><li>集成工业自动化生产，生产装备，赚游戏货币买素材道具</li></ul></li><li>刷武器配件</li></ul><h2 id="定期收入"><a href="#定期收入" class="headerlink" title="定期收入"></a>定期收入</h2><ul><li><strong>日常任务</strong>: 200 钻</li><li><strong>每周事务</strong>: 400 钻 + 100 武库配额</li><li><a href="https://game.skport.com/endfield/sign-in">Skport 签到</a>： 每月 260 钻</li></ul><h2 id="氪金项目"><a href="#氪金项目" class="headerlink" title="氪金项目"></a>氪金项目</h2><h3 id="月卡："><a href="#月卡：" class="headerlink" title="月卡："></a>月卡：</h3><p>30 元，购买送 12 源石，每日 200 钻，1 限时体力药，共计 12 抽 + 12 源石（1.8 抽）</p><h3 id="通行证"><a href="#通行证" class="headerlink" title="通行证"></a>通行证</h3><p>目测一期 45 天</p><ul><li>免费 ：600 钻</li><li>一档 ：29 源石购买（原价 32 源石）</li><li>返 32 源石，保本</li><li>材料、一个三选一六星武器箱</li><li>二档 ：氪金 68 元</li><li>材料、一个三选一六星武器箱</li><li>两个武器突破素材（箱子里可以选的）</li><li>购买时给 20 源石</li><li>升级包含 16 源石</li><li>2400 武库配额</li><li>理智萃取器：x10，通行证付费限定物品，可以转化为 120 理智(体力)的道具。</li></ul><h3 id="其他项目"><a href="#其他项目" class="headerlink" title="其他项目"></a>其他项目</h3><ul><li>常驻 10 连 + 武器 10 连 ： 98 元</li><li>当期 UP 池 10 连： 98 元 </li><li>UP 池 10 连 + 武器 10 连： 128 元</li></ul><h2 id="体力系统"><a href="#体力系统" class="headerlink" title="体力系统"></a>体力系统</h2><p>等级高了 2 天回满，可以摆烂。</p><h2 id="常用链接"><a href="#常用链接" class="headerlink" title="常用链接"></a>常用链接</h2><ul><li><a href="https://act.skport.com/endfield/preDownload">开服活动</a>：300 钻</li><li><a href="https://endfield.gryphline.com/activity/final-prep-orders">预抽卡</a>： 一周内可以完成，获取一把五星武器以及一个头像，2.7 截止。</li><li><a href="https://game.skport.com/map/endfield">Skport 网页地图</a></li><li><a href="https://www.gamekee.com/zmd/">Gamekee - 终末地</a></li><li><a href="https://jambochen.github.io/endfield-calc/">终末地工厂生产计算器</a></li><li><a href="https://endfield-calc.github.io/aef?v=11">终末地量化计算器</a>\</li><li><a href="https://ef.yituliu.cn/">终末地一图流</a></li><li><a href="https://opendfieldmap.cn/">终末地地图集</a></li></ul><h2 id="评价"><a href="#评价" class="headerlink" title="评价"></a>评价</h2><p>开服一周感想，不得不说滑索拉好后滑起来很爽，每天打开先干一波投机倒把的倒买倒卖大赚一笔也很爽。</p>]]>
    </content>
    <id>https://homulilly.com/post/game-endfield.html</id>
    <link href="https://homulilly.com/post/game-endfield.html"/>
    <published>2026-01-28T07:10:47.000Z</published>
    <summary>
      <![CDATA[<p>又忍不住玩手游了，试试新出的 《明日方舟:终末地》，开服居然只开放第二章。</p>
<p>卡池机制看起来有些良心，但是当感觉抽卡游戏良心时就需要意识到已经上当了，实际上由于大保底不继承且会提前取消的机制使其没有看上去的那么好。</p>
<p>1 月 22 开服下载的，记录一下，看看这次能玩多久。</p>
<p>Update: 前半个月感觉很好，每天都有新鲜感，但是平均每天都要重复劳动 30min 左右还是太久了（</p>]]>
    </summary>
    <title>手游观察：明日方舟 终末地</title>
    <updated>2026-02-27T15:20:42.574Z</updated>
  </entry>
  <entry>
    <author>
      <name>Aroes</name>
    </author>
    <category term="Note" scheme="https://homulilly.com/categories/Note/"/>
    <category term="Let's Encrypt" scheme="https://homulilly.com/tags/Let-s-Encrypt/"/>
    <category term="Cloudflare" scheme="https://homulilly.com/tags/Cloudflare/"/>
    <category term="Dokploy" scheme="https://homulilly.com/tags/Dokploy/"/>
    <content>
      <![CDATA[<p>之前看见过很多人推荐 <a href="https://dokploy.com/">Dokploy</a>，可以方便的部署、管理项目，印象颇深。 但是我还是一直在使用古法手动 <code>docker compose</code> 以及 <code>pnpm start</code> 运行一些项目。</p><p>随着现在 AI 的进步，整的小工具多了起来，确实管理起来略微麻烦，当然之前使用过 Dpanel 管理一些 Docker 应用，但是 Dpanel 的 2FA 是付费功能，略微不喜。  </p><p>于是打算先在我的局域网设备上体验一下。</p><span id="more"></span><h2 id="安装-Dokploy"><a href="#安装-Dokploy" class="headerlink" title="安装 Dokploy"></a>安装 Dokploy</h2><p>装了一个全新的 Debian 13 给 Dokploy 用 ，安装也是非常的简单，一条命令就可以了。</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl -sSL https://dokploy.com/install.sh | sh</span><br></pre></td></tr></table></figure><p>然后访问 <code>http://&lt;ip&gt;:3000</code> 就可以了。</p><h2 id="连接-GitHub"><a href="#连接-GitHub" class="headerlink" title="连接 GitHub"></a>连接 GitHub</h2><p>点击左侧的菜单的 <strong>Git</strong>，右侧 Git Providers，点击 <strong>Github</strong>，然后点击 <code>Create GitHub App</code> ，填写一个不重复的项目名称。</p><p>设置一下项目权限，然后就可以在 Dokploy 中部署对应的项目了。</p><h2 id="部署项目"><a href="#部署项目" class="headerlink" title="部署项目"></a>部署项目</h2><h3 id="首先创建一个-Project"><a href="#首先创建一个-Project" class="headerlink" title="首先创建一个 Project"></a>首先创建一个 Project</h3><p>在左侧菜单栏选择 Projects 后，右侧可以创建 Project。</p><p>Project（项目）是一个整体，在项目内部可以创建不同 Service（服务），创建服务时才会使用到 Github 。</p><h3 id="创建-Service"><a href="#创建-Service" class="headerlink" title="创建 Service"></a>创建 Service</h3><p>进入项目后，可以点击 <code>Create Service</code> 创建应用程序，可以选择以下的方式创建。</p><ul><li><strong>Application</strong> : 我们是从 GitHub 拉取镜像创建，选择这一个</li><li><strong>Database</strong> : 创建数据库应用</li><li><strong>Compose</strong> : 使用 Docker Compose 创建</li><li><strong>Template</strong> : 内建的模板市场</li></ul><p>选择 <strong>Application</strong> 创建后：</p><ul><li>打开对应的 Service，选择之前连接的 Github 账户与项目</li><li>环境变量在 <strong>Environment</strong> 中设置</li></ul><p>我的应用程序有提供 <code>Dockerfile</code> 文件，因此 Build Type 选择 Docckerfile 即可。</p><p><code>Dockerfile</code> 文件位于根目录，下面的路径直接填写 <code>Dockerfile</code> 即可，另外的保持默认。</p><p>然后点击顶部的 <code>Deploy</code> 即可拉取镜像进行部署。</p><h3 id="设置域名"><a href="#设置域名" class="headerlink" title="设置域名"></a>设置域名</h3><p>部署完成后，发现无法访问，点击 Logs 会查看的下面的内容：</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><span class="line">2025-12-15T09:38:31.197Z ▲ Next.js 15.5.9</span><br><span class="line">2025-12-15T09:38:31.197Z - Local:        http://14888c5aa2db:3000</span><br><span class="line">2025-12-15T09:38:31.197Z - Network:      http://14888c5aa2db:3000</span><br><span class="line">2025-12-15T09:38:31.197Z ✓ Starting...</span><br><span class="line">2025-12-15T09:38:31.276Z ✓ Ready <span class="keyword">in</span> 88ms</span><br></pre></td></tr></table></figure><p>这是因为没有设置 Domains ，无法访问到项目，Dokploy 使用的是 Traefik 进行反代与设置证书。</p><p>Dokploy 中默认使用的是 <code>httpChallenge</code> 签发 Let’s Encrypt 证书，如果 Dokploy 部署在公网服务器上，只要简单的填写 <strong>Host</strong> ，并将 <strong>Certificate Provider</strong> 选择 <strong>Let’s Encrypt</strong> 就可以打开 HTTPS 使用了。</p><p>可是我的 Dokploy 服务器位于局域网中，无法完成 httpChallenge ，不过 Traefik 是支持使用 Cloudflare API 进行 dnsChallenge 的，需要修改一些设置。</p><h2 id="设置-dnsChallenge-Cloudflare"><a href="#设置-dnsChallenge-Cloudflare" class="headerlink" title="设置 dnsChallenge(Cloudflare)"></a>设置 dnsChallenge(Cloudflare)</h2><h3 id="获取-Cloudflare-API-Token"><a href="#获取-Cloudflare-API-Token" class="headerlink" title="获取 Cloudflare API Token"></a>获取 Cloudflare API Token</h3><ul><li>登录 Cloudflare Dashboard: <a href="https://dash.cloudflare.com/profile/api-tokens">https://dash.cloudflare.com/profile/api-tokens</a></li><li>选择创建令牌</li><li>记得编辑一下 <strong>令牌名称</strong> 用于区分用途</li><li>令牌模板选择 <strong>编辑区域 DNS</strong> </li><li>根据最小化授权的原则，区域资源选择对应的域名</li><li>根据需求设置允许的 IP 地址以及生效时间</li></ul><p>点击继续，最后显示对应的 Token ，保存备用，Token 只会显示这一次，以后无法查看。</p><h3 id="修改-traefik-yml"><a href="#修改-traefik-yml" class="headerlink" title="修改 traefik.yml"></a>修改 traefik.yml</h3><p>在 Dokploy 左侧菜单栏选择 <code>Home</code> &gt; <code>Traefik File System</code>，右侧点击 <code>traefik.yml</code> ，需要点击 Unlock 才可以编辑，将底部的</p><figure class="highlight yml"><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><span class="line"><span class="attr">certificatesResolvers:</span> </span><br><span class="line">  <span class="attr">letsencrypt:</span> </span><br><span class="line">    <span class="attr">acme: email:</span> <span class="string">test@localhost.com</span> </span><br><span class="line">    <span class="attr">storage:</span> <span class="string">/etc/dokploy/traefik/dynamic/acme.json</span> </span><br><span class="line">    <span class="attr">httpChallenge: entryPoint:</span> <span class="string">web</span></span><br></pre></td></tr></table></figure><p>修改为</p><figure class="highlight yml"><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></pre></td><td class="code"><pre><span class="line"><span class="attr">certificatesResolvers:</span></span><br><span class="line">  <span class="attr">letsencrypt:</span></span><br><span class="line">    <span class="attr">acme:</span></span><br><span class="line">      <span class="attr">email:</span> <span class="string">username@yourdomain.com</span></span><br><span class="line">      <span class="attr">storage:</span> <span class="string">/etc/dokploy/traefik/dynamic/acme.json</span></span><br><span class="line">      <span class="attr">dnsChallenge:</span></span><br><span class="line">        <span class="attr">provider:</span> <span class="string">cloudflare</span></span><br><span class="line">        <span class="attr">delayBeforeCheck:</span> <span class="number">10</span></span><br></pre></td></tr></table></figure><p>点击 <code>Update</code> 后再点击右上角 <code>Lock</code></p><h3 id="设置-Cloudflare-API-Token"><a href="#设置-Cloudflare-API-Token" class="headerlink" title="设置 Cloudflare API Token"></a>设置 Cloudflare API Token</h3><p>在 Dokploy 左侧菜单栏选择 <code>Settings</code> &gt; <code>Web Server</code>，右侧点击 Traefik ，<code>Actions</code> 中选择 <code>Modify Environment</code> ，加入 Cloudflare API token 的设置。</p><p>修改后显示如下</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin</span><br><span class="line">CF_DNS_API_TOKEN=your_cloudflare_api_token</span><br></pre></td></tr></table></figure><p>然后就可以签发证书了， 访问 Dokploy 的域名也是在这个页面的 <code>Server Domain</code> 部分中进行设置。</p><h2 id="安全设置"><a href="#安全设置" class="headerlink" title="安全设置"></a>安全设置</h2><p>确认可以通过 HTTPS 域名访问 Dokploy 后，我们需要关闭 ip:port 的访问，<br>在服务器上执行下面的命令即可</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker service update --publish-rm <span class="string">&quot;published=3000,target=3000,mode=host&quot;</span> dokploy</span><br></pre></td></tr></table></figure><p>更多的安全内容请查看 <a href="https://docs.dokploy.com/docs/core/remote-servers/security">Dokploy Docs: Security</a></p>]]>
    </content>
    <id>https://homulilly.com/post/use-dokploy-in-local-network.html</id>
    <link href="https://homulilly.com/post/use-dokploy-in-local-network.html"/>
    <published>2025-12-15T10:03:44.000Z</published>
    <summary>
      <![CDATA[<p>之前看见过很多人推荐 <a href="https://dokploy.com/">Dokploy</a>，可以方便的部署、管理项目，印象颇深。 但是我还是一直在使用古法手动 <code>docker compose</code> 以及 <code>pnpm start</code> 运行一些项目。</p>
<p>随着现在 AI 的进步，整的小工具多了起来，确实管理起来略微麻烦，当然之前使用过 Dpanel 管理一些 Docker 应用，但是 Dpanel 的 2FA 是付费功能，略微不喜。  </p>
<p>于是打算先在我的局域网设备上体验一下。</p>]]>
    </summary>
    <title>在局域网中部署 Dokploy 并配合 dnsChallenge(Cloudflare) 签发证书</title>
    <updated>2026-05-21T04:28:15.612Z</updated>
  </entry>
  <entry>
    <author>
      <name>Aroes</name>
    </author>
    <category term="Note" scheme="https://homulilly.com/categories/Note/"/>
    <category term="Hexo" scheme="https://homulilly.com/tags/Hexo/"/>
    <content>
      <![CDATA[<p>闲来无事，更新了一下 Hexo 博客的版本，从 5.4.2 升级到 7.3.0 了，粗略一看没啥大问题，直到我打开友链页面，链接一个都没了</p><p>之前的创建方法在这里 <a href="https://homulilly.com/post/hexo-update-with-twikoo.html?highlight=%E5%8F%8B%E9%93%BE#6-%E8%AE%BE%E7%BD%AE-Links-%E9%A1%B5%E9%9D%A2%E6%A0%B7%E5%BC%8F">更新 Hexo 和 NexT 主题 - 设置 Links 页面</a></p><p>链接是保存在 <code>_data/links.yaml</code> 中的。</p><p>问了问 Claude Code ，说是可能 Liquid 模板语法 <code>&#123;% for %&#125;</code> 在 Hexo 新版本中不被支持了，所以无法读取 <code>_data/links.yaml</code> 中的内容，让 Claude Code 修改了一下没有成功。</p><p>想了一下，不如直接用 JavaScript 把内容写在 Links 页面里吧</p><p>环境</p><figure class="highlight sh"><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><span class="line">&gt;hexo --version</span><br><span class="line">INFO  Validating config</span><br><span class="line">hexo: 7.3.0</span><br><span class="line">hexo-cli: 4.3.2</span><br></pre></td></tr></table></figure><span id="more"></span><h2 id="创建-Links-页面"><a href="#创建-Links-页面" class="headerlink" title="创建 Links 页面"></a>创建 Links 页面</h2><p>执行 <code>hexo new page links</code>，替换文件内容如下</p><figure class="highlight markdown"><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><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br></pre></td><td class="code"><pre><span class="line">---</span><br><span class="line">title: 友情链接</span><br><span class="line"><span class="section">type: links</span></span><br><span class="line"><span class="section">---</span></span><br><span class="line"></span><br><span class="line">---- </span><br><span class="line"><span class="language-xml"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;links-content&quot;</span>&gt;</span></span></span><br><span class="line"><span class="code">    &lt;div class=&quot;link-navigation&quot; id=&quot;friendLinks&quot;&gt;</span></span><br><span class="line"><span class="code">        &lt;!-- 友情链接将通过 JavaScript 动态加载 --&gt;</span></span><br><span class="line"><span class="code">    &lt;/div&gt;</span></span><br><span class="line"><span class="code">&lt;/div&gt;</span></span><br><span class="line"><span class="code"></span></span><br><span class="line"><span class="language-xml"><span class="tag">&lt;<span class="name">script</span>&gt;</span></span></span><br><span class="line">document.addEventListener(&#x27;DOMContentLoaded&#x27;, function() &#123;</span><br><span class="line"><span class="code">    // 友情链接数据</span></span><br><span class="line"><span class="code">    const links = [</span></span><br><span class="line"><span class="code">        &#123;</span></span><br><span class="line"><span class="code">            name: &#x27;&#x27;,</span></span><br><span class="line"><span class="code">            info: &#x27;&#x27;,</span></span><br><span class="line"><span class="code">            site: &#x27;&#x27;,</span></span><br><span class="line"><span class="code">            avatar: &#x27;&#x27;</span></span><br><span class="line"><span class="code">        &#125;,        &#123;</span></span><br><span class="line"><span class="code">            name: &#x27;&#x27;,</span></span><br><span class="line"><span class="code">            info: &#x27;&#x27;,</span></span><br><span class="line"><span class="code">            site: &#x27;&#x27;,</span></span><br><span class="line"><span class="code">            avatar: &#x27;&#x27;</span></span><br><span class="line"><span class="code">        &#125;,</span></span><br><span class="line"><span class="code">    ];</span></span><br><span class="line"><span class="code"></span></span><br><span class="line"><span class="code">    const container = document.getElementById(&#x27;friendLinks&#x27;);</span></span><br><span class="line"><span class="code">    </span></span><br><span class="line"><span class="code">    links.forEach(function(link) &#123;</span></span><br><span class="line"><span class="code">        // 创建可点击的链接容器</span></span><br><span class="line"><span class="code">        const linkElement = document.createElement(&#x27;a&#x27;);</span></span><br><span class="line"><span class="code">        linkElement.href = link.site;</span></span><br><span class="line"><span class="code">        linkElement.target = &#x27;_blank&#x27;;</span></span><br><span class="line"><span class="code">        linkElement.style.textDecoration = &#x27;none&#x27;;</span></span><br><span class="line"><span class="code">        linkElement.style.color = &#x27;inherit&#x27;;</span></span><br><span class="line"><span class="code">        </span></span><br><span class="line"><span class="code">        // 创建卡片元素</span></span><br><span class="line"><span class="code">        const cardElement = document.createElement(&#x27;div&#x27;);</span></span><br><span class="line"><span class="code">        cardElement.className = &#x27;card&#x27;;</span></span><br><span class="line"><span class="code">        </span></span><br><span class="line"><span class="code">        // 创建图片元素</span></span><br><span class="line"><span class="code">        const imgElement = document.createElement(&#x27;img&#x27;);</span></span><br><span class="line"><span class="code">        imgElement.className = &#x27;ava nomediumzoom&#x27;;</span></span><br><span class="line"><span class="code">        imgElement.src = link.avatar;</span></span><br><span class="line"><span class="code">        </span></span><br><span class="line"><span class="code">        // 添加图片加载失败的 fallback</span></span><br><span class="line"><span class="code">        imgElement.onerror = function() &#123;</span></span><br><span class="line"><span class="code">            this.src = &#x27;/images/error.gif&#x27;;</span></span><br><span class="line"><span class="code">            this.onerror = null; // 防止无限循环</span></span><br><span class="line"><span class="code">        &#125;;</span></span><br><span class="line"><span class="code">        </span></span><br><span class="line"><span class="code">        // 创建头像信息容器</span></span><br><span class="line"><span class="code">        const headerElement = document.createElement(&#x27;div&#x27;);</span></span><br><span class="line"><span class="code">        headerElement.className = &#x27;card-header&#x27;;</span></span><br><span class="line"><span class="code">        headerElement.innerHTML = </span></span><br><span class="line"><span class="code">            &#x27;&lt;div class=&quot;card-name&quot;&gt;&#x27; + link.name + &#x27;&lt;/div&gt;&#x27; +</span></span><br><span class="line"><span class="code">            &#x27;&lt;div class=&quot;info&quot;&gt;&#x27; + link.info + &#x27;&lt;/div&gt;&#x27;;</span></span><br><span class="line"><span class="code">        </span></span><br><span class="line"><span class="code">        // 组装卡片</span></span><br><span class="line"><span class="code">        cardElement.appendChild(imgElement);</span></span><br><span class="line"><span class="code">        cardElement.appendChild(headerElement);</span></span><br><span class="line"><span class="code">        linkElement.appendChild(cardElement);</span></span><br><span class="line"><span class="code">        container.appendChild(linkElement);</span></span><br><span class="line"><span class="code">    &#125;);</span></span><br><span class="line"><span class="code">&#125;);</span></span><br><span class="line"><span class="code">&lt;/script&gt;</span></span><br><span class="line"><span class="code"></span></span><br><span class="line">---- </span><br><span class="line"></span><br><span class="line"><span class="quote">&gt; 其他地方可以使用 markdown 填写内容</span></span><br><span class="line"></span><br><span class="line"><span class="quote">&gt; <span class="strong">**本站信息**</span> </span></span><br><span class="line">name: <span class="strong">**Homulilly**</span></span><br><span class="line">info:  Aroes\&#x27;s Blog </span><br><span class="line">site:  https://homulilly.com</span><br><span class="line">avatar:  https://homulilly.com/images/avatar.jpg</span><br><span class="line">rss: https://homulilly.com/atom.xml</span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="样式文件"><a href="#样式文件" class="headerlink" title="样式文件"></a>样式文件</h2><p>创建或是编辑 <code>source/_data/styles.styl</code></p><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><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><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/* 友情链接 */</span></span><br><span class="line"><span class="selector-id">#links</span> &#123;</span><br><span class="line">    <span class="attribute">margin-top</span>: <span class="number">5rem</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.links-content</span> &#123;</span><br><span class="line">    <span class="attribute">margin-top</span>: <span class="number">1rem</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.link-navigation</span> &#123;</span><br><span class="line">  <span class="attribute">display</span>: flex;</span><br><span class="line">  <span class="attribute">flex-wrap</span>: wrap;</span><br><span class="line">  <span class="attribute">justify-content</span>: space-between; <span class="comment">/* 可选：控制弹性项之间的水平间距 */</span></span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.card</span> &#123;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">270px</span>;</span><br><span class="line">    <span class="attribute">font-size</span>: <span class="number">1rem</span>;</span><br><span class="line">    <span class="attribute">padding</span>: <span class="number">10px</span> <span class="number">20px</span>;</span><br><span class="line">    <span class="attribute">border-radius</span>: <span class="number">4px</span>;</span><br><span class="line">    <span class="attribute">transition-duration</span>: <span class="number">0.15s</span>;</span><br><span class="line">    <span class="attribute">margin-bottom</span>: <span class="number">1rem</span>;</span><br><span class="line">    <span class="attribute">display</span>: flex;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">/* 鼠标悬浮时效果 */</span></span><br><span class="line"><span class="selector-class">.card</span><span class="selector-pseudo">:hover</span> &#123;</span><br><span class="line">    <span class="attribute">transform</span>: <span class="built_in">scale</span>(<span class="number">1.05</span>);</span><br><span class="line">&#125; </span><br><span class="line"></span><br><span class="line"><span class="selector-class">.card</span> <span class="selector-tag">a</span> &#123;</span><br><span class="line">    <span class="attribute">border</span>: none;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">/* 友情链接卡片整体链接样式 */</span></span><br><span class="line"><span class="selector-class">.link-navigation</span> &gt; <span class="selector-tag">a</span> &#123;</span><br><span class="line">    <span class="attribute">text-decoration</span>: none;</span><br><span class="line">    <span class="attribute">border-bottom</span>: none;</span><br><span class="line">    <span class="attribute">color</span>: inherit;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.link-navigation</span> &gt; <span class="selector-tag">a</span><span class="selector-pseudo">:hover</span> &#123;</span><br><span class="line">    <span class="attribute">border-bottom</span>: none;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.card</span> <span class="selector-class">.ava</span> &#123;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">3rem</span> <span class="meta">!important</span>;</span><br><span class="line">    <span class="attribute">height</span>: <span class="number">3rem</span> <span class="meta">!important</span>;</span><br><span class="line">    <span class="attribute">margin</span>: <span class="number">0</span> <span class="meta">!important</span>;</span><br><span class="line">    <span class="attribute">margin-right</span>: <span class="number">1em</span> <span class="meta">!important</span>;</span><br><span class="line">    <span class="attribute">border-radius</span>: <span class="number">4px</span>;</span><br><span class="line">    <span class="attribute">margin-top</span>: <span class="number">5px</span> <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.card</span> <span class="selector-class">.card-header</span> &#123;</span><br><span class="line">    <span class="attribute">font-style</span>: italic;</span><br><span class="line">    <span class="attribute">overflow</span>: hidden;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">236px</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.card</span> <span class="selector-class">.card-header</span> <span class="selector-class">.card-name</span> &#123;</span><br><span class="line">    <span class="attribute">font-style</span>: normal;</span><br><span class="line">    <span class="attribute">color</span>: <span class="number">#2bbc8a</span>;</span><br><span class="line">    <span class="attribute">font-weight</span>: bold;</span><br><span class="line">    <span class="attribute">text-decoration</span>: none;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.card</span><span class="selector-pseudo">:hover</span> <span class="selector-class">.card-header</span> <span class="selector-class">.card-name</span> &#123;</span><br><span class="line">    <span class="attribute">color</span>: <span class="number">#d480aa</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.card</span> <span class="selector-class">.card-header</span> <span class="selector-class">.info</span> &#123;</span><br><span class="line">    <span class="attribute">font-style</span>: normal;</span><br><span class="line">    <span class="attribute">color</span>: <span class="number">#a3a3a3</span>;</span><br><span class="line">    <span class="attribute">font-size</span>: <span class="number">14px</span>;</span><br><span class="line">    <span class="attribute">min-width</span>: <span class="number">0</span>;</span><br><span class="line">    <span class="attribute">text-overflow</span>: ellipsis;</span><br><span class="line">    <span class="attribute">overflow</span>: hidden;</span><br><span class="line">    <span class="attribute">white-space</span>: nowrap;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://homulilly.com/post/hexo-7-add-links-page.html</id>
    <link href="https://homulilly.com/post/hexo-7-add-links-page.html"/>
    <published>2025-08-07T14:15:53.000Z</published>
    <summary>
      <![CDATA[<p>闲来无事，更新了一下 Hexo 博客的版本，从 5.4.2 升级到 7.3.0 了，粗略一看没啥大问题，直到我打开友链页面，链接一个都没了</p>
<p>之前的创建方法在这里 <a href="https://homulilly.com/post/hexo-update-with-twikoo.html?highlight=%E5%8F%8B%E9%93%BE#6-%E8%AE%BE%E7%BD%AE-Links-%E9%A1%B5%E9%9D%A2%E6%A0%B7%E5%BC%8F">更新 Hexo 和 NexT 主题 - 设置 Links 页面</a></p>
<p>链接是保存在 <code>_data/links.yaml</code> 中的。</p>
<p>问了问 Claude Code ，说是可能 Liquid 模板语法 <code>&#123;% for %&#125;</code> 在 Hexo 新版本中不被支持了，所以无法读取 <code>_data/links.yaml</code> 中的内容，让 Claude Code 修改了一下没有成功。</p>
<p>想了一下，不如直接用 JavaScript 把内容写在 Links 页面里吧</p>
<p>环境</p>
<figure class="highlight sh"><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><span class="line">&gt;hexo --version</span><br><span class="line">INFO  Validating config</span><br><span class="line">hexo: 7.3.0</span><br><span class="line">hexo-cli: 4.3.2</span><br></pre></td></tr></table></figure>]]>
    </summary>
    <title>Hexo 7.3 添加友链页面（Hexo Theme NexT）</title>
    <updated>2025-08-25T18:06:50.240Z</updated>
  </entry>
  <entry>
    <author>
      <name>Aroes</name>
    </author>
    <category term="Note" scheme="https://homulilly.com/categories/Note/"/>
    <category term="Docker" scheme="https://homulilly.com/tags/Docker/"/>
    <category term="Docker Compose" scheme="https://homulilly.com/tags/Docker-Compose/"/>
    <category term="Git" scheme="https://homulilly.com/tags/Git/"/>
    <category term="Gitea" scheme="https://homulilly.com/tags/Gitea/"/>
    <content>
      <![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>Git 用来同步一些文档、代码确实非常的方便，但是总会有一些文件不希望同步至 GitHub 或是其他的公共服务商，这时可以使用开源项目自建一个属于私人的 Git 服务器。  </p><p>我是有一些文件在只需要局域网内同步就可以了，在这之前我是使用的 GitLab 社区版部署的私人 Git 服务器。  </p><p>不得不说，GitLab 也是非常强大的，但相对的占用资源也比较高，需要较多的内存，而且也遇到过跨版本升级的问题。</p><p>GitLab CE 资源占用：</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">CONTAINER ID   NAME      CPU %     MEM USAGE / LIMIT     MEM %     NET I/O          BLOCK I/O         PIDS</span><br><span class="line">b20641ebf857   gitlab    17.74%    5.869GiB / 15.62GiB   37.58%    425kB / 5.35MB </span><br></pre></td></tr></table></figure><p>最终，我决定迁移至轻量级的 Gitea，Gitea 完成迁移后的资源占用：</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">CONTAINER ID   NAME         CPU %     MEM USAGE / LIMIT     MEM %     NET I/O         BLOCK I/O     PIDS </span><br><span class="line">57b52a98d527   gitea        0.14%     112.2MiB / 3.823GiB   2.87%     446kB / 345kB   0B / 113MB    14 </span><br><span class="line">3abf2803c22c   gitea-db-1   0.00%     26.32MiB / 3.823GiB   0.67%     347kB / 445kB   0B / 1.02MB   9 </span><br></pre></td></tr></table></figure><p>使用 Docker Compose 部署起来也是非常简单的。</p><span id="more"></span><h2 id="Gitea-介绍"><a href="#Gitea-介绍" class="headerlink" title="Gitea 介绍"></a>Gitea 介绍</h2><p>Gitea 的自我介绍：<strong>一款极易搭建的自助 Git 服务</strong></p><ul><li>易安装：通过 二进制 来运行；或者通过 Docker 来运行；或者通过 安装包 来运行。</li><li>跨平台：任何 Go 语言 支持的平台都可以运行 Gitea，包括 Windows、Mac、Linux 以及 ARM。</li><li>轻量级：一个廉价的树莓派的配置足以满足 Gitea 的最低系统硬件要求。最大程度上节省您的服务器资源！</li><li>开源化：所有的代码都开源在 code.gitea.io&#x2F;gitea 上</li></ul><h2 id="修改主机-SSH-端口"><a href="#修改主机-SSH-端口" class="headerlink" title="修改主机 SSH 端口"></a>修改主机 SSH 端口</h2><p>我们将使用 Docker 部署 Gitea，由于 git 默认使用 22 端口更方便一些，22 端口将映射给 Docker 使用，所以需要修改宿主机的 SSH 端口</p><div class="flatpaper-note flatpaper-note--info"><span class="flatpaper-note__icon" aria-hidden="true"></span><div class="flatpaper-note__body"><p>命令均是在 root 权限下执行</p></div></div><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vim /etc/ssh/sshd_config</span><br></pre></td></tr></table></figure><p>修改 <code>Port 22</code> 为其他数字。</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl restart sshd</span><br></pre></td></tr></table></figure><p>如果是远程服务器，记得先新开一个终端创建进行连接测试，确认可以登录再退出当前的窗口。</p><h2 id="使用-Docker-Compose-部署"><a href="#使用-Docker-Compose-部署" class="headerlink" title="使用 Docker Compose 部署"></a>使用 Docker Compose 部署</h2><div class="flatpaper-note flatpaper-note--info"><span class="flatpaper-note__icon" aria-hidden="true"></span><div class="flatpaper-note__body"><p>如果没有安装 docker compose， 可以查看 <a href="https://u.sb/debian-install-docker/">Debian 12 &#x2F; Ubuntu 24.04 安装 Docker 以及 Docker Compose 教程</a> </p></div></div><p>首先创建一个工作文件夹，然后在其中创建 docker-compose.yml 文件，填入下面的内容：</p><figure class="highlight yml"><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><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">networks:</span></span><br><span class="line">  <span class="attr">gitea:</span></span><br><span class="line">    <span class="attr">external:</span> <span class="literal">false</span></span><br><span class="line"></span><br><span class="line"><span class="attr">services:</span></span><br><span class="line">  <span class="attr">server:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">docker.gitea.com/gitea:1.24.2</span></span><br><span class="line">    <span class="attr">container_name:</span> <span class="string">gitea</span></span><br><span class="line">    <span class="attr">environment:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">USER_UID=1000</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">USER_GID=1000</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">GITEA__database__DB_TYPE=postgres</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">GITEA__database__HOST=db:5432</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">GITEA__database__NAME=gitea</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">GITEA__database__USER=gitea</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">GITEA__database__PASSWD=gitea</span></span><br><span class="line">    <span class="attr">restart:</span> <span class="string">always</span></span><br><span class="line">    <span class="attr">networks:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">gitea</span></span><br><span class="line">    <span class="attr">volumes:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">./gitea:/data</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">/etc/timezone:/etc/timezone:ro</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">/etc/localtime:/etc/localtime:ro</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;3000:3000&quot;</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;22:22&quot;</span></span><br><span class="line">    <span class="attr">depends_on:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">db</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">db:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">docker.io/library/postgres:14</span></span><br><span class="line">    <span class="attr">restart:</span> <span class="string">always</span></span><br><span class="line">    <span class="attr">environment:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">POSTGRES_USER=gitea</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">POSTGRES_PASSWORD=gitea</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">POSTGRES_DB=gitea</span></span><br><span class="line">    <span class="attr">networks:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">gitea</span></span><br><span class="line">    <span class="attr">volumes:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">./postgres:/var/lib/postgresql/data</span></span><br></pre></td></tr></table></figure><p>Gitea 的文件将保存在与 docker-compose.yml 同目录的 gitea 文件夹内，postgres 数据库文件保存在 postgres 文件夹内。</p><p>启动 Gitea ：</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker compose up -d</span><br></pre></td></tr></table></figure><p>可以省略 <code>docker compose pull</code>，第一次启动会自动拉取镜像。</p><p>然后就可以访问 <code>http://&lt;ip&gt;:3000</code> 查看，第一次打开会进入安装界面。</p><p>数据库部分不需要修改，可以修改下面的部分</p><ul><li>服务器域名</li><li>基础URL</li></ul><p><img src="https://m.nep.me/blog/post/gitea.png" alt="Gitea Homepage"></p><h2 id="关闭注册"><a href="#关闭注册" class="headerlink" title="关闭注册"></a>关闭注册</h2><p>进入 docker-compose.yml 目录，编辑文件 <code>./gitea/gitea/conf/app.ini</code> 文件</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vim ./gitea/gitea/conf/app.ini</span><br></pre></td></tr></table></figure><p>修改下面的内容</p><figure class="highlight ini"><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></pre></td><td class="code"><pre><span class="line"><span class="section">[service]</span></span><br><span class="line"><span class="attr">DISABLE_REGISTRATION</span> = <span class="literal">true</span>  <span class="comment"># 禁用注册</span></span><br><span class="line"><span class="comment">#...</span></span><br><span class="line"><span class="attr">SHOW_REGISTARTION_BUTTON</span> = <span class="literal">false</span> <span class="comment"># 隐藏注册按钮</span></span><br><span class="line"></span><br><span class="line"><span class="section">[openid]</span></span><br><span class="line"><span class="attr">ENABLE_OPENID_SIGNIN</span> = <span class="literal">false</span> <span class="comment"># 禁用openid登录</span></span><br><span class="line"><span class="attr">ENABLE_OPENID_SIGNUP</span> = <span class="literal">false</span> <span class="comment"># 禁用openid注册</span></span><br></pre></td></tr></table></figure><p>重启 Gitea:</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">docker compose down</span><br><span class="line">docker compose up -d</span><br></pre></td></tr></table></figure><p>如果使用 Nginx 反代 Web 界面，可以将 docker-compose.yml 中的端口设置问仅限本地访问： </p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">ports:</span><br><span class="line">  - &quot;127.0.0.1:3000:3000&quot;</span><br></pre></td></tr></table></figure><p>相比资源占用较大的 GitLab，Gitea 在功能上足够满足大多数个人或小团队的 Git 使用需求，且部署、维护成本极低，非常适合在本地或小型 VPS 上运行。</p><p>Gitea 的 Web 界面相当的简洁直观，功能上同样支持常见的 Git 功能和权限控制，支持使用 SSH Key 认证。如果你也有不便托管在 GitHub 上的私有项目，或者希望在局域网内构建自己的 Git 服务，Gitea 是一个非常值得尝试的解决方案。</p>]]>
    </content>
    <id>https://homulilly.com/post/use-docker-deploy-gitea.html</id>
    <link href="https://homulilly.com/post/use-docker-deploy-gitea.html"/>
    <published>2025-07-17T07:22:35.000Z</published>
    <summary>
      <![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>Git 用来同步一些文档、代码确实非常的方便，但是总会有一些文件不希望同步至 GitHub 或是其他的公共服务商，这时可以使用开源项目自建一个属于私人的 Git 服务器。  </p>
<p>我是有一些文件在只需要局域网内同步就可以了，在这之前我是使用的 GitLab 社区版部署的私人 Git 服务器。  </p>
<p>不得不说，GitLab 也是非常强大的，但相对的占用资源也比较高，需要较多的内存，而且也遇到过跨版本升级的问题。</p>
<p>GitLab CE 资源占用：</p>
<figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">CONTAINER ID   NAME      CPU %     MEM USAGE / LIMIT     MEM %     NET I/O          BLOCK I/O         PIDS</span><br><span class="line">b20641ebf857   gitlab    17.74%    5.869GiB / 15.62GiB   37.58%    425kB / 5.35MB </span><br></pre></td></tr></table></figure>

<p>最终，我决定迁移至轻量级的 Gitea，Gitea 完成迁移后的资源占用：</p>
<figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">CONTAINER ID   NAME         CPU %     MEM USAGE / LIMIT     MEM %     NET I/O         BLOCK I/O     PIDS </span><br><span class="line">57b52a98d527   gitea        0.14%     112.2MiB / 3.823GiB   2.87%     446kB / 345kB   0B / 113MB    14 </span><br><span class="line">3abf2803c22c   gitea-db-1   0.00%     26.32MiB / 3.823GiB   0.67%     347kB / 445kB   0B / 1.02MB   9 </span><br></pre></td></tr></table></figure>

<p>使用 Docker Compose 部署起来也是非常简单的。</p>]]>
    </summary>
    <title>使用 Docker 与 Gitea 部署私人 Git 服务器</title>
    <updated>2025-07-17T09:24:18.133Z</updated>
  </entry>
  <entry>
    <author>
      <name>Aroes</name>
    </author>
    <category term="Note" scheme="https://homulilly.com/categories/Note/"/>
    <category term="n8n" scheme="https://homulilly.com/tags/n8n/"/>
    <content>
      <![CDATA[<p>我自己部署了一个 n8n 的实例，使用了 n8n 作为自域名访问，结果在输入激活码（安装完成后的提示，以及邮件连接跳转）的时候，Chrome 提示危险网站，阻止了我的访问。  </p><p>搜索了一下，有很多类似的情况:  </p><ul><li><a href="https://community.n8n.io/t/n8n-subdomain-got-flagged-as-deceptive-website-by-google/31251">N8n subdomain got flagged as deceptive website by Google</a></li><li><a href="https://community.n8n.io/t/issues-accessing-self-hosted-n8n-n8n-b2bclientsystems-info-in-chrome-works-in-incognito-and-other-browsers/55142/1">Issues Accessing Self-Hosted n8n …</a></li></ul><p>推测是由于域名以及页面于官方相似，被算法判断为仿冒网站。  </p><p>虽然只会在部分 url 下触发警告，但是状态会影响到主域名以及所有的子域名，导致下载普通文件也可能会被拦截。</p><p>域名的当前状态可以在 <a href="https://transparencyreport.google.com/safe-browsing/search">安全浏览工具检测到的网站状态</a> 查看。</p><span id="more"></span><p>我使用的域名的检测结果：</p><blockquote><p>此网站的部分网页不安全<br>网站 xxxxx 包含有害内容，其中的某些网页会：</p></blockquote><blockquote><p>试图诱骗访问者透露个人信息或下载软件<br>不安全的内容可能只出现在某个网站的部分网页中。若想详细了解安全信息，请检查您要访问的具体目录或网页的网址。</p></blockquote><p>如果已经触发了</p><ul><li>建议更换子域名</li><li>在拦截页面点击反馈，说明情况，反馈此网页安全</li><li>在 <a href="https://search.google.com/search-console">Google web Search Console</a> 中添加域名，在安全问题中可以查看到 <strong>欺骗性网页</strong> 的安全问题，然后提交审核</li></ul><p>我在 Search Console 提交了审核后，第二天就通过了。</p><blockquote><p>Google 已收到并处理您的安全审核请求。Google 系统显示，xxxx.xxx 不再包含指向有害网站或下载内容的链接。系统正在从您的网站中取消向用户显示的警告这可能需要花费数小时的时间。</p></blockquote><p>与之类似的还有 Gitea，在部署了 n8n 后，我使用了 <code>gitea.domain.tld</code> 作为我新部署的 Gitea 实例的 WEB 页面的域名，结果在访问设置中的某个设置页面时，也触发了危险网站的提示，我更换了子域名访问就不会再触发，当然我不知道是否是由于当前已经被 Google 判断为不安全导致的。</p><p>所以除了 n8n，部署其他项目时最好也不要使用于官方项目相同的名称作为自域名吧。</p>]]>
    </content>
    <id>https://homulilly.com/post/avoid-use-n8n-as-subdomain-for-selfhosted-n8n.html</id>
    <link href="https://homulilly.com/post/avoid-use-n8n-as-subdomain-for-selfhosted-n8n.html"/>
    <published>2025-07-14T07:47:29.000Z</published>
    <summary>
      <![CDATA[<p>我自己部署了一个 n8n 的实例，使用了 n8n 作为自域名访问，结果在输入激活码（安装完成后的提示，以及邮件连接跳转）的时候，Chrome 提示危险网站，阻止了我的访问。  </p>
<p>搜索了一下，有很多类似的情况:  </p>
<ul>
<li><a href="https://community.n8n.io/t/n8n-subdomain-got-flagged-as-deceptive-website-by-google/31251">N8n subdomain got flagged as deceptive website by Google</a></li>
<li><a href="https://community.n8n.io/t/issues-accessing-self-hosted-n8n-n8n-b2bclientsystems-info-in-chrome-works-in-incognito-and-other-browsers/55142/1">Issues Accessing Self-Hosted n8n …</a></li>
</ul>
<p>推测是由于域名以及页面于官方相似，被算法判断为仿冒网站。  </p>
<p>虽然只会在部分 url 下触发警告，但是状态会影响到主域名以及所有的子域名，导致下载普通文件也可能会被拦截。</p>
<p>域名的当前状态可以在 <a href="https://transparencyreport.google.com/safe-browsing/search">安全浏览工具检测到的网站状态</a> 查看。</p>]]>
    </summary>
    <title>部署 n8n 时避免使用 n8n 作为子域名</title>
    <updated>2025-07-15T01:29:56.755Z</updated>
  </entry>
  <entry>
    <author>
      <name>Aroes</name>
    </author>
    <category term="Note" scheme="https://homulilly.com/categories/Note/"/>
    <category term="Windows 11" scheme="https://homulilly.com/tags/Windows-11/"/>
    <category term="HDR" scheme="https://homulilly.com/tags/HDR/"/>
    <category term="Dolby Vision" scheme="https://homulilly.com/tags/Dolby-Vision/"/>
    <content>
      <![CDATA[<p>这几天一直在折腾显卡的问题，只用 DP 接了普通的显示器使用，显卡的问题终于有些眉目了，于是重新接回我的 LG C2 电视，打开 HDR </p><p>嗯？ 屏幕你怎么绿了，而且以前切换后右上角是显示 <strong>HDR</strong> ，现在是 <strong>Dolby Vision</strong> ，难道显卡又出新毛病了？ </p><p>尝试了重启、换线都没有效果，只要一开 HDR 就是绿色的屏幕。 </p><p>我都准备又要使用 DDU 重装驱动了，还好先搜了一下，发现原来是 Windows 最近的更新导致的，解决也很简单</p><ul><li>桌面上点击右键，选择 <strong>显示设置</strong></li><li>选择 TV 对应的屏幕，进入 HDR 的菜单</li><li>点击 HDR 右侧的箭头展开菜单</li><li>关闭 <strong>使用 Dolby Vision 模式</strong></li></ul><p><img src="https://m.nep.me/blog/post/windows-11-tv-hdr-dolby.png" alt="fix windows 11 tv hdr green screen"> </p><p>但是如果重启电脑后，重新从非 HDR 显示器切换过来，又会恢复绿色屏幕，可以使用以下三种方法中的一种</p><span id="more"></span><ul><li>在设置中关闭 Dolby Vision 后，前往 Windows 更新，卸载 KB5063060 </li><li>在 Nvidia 控制面板中将色彩格式改为 YCbCr420 ，这将会导致图像质量下降</li><li>使用 CRU 禁用 Dolby 扩展，<a href="https://www.reddit.com/r/OLED_Gaming/comments/1lgfmml/comment/mzoexf0/">Permanently Disable Dolby Vision via CRU</a></li></ul><p>参考：<a href="https://www.reddit.com/r/OLED_Gaming/comments/1kztazu/lg_c2_showing_dolby_vision_with_purplegreen_tint/">LG C2 Showing Dolby Vision With Purple&#x2F;Green Tint After Win11 Update – CRU Didn’t Help</a></p>]]>
    </content>
    <id>https://homulilly.com/post/fix-win11-tv-hdr-green-screen.html</id>
    <link href="https://homulilly.com/post/fix-win11-tv-hdr-green-screen.html"/>
    <published>2025-07-11T17:35:24.000Z</published>
    <summary>
      <![CDATA[<p>这几天一直在折腾显卡的问题，只用 DP 接了普通的显示器使用，显卡的问题终于有些眉目了，于是重新接回我的 LG C2 电视，打开 HDR </p>
<p>嗯？ 屏幕你怎么绿了，而且以前切换后右上角是显示 <strong>HDR</strong> ，现在是 <strong>Dolby Vision</strong> ，难道显卡又出新毛病了？ </p>
<p>尝试了重启、换线都没有效果，只要一开 HDR 就是绿色的屏幕。 </p>
<p>我都准备又要使用 DDU 重装驱动了，还好先搜了一下，发现原来是 Windows 最近的更新导致的，解决也很简单</p>
<ul>
<li>桌面上点击右键，选择 <strong>显示设置</strong></li>
<li>选择 TV 对应的屏幕，进入 HDR 的菜单</li>
<li>点击 HDR 右侧的箭头展开菜单</li>
<li>关闭 <strong>使用 Dolby Vision 模式</strong></li>
</ul>
<p><img src="https://m.nep.me/blog/post/windows-11-tv-hdr-dolby.png" alt="fix windows 11 tv hdr green screen"> </p>
<p>但是如果重启电脑后，重新从非 HDR 显示器切换过来，又会恢复绿色屏幕，可以使用以下三种方法中的一种</p>]]>
    </summary>
    <title>Windows 11 下 LG 电视开启 HDR 发绿解决方案</title>
    <updated>2025-07-16T16:26:39.351Z</updated>
  </entry>
  <entry>
    <author>
      <name>Aroes</name>
    </author>
    <category term="Note" scheme="https://homulilly.com/categories/Note/"/>
    <category term="n8n" scheme="https://homulilly.com/tags/n8n/"/>
    <content>
      <![CDATA[<p>我刚装好的 n8n 实例，版本 1.101.1 ，后台访问没有问题，但是创建 workflow 的时候右上角提示 Connection lost</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">You have a connection issue or the server is down.</span><br><span class="line">n8n should reconnect automatically once the issue is resolved.</span><br></pre></td></tr></table></figure><p><img src="https://m.nep.me/blog/post/n8n-show-error.png" alt="n8n show connection lost">  </p><p>先说一下我的环境，我是使用 docker 安装的 n8n，然后使用了 Nginx 进行的反代，不是使用官方提供的带 Traefik 的 docker compose 文件。 </p><p>搜索了一下，发现是 n8n 后端的检测方式的问题，可以修改为使用 websocket 检测的方式：</p><span id="more"></span><p>在 docker-compose.yaml 中加入 <code>N8N_PUSH_BACKEND=websocket</code></p><figure class="highlight yaml"><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></pre></td><td class="code"><pre><span class="line"><span class="attr">services:</span></span><br><span class="line">  <span class="attr">n8n:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">docker.n8n.io/n8nio/n8n</span></span><br><span class="line">    <span class="attr">container_name:</span> <span class="string">n8n</span></span><br><span class="line">    <span class="attr">restart:</span> <span class="string">always</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;127.0.0.1:5678:5678&quot;</span></span><br><span class="line">    <span class="attr">environment:</span></span><br><span class="line">      <span class="comment"># ...</span></span><br><span class="line">      <span class="comment"># 添加下面这一行</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">N8N_PUSH_BACKEND=websocket</span></span><br><span class="line">      <span class="comment"># ...</span></span><br></pre></td></tr></table></figure><p>然后在 Nginx 中的反代部分启用 websocket 的支持</p><figure class="highlight plaintext"><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></pre></td><td class="code"><pre><span class="line">location / &#123;</span><br><span class="line">    proxy_pass http://127.0.0.1:5678;</span><br><span class="line">    proxy_set_header Host $host;</span><br><span class="line">    proxy_set_header X-Real-IP $remote_addr;</span><br><span class="line">    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;</span><br><span class="line">    proxy_set_header X-Forwarded-Proto https;</span><br><span class="line"></span><br><span class="line">    # 添加下面三行</span><br><span class="line">    proxy_http_version 1.1; </span><br><span class="line">    proxy_set_header Upgrade $http_upgrade;</span><br><span class="line">    proxy_set_header Connection &quot;upgrade&quot;;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>重启 n8n </p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">docker compose down </span><br><span class="line">docker compose up -d</span><br></pre></td></tr></table></figure><p>以及重载 nginx</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">nginx -t</span><br><span class="line">nginx -s reload</span><br></pre></td></tr></table></figure><p>然后就可以了 </p><p><img src="https://m.nep.me/blog/post/n8n-error-fixed.png" alt="n8n error fixed">  </p>]]>
    </content>
    <id>https://homulilly.com/post/fix-n8n-show-connection-lost-problem.html</id>
    <link href="https://homulilly.com/post/fix-n8n-show-connection-lost-problem.html"/>
    <published>2025-07-11T10:02:55.000Z</published>
    <summary>
      <![CDATA[<p>我刚装好的 n8n 实例，版本 1.101.1 ，后台访问没有问题，但是创建 workflow 的时候右上角提示 Connection lost</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">You have a connection issue or the server is down.</span><br><span class="line">n8n should reconnect automatically once the issue is resolved.</span><br></pre></td></tr></table></figure>

<p><img src="https://m.nep.me/blog/post/n8n-show-error.png" alt="n8n show connection lost">  </p>
<p>先说一下我的环境，我是使用 docker 安装的 n8n，然后使用了 Nginx 进行的反代，不是使用官方提供的带 Traefik 的 docker compose 文件。 </p>
<p>搜索了一下，发现是 n8n 后端的检测方式的问题，可以修改为使用 websocket 检测的方式：</p>]]>
    </summary>
    <title>解决 n8n 显示 Connection lost 的错误</title>
    <updated>2025-07-11T19:36:23.050Z</updated>
  </entry>
  <entry>
    <author>
      <name>Aroes</name>
    </author>
    <category term="Note" scheme="https://homulilly.com/categories/Note/"/>
    <category term="Docker" scheme="https://homulilly.com/tags/Docker/"/>
    <category term="Docker Compose" scheme="https://homulilly.com/tags/Docker-Compose/"/>
    <category term="Selfhost" scheme="https://homulilly.com/tags/Selfhost/"/>
    <category term="Umami" scheme="https://homulilly.com/tags/Umami/"/>
    <content>
      <![CDATA[<h2 id="关于-Umami"><a href="#关于-Umami" class="headerlink" title="关于 Umami"></a>关于 Umami</h2><p><a href="https://umami.is/">Umami</a> 是一个简单、快速、注重隐私且开源网站访问统计系统，可以作为 Google Analytics 的替代品，Umami 不使用 Cookie，不跟踪用户。   </p><p>Umami 支持自己部署，功能不受限制，如果自己没有服务器，也可以直接在官网注册使用。  </p><p>Umami 的界面非常简洁、直观，功能一目了然，这也是我使用 Umami 的原因，Google Analytics 太强大，界面也很复杂，有时找个功能要找半天。  </p><p>Umami 支持下面的功能</p><ul><li>统计浏览量、访问次数、访客数量、跳出率、平均访问时长</li><li>按时间段生成柱状图</li><li>查看每个 URL 对应的浏览量</li><li>查看来源域名</li><li>查看访客的浏览器、操作系统、设备类型、分辨率、地理位置</li><li>支持生成各种报告</li></ul><p>在开始使用之前，可以查看官方提供的 <a href="https://eu.umami.is/share/LGazGOecbDtaIwDr/umami.is">DEMO</a> 体验后台与统计效果<br><img src="https://m.nep.me/blog/post/umami-demo-preview.png" alt="Umami Demo Preview"></p><p>不过 Umami 不会区分 localhost 的域名，网页载入了统计代码的话就会进行统计。</p><h2 id="使用-Docker-Compose-部署"><a href="#使用-Docker-Compose-部署" class="headerlink" title="使用 Docker Compose 部署"></a>使用 Docker Compose 部署</h2><p>使用 <code>docker compose</code> 可以直接一键部署，首先创建 <code>docker-compose.yml</code>，填入下面的内容</p><span id="more"></span><div class="flatpaper-note flatpaper-note--info"><span class="flatpaper-note__icon" aria-hidden="true"></span><div class="flatpaper-note__body"><p>如果没有安装 docker compose， 可以查看 <a href="https://u.sb/debian-install-docker/">Debian 12 &#x2F; Ubuntu 24.04 安装 Docker 以及 Docker Compose 教程</a> </p></div></div><p>使用的是官方提供的自带 postgresql 数据库版本的镜像</p><figure class="highlight yaml"><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><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">services:</span></span><br><span class="line">  <span class="attr">umami:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">ghcr.io/umami-software/umami:postgresql-latest</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;3000:3000&quot;</span></span><br><span class="line">    <span class="attr">environment:</span></span><br><span class="line">      <span class="comment"># 使用自己的密码替换 &lt;db_passwd&gt; </span></span><br><span class="line">      <span class="attr">DATABASE_URL:</span> <span class="string">postgresql://umami:&lt;db_passwd&gt;@db:5432/umami</span></span><br><span class="line">      <span class="attr">DATABASE_TYPE:</span> <span class="string">postgresql</span></span><br><span class="line">      <span class="comment"># 生成一段随机字符串替换 &lt;app_secret&gt;</span></span><br><span class="line">      <span class="comment"># openssl rand -base64 32</span></span><br><span class="line">      <span class="attr">APP_SECRET:</span> <span class="string">&lt;app_secret&gt;</span></span><br><span class="line">    <span class="attr">depends_on:</span></span><br><span class="line">      <span class="attr">db:</span></span><br><span class="line">        <span class="attr">condition:</span> <span class="string">service_healthy</span></span><br><span class="line">    <span class="attr">init:</span> <span class="literal">true</span></span><br><span class="line">    <span class="attr">restart:</span> <span class="string">always</span></span><br><span class="line">    <span class="attr">healthcheck:</span></span><br><span class="line">      <span class="attr">test:</span> [<span class="string">&quot;CMD-SHELL&quot;</span>, <span class="string">&quot;curl http://localhost:3000/api/heartbeat&quot;</span>]</span><br><span class="line">      <span class="attr">interval:</span> <span class="string">5s</span></span><br><span class="line">      <span class="attr">timeout:</span> <span class="string">5s</span></span><br><span class="line">      <span class="attr">retries:</span> <span class="number">5</span></span><br><span class="line">  <span class="attr">db:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">postgres:15-alpine</span></span><br><span class="line">    <span class="attr">environment:</span></span><br><span class="line">      <span class="attr">POSTGRES_DB:</span> <span class="string">umami</span></span><br><span class="line">      <span class="attr">POSTGRES_USER:</span> <span class="string">umami</span></span><br><span class="line">      <span class="comment"># 与前面生成的 &lt;db_passwd&gt; 一致</span></span><br><span class="line">      <span class="attr">POSTGRES_PASSWORD:</span> <span class="string">&lt;db_passwd&gt;</span></span><br><span class="line">    <span class="attr">volumes:</span></span><br><span class="line">      <span class="comment"># 数据文件保存在 docker-compose.yaml 所在目录下的 data 文件夹</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">./data:/var/lib/postgresql/data</span></span><br><span class="line">    <span class="attr">restart:</span> <span class="string">always</span></span><br><span class="line">    <span class="attr">healthcheck:</span></span><br><span class="line">      <span class="attr">test:</span> [<span class="string">&quot;CMD-SHELL&quot;</span>, <span class="string">&quot;pg_isready -U $$&#123;POSTGRES_USER&#125; -d $$&#123;POSTGRES_DB&#125;&quot;</span>]</span><br><span class="line">      <span class="attr">interval:</span> <span class="string">5s</span></span><br><span class="line">      <span class="attr">timeout:</span> <span class="string">5s</span></span><br><span class="line">      <span class="attr">retries:</span> <span class="number">5</span></span><br></pre></td></tr></table></figure><p>然后运行下面的命令即可自动拉取镜像启动</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker compose up -d</span><br></pre></td></tr></table></figure><p>启动后，访问 <code>http://&lt;你的服务器 IP&gt;:3000</code> 进入后台，默认用户名是 <code>admin</code> 密码 <code>umami</code> ，可以在右上角 切换界面语言。</p><div class="flatpaper-note flatpaper-note--danger"><span class="flatpaper-note__icon" aria-hidden="true"></span><div class="flatpaper-note__body"><p>登入后 请第一时间前往 设置 &gt; 用户 修改用户名与密码</p></div></div><h2 id="设置-Nginx-反代"><a href="#设置-Nginx-反代" class="headerlink" title="设置 Nginx 反代"></a>设置 Nginx 反代</h2><p>Nginx 配置文件中的反代部分如下</p><figure class="highlight plaintext"><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></pre></td><td class="code"><pre><span class="line">location / &#123;</span><br><span class="line">    proxy_pass http://127.0.0.1:3000;</span><br><span class="line">    proxy_set_header Host $host;</span><br><span class="line">    proxy_set_header X-Real-IP $remote_addr;</span><br><span class="line">    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;</span><br><span class="line">    proxy_set_header X-Forwarded-Proto $scheme;</span><br><span class="line"></span><br><span class="line">    proxy_http_version 1.1;</span><br><span class="line">    proxy_read_timeout 60s;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>然后为了安全，我们可以将 docker-compose.yaml 文件中的端口设置仅限本地 Nginx 访问，将下面部分</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">ports:</span><br><span class="line">  - &quot;3000:3000&quot;</span><br></pre></td></tr></table></figure><p>修改为</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">ports:</span><br><span class="line">  - &quot;127.0.0.1:3000:3000&quot;</span><br></pre></td></tr></table></figure><h2 id="添加站点"><a href="#添加站点" class="headerlink" title="添加站点"></a>添加站点</h2><p>点击 <strong>设置</strong> &gt; <strong>添加网站</strong> 进行添加：</p><ul><li><strong>名字</strong>：显示在 Umami 后台，用于辨识</li><li><strong>域名</strong>：填入实际访问域名，例如 <code>example.com</code>，不需要加 <code>https://</code></li></ul><p>然后点击对应网站的 <strong>编辑</strong>，在 <strong>跟踪代码</strong> 部分即可查看需要使用的代码，将对应的代码附加到需要追踪的网页中即可。  </p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&lt;script defer src=<span class="string">&quot;https://example.com/script.js&quot;</span> data-website-id=<span class="string">&quot;xxxx-xxxx-xxxx-xxxx&quot;</span>&gt;&lt;/script&gt;</span><br></pre></td></tr></table></figure><p>我使用的 Hexo Theme NEXT 主题，可以直接在主题设置中填写 <strong>域名</strong> 与 <code>data-website-id</code> 让追踪生效。</p><h2 id="资源占用"><a href="#资源占用" class="headerlink" title="资源占用"></a>资源占用</h2><p>使用 docker stats 查看资源占用情况如下</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">CONTAINER ID   NAME               CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O         PIDS </span><br><span class="line">df307a49da94   umami-umami-1      0.01%     238.8MiB / 1.933GiB   12.06%    16.8MB / 655kB    48MB / 73.8MB     48 </span><br><span class="line">e7c0ca63f761   umami-db-1         0.02%     38.71MiB / 1.933GiB   1.96%     189kB / 162kB     8.56MB / 1.26MB   10 </span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://homulilly.com/post/use-docker-deploy-umami.html</id>
    <link href="https://homulilly.com/post/use-docker-deploy-umami.html"/>
    <published>2025-07-10T02:16:35.000Z</published>
    <summary>
      <![CDATA[<h2 id="关于-Umami"><a href="#关于-Umami" class="headerlink" title="关于 Umami"></a>关于 Umami</h2><p><a href="https://umami.is/">Umami</a> 是一个简单、快速、注重隐私且开源网站访问统计系统，可以作为 Google Analytics 的替代品，Umami 不使用 Cookie，不跟踪用户。   </p>
<p>Umami 支持自己部署，功能不受限制，如果自己没有服务器，也可以直接在官网注册使用。  </p>
<p>Umami 的界面非常简洁、直观，功能一目了然，这也是我使用 Umami 的原因，Google Analytics 太强大，界面也很复杂，有时找个功能要找半天。  </p>
<p>Umami 支持下面的功能</p>
<ul>
<li>统计浏览量、访问次数、访客数量、跳出率、平均访问时长</li>
<li>按时间段生成柱状图</li>
<li>查看每个 URL 对应的浏览量</li>
<li>查看来源域名</li>
<li>查看访客的浏览器、操作系统、设备类型、分辨率、地理位置</li>
<li>支持生成各种报告</li>
</ul>
<p>在开始使用之前，可以查看官方提供的 <a href="https://eu.umami.is/share/LGazGOecbDtaIwDr/umami.is">DEMO</a> 体验后台与统计效果<br><img src="https://m.nep.me/blog/post/umami-demo-preview.png" alt="Umami Demo Preview"></p>
<p>不过 Umami 不会区分 localhost 的域名，网页载入了统计代码的话就会进行统计。</p>
<h2 id="使用-Docker-Compose-部署"><a href="#使用-Docker-Compose-部署" class="headerlink" title="使用 Docker Compose 部署"></a>使用 Docker Compose 部署</h2><p>使用 <code>docker compose</code> 可以直接一键部署，首先创建 <code>docker-compose.yml</code>，填入下面的内容</p>]]>
    </summary>
    <title>使用 Docker 部署 Umami 网站访问统计系统</title>
    <updated>2025-08-07T14:36:15.934Z</updated>
  </entry>
  <entry>
    <author>
      <name>Aroes</name>
    </author>
    <category term="Note" scheme="https://homulilly.com/categories/Note/"/>
    <category term="ChatGPT" scheme="https://homulilly.com/tags/ChatGPT/"/>
    <category term="Prompt" scheme="https://homulilly.com/tags/Prompt/"/>
    <category term="Pixel Art" scheme="https://homulilly.com/tags/Pixel-Art/"/>
    <category term="everskies" scheme="https://homulilly.com/tags/everskies/"/>
    <content>
      <![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>凑个热度，最近发现 Twitter 上一些 Coser 分享照片时上面附带一个非常相似的像素风格小人，看起来非常不错。  </p><p>本来以为是某个 APP 的功能，搜索了一下发现是 7 月在韩国开始的潮流，只需要使用 ChatGPT 就可以生成，免费账户的 ChatGPT 也可以使用，不过生成两张图片后就提示需要等待一天才可以继续上传文件。</p><h2 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h2><p>访问 ChatGPT ，对话时添加需要处理的图片，对话框输入下面 Prompt 就可以了。</p><p>日文版：</p><blockquote><p>Everskiesスタイルの全身ピクセルアートイラストを作成してください。人物の体型、顔の表情、服装とヘアスタイルの表現方法を模倣してください。添付画像の人物の髪型、服装、アクセサリーを参考にして、全身のイラストを描いてください、背景は透過でお願いします。ピクセルアート風のドット絵スタイルで、ゲームキャラクターのような可愛らしい仕上がりにしてください。</p></blockquote><p>中文翻译：</p><blockquote><p>请制作一幅 Everskies 风格的全身像像素画插图。请模仿人物的体型、面部表情、服装以及发型的表现方式。参考所附图片中人物的发型、服装和配饰，绘制完整的人物插图，将背景设为透明。请使用像素风格的点阵图，呈现出像游戏角色一样可爱的效果。</p></blockquote><h2 id="效果"><a href="#效果" class="headerlink" title="效果"></a>效果</h2><span id="more"></span><p><img src="https://m.nep.me/blog/post/chatgpt-pixel-art.png"></p><p>Pic via <a href="https://x.com/UKYEJFT/status/1942479986486858138">Twitter</a></p><h2 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h2><ul><li><a href="https://www.mfro.net/aiebisu/1352/">韓国で話題！ChatGPT×ドット絵の作り方【複数プロンプト付き】</a></li></ul>]]>
    </content>
    <id>https://homulilly.com/post/use-chatgpt-gen-everskies-pixel-art.html</id>
    <link href="https://homulilly.com/post/use-chatgpt-gen-everskies-pixel-art.html"/>
    <published>2025-07-08T04:31:44.000Z</published>
    <summary>
      <![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>凑个热度，最近发现 Twitter 上一些 Coser 分享照片时上面附带一个非常相似的像素风格小人，看起来非常不错。  </p>
<p>本来以为是某个 APP 的功能，搜索了一下发现是 7 月在韩国开始的潮流，只需要使用 ChatGPT 就可以生成，免费账户的 ChatGPT 也可以使用，不过生成两张图片后就提示需要等待一天才可以继续上传文件。</p>
<h2 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h2><p>访问 ChatGPT ，对话时添加需要处理的图片，对话框输入下面 Prompt 就可以了。</p>
<p>日文版：</p>
<blockquote>
<p>Everskiesスタイルの全身ピクセルアートイラストを作成してください。人物の体型、顔の表情、服装とヘアスタイルの表現方法を模倣してください。添付画像の人物の髪型、服装、アクセサリーを参考にして、全身のイラストを描いてください、背景は透過でお願いします。ピクセルアート風のドット絵スタイルで、ゲームキャラクターのような可愛らしい仕上がりにしてください。</p>
</blockquote>
<p>中文翻译：</p>
<blockquote>
<p>请制作一幅 Everskies 风格的全身像像素画插图。请模仿人物的体型、面部表情、服装以及发型的表现方式。参考所附图片中人物的发型、服装和配饰，绘制完整的人物插图，将背景设为透明。请使用像素风格的点阵图，呈现出像游戏角色一样可爱的效果。</p>
</blockquote>
<h2 id="效果"><a href="#效果" class="headerlink" title="效果"></a>效果</h2>]]>
    </summary>
    <title>使用 ChatGPT 生成像素风格照片咒语</title>
    <updated>2025-07-10T03:05:58.169Z</updated>
  </entry>
  <entry>
    <author>
      <name>Aroes</name>
    </author>
    <category term="Note" scheme="https://homulilly.com/categories/Note/"/>
    <category term="File Browser" scheme="https://homulilly.com/tags/File-Browser/"/>
    <content>
      <![CDATA[<p>最近 AList 被收购的话题热度很高，对于事件本身，我就不做评论了。不过对于收购方，基于他的历史情况，确实没有好感。  </p><p>与其使用历史版本，还是更换其他的项目比较好，最开始使用的 MinIO ，也是由于旧版本有漏洞才更换的 AList 。 </p><p>我的需求比较简单，<strong>只是挂载本地的目录</strong>，有个 Web 面板便于上传、管理一下图片等资源，并不需要挂载第三方网盘。  </p><p>搜索一下，发现 <a href="https://github.com/filebrowser/filebrowser">File Browser</a> 这个项目比较符合我的需求，也支持 Docker 一键部署。 </p><p>不过这个项目也在寻找维护者：</p><blockquote><p>Warning!<br>This project is currently not under active maintenance and is looking for maintainers. </p></blockquote><h2 id="File-Browser-介绍"><a href="#File-Browser-介绍" class="headerlink" title="File Browser 介绍"></a>File Browser 介绍</h2><ul><li>支持 Docker 部署</li><li>支持创建文件与文件夹</li><li>支持显示文件列表</li><li>支持用户管理</li><li>支持预览图片</li><li>支持编辑文本文件 </li><li>支持创建分享链接<ul><li>支持设置分享期限</li><li>支持设置密码</li></ul></li><li>使用 Go 语言编写，运行内存和 CPU 占用低</li></ul><span id="more"></span><h2 id="使用-docker-compose-部署"><a href="#使用-docker-compose-部署" class="headerlink" title="使用 docker-compose 部署"></a>使用 docker-compose 部署</h2><p>如果安装好了 Docker 与 docker-compose ，部署起来上非常简单的。 </p><p>直接创建 docker-compose.yml 文件</p><figure class="highlight yml"><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><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">services:</span></span><br><span class="line">  <span class="attr">filebrowser:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">filebrowser/filebrowser:s6</span></span><br><span class="line">    <span class="attr">container_name:</span> <span class="string">filebrowser</span></span><br><span class="line">    <span class="attr">volumes:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">/path/to/root:/srv</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">/path/to/filebrowser.db:/database/filebrowser.db</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">/path/to/settings.json:/config/settings.json</span></span><br><span class="line">    <span class="attr">environment:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">PUID=$(id</span> <span class="string">-u)</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">PGID=$(id</span> <span class="string">-g)</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="number">8080</span><span class="string">:80</span></span><br><span class="line">    <span class="attr">restart:</span> <span class="string">unless-stopped</span></span><br></pre></td></tr></table></figure><p>启动前，如果是全新的环境，需要创建空白的 <code>/path/to/filebrowser.db</code> 文件，然后创建 <code>/path/to/settings.json</code> 填入下面的内容。  </p><figure class="highlight json"><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></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;port&quot;</span><span class="punctuation">:</span> <span class="number">80</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;baseURL&quot;</span><span class="punctuation">:</span> <span class="string">&quot;&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;address&quot;</span><span class="punctuation">:</span> <span class="string">&quot;&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;log&quot;</span><span class="punctuation">:</span> <span class="string">&quot;stdout&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;database&quot;</span><span class="punctuation">:</span> <span class="string">&quot;/database/filebrowser.db&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;root&quot;</span><span class="punctuation">:</span> <span class="string">&quot;/srv&quot;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p>如果希望访问的路径不是 <code>/</code> 可以在 <code>baseURL</code> 中指定。</p><p>然后修改 docker-compose.yml 中 environment 的内容，在终端执行 <code>id -u</code> 获取，如需指定用户比如 <code>www-data</code> 则是 <code>id -u www-data</code> </p><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">environment:</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">PUID=$(id</span> <span class="string">-u)</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">PGID=$(id</span> <span class="string">-g)</span></span><br></pre></td></tr></table></figure><p>该用户需要拥有 <code>/path/to/root</code> 的访问权限。  </p><p>执行 <code>docker-compose up -d</code> 启动服务。</p><p>访问 <code>https://&lt;ip or domain&gt;:8080</code> 登录，默认用户名密码都是 <code>admin</code> ，立刻在设置中修改，用户名也是可以修改的。  </p><p>设置 Nginx 反代，我直接使用了之前 AList 的内容，不需要修改：</p><figure class="highlight plaintext"><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><span class="line">location /filebrowser/ &#123;</span><br><span class="line">proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;</span><br><span class="line">proxy_set_header X-Forwarded-Proto $scheme;</span><br><span class="line">proxy_set_header Host $http_host;</span><br><span class="line">proxy_set_header X-Real-IP $remote_addr;</span><br><span class="line">proxy_set_header Range $http_range;     </span><br><span class="line"></span><br><span class="line">client_max_body_size 2048m;</span><br><span class="line">proxy_buffering off;</span><br><span class="line">        proxy_pass http://127.0.0.1:8080;</span><br><span class="line">    &#125;</span><br></pre></td></tr></table></figure><p>确认没有问题后，可以将 docker 容器的监听端口设置为 <code>127.0.0.1:8080</code></p><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">ports:</span></span><br><span class="line">  <span class="bullet">-</span> <span class="number">127.0</span><span class="number">.0</span><span class="number">.1</span><span class="string">:8080:80</span></span><br></pre></td></tr></table></figure><p>执行 <code>docker-compose down &amp;&amp; docker-compose up -d</code> 重启容器</p>]]>
    </content>
    <id>https://homulilly.com/post/use-file-browser.html</id>
    <link href="https://homulilly.com/post/use-file-browser.html"/>
    <published>2025-06-13T04:27:29.000Z</published>
    <summary>
      <![CDATA[<p>最近 AList 被收购的话题热度很高，对于事件本身，我就不做评论了。不过对于收购方，基于他的历史情况，确实没有好感。  </p>
<p>与其使用历史版本，还是更换其他的项目比较好，最开始使用的 MinIO ，也是由于旧版本有漏洞才更换的 AList 。 </p>
<p>我的需求比较简单，<strong>只是挂载本地的目录</strong>，有个 Web 面板便于上传、管理一下图片等资源，并不需要挂载第三方网盘。  </p>
<p>搜索一下，发现 <a href="https://github.com/filebrowser/filebrowser">File Browser</a> 这个项目比较符合我的需求，也支持 Docker 一键部署。 </p>
<p>不过这个项目也在寻找维护者：</p>
<blockquote>
<p>Warning!<br>This project is currently not under active maintenance and is looking for maintainers. </p>
</blockquote>
<h2 id="File-Browser-介绍"><a href="#File-Browser-介绍" class="headerlink" title="File Browser 介绍"></a>File Browser 介绍</h2><ul>
<li>支持 Docker 部署</li>
<li>支持创建文件与文件夹</li>
<li>支持显示文件列表</li>
<li>支持用户管理</li>
<li>支持预览图片</li>
<li>支持编辑文本文件 </li>
<li>支持创建分享链接<ul>
<li>支持设置分享期限</li>
<li>支持设置密码</li>
</ul>
</li>
<li>使用 Go 语言编写，运行内存和 CPU 占用低</li>
</ul>]]>
    </summary>
    <title>使用 File Browser 替代 AList (挂载本地存储)</title>
    <updated>2025-07-08T05:30:04.310Z</updated>
  </entry>
  <entry>
    <author>
      <name>Aroes</name>
    </author>
    <category term="Note" scheme="https://homulilly.com/categories/Note/"/>
    <category term="macOS" scheme="https://homulilly.com/tags/macOS/"/>
    <content>
      <![CDATA[<p>我用 macOS 默认终端使用 SSH 连接服务器后总是闲置几分钟后就会卡住，无法操作，需要关闭终端重新打开。由于 macOS 的 SIP 对系统文件的保护，在 <code>/etc/ssh/ssh_config</code> 中加入心跳消息配置没有生效。 </p><p>可以在 <code>～/.ssh/config</code> 文件开头加入下面的内容：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">Host *</span><br><span class="line">    ServerAliveInterval 30</span><br><span class="line">    ServerAliveCountMax 10</span><br></pre></td></tr></table></figure><p>表示每 30s 向服务器发送一次心跳连接，10 次失败后断开。</p>]]>
    </content>
    <id>https://homulilly.com/post/fix-macos-ssh-connect-hangs.html</id>
    <link href="https://homulilly.com/post/fix-macos-ssh-connect-hangs.html"/>
    <published>2025-06-12T07:57:21.000Z</published>
    <summary>
      <![CDATA[<p>我用 macOS 默认终端使用 SSH 连接服务器后总是闲置几分钟后就会卡住，无法操作，需要关闭终端重新打开。由于 macOS 的 SIP 对系统文件的保护，在 <code>/etc/ssh/ssh_config</code> 中加入心跳消息配置没有生效。 </p>
<p>]]>
    </summary>
    <title>解决 macOS 终端连接 SSH 闲置几分钟后卡住的问题</title>
    <updated>2025-06-12T09:05:55.490Z</updated>
  </entry>
  <entry>
    <author>
      <name>Aroes</name>
    </author>
    <category term="Games" scheme="https://homulilly.com/categories/Games/"/>
    <category term="Mobile Game" scheme="https://homulilly.com/tags/Mobile-Game/"/>
    <category term="星落" scheme="https://homulilly.com/tags/%E6%98%9F%E8%90%BD/"/>
    <content>
      <![CDATA[<p>这游戏国服 2024 年 7 月 23 日开服，日服是 2025 年 3 月 27 开服。</p><p>选择日服是因为看到刚开服，而且听说初期之后可以养老，每天上线 10 分钟即可，而且还开了联动。  </p><p><del>还能学习日语</del>，结果剧情直接跳过了。  </p><p>评价：一个月了，确实有些无聊，每天登录一次就行，日常 10 来分钟，久了确实没啥意思。</p><span id="more"></span><h2 id="卡池机制"><a href="#卡池机制" class="headerlink" title="卡池机制"></a>卡池机制</h2><p>米家卡池，五星 2% ，60 抽没有五星之后每抽 +5% ，70 抽保底， UP 概率 50% ，第二次五星不歪。  </p><p>抽卡票分限定和普池，300 钻一抽。  </p><p>商店卖的是源晶，可以买皮肤（15源晶）或是兑换钻石，一个兑换 120 钻，需要兑换是时可以去商店兑换支援礼包，赠送一些素材。</p><p>最高档 11000 JPY 110 源晶，13200 钻，首充双倍。</p><h2 id="角色养成"><a href="#角色养成" class="headerlink" title="角色养成"></a>角色养成</h2><p>满突需要本体 + 额外五只，不过机制一般在 3 突，有通用突破素材。  </p><p>然后就是刷圣遗物。  </p><p>队伍一次可以上八个角色。</p><h2 id="体验"><a href="#体验" class="headerlink" title="体验"></a>体验</h2><p>目前看来初期给的钻&#x2F;抽很多，联动两只开图鉴是没有问题的。</p><h2 id="课金内容"><a href="#课金内容" class="headerlink" title="课金内容"></a>课金内容</h2><p>月卡： 6 源晶（720 钻） + 每日 150 钻，2 管小体力药<br>通行证： <strong>1500</strong> JPY 一个皮肤 + 1500 钻 + 5 抽 + 一些素材，有普通通行证和活动通行证<br>黑市契约： <strong>150</strong> JPY 1.5 抽 + 1&#x2F;6 五星通用突破材料，每周更新，六周可以换一次五星突破，看起来限定也能用<br>五星突破材料： <strong>1500</strong> JPY 可以买一次。</p><p>商店礼包大概优惠些的 1000 JPY 10 抽，常规 1500 JPY 10 抽。</p><h2 id="常用链接"><a href="#常用链接" class="headerlink" title="常用链接"></a>常用链接</h2><h3 id="巴哈"><a href="#巴哈" class="headerlink" title="巴哈"></a>巴哈</h3><p><a href="https://forum.gamer.com.tw/C.php?bsn=79475&snA=49&tnum=4">日服兌換碼 </a><br><a href="https://forum.gamer.com.tw/C.php?bsn=79475&snA=46&tnum=1">日服開局抽取建議 (更新 - 截至半周年天梯圖 ver.2)</a></p><h3 id="TAPTAP-国服"><a href="#TAPTAP-国服" class="headerlink" title="TAPTAP(国服)"></a>TAPTAP(国服)</h3><p><a href="https://www.taptap.cn/app/382112/strategy?os=android">星落 TAPTAP</a><br><a href="https://www.taptap.cn/moment/636627111737558060">星落强度榜，配队思路</a><br><a href="https://www.taptap.cn/moment/605118383398062429">前期养成角色强度榜，角色养成先后规划，配队</a></p><h3 id="日语攻略网站"><a href="#日语攻略网站" class="headerlink" title="日语攻略网站"></a>日语攻略网站</h3><p><a href="https://gamerch.com/elpis/">Gamerch - 星落：深淵のエルピス攻略Wiki</a></p>]]>
    </content>
    <id>https://homulilly.com/post/game-elpis-jp.html</id>
    <link href="https://homulilly.com/post/game-elpis-jp.html"/>
    <published>2025-04-10T03:17:28.000Z</published>
    <summary>
      <![CDATA[<p>这游戏国服 2024 年 7 月 23 日开服，日服是 2025 年 3 月 27 开服。</p>
<p>选择日服是因为看到刚开服，而且听说初期之后可以养老，每天上线 10 分钟即可，而且还开了联动。  </p>
<p><del>还能学习日语</del>，结果剧情直接跳过了。  </p>
<p>评价：一个月了，确实有些无聊，每天登录一次就行，日常 10 来分钟，久了确实没啥意思。</p>]]>
    </summary>
    <title>手游观察：星落（日服）</title>
    <updated>2025-06-09T09:29:22.614Z</updated>
  </entry>
  <entry>
    <author>
      <name>Aroes</name>
    </author>
    <category term="Games" scheme="https://homulilly.com/categories/Games/"/>
    <category term="Brown Dust2" scheme="https://homulilly.com/tags/Brown-Dust2/"/>
    <category term="Mobile Game" scheme="https://homulilly.com/tags/Mobile-Game/"/>
    <content>
      <![CDATA[<p>又下了个手游，棕色尘埃2，记录一下。</p><p>游戏性：★★★★★<br>肝度：★★★</p><p>剧情过完后可以一天只登陆一次</p><span id="more"></span><h2 id="跨平台"><a href="#跨平台" class="headerlink" title="跨平台"></a>跨平台</h2><p>Windows、Android、iOS</p><h2 id="游戏内容"><a href="#游戏内容" class="headerlink" title="游戏内容"></a>游戏内容</h2><p>游戏风格类似歧路旅人，像素小人，战旗 PVP</p><ul><li>剧情主线</li><li>小游戏</li><li>公会战</li><li>PVP，排名奖励差距不大</li><li>做装备，刷词条<ul><li>传说 UR 制造概率 5%</li><li>刷熟悉词条</li><li>精炼品质</li></ul></li><li>各种塔<ul><li>肉鸽塔：Lv4 属性抽卡券，Lv5 抽卡券，角色与自己 Box 有关。</li></ul></li></ul><h2 id="角色与抽卡"><a href="#角色与抽卡" class="headerlink" title="角色与抽卡"></a>角色与抽卡</h2><p>200 一抽，每个池子每天都有免费一抽，100抽保底五星，天井 200 抽。</p><p>专武需要抽，不是很重要，游戏可以做通用装备。</p><p>低星战神有，而且不止一个。</p><p>这游戏抽卡的保底倒是比较友好，200 抽卡点数可以兑换当期 UP，卡池过后剩余点数会兑换为魔法粉尘，200 魔法粉尘可以兑换商店角色（除了限定，UP 卡池过后会进入商店）</p><h2 id="养成"><a href="#养成" class="headerlink" title="养成"></a>养成</h2><p>角色完全体五突，大部分主要 +3 即可，通用突破，非限定角色每月一次，消耗抽卡的重复材料。</p><h2 id="初始推荐"><a href="#初始推荐" class="headerlink" title="初始推荐"></a>初始推荐</h2><p>纯石头号大概 60 元 2000+ 抽，带人权限定 1500 抽的大概 300 块，联动没有必要。  </p><h2 id="游戏流程"><a href="#游戏流程" class="headerlink" title="游戏流程"></a>游戏流程</h2><ul><li>主线通关第四章，解锁恶魔城商店，可以开始锻造UR4毕业装备</li><li>主线通关第八章，招募兔弓（莉亚特里斯 - 罗戴夫之星），物理九宫格</li><li>主线通关第九章，获取锻造UR装备最缺的木头和金矿</li></ul><h2 id="常用链接"><a href="#常用链接" class="headerlink" title="常用链接"></a>常用链接</h2><ul><li><p><a href="https://browndust2-wiki.pages.dev/">工具站</a></p></li><li><p><a href="https://www.gamekee.com/zsca2/">GAMEKEE - 棕色尘埃2</a></p></li><li><p><a href="https://www.gamekee.com/zsca2/596306.html">萌新们遇到的各种问题以及每日必做的事（1.5周年版本）</a></p></li><li><p><a href="https://cdnimg-v2.gamekee.com/wiki2.0/images/w_2698/h_4351/50118/688915/2025/1/20/700023.png">副本简要指南</a></p></li><li><p><a href="https://cdnimg-v2.gamekee.com/wiki2.0/images/w_2232/h_2806/50118/688915/2025/2/23/241487.png">全商店兑换推荐一图流</a></p></li><li><p><a href="https://www.gamekee.com/zsca2/644038.html">游戏装备养成步骤顺序推荐</a></p></li><li><p><a href="https://www.gamekee.com/zsca2/639721.html">节奏榜</a></p></li><li><p><a href="https://www.gamekee.com/zsca2/619029.html">兑换码汇总</a> \ <a href="https://redeem.bd2.pmang.cloud/bd2/index.html?lang=zh-TW&userId=Zris">兑换码网页</a></p></li><li><p><a href="https://www.browndust2.com/zh-cn/news?page=0&type=dev_note">开发者笔记</a></p></li></ul>]]>
    </content>
    <id>https://homulilly.com/post/game-brown-dust2.html</id>
    <link href="https://homulilly.com/post/game-brown-dust2.html"/>
    <published>2025-04-04T04:02:03.000Z</published>
    <summary>
      <![CDATA[<p>又下了个手游，棕色尘埃2，记录一下。</p>
<p>游戏性：★★★★★<br>肝度：★★★</p>
<p>剧情过完后可以一天只登陆一次</p>]]>
    </summary>
    <title>手游观察：棕色尘埃2</title>
    <updated>2025-05-09T11:01:22.795Z</updated>
  </entry>
</feed>
