<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Better的博客</title><description>一个记录学习、生活，分享经验的个人博客。</description><link>https://blog.472100.xyz/</link><templateTheme>Firefly</templateTheme><templateThemeVersion>V3.0.1</templateThemeVersion><templateThemeUrl>https://github.com/CuteLeaf/Firefly</templateThemeUrl><lastBuildDate>2026年9月29日 12:35:37</lastBuildDate><item><title>超低成本搭建个人博客：Firefly + Cloudflare + Waline 全流程</title><link>https://blog.472100.xyz/posts/hello-blog/</link><guid isPermaLink="true">https://blog.472100.xyz/posts/hello-blog/</guid><description>只花一个域名的钱，无需服务器，从 fork 主题到博客上线。</description><pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate><content:encoded><![CDATA[<p>不买服务器，本文记录这套博客从 fork 主题到评论上线的完整链路。每一步都是实际跑通过的，踩过的坑也一并给出。</p>
<h1>一、方案总览</h1>
<p>整套方案只有四个角色：</p>
<table>
<thead>
<tr>
<th>角色</th>
<th>承担职责</th>
<th>费用</th>
</tr>
</thead>
<tbody><tr>
<td>GitHub</td>
<td>存放博客源码（fork Firefly 主题）</td>
<td>免费</td>
</tr>
<tr>
<td>Cloudflare Workers</td>
<td>构建并托管博客，push 即发布</td>
<td>免费额度足够</td>
</tr>
<tr>
<td>Vercel + Neon</td>
<td>Waline 评论服务端 + Postgres 数据库</td>
<td>免费</td>
</tr>
<tr>
<td>域名</td>
<td>域名，DNS 托管在 Cloudflare</td>
<td>一年只要6块且续费同价</td>
</tr>
</tbody></table>
<p>工作原理：<strong>源码推送到 GitHub → 平台自动拉取、构建、发布 → 以后每次发文推代码，网站几分钟后自动更新</strong>。</p>
<h1>二、主题：fork 与清理</h1>
<p>主题选了 <a href="https://github.com/MmzMing">MmzMing</a> 的 Firefly（基于 Astro），文章、相册、友链、评论、搜索全都自带，感谢作者开源。</p>
<p>fork 下来后的第一件事是清理原作者痕迹，建议先下载到本地，全部交给Agent就可以了。</p>
<p>如果想要其他功能，可以直接告诉你的Agent，Firefly的拓展性是很强的。</p>
<h1>三、博客部署：Cloudflare Workers</h1>
<p>构建条件仓库里都是现成的，配置只有三处：</p>
<ol>
<li>Cloudflare 控制台 → Workers &amp; Pages → 连接 Git 仓库</li>
<li>Build command：<code>pnpm run build</code>（项目强制 pnpm，npm 装依赖会直接报错）；Deploy command：<code>npx wrangler deploy</code></li>
<li>仓库放一个 <code>.nvmrc</code> 写 <code>22</code>，钉住构建机 Node 版本</li>
</ol>
<p><code>pnpm run build</code> 是一条完整链路：图标生成 → 图片占位图 → Astro 构建 → Pagefind 全文索引，不用拆开单独跑。</p>
<blockquote>
<p>构建日志出现 <code>The collection "posts" does not exist</code> 不是错误，只是还没有文章的提示。</p>
</blockquote>
<p>最后在 Settings → Domains &amp; Routes 绑自定义域，域名在同账号下托管，DNS 记录和证书自动创建，几分钟生效。之后每次 <code>git push</code>，三分钟左右自动上线。</p>
<h1>四、评论：Waline on Vercel + Neon</h1>
<ol>
<li><a href="https://waline.js.org/guide/get-started/">waline.js.org</a> 点 Vercel 一键部署，模板仓库自动进你的 GitHub</li>
<li>项目 Storage → Create Database → 选 Neon，区域选新加坡（对大陆访客快）；前缀留空，注入的才是 Waline 读的 <code>DATABASE_URL</code></li>
<li>进 Neon 的 Queries，跑一遍官方 <a href="https://github.com/walinejs/waline/blob/main/assets/waline.pgsql">waline.pgsql</a>，建出 <code>wl_comment</code> / <code>wl_counter</code> / <code>wl_users</code> 三张表</li>
<li>回 Vercel Redeploy 一次，让数据库配置生效</li>
<li>访问 <code>/ui/register</code>，第一个注册的账号自动成为管理员</li>
<li>绑自定义域：Vercel 加 <code>comment.472100.xyz</code>，到 Cloudflare 加 CNAME <code>comment → cname.vercel-dns.com</code>（灰云 DNS only，橙云会证书冲突）</li>
</ol>
<blockquote>
<p>部署列表里带 <code>-git-</code> 的随机域名是单次部署的临时地址，每次都会变；配置里必须用项目固定域名。</p>
</blockquote>
<h1>五、总结：这套方案好在哪</h1>
<ul>
<li><strong>零服务器成本</strong>：全免费额度，唯一开销是域名年费，纯数字的xyz域名非常便宜。</li>
<li><strong>push 即发布</strong>：发文 = <code>git add</code> → <code>git commit</code> → <code>git push</code>，三分钟自动上线</li>
<li><strong>数据自持</strong>：源码在自己仓库，评论在自己数据库，随时可换平台不锁死</li>
<li><strong>功能开箱即用</strong>：暗色模式、全文搜索、评论、相册、友链、RSS 全部内置</li>
<li><strong>国内访问稳</strong>：博客走 Cloudflare、评论走自有子域，不依赖默认二级域名</li>
</ul>
<p>把配置里的名字换成你的，就能开张。</p>
]]></content:encoded></item></channel></rss>