<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>MinimaxFlora</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://blog.tatalvpai.vip/</id>
  <link href="https://blog.tatalvpai.vip/" rel="alternate"/>
  <link href="https://blog.tatalvpai.vip/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, MinimaxFlora</rights>
  <subtitle>记录技术与生活</subtitle>
  <title>MinimaxFlora Blog</title>
  <updated>2026-10-24T05:00:00.000Z</updated>
  <entry>
    <author>
      <name>MinimaxFlora</name>
    </author>
    <category term="技术" scheme="https://blog.tatalvpai.vip/categories/%E6%8A%80%E6%9C%AF/"/>
    <category term="Hexo" scheme="https://blog.tatalvpai.vip/tags/Hexo/"/>
    <category term="GitHub Pages" scheme="https://blog.tatalvpai.vip/tags/GitHub-Pages/"/>
    <category term="Cloudflare" scheme="https://blog.tatalvpai.vip/tags/Cloudflare/"/>
    <category term="备忘" scheme="https://blog.tatalvpai.vip/tags/%E5%A4%87%E5%BF%98/"/>
    <content>
      <![CDATA[<p>把这套东西记下来，省得以后重装或者换机器时又要从头查一遍。</p><h2 id="技术栈"><a href="#技术栈" class="headerlink" title="技术栈"></a>技术栈</h2><table><thead><tr><th>环节</th><th>用的什么</th></tr></thead><tbody><tr><td>生成器</td><td>Hexo 8</td></tr><tr><td>主题</td><td><a href="https://github.com/anzhiyu-c/hexo-theme-anzhiyu">anzhiyu</a>（安知鱼）</td></tr><tr><td>构建</td><td>GitHub Actions</td></tr><tr><td>托管</td><td>GitHub Pages</td></tr><tr><td>域名</td><td>Cloudflare DNS，证书由 Pages 自动签发</td></tr></tbody></table><h2 id="目录约定"><a href="#目录约定" class="headerlink" title="目录约定"></a>目录约定</h2><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></pre></td><td class="code"><pre><span class="line">_config.yml            # 站点配置：标题、URL、搜索、订阅、站点地图</span><br><span class="line">_config.anzhiyu.yml    # 主题配置：菜单、横幅、首页卡片、侧边栏</span><br><span class="line">themes/anzhiyu/        # 主题本体，git submodule，不要直接改</span><br><span class="line">source/                # 文章和页面</span><br></pre></td></tr></table></figure><p>主题用 submodule 管理，好处是版本锁定、仓库干净；代价是<strong>克隆时必须带 <code>--recursive</code></strong>，否则 <code>themes/anzhiyu</code> 是空目录，构建直接失败。</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></pre></td><td class="code"><pre><span class="line">git <span class="built_in">clone</span> --recursive https://github.com/MinimaxFlora/blog.git</span><br><span class="line"><span class="comment"># 已经克隆过、但主题目录是空的：</span></span><br><span class="line">git submodule update --init --recursive</span><br></pre></td></tr></table></figure><h2 id="发布流程"><a href="#发布流程" class="headerlink" title="发布流程"></a>发布流程</h2><p>推送到 <code>main</code> 就会触发 <code>.github/workflows/deploy.yml</code>：</p><ol><li>检出代码，含 submodule</li><li><code>npm ci</code> 装依赖</li><li><code>npx hexo generate</code> 生成静态文件到 <code>public/</code></li><li>上传 artifact，交给 <code>actions/deploy-pages</code> 发布</li></ol><p>整个过程一分半左右，不需要在本地构建后再推 <code>gh-pages</code> 分支。</p><h2 id="域名是怎么绑上的"><a href="#域名是怎么绑上的" class="headerlink" title="域名是怎么绑上的"></a>域名是怎么绑上的</h2><p>三步：</p><ol><li><code>source/CNAME</code> 里写 <code>blog.tatalvpai.vip</code>，构建时会带到产物根目录</li><li>Cloudflare 加一条 CNAME：<code>blog</code> → <code>minimaxflora.github.io</code></li><li>仓库 Settings → Pages 里填自定义域名，等证书签发，然后勾上 Enforce HTTPS</li></ol><p>DNS 记录<strong>先不要开橙色云朵</strong>。开着代理时 GitHub 验证域名容易失败，证书签不出来；等证书下来了再考虑开代理，并且要把 SSL&#x2F;TLS 模式设成 <strong>Full (strict)</strong>，否则会重定向循环。</p><h2 id="踩到的几个坑"><a href="#踩到的几个坑" class="headerlink" title="踩到的几个坑"></a>踩到的几个坑</h2><p><strong>1. 首屏大图的配置不是 URL</strong></p><p><code>index_img</code> 填的是一整条 CSS 声明，不是图片地址：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">index_img:</span> <span class="string">&quot;background: url(/img/banner.jpg) top / cover no-repeat&quot;</span></span><br></pre></td></tr></table></figure><p><strong>2. 新版 Chrome 里 <code>display: -webkit-box</code> 不生效了</strong></p><p>主题用 <code>-webkit-line-clamp</code> 做多行截断，但把 <code>display: -webkit-box</code> 解析成了 <code>flow-root</code>，结果盒子高度直接塌成 0，摘要整段消失。改用 <code>display: block</code> + <code>max-height</code> 截断才正常。</p><p><strong>3. 主题自带的演示内容要清掉</strong></p><p>默认配置里有主题作者自己的收款码、网易云歌单、示例分类和推广横幅。不清掉的话，打赏弹窗里出现的就是别人的二维码。</p><p><strong>4. 副标题的打字效果</strong></p><p><code>subtitle.source</code> 默认开启了第三方一言接口，国内访问不稳定，关掉用自定义文案更可靠。</p><h2 id="日常怎么写文章"><a href="#日常怎么写文章" class="headerlink" title="日常怎么写文章"></a>日常怎么写文章</h2><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></pre></td><td class="code"><pre><span class="line">npx hexo new <span class="string">&quot;文章标题&quot;</span>   <span class="comment"># 在 source/_posts/ 下生成</span></span><br><span class="line">npm run server            <span class="comment"># 本地预览 localhost:4000</span></span><br><span class="line">git add -A &amp;&amp; git commit -m <span class="string">&quot;post: 文章标题&quot;</span> &amp;&amp; git push</span><br></pre></td></tr></table></figure><p>推上去就自动发布了，剩下的不用管。</p>]]>
    </content>
    <id>https://blog.tatalvpai.vip/2026/10/24/how-this-blog-was-built/</id>
    <link href="https://blog.tatalvpai.vip/2026/10/24/how-this-blog-was-built/"/>
    <published>2026-10-24T05:00:00.000Z</published>
    <summary>记录整套建站与发布流程，方便以后复制或排查问题。</summary>
    <title>这个博客是怎么搭起来的</title>
    <updated>2026-10-24T05:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>MinimaxFlora</name>
    </author>
    <category term="生活" scheme="https://blog.tatalvpai.vip/categories/%E7%94%9F%E6%B4%BB/"/>
    <category term="随笔" scheme="https://blog.tatalvpai.vip/tags/%E9%9A%8F%E7%AC%94/"/>
    <content>
      <![CDATA[<h2 id="为什么开始写博客"><a href="#为什么开始写博客" class="headerlink" title="为什么开始写博客"></a>为什么开始写博客</h2><p>拖延了很久，终于把这个博客搭起来了。</p><p>想法很简单：把平时折腾的东西记下来。路由器、固件、脚本、各种一时兴起的小项目——做的时候觉得「这我肯定记得」，过两个月再回头看，什么都不剩。写下来，至少下次遇到同样的问题不用从头再来一遍。</p><h2 id="这里会写什么"><a href="#这里会写什么" class="headerlink" title="这里会写什么"></a>这里会写什么</h2><ul><li><strong>技术折腾</strong>：OpenWrt、Docker、自建服务、各种踩坑记录</li><li><strong>脚本与工具</strong>：能省事的小东西</li><li><strong>日常随笔</strong>：想到什么写什么</li></ul><p>不会写得很正式，更像是一个能公开翻阅的笔记本。如果恰好帮到了路过的你，那挺好。</p><h2 id="这个博客是怎么搭的"><a href="#这个博客是怎么搭的" class="headerlink" title="这个博客是怎么搭的"></a>这个博客是怎么搭的</h2><p>有意思的是，搭这个博客本身也算一次折腾：</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"><span class="comment"># 本地预览</span></span><br><span class="line">npm run server</span><br><span class="line"></span><br><span class="line"><span class="comment"># 生成静态文件</span></span><br><span class="line">npm run build</span><br></pre></td></tr></table></figure><p>内容用 Markdown 写，推送到 GitHub 之后由 Actions 自动构建、发布到 Pages，域名绑在 Cloudflare 上。整套流程不花一分钱，也几乎不用维护。</p><hr><p>那么，就从这里开始吧。</p>]]>
    </content>
    <id>https://blog.tatalvpai.vip/2026/10/24/hello-world/</id>
    <link href="https://blog.tatalvpai.vip/2026/10/24/hello-world/"/>
    <published>2026-10-24T04:00:00.000Z</published>
    <summary>博客的第一篇文章，聊聊为什么要写博客。</summary>
    <title>你好，世界</title>
    <updated>2026-10-24T04:00:00.000Z</updated>
  </entry>
</feed>
