[控场AI]
· 13 分钟阅读· 6,953 字

零成本搭建Memos-Worker私人知识库完整教程

零成本搭建Memos-Worker私人知识库完整教程

为什么选择Cloudflare搭建私人笔记

在数字化时代,个人知识管理已经成为刚需。市面上有诸多优秀的笔记应用,但要么需要付费订阅,要么存在数据隐私风险——你的笔记数据实际存储在第三方服务器上。数据主权(Data Sovereignty)是指数据所有者对其数据拥有完全的控制权,包括存储位置、访问权限和删除权利。主流笔记应用如Notion、印象笔记的数据存储在商业公司的服务器上,用户实际上仅拥有使用权。

数据主权问题在全球范围内日益受到重视,欧盟的GDPR(通用数据保护条例)和中国的《个人信息保护法》都在法律层面强化了用户对个人数据的控制权。然而法律保护与技术实现之间存在差距:即使法规要求企业保护用户数据,服务中断、企业破产或政策变更仍可能导致数据丢失。近年来多起事件引发用户对数据安全的担忧:2023年印象笔记大规模裁员后,部分用户反映数据导出功能不稳定;Notion在2024年更新隐私政策时,承认可能将用户内容用于AI模型改进。自建方案虽然增加了技术门槛,但数据完全由用户自己控制,从根本上消除了对第三方的依赖——数据以你选择的格式存储在你控制的基础设施上,不受服务商倒闭、政策变更或数据泄露的影响。对于注重数据主权的用户来说,自建笔记系统是更理想的选择。

提到自建笔记,很多人第一时间会想到 Memos 这款开源应用。Memos是由开发者usememos维护的开源自托管笔记应用,采用Go语言编写后端,React构建前端。它的设计灵感来源于Twitter/Flomo的碎片化记录方式,强调「快速捕捉想法」而非传统笔记的层级组织。项目在GitHub上拥有超过3万颗星,是自托管领域最受欢迎的笔记工具之一。Memos的架构设计遵循了现代Web应用的最佳实践:后端使用Go语言编写,得益于Go的高并发性能和低内存占用,单实例即可服务数百并发用户;前端基于React框架,提供流畅的单页应用体验。数据库层面支持SQLite和PostgreSQL两种选择,SQLite适合单用户场景(零配置、文件级备份),PostgreSQL适合多用户或高可用需求。Memos还提供了完整的REST API和gRPC接口,使得第三方客户端和浏览器扩展(如Telegram Bot、iOS快捷指令)能够方便地集成。

它界面简洁、功能实用,深受开发者喜爱。但传统的 Memos 部署有一个明显门槛:你需要拥有一台自己的服务器。传统部署方式通常需要Docker容器加上PostgreSQL或SQLite数据库,最低也需要一台1核1G的VPS,每月费用至少在30-50元左右。服务器意味着持续的费用支出、日常的维护工作以及定期续费的麻烦。对于预算有限的个人用户而言,这并不划算。

本文介绍的 Memos-Worker,正是模仿 Memos 打造的一款可以运行在 Cloudflare 上的轻量级方案。Cloudflare是全球最大的边缘网络平台之一,在全球超过300个城市部署了数据中心。其Serverless架构的核心理念是让开发者无需管理服务器基础设施,代码直接运行在离用户最近的边缘节点上。

Serverless架构代表了云计算演进的第三个阶段:从IaaS(基础设施即服务,如购买虚拟机)到PaaS(平台即服务,如Heroku)再到FaaS(函数即服务)。Cloudflare Workers基于V8 JavaScript引擎的Isolates技术实现,每个请求在独立的轻量级沙箱中执行,启动时间仅需0-5毫秒,远快于传统容器的秒级冷启动。这种架构的计费模型是按请求次数而非运行时长计费,意味着没有流量时完全不产生费用。与AWS Lambda等竞品相比,Cloudflare Workers的独特优势在于代码部署在全球300+节点,无需选择区域,请求自动路由到最近节点。

