EdgeEver
EdgeEver: A self-hosted, Cloudflare-native Evernote alternative.
EdgeEver:基于 Cloudflare 全家桶自托管的开源『印象笔记』。
EdgeEver 是一个开源、自托管、Cloudflare-native 的现代笔记工作区。它保留经典印象笔记的三栏体验,同时提供清晰的数据模型、REST API、OpenAPI schema 和 MCP endpoint。
依托 Cloudflare 的免费额度,个人自部署后几乎可以永久零成本使用
为什么做 EdgeEver
很多长期使用印象笔记的人需要的只是一个可靠、开放、响应足够快的个人知识库。但现在的印象笔记越来越臃肿,商业化和附加功能不断增加,性能和内存占用也越来越难让人满意。
更麻烦的是数据开放性:笔记很难直接导出为开放格式,迁移常常依赖可能失效的第三方插件;国内版不原生支持 MCP,国际版价格又不适合很多个人用户。
Memos 等轻量笔记产品更开放,但交互体验和经典印象笔记式三栏工作流仍有明显距离。 EdgeEver 想填补这个空白:保留熟悉的笔记体验,同时提供开放数据、REST API、MCP 和零成本自托管部署。
在线演示
- Demo 地址:https://demo.edgeever.org
- 演示账号:
ee-demo - 演示密码:
demo#dZ6Q29Zjfor%
公开演示环境会每天自动重置并恢复示例笔记,请不要保存私密内容。
部署
建议先 Fork 本仓库到你自己的 GitHub 账号,再从你的 Fork 仓库进行部署。这样后续 EdgeEver 发布新功能时,你可以在 GitHub 上通过 Sync fork 同步官方仓库更新,再重新部署到自己的 Cloudflare。
AI Agent 一句话部署
如果你使用 Codex、Claude Code、Antigravity 等 AI Agent,并且已经登录 Cloudflare 或安装了 Cloudflare 相关插件,可以直接把下面这句话发给 Agent:
这个是我的 EdgeEver Fork 仓库链接:<你的 Fork 仓库 URL>。请把这个项目安装部署到 Cloudflare 上。
Agent 应优先按 AI Agent Cloudflare Deployment 执行,只在需要 Cloudflare 授权、首次登录密码或自定义域名时询问你。
手动部署
-
Fork 官方仓库:
https://github.com/msh01/edgeever -
Clone 你自己的 Fork 仓库:
git clone <你的 Fork 仓库 URL> cd edgeever -
使用自动化辅助命令部署:
cp .env.local.example .env.local bun install EDGE_EVER_PASSWORD='<你的密码>' bun run deploy:setup bun run deploy:doctor bun run deploy
如果你想手动创建 Cloudflare 资源,也可以使用 CLI:
cp .env.local.example .env.local
bun install
bunx wrangler d1 create edgeever
bunx wrangler r2 bucket create edgeever-resources
bun run auth:hash -- <你的密码>
bun run deploy
把 D1 创建命令返回的 database_id 和密码 hash 填入本机 .env.local。
更新到最新版
如果你是通过 Fork 部署的:
-
打开你自己的 EdgeEver Fork 仓库。
-
点击 GitHub 页面上的 Sync fork,同步官方仓库的最新代码。
-
回到本地项目目录重新部署:
git pull bun install bun run deploy:doctor bun run deploy
同步 Fork 只会更新你 GitHub 仓库里的代码,不会自动更新已经部署到 Cloudflare 的实例。同步后必须重新执行部署命令,更新才会生效。
功能
- 个人使用几乎可以零成本托管:基于 Cloudflare D1 + R2 免费额度,短笔记可达 10 万条量级,200KB 图片约可存放 5 万张。
- 数据完全开放:笔记内容存放在基于标准 SQLite 的 Cloudflare D1 中,可通过 REST API、MCP 和 CLI 按需读取、迁移或导出,不用担心被单一笔记产品绑定。
- AI Agent 友好:原生支持 MCP,可让 Codex、Claude Code、Antigravity 等工具读取、整理和维护笔记。
- 同时适配 PC 与移动端,支持网页访问与 PWA 安装,桌面管理和手机随手记录都顺手。
- 三栏布局:笔记本树、笔记列表、主编辑区。
- 无限级嵌套笔记本。
- 支持富文本编辑。
- 笔记图片上传前支持 Web 端本地压缩,常见截图和大尺寸照片通常可减少约 50%-90% 体积,减少资源占用且不消耗 Cloudflare Images 额度。
- 多选合并笔记。
- 多选移动笔记,笔记本支持拖拽排序和调整层级。
- 已有笔记支持离线编辑草稿和本地同步队列。
- 单用户登录,密码使用 PBKDF2-SHA256 hash。
PWA 安装说明
PWA 可以把 EdgeEver 像普通应用一样安装到桌面或手机主屏幕,打开更方便,也能配合浏览器能力提供更接近原生 App 的使用体验。
PC 端请使用 Chrome/Edge 打开站点,点击地址栏右侧的“安装”图标并确认。Android 建议用 Chrome 打开站点,点右上角三点菜单,选择“添加到主屏幕”,再点“安装”。Edge 可尝试菜单中的“添加到手机 / 添加到主屏幕 / 安装应用”,不同版本可能只创建快捷方式。请不要从微信等 App 内置浏览器安装。
技术栈
- Bun workspace monorepo,包含 Web、API、官网与共享类型包。
- 官网:Astro 静态站点,位于
apps/site,可独立构建并部署到 Cloudflare Pages。 - 前端:Vite、React、React Router、TanStack Query,UI 基于 Tailwind CSS、shadcn/ui、Radix UI。
- 编辑器:TipTap / ProseMirror,支持 Markdown;PWA 使用 vite-plugin-pwa、Workbox、Dexie。
- 后端:Cloudflare Workers、Hono、Zod、D1、R2,提供 REST API、OpenAPI 与 Remote MCP。
快速开始
安装依赖:
bun install
应用本地 D1 迁移:
bun run db:migrate:local
启动本地开发:
bun run dev
常用检查:
bun run typecheck
bun run build
目录结构
apps/web Vite + React 前端、PWA、离线草稿与同步队列
apps/api Cloudflare Worker + Hono API、OpenAPI、MCP endpoint
apps/site Astro 官方网站,可独立部署
packages/shared 共享类型、Zod schema、TipTap / Markdown 内容转换
scripts Wrangler 封装、密码 hash、CLI、MCP stdio bridge、Evernote ENEX 导入
migrations D1 数据库迁移
docs OpenAPI schema、迁移指南等文档
wrangler.toml Cloudflare Workers、Assets、D1、R2 配置
内容格式
EdgeEver 同时保存三种内容形态:
content_json TipTap/ProseMirror 文档,编辑器权威格式
content_markdown API、Agent、导入导出使用
content_text 搜索、摘要和索引使用
API 文档
OpenAPI schema:
https://你的域名/api/openapi.json
仓库内文件:docs/openapi.json。
MCP
先在 EdgeEver 左下角 个人中心 的 MCP 设置 里创建 API Token,然后复制API Token或者复制整个MCP配置,发送给AI Agent,让他安装此MCP。 然后即可授权AI Agent读取和整理笔记。
放飞你的思路,这种情况下是有很多灵活玩法: 比如让AI Agent归纳你随机记录的灵感创意、针对你的笔记做精准的人物画像、构建自己的知识图谱、自动为笔记打标签)
图片压缩规则
图片压缩仅在 Web 端上传前执行,由设置页的“压缩笔记内图片”开关控制。启用后,浏览器会把 PNG、JPEG、WebP、AVIF 尝试压缩为 WebP,并将最长边限制在 2560px 以内;如果压缩结果不比原图小,则保留原图。
Cloudflare Worker 侧执行图片处理会消耗计算/图片处理额度,因此 EdgeEver 将图片压缩放在 Web 客户端完成;REST API 或 MCP 上传入口会按客户端提供的文件内容直接入库,不再由服务端自动压缩。
社区与反馈
- Bug、功能建议和部署问题请优先提交 GitHub Issues,方便后续用户检索和复用解决方案。
- 微信:
m1245207870(请备注 EdgeEver)