Your notes. Your keys. Zero knowledge.
一款基于 Passkey 的端到端加密笔记应用
你的笔记,永远只属于你
💡 问题:想要一个能同步、能多设备、还能真正端到端加密的笔记应用,但市面上的方案要么要你信任服务商,要么用起来太折腾。
Inkrypt 的答案:用 Passkey 做身份验证和密钥派生,真正做到端到端加密——你的笔记只有你能看。
|
|
|
|
+-----------------------------------------------------------------+
| Your Browser |
| +-------------+ +-------------+ +-------------+ |
| | WebAuthn | | IndexedDB | | React + | |
| | PRF | | (cache) | | Zustand | |
| +------|------+ +------|------+ +------|------+ |
| | | | |
| +----------------+----------------+ |
| | Encrypt/decrypt happens here |
+--------------------------+--------------------------------------+
| HTTPS (ciphertext)
v
+-----------------------------------------------------------------+
| Cloudflare Edge |
| +-------------+ +-------------+ +-------------+ |
| | Workers | | D1 | | Durable | |
| | (Hono) | | (storage) | | Objects | |
| +-------------+ +-------------+ +-------------+ |
| |
| Ciphertext stored here |
+-----------------------------------------------------------------+
| 组件 | 技术栈 | 职责 |
|---|---|---|
| 前端 | Vite + React + Zustand | UI、加解密、本地缓存 |
| 后端 | Hono on Cloudflare Workers | 认证、同步、CRUD |
| 存储 | Cloudflare D1 | 笔记和元数据 |
| 限流 | Durable Objects | 全局请求限流 |
推荐使用 GitHub Actions 一键部署(无需本地 clone)。
你需要准备:
DOMAIN:你的自定义域名(例如notes.example.com,必须已托管到 Cloudflare)- GitHub 仓库 Secret:
CLOUDFLARE_API_TOKEN
在 GitHub 点击 Use this template(或 Fork)创建你的仓库。
进入仓库 → Settings → Secrets and variables → Actions:
- 新增 Repository secret:
CLOUDFLARE_API_TOKEN - (可选)新增 Repository secret:
INKRYPT_SESSION_SECRET(不填会自动生成)
Token 最小权限建议:
- Zone:
Zone:Read、DNS:Edit、Workers Routes:Edit - Account:
Pages:Edit、Workers Scripts:Edit、D1:Edit
进入仓库 → Actions → Deploy Inkrypt → Run workflow:
- 必填:
domain - 选填:
rp_name、cors_origin、pages_project_name、worker_name、d1_name、d1_location
安全开关(默认谨慎):
force_takeover_dns=true:允许覆盖已存在但不匹配的 DNS 记录force_takeover_routes=true:允许接管已被其他 Worker 占用的 Routeswait_for_tls=false:不等待 HTTPS 就绪(默认会等待)
该工作流会自动完成:
- Pages 项目创建与部署(Direct Upload)
- Worker 部署(含 D1/DO)
- D1 创建与 migrations
- Pages 自定义域名绑定 + DNS CNAME 自动配置
- Worker Routes 自动配置(
/api/*、/auth/*、/healthz*) - Smoke test:访问
https://<DOMAIN>/healthz
- 打开
https://<DOMAIN>访问 - 建议保持域名不变:
RP_ID/ORIGIN依赖域名,上线后改域名会导致已注册 Passkey 失效 - 新部署默认使用 SQLite 后端的 Durable Objects(对免费账号更兼容)
👉 完整部署说明(含排错):DEPLOYMENT.md
首次使用流程:
- 创建保险库 — 完成 Passkey 注册,生成主密钥
- 备份恢复码 — 这是你数据的最后保险,务必离线保管
- 开始写作 — 支持 Markdown、数学公式、Mermaid 图
- 同步与上传 —
Ctrl/Cmd + S上传,设置菜单拉取云端
👉 详细说明:USAGE_ZH.md
| 🔑 | 恢复码 = 主密钥 | 任何人拿到它都能解密你的所有笔记。离线保管,不要截图发给自己。 |
| 💾 | "记住解锁"有风险 | 开启后会在本地缓存解密材料,XSS、恶意扩展等可能趁虚而入。 |
| 🌐 | 浏览器要求 | 必须支持 WebAuthn PRF 扩展和 CompressionStream API。 |
欢迎 Issue 和 PR!
Made with 🔒 by VrianCao
Your data, encrypted. Your keys, yours.