Cloudflare Workers每天提供10万次免费请求,Pages则提供无限静态托管,这使得个人项目几乎可以零成本运行。借助 Cloudflare 提供的免费额度,个人完全可以搭建一款永久在线、零成本的私人笔记系统。

Memos-Worker核心功能介绍

Memos-Worker 在功能上与原版 Memos 高度相似,日常笔记的记录、检索、管理需求基本都能满足。

功能亮点一览

  • 快速记笔记:直接在输入框写下内容,点击保存即可,适合临时记录灵感、网址、文件信息等
  • 多设备同步:由于运行在 Cloudflare 边缘网络,不同设备之间都能随时访问。边缘网络的优势在于数据从离用户最近的节点返回,无论你在国内还是海外,都能获得较低的访问延迟
  • 笔记分享:支持生成分享链接,可设置有效期(如 1 天、7 天),也可随时取消分享
  • 归档功能:完成的任务或笔记可以归档管理,保持主界面整洁
  • 图片与文档上传:支持保存图片、上传文档,扩展了笔记的使用场景

分享链接有效期设置

需要注意的是,目前 Memos-Worker 仅有英文界面,暂无中文版。不过界面上的英文都比较简单,基本不影响正常使用。此外,分享链接没有密码保护功能,这一点在分享敏感内容时需要留意。

搭建Memos-Worker前的准备工作

整个搭建过程完全基于 Cloudflare 的免费服务,无需任何服务器。你需要提前准备:

  1. 一个 GitHub 账号(用于 Fork 项目并部署)
  2. 一个 Cloudflare 账号
  3. (可选)一个已托管到 Cloudflare 的域名,用于绑定自定义访问地址

关于安全性需要说明:由于是通过 GitHub 部署,部分密钥信息会暴露在仓库中,但风险较低,通常不会有问题。如果你对此有顾虑,可以采用作者博客中提供的方案 B(通常是通过Wrangler CLI本地部署,避免将配置文件推送到公开仓库)。为了方便后续更新和同步,本教程采用直接从 GitHub 部署的方式。

Memos-Worker详细搭建步骤

第一步:Fork项目到自己的GitHub

登录 GitHub,进入作者提供的项目地址,点击 Fork 将项目复制到自己的仓库,名称可自定义(建议保持默认)。Fork操作会创建一份项目的完整副本到你的账号下,你可以自由修改而不影响原项目,同时也方便后续通过Sync功能同步上游更新。

第二步:创建Cloudflare D1数据库

进入 Cloudflare 控制台,选择「存储和数据库」→「D1 数据库」,按照项目要求的指定名称创建数据库,位置可选择亚太地区。Cloudflare D1是基于SQLite的边缘分布式数据库服务,于2022年推出。SQLite本身是世界上使用最广泛的嵌入式数据库引擎,被广泛应用于手机应用和浏览器中。D1将SQLite的轻量优势与Cloudflare的全球网络结合,使数据库查询可以在边缘节点完成,大幅降低延迟。

D1在技术实现上使用了SQLite的WAL(Write-Ahead Logging)模式,结合Cloudflare自研的复制协议,将数据从主节点同步到全球边缘节点。这意味着读操作可以在本地边缘完成(延迟极低),而写操作需要路由到主节点(延迟稍高,通常在50-200ms)。对于笔记应用这种读多写少的场景,这是非常理想的权衡。免费计划提供5GB存储空间和每天500万行读取,对于个人笔记场景完全够用。创建完成后,记得复制并保存好数据库名称和数据库 ID,后续配置会用到。

创建D1数据库

创建成功后,进入数据库的「控制台」,粘贴项目提供的初始化 SQL 代码并执行,用于初始化数据库结构。这些SQL语句会创建存储笔记内容、用户信息、分享记录等所需的数据表。

第三步:创建KV命名空间与R2存储桶

