<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>博客搭建 on EVILSTAR</title><link>https://80b55ee1.hugo-blog-ddc.pages.dev/tags/%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/</link><description>Recent content in 博客搭建 on EVILSTAR</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Sun, 10 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://80b55ee1.hugo-blog-ddc.pages.dev/tags/%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/index.xml" rel="self" type="application/rss+xml"/><item><title>用思源 + Hugo + Cloudflare 搭建个人博客</title><link>https://80b55ee1.hugo-blog-ddc.pages.dev/posts/siyuan-hugo-cloudflare-workflow/</link><pubDate>Sun, 10 May 2026 00:00:00 +0000</pubDate><guid>https://80b55ee1.hugo-blog-ddc.pages.dev/posts/siyuan-hugo-cloudflare-workflow/</guid><description>&lt;p&gt;这段时间一直想把自己的博客流程收拾得简单一点。&lt;/p&gt;
&lt;p&gt;我不太想折腾数据库，也不想维护后台，更不想为了发一篇文章专门登录一个复杂的 CMS。对个人博客来说，写作这件事本来就应该尽量轻，不然写着写着就懒得更新了。&lt;/p&gt;
&lt;p&gt;最后我定下来的方案很朴素：用思源写内容，用 Hugo 生成静态页面，用 Cloudflare Pages 部署，再把自己的域名绑上去。这样一来，平时我只需要在思源里写完，点一下发布，剩下的事情交给 GitHub 和 Cloudflare 自动完成。&lt;/p&gt;
&lt;p&gt;现在 &lt;code&gt;evilstar.org&lt;/code&gt; 就是这么跑起来的。&lt;/p&gt;
&lt;h2 id="我最后用下来的这套结构"&gt;我最后用下来的这套结构&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;思源笔记（写作）
↓ siyuan-plugin-publisher
GitHub 仓库（hugo-blog）
↓ 自动触发
Cloudflare Pages（构建 + 托管）
↓
evilstar.org（上线）
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这套结构我喜欢的地方在于分工很清楚。&lt;/p&gt;
&lt;p&gt;思源就是写作工具，Hugo 负责把 Markdown 变成网站，GitHub 存源码，Cloudflare 负责发布。每一层都只做一件事，所以后面几乎不用怎么维护。&lt;/p&gt;
&lt;h2 id="先把域名和站点跑起来"&gt;先把域名和站点跑起来&lt;/h2&gt;
&lt;p&gt;我先做的是在 Cloudflare 上买域名，然后直接用 Pages 托管 Hugo。&lt;/p&gt;
&lt;p&gt;域名放在 Cloudflare 有个很直接的好处：后面绑定 Pages 会非常顺，不用再自己折腾一遍 DNS。买完之后，域名、证书、解析基本都在一个地方处理，省心很多。&lt;/p&gt;
&lt;p&gt;进 &lt;code&gt;dash.cloudflare.com&lt;/code&gt;，在左侧「域名注册」里搜索并购买就行。&lt;/p&gt;
&lt;h2 id="hugo-项目怎么建"&gt;Hugo 项目怎么建&lt;/h2&gt;
&lt;p&gt;本地先初始化一个 Hugo 项目：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hugo new site hugo-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd hugo-blog
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git init
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git remote add origin git@github.com:yourname/hugo-blog.git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;选主题这件事我也折腾过一阵，最后用了 &lt;a href="https://github.com/michaelneuper/hugo-texify3"&gt;hugo-texify3&lt;/a&gt;。它不是那种特别花的主题，但排版很干净，拿来写文字内容挺舒服。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git submodule add https://github.com/michaelneuper/hugo-texify3 themes/hugo-texify3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;hugo.toml&lt;/code&gt; 里我保留的核心配置大概是这样：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;baseURL&lt;/span&gt; = &lt;span style="color:#e6db74"&gt;&amp;#34;https://evilstar.org/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;title&lt;/span&gt; = &lt;span style="color:#e6db74"&gt;&amp;#34;EVILSTAR&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;theme&lt;/span&gt; = &lt;span style="color:#e6db74"&gt;&amp;#34;hugo-texify3&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;hasCJKLanguage&lt;/span&gt; = &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#a6e22e"&gt;taxonomies&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;tags&lt;/span&gt; = &lt;span style="color:#e6db74"&gt;&amp;#34;tags&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;categories&lt;/span&gt; = &lt;span style="color:#e6db74"&gt;&amp;#34;categories&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;推送到 GitHub：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git add -A &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; git commit -m &lt;span style="color:#e6db74"&gt;&amp;#34;init&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; git push -u origin main
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;推到 GitHub 之后，下一步就是把仓库接到 Cloudflare Pages。&lt;/p&gt;
&lt;p&gt;Cloudflare Dashboard 里进 Pages，创建项目，连接 GitHub，然后选 &lt;code&gt;hugo-blog&lt;/code&gt; 这个仓库。&lt;/p&gt;
&lt;p&gt;构建配置我这里很简单：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;字段&lt;/th&gt;
&lt;th&gt;值&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;构建命令&lt;/td&gt;
&lt;td&gt;&lt;code&gt;hugo&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;输出目录&lt;/td&gt;
&lt;td&gt;&lt;code&gt;public&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Node 版本（环境变量）&lt;/td&gt;
&lt;td&gt;&lt;code&gt;20&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;保存之后，Cloudflare 会立刻跑第一次构建。等它构建完成，再去绑定自定义域名。因为域名本身就在 Cloudflare，整个过程基本没什么阻力，SSL 和解析也会一起处理掉。&lt;/p&gt;
&lt;p&gt;这一步配好以后，后面就很省事了。只要 GitHub 仓库有新的提交，Cloudflare Pages 就会自动重新构建，通常过几分钟就能在网站上看到更新。&lt;/p&gt;
&lt;h2 id="最关键的一步把思源接进来"&gt;最关键的一步：把思源接进来&lt;/h2&gt;
&lt;p&gt;前面的 Hugo 和 Pages 其实都不难，真正影响日常体验的反而是写作环节。&lt;/p&gt;
&lt;p&gt;我不想每次写完文章之后，还要自己手动复制 Markdown、整理图片、改路径、再 commit 一次。所以最后把思源的 &lt;code&gt;siyuan-plugin-publisher&lt;/code&gt; 插件也接进来了。&lt;/p&gt;
&lt;p&gt;插件装好之后，在「平台导入」里选 GitHub，主要字段这样填：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;字段&lt;/th&gt;
&lt;th&gt;值&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;git 仓库名&lt;/td&gt;
&lt;td&gt;&lt;code&gt;hugo-blog&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;默认分支&lt;/td&gt;
&lt;td&gt;&lt;code&gt;main&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;存储目录&lt;/td&gt;
&lt;td&gt;&lt;code&gt;content/posts&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;文件规则&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[slug].md&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;文章预览规则&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/posts/[slug]/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;发布格式&lt;/td&gt;
&lt;td&gt;Markdown&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;图床服务&lt;/td&gt;
&lt;td&gt;当前平台&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;图片存储目录&lt;/td&gt;
&lt;td&gt;&lt;code&gt;static/uploads&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;图片访问链接&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/uploads&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这个 YAML 预设我觉得挺有用，因为它能把一些我每篇文章都会用到的字段提前补上：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;draft&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;categories&amp;#34;&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;notes&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;验证通过之后保存，这套发布链路就算接通了。&lt;/p&gt;
&lt;h2 id="现在我平时是怎么发文章的"&gt;现在我平时是怎么发文章的&lt;/h2&gt;
&lt;p&gt;后面真正写起来，流程其实很短：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在思源里新建一篇文档，正常写&lt;/li&gt;
&lt;li&gt;写完点右上角发布图标，选 &lt;code&gt;hugo-blog&lt;/code&gt; 平台&lt;/li&gt;
&lt;li&gt;填一个 slug，最好是英文加连字符，比如 &lt;code&gt;my-new-post&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;点发布&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;剩下的事情插件会自己做：它会把文档转成 Markdown，放进 GitHub 仓库的 &lt;code&gt;content/posts/&lt;/code&gt;，如果文里有图片，也会一起同步到 &lt;code&gt;static/uploads/&lt;/code&gt;。Cloudflare Pages 检测到仓库更新后，就会自动开始构建。&lt;/p&gt;
&lt;p&gt;这个过程跑通之后，体验会很接近「在本地写完，点一下就上线」。对个人博客来说，我觉得这已经足够舒服了。&lt;/p&gt;
&lt;h2 id="这套方案也不是完全没有边界"&gt;这套方案也不是完全没有边界&lt;/h2&gt;
&lt;p&gt;用下来有一个地方需要接受：思源和 Hugo 仓库不是双向同步关系。&lt;/p&gt;
&lt;p&gt;思源更像是写作入口，已经发布出去的文章，真正的源文件还是在 GitHub 仓库里。也就是说，思源适合拿来写新文章、重发文章，但如果你想统一查看所有已发布内容、删除文章，还是得回到仓库本身。&lt;/p&gt;
&lt;p&gt;我现在的做法也很直接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;要看所有文章，就看 &lt;code&gt;content/posts/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;要删文章，就在 GitHub 网页上删，或者在本地仓库删掉后推送&lt;/li&gt;
&lt;li&gt;要改文章，小改可以直接在 GitHub 改，大改就回思源里改完重新发布&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一开始我也想过，能不能把博客里现有的 Markdown 全部映射回思源里统一管理。后来发现没必要。个人博客最重要的是让写作和发布尽可能顺，而不是把所有工具强行揉成一个系统。&lt;/p&gt;
&lt;h2 id="为什么我最后留在这套方案上"&gt;为什么我最后留在这套方案上&lt;/h2&gt;
&lt;p&gt;我最后没有继续折腾别的博客系统，原因其实很简单：这套东西足够轻，而且每个环节都比较稳。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hugo 很适合纯内容型博客&lt;/li&gt;
&lt;li&gt;Cloudflare Pages 部署基本不用操心&lt;/li&gt;
&lt;li&gt;域名、证书、CDN 都在 Cloudflare 里统一处理&lt;/li&gt;
&lt;li&gt;思源负责写作，体验比直接写 Markdown 文件舒服很多&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;更重要的是，它不会让我在“写文章之前”先进入一种搭环境的状态。&lt;/p&gt;
&lt;p&gt;我现在只需要打开思源，写完，发布，等几分钟，文章就在 &lt;code&gt;evilstar.org&lt;/code&gt; 上了。对我来说，这就够了。&lt;/p&gt;</description></item></channel></rss>