对话笔记直发:7.10个人主页+博客 部署说明文档。分类:AI工程。
个人站点部署说明文档
记录日期:2026-07-10 作者:CodeBuddy Code(协助部署) 目标:在 Cloudflare Pages 免费额度上部署两个个人站点,并打通 Obsidian 笔记自动发布链路。
一、最终成果总览
| 站点 | 域名 | GitHub 仓库 | Cloudflare Pages 项目 | 本地目录 |
|---|---|---|---|---|
| 个人主页(链接聚合页) | https://fengx.eu.org | unixcs/homepage | homepage-fengx | /mnt/demo/homepage |
| 第二大脑博客(Quartz v5) | https://blog.fengx.eu.org | unixcs/blog | blog-fengx | /mnt/demo/quartz-site |
两个站点均已上线(HTTP 200),发布链路为:本地/NAS → git push 到 GitHub main 分支 → GitHub Actions 自动构建 → 部署到 Cloudflare Pages。
二、今日完成的工作
1. 规划架构(第一性原理)
- 复刻
sink.cool文章中的 Cloudflare Pages via GitHub Fork/Upload 部署方法。 - 参考
jackyzha0/quartz搭建 Obsidian「第二大脑」静态博客。 - 确定方案:
- 不本地 NAS 托管,先用 GitHub 上传 + Cloudflare 免费额度。
- 两个站点都部署到 Cloudflare Pages(而非 Workers)。
- 博客使用子域名
blog.fengx.eu.org,主页为链接聚合页。 - 主页右上角加一个超链接按钮跳转博客。
2. 部署个人主页(链接聚合页)
- 在
/mnt/demo/homepage创建静态站点:index.html+styles.css+README.md。 index.html含右上角固定按钮:<a class="top-btn" href="https://blog.fengx.eu.org" target="_blank" rel="noopener">博客 ↗</a>- 暗色/亮色响应式样式,含占位内容(“你的名字” 等需后续替换)。
- 配置
.github/workflows/deploy.yml,通过AdrianGonz97/refined-cf-pages-action将.部署到homepage-fengx。
3. 部署 Quartz v5 博客
- 克隆
jackyzha0/quartzv5 到/mnt/demo/quartz-site。 - 编辑
quartz.config.yaml:pageTitle: 你的第二大脑baseUrl: blog.fengx.eu.organalytics.provider: false
- 创建
content/index.md欢迎页(含返回主页链接)。 - 配置
.github/workflows/deploy.yml:npx quartz build后把public/部署到blog-fengx。
4. GitHub 仓库创建与推送
- 用户提供 GitHub 用户名
unixcs。 - 通过 GitHub REST API 创建两个仓库(
unixcs/homepage、unixcs/blog)。 - 用
SealedBox+ Base64 加密方式,向两个仓库写入 Actions 加密密钥:CLOUDFLARE_API_TOKENCLOUDFLARE_ACCOUNT_ID
- 修复了
quartz-site浅克隆(shallow/grafted)导致的index-pack failed,改为rm -rf .git+git init -b main干净提交推送。
5. Cloudflare 域名绑定与 SSL
- 确认
fengx.eu.org归属 CF 账户cee99a8e075a84020e39bfbad8d04316(Unixcs@qq.com)。 - 删除 apex 上冲突的
AAAA记录。 - 通过 CF API 创建代理(proxied)CNAME:
fengx.eu.org→homepage-fengx.pages.devblog.fengx.eu.org→blog-fengx.pages.dev
- SSL 证书自动签发为
active,两域名均返回 HTTP 200。
6. Hermes 自动推送(部署后又卸载)
- 曾在 jp 服务器上以 systemd 方式部署了一个 Hermes 风格自动推送脚本:
/mnt/vps/jp/hermes/hermes-blog-autopush/hermes_blog_autopush.py.service+.timer(每 5 分钟,仅在检测到内容变化时提交推送)
- 用户反馈:本地 NAS 上已安装真正的 Hermes,jp 上的脚本多余。
- 已卸载:停止并禁用 systemd timer/service、删除两个 unit 文件、
daemon-reload、rm -rf /mnt/vps/jp/hermes。 - 验证:无任何
hermes残留单元,/mnt/vps/jp/hermes已不存在。两个站点与 GitHub→CF 流水线不受影响。
三、关键踩坑与修复
- cloudflared Argo Token 不能调 CF API:
~/.cloudflared/cert.pem是 Argo 隧道令牌,不是 TLS 证书,建 Pages 项目返回 403。最终用用户提供的专用 CF API Token(cfut_…)完成操作。 fengx.eu.org不在 cloudflared 所属账户:实际归属账户cee99a8e075a84020e39bfbad8d04316。- GitHub Fine-grained PAT 不能建仓库:返回 403。用户改用 classic PAT(
ghp_…)后正常。 - GitHub 密钥加密 422:
Box.encrypt报 “improperly encrypted”,改用SealedBox(pub).encrypt(...) + Base64解决。 - Quartz 浅克隆推送失败:
remote unpack failed: index-pack failed,重建 git 仓库解决。 - 自定义域名一直 pending:apex
fengx.eu.org有冲突 AAAA,手动删除并建代理 CNAME 后 SSL 才生效。
四、当前状态与后续
当前状态
- 两个站点均在线,部署流水线完好。
- jp 服务器上的 Hermes 脚本已彻底移除。
- 本地项目目录保留在
/mnt/demo/homepage与/mnt/demo/quartz-site。
后续可选项
- 替换主页占位内容:编辑
/mnt/demo/homepage/index.html中的 “你的名字”、链接、简介。 - 博客添加示例文章:在
/mnt/demo/quartz-site/content/放一篇.md。 - Obsidian 自动发布:由你 NAS 上的真实 Hermes 把笔记提交/推送到
unixcs/blog仓库的content/,CF 流水线自动重建发布。
重要凭据位置(请勿外泄)
- GitHub classic PAT:
/mnt/demo/gihub.md - Cloudflare API Token:
cfut_…(已作为仓库 Actions 密钥,无需明文出现在仓库) - CF 账户 ID:
cee99a8e075a84020e39bfbad8d04316 - 域名 Zone:
fengx.eu.org
五、发布流程速查
# 主页发布
cd /mnt/demo/homepage
git add -A && git commit -m "update" && git push origin main
# 博客发布(编辑/新增 content/ 下的 .md 后)
cd /mnt/demo/quartz-site
git add -A && git commit -m "new note" && git push origin main
# GitHub Actions 会自动 npx quartz build 并部署 public/推送后到 GitHub 仓库 Actions 标签页查看构建进度,约 1–2 分钟上线。
相关: 00-索引-AI工程索引 7.25 在 yun1 部署 new-api 并通过 Cloudflare 域名 HTTPS 访问 — 实操记录