自托管的私有知识库,对标群晖 Note Station。
A self-hosted private knowledge base. English README · 作者感言 · 在线体验
- 富文本 + Markdown 双引擎:Tiptap 3 + CodeMirror 6,共享 AI、版本历史、评论等上层能力
- AI 助手:支持通义千问 / OpenAI / Gemini / DeepSeek / 豆包 / Ollama,覆盖写作辅助、生成标题、推荐标签、RAG 知识问答
- 知识管理:无限层级笔记本、彩色标签、任务、思维导图、说说、FTS5 全文搜索
- 协作 & 历史:分享支持 4 档权限(仅查看 / 可评论 / 可编辑 / 可编辑需登录)+ 访客留言 + 密码 / 有效期、版本回溯
- 文件管理:图片缩略图(webp 三档自适应,密集图床场景流量降至 1/100)、「我的上传」分类(已引用 / 未引用细分)、孤儿清理
- 自动化:沙箱插件系统、Webhook、审计日志、定时自动备份
- 多端:Web / Electron(Win/macOS/Linux)/ Android(Capacitor)
- 开发者生态:MCP Server、TypeScript SDK、CLI、浏览器剪藏扩展、OpenAPI 3.0(见
packages/)
React 18 · TypeScript · Vite 5 · Tiptap 3 · Tailwind · Hono 4 · SQLite(FTS5) · JWT · Electron 33 · Capacitor 8
| AI 写作助手 | AI 服务商配置 |
|---|---|
![]() |
![]() |
| 侧边栏 | 笔记列表 | 编辑器 |
|---|---|---|
![]() |
![]() |
![]() |
不想本地部署?可以直接打开作者维护的官方体验站点:
- 地址:https://note.nowen.cn/
- 账号:
demo - 密码:
demo123456
⚠ 体验账号为只读演示用途,数据可能被定期重置,请勿存放任何敏感或重要内容。生产使用请按下方「快速开始」自托管部署。
默认管理员:
admin/admin123,首次登录后请立即修改密码。
git clone https://github.com/cropflre/nowen-note.git
cd nowen-note
docker-compose up -d访问 http://<你的IP>:3001。
需要 Node.js 20+。
git clone https://github.com/cropflre/nowen-note.git
cd nowen-note
npm run install:all
npm run dev:backend # 后端 :3001
npm run dev:frontend # 前端 :5173访问 http://localhost:5173。
npm run electron:dev # Electron 开发
npm run electron:build # 打包 Windows / macOS / LinuxAndroid 可直接从 Releases 下载 APK,或 npx cap sync android && npx cap open android 自行构建。
从 Releases 下载最新 nowen-note-x.y.z.fpk,在飞牛 NAS 「应用中心 → 设置 → 手动安装应用」选中文件即可。安装后桌面出现「弄文笔记」图标,浏览器打开 http://<飞牛IP>:3001。
当前 .fpk 仅支持 x86_64 飞牛设备(
platform=x86)。手动打包参见 scripts/fpk/README.md。
| 环境变量 | 默认值 | 说明 |
|---|---|---|
PORT |
3001 |
服务端口 |
DB_PATH |
/app/data/nowen-note.db |
数据库文件路径 |
OLLAMA_URL |
— | 本地 Ollama 地址(可选) |
数据持久化:容器需将 /app/data 映射到宿主机(不是 /data)。镜像已声明 VOLUME ["/app/data"],主流 NAS 面板会自动预填该路径。
备份策略:自动备份默认写入 /app/data/backups,与数据在同一个卷。建议按 3-2-1 原则把 /app/backups 另挂到独立磁盘,并设置 BACKUP_DIR=/app/backups,详见 docker-compose.yml 内的注释。
- 浏览器剪藏扩展(Chrome / Edge):Chrome Web Store
- 部署指南(本地 / Docker / 桌面 / 移动 / 群晖 / 绿联 / 威联通 / 飞牛 / 极空间 / ARM64):docs/deployment.md
- 附件对象存储(S3 / R2 / MinIO):docs/object-storage.md
- 飞牛 .fpk 应用打包:scripts/fpk/README.md
- ARM64 详解:docs/deploy-arm64.md
- 邮件备份配置:docs/backup-email-smtp.md
- 编辑器模式切换:docs/editor-mode-switch.md
- 隐私策略:docs/PRIVACY.md
- OpenAPI:运行后访问
/api/openapi.json
📚 教程中心:docs/tutorials/ — 从快速上手到高级功能的完整教程
- 快速上手:5 分钟快速上手 · 界面概览 · 创建第一篇笔记
- 笔记管理:文档树/笔记本 · 标签和收藏 · 搜索
- 编辑器:富文本编辑器 · Markdown 编辑器 · 斜杠命令
- AI 功能:AI 配置 · AI 生成标题和标签 · AI 总结
- 思维导图:入门 · 从笔记生成 · 导出
- 部署:Docker · NAS · 备份与迁移
由于本应用未做 Apple 公证(notarization),系统会把 dmg 里下载来的 .app
打上 quarantine 隔离属性,导致内部的 better-sqlite3 原生模块加载失败、
后端启动卡住 30 秒后报"后端启动超时"。
终端执行一行命令解除隔离即可(路径换成你实际拖过去的位置):
sudo xattr -dr com.apple.quarantine "/Applications/Nowen Note.app"
# 或
sudo xattr -dr com.apple.quarantine ~/Downloads/Nowen\ Note.app执行后双击重新打开即可。Apple Silicon 用户若用了 x64 版本,需要 Rosetta 2 (系统会自动提示安装)。
QQ 群:1093473044
如果这个项目对你有帮助,欢迎扫码请作者喝杯咖啡 ☕
GPL-3.0 — 派生作品对外分发时须同样以 GPL-3.0 开源并保留原作者版权声明。
最近 5 个版本的更新内容,完整历史见 CHANGELOG.md。
- tasks: 增加待办任务详情描述(TASK-DESC-01) 背景/目标:当前待办任务仅保留标题,缺少更完整的上下文与验收说明。本次变更为任务引入 description 字段,用于记录步骤、备注、验收标准等详细信息,不扩展富文本与协作功能。 主要变更:数据库:在 backend/src/db/migrations.ts 新增 v28 迁移 tasks-add-description,通过 PRAGMA table_info(tasks) 检查并执行 ALTER TABLE tasks ADD COLUMN description TEXT NOT NULL DEFAULT '',保持幂等,旧任务自动兼容。后端接口:在任务创建流程写入 description;在任务更新流程支持 description 更新(含清空);重复任务生成时复制 description;模板相关路径同步透传 description。类型:为 Task 新增 description: string,为 TaskTemplateItem 新增 description?: string,前端统一使用 task.description ?? '' 兼容历史数据。详情面板:在 TaskDetailPanel 新增纯文本 textarea,支持多行输入,onBlur 保存并保留本地输入;新增成功/失败提示文案。列表与看板:FlatTaskRow、TaskTreeRow、TaskBoardView 增加轻量摘要,避免打断紧凑布局。搜索:将任务检索范围扩展到 title 与 description,不改变现有搜索入口。国际化:补充 tasks.fields.description、tasks.fields.descriptionPlaceholder、tasks.toast.descriptionUpdated、tasks.toast.descriptionUpdateFailed,并对齐 en/zh-CN。测试:新增 task-description、taskSearch、TaskTemplateEditor 相关测试,补齐测试 mock 中 description 字段。 验证:frontend tsc/vite build 通过;frontend test 通过;backend build:tsc 通过;任务描述相关后端与前端测试通过。 (e06dfdf)
- Phase 7.1.1 空状态 + 操作反馈 + 重试按钮 (9667ab2)
- Phase 6.4 轻量自动化提醒 — 依赖完成通知、逾期每日提醒 (267958a)
- Phase 6.2 轻量提醒操作 — 稍后提醒、关闭/开启提醒、跳转任务 (450c289)
- Phase 6.1 提醒中心增强 V1 (26194a5)
- Phase 5 - 甘特图 / 时间轴 V1 (cde9c29)
- Phase 7.1.0 P0 清理 — 通知文案 i18n + BOM 清理 (69e7d6e)
- Phase 6.4.1 自动化提醒稳定化 — 依赖全部完成才通知、dueAt 用 JS 时间比较 (aae9ae8)
- Phase 6.2.3 补齐 TaskReminder.snoozedUntil 类型 (a668eed)
- Phase 6.2.2 snoozedUntil 后端接线修复 — PUT 写入、SELECT 扫描、测试补齐 (33b1feb)
- Phase 6.2.1 提醒操作稳定化 — snoozedUntil 字段、可靠 snooze、button 嵌套修复 (cae5e8d)
- Phase 6.1.1 提醒中心 Electron 环境识别与 offset 国际化 (5b0adde)
- Phase 5.0.1 - 甘特图/时间轴稳定化 (0a998af)
- Phase 4.7.1 - 任务模板稳定化 (84bf28f)
- repo: 同步本次会话中的其他本地改动 背景/目标:在完成 TASK-DESC-01 后,一并提交剩余本地工作区改动,便于代码库保持整洁。 主要变更:新增/更新 shareOutline、ShareOutline、ReminderCenter、DiaryCenter、SharedNoteView、taskTitleTokens 及其测试产物;补充 docs/screenshots 与 .playwright-mcp 相关记录文件。 验证:在提交前已确认 TASK-DESC-01 单独完成提交,本次提交仅包含与任务详情描述无关的其余本地改动。 (7dd4437)
- Phase 6.0.2: add TaskReminder.updatedAt to frontend type (3c4829e)
- Phase 6.0.1: reminder type + test fixes (e2d5877)
- Phase 6.0: reminder infrastructure stabilization (d98ccf6)
- Phase 5.5.1: cascade delete cleanup for task_dependencies on child task removal (455ac38)
- Phase 5.5: task center regression + tech debt cleanup (a90a1e3)
- Phase 5.4: dependency-driven lightweight reschedule suggestions (8ba21f0)
- Phase 5.3: dependency status indicators - blocked task visual hints (e41979c)
- Phase 5.2.1:任务依赖线稳定化 hotfix — 修复 6 个 P0/P1 (f5427e7)
- Phase 5.2:任务依赖线 V1 — 数据模型 + 循环检测 + 甘特图依赖线 + 详情面板管理依赖 (c8e1488)
- Phase 5.1:甘特图体验增强 — resize 调整日期范围 + 跨区间显示 + 一键排期 + today 指示器修复 + BOM/编码清理 (dd9f8ce)
- Phase 4.7 - 任务模板 V1 (84c92c4)
- Phase 4.6 - AI 拆任务 (f4bee48)
- Phase 4.5 - 重复任务 (f161c89)
- Phase 4.4 - 日历拖拽改截止日期 (7bd2ea5)
- Phase 4.3 — 任务日历视图 (a153357)
- Phase 4.2 — 项目编辑弹窗、移动端项目选择、看板拖拽、卡片增强 (bd9defe)
- 补充 v22 迁移 — task_projects 表 + tasks 新增 projectId/status 字段(Phase 4 数据层遗漏修复) (c6cb7a3)
- Phase 4 - task projects, kanban board view, status field, project sidebar (7d740bb)
- frontend reminder system (b6fe42b)
- 编辑器: 选区气泡菜单增强——复制、全选、手机号拨号、URL 识别、横向滚动 (84b6f76)
- textActions: 新增文本动作识别工具库,支持手机号拨号和 URL 检测 (4b3fbdb)
- Phase 4 — 搜索、快捷键、批量操作、拖拽排序 (c2db189)
- 任务中心 Phase 3 — 提醒系统 (1ffc575)
- 任务中心 Phase 2 — 截止时间精确到分钟 + 倒计时 (813ba68)
- 任务中心 Phase 1.5 — 子任务快捷新增、删除确认、详情子任务列表、父任务路径 (cd16252)
- 任务中心 Phase 1 — 顶部概览、树形任务、进度条、详情进度 (45b44d7)
- 修复 FlatTaskRow.tsx 编码损坏导致构建失败 (da530a0)
- 修复 6 个 TypeScript 编译错误 (860f44f)
- Phase 4.6.1 - AI 拆任务稳定化 (fa6a362)
- AI思维导图: 修复 AI 返回思考过程导致 Mermaid 解析失败的问题 (5acd442)
- Phase 4.5.2 - 重复任务收口 (4b0c008)
- Phase 4.5.1 - 重复任务 hotfix (e1c6fd5)
- 任务中心多语言修复 (f125cee)
- Phase 4.4.3 - 拖拽成功后 loadTasks 刷新筛选视图 (aec282f)
- Phase 4.4.2 - 拖拽后筛选刷新、BOM清理、注释修正 (4e59ac9)
- Phase 4.4.1 - 日历拖拽稳定化 (515904a)
- Phase 4.4 hotfix - 修复嵌套函数和缺失 prop (bcddcc8)
- Phase 4.3.1 - 日历逾期统一、英文日期格式、空日期状态 (c442575)
- Phase 4.2.2 — MobileProjectPicker 打不开、移动端新建项目旧 state、看板 dueAt-only 逾期 (1b3eb19)
- Phase 4.2.1 — 移动端项目入口接入、工作区切换刷新、看板逾期判断、拖拽保护 (96ea808)
- Phase 4.1.1 — status 枚举校验、批量完成同步、批量删除 descendants、工作区切换刷新项目 (5cd94cf)
- Phase 4.1 — 项目绑定/权限/状态同步/计数刷新全面修复 (6c4ac43)
- overdue filter and stats use datetime precision for dueAt (7ab46b0)
- Phase 3.5 stability audit - reminder auth, overdue precision, notification status (3e006d8)
- EditorPane: 修复移动端按钮 title 乱码和乱序问题 (44b6746)
- tasks INSERT VALUES 缺少 dueAt 占位符(9 values for 10 columns) (2f3f37d)
- migration v20 dueAt 列探测失败 — 改用 PRAGMA table_info 安全检测 (0cf18d3)
- migrations.ts 模板字符串丢失反引号导致后端构建失败 (4ddb9e2)
- 任务中心 Phase 1 全面修复 — 删除子任务、orphan 绑定、循环依赖、逾期判断、后端防护 (d7a916b)
- 任务中心 Phase 1 审查修复 — 删除子任务残留、状态同步、循环防护 (f74a9f0)
- Phase 3.5 - taskProgress, DateBadge, reminder scanner unit tests (8b4e0b9)
- 前端: 思维导图标记和主题名称支持多语言 i18n (8f46744)
- add notebook-first collaboration with hidden workspace UX (e6875a1)
- mindmap: 侧边栏搜索框旁增加收藏筛选按钮 (df89085)
- mindmap: 新建文件夹按钮移到列表顶部 (ccc6425)
- mindmap: 文件夹右键菜单 - 重命名/删除 (37313a7)
- backend: 新增导图移动到文件夹的 PATCH /:id/move 路由 (770b062)
- mindmap: 支持拖拽导图到文件夹 (4213873)
- mindmap: 导图模板功能 - 新建导图时可选择预设模板 (09f7f17)
- mindmap: 文件夹树前端 UI (1adf85a)
- mindmap: 文件夹树后端 + 数据模型 (124562f)
- mindmap: 节点聚焦模式 (9c0ed1a)
- mindmap: 拖拽节点调整结构 (044cb67)
- mindmap: 收藏导图功能 (f1868bd)
- mindmap: 节点复制/剪切/粘贴 (a272d4f)
- mindmap: Ctrl+滚轮鼠标位置缩放 + 节点搜索 + 列表搜索 (7ffe9eb)
- mindmap: 支持 Ctrl+Click 多选节点 (0f0f462)
- mindmap: 思维导图模块 5 阶段增强 (e8f3c66)
- mindmap: 新增全屏编辑模式 (db3ae8b)
- mindmap: 新增添加同级节点 + 快捷键 + 选中节点置顶渲染 (5348b85)
- mindmap: 新增 mindmapTransform.ts 独立解析器 (8255b65)
- editor: MermaidView 工具栏增强 + MindMapEditor 事件监听 + 编辑器 appendMarkdown (03e7782)
- ai: AIChatPanel 支持笔记本级 RAG 作用域 (9a3a4a3)
- ai: EditorPane 新增 AI 总结、AI Mermaid、保存为思维导图 (8effbf2)
- ai: 前端 API 扩展 + i18n + NoteEditorHandle 类型增强 (54a7b26)
- ai: 后端 AI 路由改造 + 笔记本级 AI 端点 (f81d0b8)
- ai: 新增 AI Client 适配层,统一 stream/non-stream 调用 (c1e182d)
- 前端: NoteList 补回 confirm 导入,修复 tsc -b 构建错误 (182c698)
- 前端: 修复6个TypeScript编译错误 — import缺失、path字段缺失、函数未导出 (76721f1)
- 前端: 补回缺失的 diagnoseConnection 导出函数,修复 vite build 失败 (bb765a6)
- Electron: setupWindow 和 waitForRemoteReady 支持反代路径前缀 (142c990)
- 前端+后端: 服务器地址支持反代路径、修复Windows频闪、新增连接诊断 (4442716)
- 前端: 浮动操作条按钮添加细微边框增强轮廓感 (7cb9e70)
- 前端: 思维导图标记菜单改用带颜色SVG图标,与节点显示一致 (1014ca0)
- 前端: 浮动操作条按钮增强可见性 — 加深背景色、加粗文字、加大点击区域 (98fbff7)
- backend: 修复 mindmaps 相关路由 TypeScript 编译错误 (174f668)
- mobile: 修复移动端回收站一键清空按钮无响应 (1f2fb74)
- mindmap: 文件夹数量跟随收藏/搜索筛选动态更新 (380d594)
- i18n: 修复文件夹右键菜单中文翻译乱码 (e38650f)
- i18n: 修复导图模板中文翻译乱码 (42b1d73)
- backend: requireWorkspaceFeature 中间件正确放行 personal 空间请求 (a0c4947)
- backend: 修复 personal workspaceId 传入时文件夹和导图 API 返回 403 的问题 (164b8d8)
- mindmap: Ctrl+滚轮缩放改为原生事件,阻止浏览器页面缩放 (fe67b0f)
- mindmap: 修复 FloatingToolbar 定位偏移 (9f4ccc3)
- mindmap: 修复数据风险 + UI 扁平化 + 代码拆分 (a789add)
- mindmap: 适应视图图标改为 Scan,与全屏 Maximize2 区分 (d988ec1)
- i18n: 补全思维导图多语言文案 (ffc33cd)
- ai: 标题生成字数限制从10改为20,避免AI输出被截断 (8dfcb05)
- mindmap: 保存为思维导图后可靠跳转 + 使用独立解析器 (caff2d6)
- ai: 修复 RAG 向量召回未传 notebookIds + /ask 复用 ai-client (9061916)
- build: 修复 vite 构建循环 chunk 错误 (9d81de3)
- 前端: 思维导图样式收尾 — indigo→blue统一、transition补齐、菜单背景token化、模板弹窗圆角与阴影优化 (e0db228)
- 前端: 思维导图悬浮状态与创建按钮样式统一收敛 (ef81bea)
- 前端: 思维导图菜单与激活态样式继续收敛 (dec1717)
- 前端: 思维导图模块 macOS 风格样式重构 (87a48b3)
- 添加完整官网教程体系(47篇教程 + 索引 + 规划) (210f537)
- 更新Android组件和Tiptap编辑器功能 (c489050)
- 增强Tiptap编辑器功能并优化用户体验 (ce05f9e)
- 添加鸿蒙ArkWeb原生应用项目 (f63e84f)
- 添加鸿蒙ArkWeb WebView原生适配支持 (f6d4923)
- 移动端Sidebar约束宽度防溢出,移除选择时自动关闭侧边栏的逻辑 (03bb588)
- 移除NavRail点击导航项后自动关闭移动端侧边栏的逻辑 (a429f1a)
- 移动端侧边栏遮罩区分点击/滑动,禁用手势关闭侧边栏,添加overflow-hidden防溢出 (948e447)
- 优化Android WebView选择菜单处理,使用委托模式替代直接返回null (fa20e06)
- 大规模代码精简和架构优化 (60f051b)