继续在 Cloudflare 中创建:

  • KV 命名空间:按指定名称创建,创建后记录其 ID。Cloudflare Workers KV是一种全球分布式的键值存储服务,采用最终一致性(Eventual Consistency)模型。最终一致性是分布式系统中CAP定理的一种权衡选择,具体表现为:写入一个KV键值后,全球所有节点可能需要最多60秒才能读取到最新值。这对于存储登录Session来说完全可接受(用户不会在60秒内跨越大洲访问),但不适合需要强一致性的场景。KV的特点是读取速度极快(毫秒级),适合存储不频繁变更的数据,如用户会话令牌、应用配置信息等。KV的免费计划提供每天10万次读取和1000次写入操作,1GB存储空间。在Memos-Worker中,KV主要用于存储登录会话和系统配置。

  • R2 存储桶:名称必须与项目要求一致,地区选择亚太,创建后记录存储桶名称。Cloudflare R2是与Amazon S3兼容的对象存储服务,最大的差异化优势是零出口带宽费用——即从R2读取数据不收取流量费。传统对象存储(如AWS S3、阿里云广告OSS)的出口流量费往往是主要成本来源。以AWS S3为例,存储1GB数据每月约0.023美元,但每GB出口流量收费0.09美元——这意味着如果你的笔记图片被频繁访问,流量费可能远超存储费。R2彻底取消了出口带宽费,仅收取存储费(0.015美元/GB/月)和操作费。R2免费计划提供10GB存储、每月100万次A类操作(写入)和1000万次B类操作(读取),非常适合存储笔记中的图片和文档附件。此外,R2兼容S3 API,意味着未来如果需要迁移,可以使用rclone等工具一键同步到其他S3兼容存储。

将所有参数(D1 数据库 ID、名称、KV ID、R2 存储桶名称)都记录到一个记事本中备用。

记录所有配置参数

第四步:修改wrangler配置文件

回到 GitHub 自己 Fork 的仓库,找到配置文件(如 wrangler.toml),点击编辑,依次将记录好的参数填入对应位置。wrangler.toml是Cloudflare Workers/Pages项目的核心配置文件,用于定义项目名称、绑定的资源(数据库、KV、R2)以及环境变量等信息。Wrangler是Cloudflare官方的CLI工具,Pages部署时会自动读取这个配置文件来了解项目需要绑定哪些后端资源。

需要填入的参数包括:

  • D1 数据库账户 ID
  • D1 数据库名称
  • KV 命名空间 ID
  • R2 存储桶名称

修改完成后保存提交。

第五步:通过Cloudflare Pages部署应用

进入 Cloudflare 的「Workers 和 Pages」,创建应用程序,授权并选择刚 Fork 的项目。Cloudflare Pages最初是为静态网站设计的托管平台,后来加入了Functions功能,可以运行服务端逻辑。它与GitHub深度集成,实现了完整的持续集成/持续部署(CI/CD)工作流:开发者将代码推送到GitHub仓库的指定分支(通常是main),Pages会自动触发构建流水线——拉取代码、安装依赖、执行构建命令、将产物部署到全球边缘网络。整个过程通常在1-3分钟内完成。Pages还支持预览部署(Preview Deployment),即每个Pull Request会自动生成一个独立的预览URL,方便在合并前测试变更效果。这种机制使得后续更新Memos-Worker变得极为简单:只需在GitHub上同步上游仓库的更新,Pages会自动重新部署。

构建命令和部署命令会自动填充,保持默认即可,点击部署,等待几分钟即可完成。

第六步:设置管理员账号密码

部署完成后,进入项目「设置」→「环境变量和密钥」,添加两个环境变量:

  • 管理员账号(对应指定的变量名)
  • 管理员密码(对应指定的变量名)

环境变量是一种将敏感信息(如密码、API密钥)与代码分离的安全实践。这是「十二要素应用」方法论中的核心原则之一:应用的配置应存储在环境中,而非代码中。通过环境变量设置的密码不会出现在代码仓库中,相比硬编码在配置文件里更加安全。即使代码仓库被公开访问,攻击者也无法获取实际的认证凭据。填写完成后保存并重新部署,使新的环境变量生效。

添加管理员密码环境变量

