Files
edgeever/README.md
T

8.0 KiB
Raw Blame History

EdgeEver

简体中文 | English

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 和零成本自托管部署。

在线演示

公开演示环境会每天自动重置并恢复示例笔记,请不要保存私密内容。

部署

建议先 Fork 本仓库到你自己的 GitHub 账号,再从你的 Fork 仓库进行部署。这样后续 EdgeEver 发布新功能时,你可以在 GitHub 上通过 Sync fork 同步官方仓库更新,再重新部署到自己的 Cloudflare。

通过AI Agent 一句话部署

将下方提示词复制给你的 AI 助手(Claude Code、Codex、Antigravity、Cursor、Trae 等),它会自动完成安装

请先 Fork EdgeEver 仓库:https://github.com/msh01/edgeever

Fork 完成后,请使用 Fork 后的仓库把 EdgeEver 安装部署到 Cloudflare 上,并为 Fork 仓库配置自动同步上游,以便后续获取最新产品特性。

Agent 应优先按 AI Agent Cloudflare Deployment 执行

手动部署

  1. Fork 官方仓库:

    https://github.com/msh01/edgeever
    
  2. Clone 你自己的 Fork 仓库:

    git clone <你的 Fork 仓库 URL>
    cd edgeever
    
  3. 使用自动化辅助命令部署:

    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 部署的:

  1. 打开你自己的 EdgeEver Fork 仓库。

  2. 点击 GitHub 页面上的 Sync fork,同步官方仓库的最新代码。

  3. 回到本地项目目录重新部署:

    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)