FlareMo 上手体验:不买服务器,一个免费 Cloudflare 账号就把笔记系统跑起来了

写上一篇《自部署一个 Memos:FlareMo 上 Cloudflare Workers 全记录》时,重点全在踩坑和补丁上。这篇换个角度:FlareMo 到底是个什么东西、免费额度够不够用、日常用起来是什么体验、适合谁不适合谁。 FlareMo 是什么 一句话:一个免费 Cloudflare 账号就能 24 小时跑在云端的个人笔记系统,Memos 兼容,应用层 Better Auth 登录,数据存 D1(5GB 数据库)+ R2(10GB 对象存储),代码和前端跑在一个 Worker 上。 传统自部署长这样:一台 VPS、一个 Postgres、一堆 Docker 容器、每周要维护的备份脚本,还有硬盘坏了数据全没的风险。FlareMo 想回答的问题是:能不能只用一个免费 Cloudflare 账号,不买服务器、不装数据库、不写备份脚本,就拥有一个 24 小时在线、数据不会丢、能绑自定义域名、还能被各种工具调用的笔记系统? 答案是能。整套东西跑在一个 Worker 上,你没有一个"服务器"要照看,只有一份代码和一个免费账号。 免费额度到底够不够用 很多人一听"免费"就觉得是玩具。实际上对个人笔记这种纯文本为主的场景,免费额度是溢出的: D1 5GB:一条笔记含标签时间戳索引开销算 2KB,能存约 250 万条,每天写 100 条能写 68 年 R2 10GB:约 5000-10000 张压缩图片,或者 80 小时语音备忘录;R2 出口流量不收费,分享图给别人不产生流量账单 我的实际体感:写了大半年,数据库用量连零头都没到。免费额度不是"很快就会撞到的天花板",而是"你大概率永远用不完"。 为什么放 Cloudflare 比放 NAS 稳 自部署还有一个常被低估的成本:数据的物理安全。NAS 数据在自家硬盘上,硬盘会坏、电源会跳、家里可能漏水被盗。FlareMo 的数据在 Cloudflare 企业级基础设施上持久化,自带冗余,你不用买第二块硬盘、不用写定时备份、不用关心 SMART 报警。 另外它天然附带了一堆自部署很难凑齐的东西:全球边缘节点、免费 HTTPS + 自定义域名(我绑了 memo.uuunit.com,证书自动续)、不用 frp / Tailscale / 公网 IP 打洞、零运维——没有系统补丁、没有数据库升级、没有进程看门狗。 ...

2026-09-03 · 1 min · 192 words · camac

自部署一个 Memos:FlareMo 上 Cloudflare Workers 全记录

一直在用 Memos 记碎片想法,但官方 Server 要自建 VPS,维护成本不低。直到发现 FlareMo——一个把 Memos 完整跑在 Cloudflare Workers 上的开源项目,D1 存数据、R2 存附件、Vectorize 做语义搜索、Workers AI 做嵌入,全部免费额度内。部署地址 memo.uuunit.com,iOS 用 MoeMemos 客户端无缝接入。这趟从部署到客户端跑通踩了六个坑,值得记录。 坑一:孤立仓库不能 pull,只能 reset 仓库是从 GitHub 上拿到的快照,本地只有一个根提交,和上游没有共同祖先。这意味着 git pull / git merge 必然冲突,升级的正确姿势是: git branch backup-v0.6-snapshot # 旧版快照分支 git fetch origin --tags git reset --hard v0.14.0 # 目标 release tag 但 reset 会把 wrangler.jsonc 一并覆盖——本地真实 D1 ID(da6ec409-...)和 FLAREMO_PUBLIC_URL 全丢。所以升级前先备份本地敏感文件,reset 后重新应用数据库 ID 和公网地址,再 commit 一次防止下次更新再丢。 坑二:Vectorize 索引不会自动创建 新版引入了语义搜索,上游 wrangler.jsonc 里声明了 Vectorize binding,但不会自动建索引——不手动创建,部署直接失败: unset CLOUDFLARE_API_TOKEN CF_API_TOKEN # 必须 unset,否则走 API token 模式不是 OAuth npx wrangler vectorize create flaremo-memos --dimensions=1024 --metric=cosine npx wrangler vectorize create flaremo-memories --dimensions=1024 --metric=cosine 维度必须和嵌入模型匹配(默认 qwen3-embedding-0.6b = 1024 维 cosine)。还有一个隐藏雷:Vectorize V2 的 returnMetadata 参数要求字符串枚举 "all" | "indexed" | "none",上游代码传的是 V1 的布尔 false,语义搜索直接 500 Internal server error,要手动改成 "none"。 ...

2026-09-03 · 2 min · 277 words · camac
内观电子书网页版首页截图

《内观》电子书网页版是怎么做的

读《内观——葛印卡的解脱之道》时记了几百段读书笔记,一直想让这些内容能公开分享、随时随地读。于是把它做成了一个多页 HTML 电子书网页版。 项目已收录 → 项目页:《内观》电子书网页版 这个项目挺有代表性——一本书变成一个可交互的阅读站,中间踩了不少坑。这篇复盘完整记录做法。 项目概况 项目 数据 书籍 《内观——葛印卡的解脱之道》(威廉·哈特) 输出 28 页 HTML 静态站 配图 657 张(AI 生成 + 压缩) 金句音频 506 条(本地 TTS) 书评 33 条(微信读书) 域名 vip.uuunit.com 托管 Cloudflare Pages 总大小 175MB(含音频) 全流程 1. 内容提取 & 结构化 先解决源头问题:内容从哪来? EPUB:本质是 zip 包,里面是 HTML 文件。用 Python 解压 → 正则去标签 → 纯文本 Obsidian 笔记:读书时已经按段拆分了 546 段,格式是 ### {章节}-{段号} {标题} 用正则 r'### ([\\d]+)-([\\d]+) (.*?) — (.+)' 把笔记解析成结构化 JSON,每章一个文件。 ...

2026-08-07 · 2 min · 407 words · camac
Hugo 部署 Cloudflare

Hugo 部署 Cloudflare 的踩坑记录

最近把 Hugo 博客部署到 Cloudflare Pages,看着简单,结果踩了一堆坑。记录一下,给后面的人省点时间。 坑一:主题文件别手写 一开始图省事,手动推了个简化版 PaperMod 主题到仓库。结果功能不全、CSS 缺失、搜索用不了。 正确做法: 构建时直接拉官方主题,别自己维护一份。 git clone --depth 1 https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod 坑二:HUGO_VERSION 必须和主题匹配 PaperMod 要求 Hugo >= 0.146.0,但 Cloudflare 默认可能是老版本。 解决: 在 Cloudflare Pages 环境变量里指定版本。 HUGO_VERSION = 0.146.0 坑三:TOML 语法别用 YAML 的写法 minify: 这种冒号写法是 YAML 的,TOML 要用 [minify] 表头。Cloudflare 用的是标准 TOML 解析器,一个字符错就整个构建失败。 [minify] disableXML = true 坑四:代码块要标注语言 Markdown 代码块如果不标注语言,Hugo 可能渲染异常。目录结构这种用 text: project/ |-- file1.py +-- file2.py 坑五:域名要加到 Pages 白名单 光在 DNS 配 CNAME 不够,Pages 项目本身也要把域名加进去,否则不响应请求。 坑六:构建日志看不到 Cloudflare Pages 的构建日志 API 不开放,只能网页上看。构建失败时,把日志贴出来就能定位。 ...

2026-08-07 · 1 min · 86 words · camac