nowen-note
自托管的私有知识库,对标群晖 Note Station。
A self-hosted private knowledge base. English README · 作者感言 · 在线体验

功能概览
- 富文本 + Markdown 双引擎:Tiptap 3 + CodeMirror 6,共享 AI、版本历史、评论等上层能力;支持表格(单元格水平/垂直居中)、图片、附件
- AI 助手:支持通义千问 / OpenAI / Gemini / DeepSeek / 豆包 / Ollama,覆盖写作辅助、生成标题、推荐标签、RAG 知识问答;AI 思考过程自动过滤,仅展示最终回答
- 知识管理:无限层级笔记本、彩色标签、收藏、回收站(笔记锁定,禁止编辑/收藏/锁定操作)、FTS5 全文搜索
- 待办事项:任务中心支持树形任务、看板视图、日历视图、甘特图 / 时间轴、任务依赖、重复任务、AI 拆任务、提醒系统、任务模板
- 思维导图:节点拖拽 / 多选 / 复制粘贴、文件夹管理、导图模板、全屏编辑、滚轮缩放、从笔记生成、收藏与搜索
- 说说 / 动态:轻量社交化笔记,支持图文混排
- 分享与权限:4 档权限(仅查看 / 可评论 / 可编辑 / 可编辑需登录)+ 访客留言 + 密码 / 有效期 + 分享链接可撤销、版本回溯
- 实时同步:基于 Yjs + WebSocket 的多端实时协作,删除 / 回收站操作跨端即时同步;IndexedDB 本地离线缓存
- 文件管理:图片缩略图(webp 三档自适应,密集图床场景流量降至 1/100)、「我的上传」分类(已引用 / 未引用细分)、孤儿清理;附件按
YYYY/MM 分目录存储
- 导出:Markdown / PDF / Word / PNG / JPG 多格式导出;Android 导出图片可直接保存到系统相册
- 备份与恢复:定时自动备份、邮件备份推送、一键恢复;Docker / NAS 部署开箱即用
- 多端:Web / Electron(Win/macOS/Linux)/ Android(Capacitor)
- 自动化:沙箱插件系统、Webhook、审计日志
- 开发者生态:MCP Server、TypeScript SDK、CLI、浏览器剪藏扩展、OpenAPI 3.0(见
packages/)
技术栈
| 层 |
技术 |
| 前端 |
React 18 + Vite + TypeScript + Tailwind CSS + Tiptap 3 + CodeMirror 6 |
| 后端 |
Hono + better-sqlite3 + WebSocket + Yjs + sharp + sqlite-vec |
| 桌面端 |
Electron(Win / macOS / Linux) |
| 移动端 |
Capacitor Android |
| 存储 |
SQLite(FTS5 全文搜索) + 本地附件目录 + S3 / R2 / MinIO 对象存储 |
| 同步 |
实时同步(Yjs + WebSocket) + IndexedDB 本地离线缓存 |
| 导出 |
Markdown / PDF / Word / PNG / JPG |
截图
桌面端
| AI 写作助手 |
AI 服务商配置 |
 |
 |