第七步:绑定自定义域名(可选)

如果你有已托管到 Cloudflare 的域名,可以在项目中添加自定义域,等待 DNS 生效后即可通过自己的域名访问。Cloudflare Pages默认会分配一个 *.pages.dev 的子域名,绑定自定义域名后不仅更好记忆,还能享受Cloudflare的CDN加速和DDoS防护。需要注意的是,pages.dev 域名在部分地区可能存在访问不稳定的情况,绑定自己的域名可以有效解决这一问题。

第八步:执行最终数据库初始化指令

最后回到 D1 数据库控制台,依次执行项目提供的几条 SQL 指令(用于重建搜索引擎等)。这里的搜索引擎指的是SQLite内置的FTS5(Full-Text Search 5)全文搜索扩展。FTS5的工作原理是:在数据写入时,对文本进行分词(Tokenization),然后构建倒排索引(Inverted Index)——即从每个词指向包含该词的所有文档。查询时,引擎直接通过索引定位匹配文档,而非逐条扫描全部笔记,时间复杂度从O(n)降低到近似O(1),使得即使笔记数量增长到数千条,关键词搜索依然能在毫秒级完成。对于混合中英文的笔记场景,FTS5默认的分词器按Unicode字符边界切分,效果通常够用。

全部执行完毕后,刷新项目页面,输入管理员账号密码登录,就可以正式开始使用你的私人笔记系统了。

方案价值与适用人群分析

Memos-Worker 的核心价值在于用 Serverless 架构替代了传统服务器。Serverless并不是真的没有服务器,而是服务器的管理、扩容、安全补丁等工作全部由平台方承担,开发者只需关注业务逻辑本身。这种模式消除了传统运维中最耗时的工作:操作系统更新、安全漏洞修补、SSL证书续期、服务器监控告警等。它巧妙利用了 Cloudflare 的三大免费产品组合:

  • D1 数据库:存储笔记文本数据(免费5GB,每日500万行读取)
  • KV 空间:存储配置与会话信息(免费1GB,每日10万次读取)
  • R2 存储桶:存储图片、文档等文件(免费10GB,零出口流量费)

再加上 Workers/Pages 的边缘计算能力(免费每日10万次请求),整套系统运行在全球分布式节点上,访问速度快且无需运维。对个人用户而言,Cloudflare 的免费额度绰绰有余——即使每天记录数十条笔记,资源消耗也远远达不到免费额度的上限。粗略估算,一条笔记的创建涉及约3-5次请求(页面加载、API调用、数据写入),每天记录50条笔记也仅消耗250次请求,距离10万次的每日限额相去甚远。

这套方案特别适合以下人群:

  • 预算有限但注重数据自主权的个人用户
  • 希望多设备同步笔记的轻度用户
  • 想学习 Serverless 部署实践的技术爱好者

当然,它也有局限:英文界面对部分用户不够友好、分享无密码保护、密钥暴露在公开仓库存在轻微安全隐患。对于团队协作或高安全要求的场景,仍建议采用更完整的自托管方案(如在VPS上通过Docker部署原版Memos,或使用Obsidian配合自建同步服务)。总体而言,作为一款永久免费的私人知识库,Memos-Worker 是极具性价比的选择。

核心要点

  • Memos-Worker利用Cloudflare的免费Serverless基础设施(D1+KV+R2+Pages)实现零成本私人笔记系统
  • 整套方案无需购买服务器,数据完全由用户自己控制,实现真正的数据主权
  • 部署过程主要包括:Fork项目→创建D1/KV/R2资源→配置wrangler.toml→Pages部署→设置环境变量
  • 免费额度(5GB数据库+10GB文件存储+每日10万请求)对个人笔记场景绰绰有余
  • 局限性包括仅英文界面、分享无密码保护,高安全需求场景建议采用传统自托管方案
#Memos-Worker#Cloudflare搭建笔记#私人知识库#零成本笔记系统#Serverless笔记#自建笔记应用#Cloudflare Workers部署#免费个人笔记
分享:

相关推荐