移动端(Android / Capacitor)
在线体验
不想本地部署?可以直接打开作者维护的官方体验站点:
⚠ 体验账号为只读演示用途,数据可能被定期重置,请勿存放任何敏感或重要内容。生产使用请按下方「快速开始」自托管部署。
快速开始
默认管理员:admin / admin123,首次登录后请立即修改密码。
Docker(推荐)
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 / Linux
Android 可直接从 Releases 下载 APK,或 npx cap sync android && npx cap open android 自行构建。
飞牛 fnOS(.fpk 一键安装)
从 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 |
数据库文件路径 |
TZ |
Asia/Shanghai |
Docker 容器时区;海外用户可改为 Europe/London、America/Los_Angeles 等 |
OLLAMA_URL |
— |
本地 Ollama 地址(可选) |
数据持久化:容器需将 /app/data 映射到宿主机(不是 /data)。镜像已声明 VOLUME ["/app/data"],主流 NAS 面板会自动预填该路径。
Docker 镜像内置 tzdata,docker-compose.yml 默认设置 TZ=Asia/Shanghai,用于保证待办「今日 / 本周 / 逾期」等后端日期判断按本地时区刷新。海外用户可在项目根目录创建 .env 并写入自己的时区,例如 TZ=Europe/London。
备份策略:自动备份默认写入 /app/data/backups,与数据在同一个卷。建议按 3-2-1 原则把 /app/backups 另挂到独立磁盘,并设置 BACKUP_DIR=/app/backups,详见 docker-compose.yml 内的注释。
数据目录说明
/app/data(本地开发时为项目根目录下的 data/)的典型结构如下:
data/
├── nowen-note.db # SQLite 主数据库
├── backups/ # 自动备份文件
├── attachments/ # 所有附件(笔记图片、文件、任务附件等)
│ ├── 2026/06/ # 新附件按 YYYY/MM 分目录存储
│ │ └── <uuid>.<ext>
│ ├── <uuid>.<ext> # 旧附件平铺路径,仍兼容读取
│ └── .thumbs/ # 缩略图缓存(webp),不要手动删除
└── fonts/ # 自定义字体
- 新附件路径:
data/attachments/YYYY/MM/<uuid>.<ext>,按年月自动归档
- 旧附件兼容:历史版本平铺在
attachments/ 根目录的文件仍可正常读取,无需迁移
.thumbs 目录:缩略图缓存,由系统自动生成和管理。删除后会在下次访问时重新生成,但会导致短暂的缩略图缺失,不建议手动删除
task_attachments:待办任务的图片/附件与普通笔记附件共用同一个 ATTACHMENTS_DIR,通过数据库关联区分归属
文档
📚 教程中心:docs/tutorials/ — 从快速上手到高级功能的完整教程
常见问题
macOS 首次打开报错 / 无法启动 / "ERR_DLOPEN_FAILED"
由于本应用未做 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 开源并保留原作者版权声明。
最近重要更新
以下为近期完成的功能与修复,按类别整理。
移动端体验
- Android 导出图片保存到相册:导出为 PNG / JPG 后可直接写入系统相册,无需手动转存
- 移动端编辑器单图保存到相册:长按编辑器中的单张图片,一键保存到设备相册
存储与附件
- 附件按 YYYY/MM 分目录存储:新上传的附件自动归入
data/attachments/YYYY/MM/ 目录,避免单目录文件数过多;旧附件平铺路径仍兼容读取
- 待办图片 orphan 清理误删修复:修复任务附件被孤儿清理逻辑误判为未引用而删除的问题
跨端同步
- 删除 / 回收站跨端实时同步:笔记删除、移入回收站、从回收站恢复等操作通过 WebSocket 实时推送至所有在线客户端
- 笔记列表更新时间开关:笔记列表支持切换显示「更新时间」或「创建时间」,设置持久化
编辑器
- 表格单元格水平 / 垂直居中:表格工具栏新增单元格对齐选项,支持水平居中和垂直居中
- 回收站笔记锁定:回收站中的笔记自动进入只读状态,禁止编辑、收藏、锁定等操作,防止误操作
思维导图
- 思维导图滚轮缩放修复:Ctrl + 滚轮缩放改为原生事件监听,修复部分浏览器下页面整体缩放的问题
分享
- 笔记本分享链接可撤销:已生成的分享链接支持一键撤销,撤销后访客立即无法访问
搜索与 AI
- 搜索结果误报修复:修复全文搜索在特定关键词下返回不相关结果的问题
- AI 思考内容过滤:AI 回答中的
<think> 思考过程不再展示给用户,仅显示最终回答内容
更新日志
最近 5 个版本的更新内容,完整历史见 CHANGELOG.md。
v1.2.7 - 2026-07-06
✨ 新增
- HTML 预览资源/大纲提取与编辑器联动优化 (8f46ae0)
- 任务重复/到期计算、导入导出、编辑器与任务面板优化 (25c6050)
v1.2.6 - 2026-07-06
✨ 新增
- add EditorSplitView component (e574cbd)
- add NoteTabsBar and tab navigation system (b4dbfe9)
- add SiYuan SY parser and enhance import service (7d5d4c9)
- add SiYuan note import service (28cd137)
🐛 修复
- support manual note sorting (510bed7)
- 修复安全设置、任务中心及分享笔记等问题 (8f2565d)
- 优化登录页组件 (4c8be41)
- 优化登录页组件与国际化 (797be4c)
- 优化桌面端登录与导航组件 (539faf9)
- 优化Electron构建、日记中心及笔记列表 (865dc02)
- 优化笔记列表与标签页组件 (adec6f1)
- improve NoteTabsBar and AppContext integration (6a589a8)
- update Sidebar component (8b0ece9)
- update DataManager and i18n (aea3ac0)
- handle deleted notebooks in export/import flow (bf74ff9)
- enhance SiYuan import media asset handling (dd1d64a)
- improve SiYuan import service and i18n (ad29c60)
v1.2.5 - 2026-07-03
✨ 新增
- 添加笔记本创建笔记功能 (6fe2abd)
- 添加任务日期 SQL 模块和附件 API 测试 (34b9ccd)
- add task calendar feed settings (6934d39)
🐛 修复
- 修复任务日历订阅带时间事件无法显示 (08b33b6)
- update Capacitor config (8ffe1a1)
📝 文档
- clarify arm64 docker and desktop support status (e59b3ee)
📦 构建
- add experimental linux arm64 desktop packaging entry (f86ff27)
📌 杂项
- Fix packaged app startup and client connectivity (f9befe7)
v1.2.4 - 2026-07-02
✨ 新增
- source ICP filing from docker env (8eabf91)
- render database ICP filing on login page (6816e29)
- add ICP filing input in appearance settings (46f22a1)
- expose ICP filing site setting (f5deabd)
- add ICP filing setting (3dbfad6)
- add configurable ICP filing footer (15f7f53)
- copy personal notebooks to workspace (d06a70a)
- add rich text line height controls (86c5079)
- 添加Markdown视频预览与思维导图视口支持 (df167f8)
- support markdown preview in task details (df480f2)
- add postgres database adapter (PG-ADAPTER-02) (84acd7f)
- add database dialect helpers (PG-DIALECT-01) (aa6230b)
- add remaining async methods for task projects repository (FINAL) (6a9ef71)
- add remaining async methods for note links repository (C-A.5) (63fc2f1)
- add async replace links transaction for note links repository (C-A.4) (e7ca15a)
- add multi statement transaction support to sqlite adapter (C-A.1.1) (5fd016d)
- add async sort order update for task projects repository (C-A.3) (044500f)
- use executeBatch for system settings async setMany (C-A.2) (11e5ac9)
- add executeBatch to sqlite adapter (C-A.1) (5532f45)
- add bulk revoke and cleanup async methods for user sessions repository (B3-B2) (c7401a2)
- add revoke and list active async methods for user sessions repository (B3-B1) (bf4226a)
- add basic async methods for user sessions repository (B3-A) (bd3dc99)
- add async methods for workspace members repository (8d8bf12)
- editor: localize remote images on paste (PASTE-REMOTE-IMAGE-LOCALIZE-01) (296d138)
- tasks: add select all/deselect all in batch mode (0c1f688)
- calendar: schedule S3 export target refresh (TASK-CALENDAR-EXPORT-STORAGE-01-TIMER) (ffd5129)
- calendar: add S3 export target settings UI (TASK-CALENDAR-EXPORT-STORAGE-01-UI) (f343060)
- say: support markdown rendering in posts (SAY-MARKDOWN-INPUT-01) (87ff599)
- calendar: add S3 export target backend (TASK-CALENDAR-EXPORT-STORAGE-01-BE) (3bf11d5)
- editor: 点击块级引用后跳转到目标 heading 并高亮 (BLOCK-LINKS-JUMP-01) (b19b961)
- editor: [[ 引用时支持选择目标笔记标题块 (BLOCK-LINKS-UI-01) (ddebbb3)
- db: note_links 扩展块级引用支持 (BLOCK-LINKS-01) (b242e4c)
- editor: heading blockId 稳定生成 (BLOCK-ID-01) (1aaca83)
- tasks: lunar UI, i18n, tests (TASK-RECURRENCE-LUNAR-01) (1e39699)
- tasks: support lunar yearly recurrence (TASK-RECURRENCE-LUNAR-01) (9145328)
- db: add foreign keys to note_links table (NOTE-LINKS-FK-MIGRATION-01) (ba114d0)
- backlinks: add backlinks panel for note references (BACKLINKS-02) (d20df77)
- tasks: support custom recurrence rules (TASK-RECURRENCE-CUSTOM-01) (f3683f0)
- tags: auto-prune unused tags after note delete (TAG-PRUNE-UNUSED-ON-NOTE-DELETE-01) (8381830)
- editor: add note link reference with [[ trigger (BACKLINKS-01) (251666a)
- journal: add year-month archive view (JOURNAL-YEAR-MONTH-01) (056d651)
- table: improve mobile table editing toolbar (MOBILE-TABLE-EDITING-UX-01) (1c86d55)
- journal: add one-click today journal creation (JOURNAL-AUTO-DATE-01) (3cb743c)
- table: smart actions for phone numbers in table cells (TABLE-CELL-SMART-ACTIONS-01) (8c96fd9)
- diary: support custom publish date for moments (MOMENT-PUBLISH-DATE-01) (0929f08)
- ui: redesign diary layout with sidebar for desktop (SAYING-UI-DESKTOP-RV1) (e1dd92b)
- auth: add QR code for 2FA setup (AUTH-2FA-QR-01) (7eccea4)
- tags: multi-tag AND filtering (TAG-FILTER-MULTI-01) (c46aa33)
- add calendar button to sayings filter b