Nowen Note(弄文笔记)
开源、自托管的知识库、每日记录与任务协作工作台
统一知识树 · 富文本 / Markdown 双编辑器 · 离线工作区 · AI RAG 问答 · 每日记录 · 任务中心 · 多端协作
Nowen Note 不只是一个编辑器。它希望成为一套由你掌控数据、可长期运行在 NAS / 服务器上,并能通过 Web、桌面端和移动端随时访问的个人与团队知识基础设施。
NAS 远程连接登录:支持部署到 绿联 NAS(UGOS / UGOS Pro) 和 飞牛 NAS(fnOS)。部署完成后,可在 Web、桌面端或 Android 客户端中,通过局域网 IP、IPv6 地址或已配置 HTTPS 的公网域名远程连接并登录。
v1.4.12 已发布
v1.4.12 聚焦 AI 问答体验、完整备份稳定性、团队空间导出、富文本粘贴与桌面端使用体验,继续把 Nowen Note 做得更适合长期运行在 NAS / 服务器和桌面环境中。
- AI 问答体验升级:优化历史会话侧栏、知识库范围选择与上下文诊断展示,支持侧栏宽度拖拽与记忆,并修复打开 AI 问答后主内容被横向挤出的问题。
- 完整备份更适合大数据量:全量备份改为后台任务,ZIP 打包与 SHA256 校验采用流式处理,并通过临时下载令牌触发浏览器原生下载,降低大附件场景下的超时和内存峰值。
- 团队空间单篇导出修复:Markdown / 附件 ZIP 导出会使用笔记真实的工作区范围,团队成员在拥有下载权限时可正常导出,不再被误判为个人空间文档。
- 富文本粘贴更准确:钉钉等来源同时提供 HTML 与纯文本时,优先保留有效富文本 HTML,减少数字列表等内容被误识别为 Markdown 的情况。
- 桌面端记住窗口状态:Electron 会记住主窗口位置、尺寸和最大化状态;显示器变化后也会自动保证窗口重新回到可见区域。
- 同步完成根项目、后端与 Android 的 v1.4.12 版本元数据,并更新本版本更新日志。
查看:v1.4.12 Release · 完整更新日志
为什么选择 Nowen Note
| 数据真正属于你 | 支持 Docker / NAS 自托管,可部署到绿联 UGOS、飞牛 fnOS 等 NAS 平台;数据库、附件、索引和备份均由你管理,附件可接入 S3、Cloudflare R2 与 MinIO,备份可同步到邮件或 WebDAV。 |
| 一棵树管理全部内容 | 文件夹、富文本和 Markdown 文档统一组织,根目录也能直接创建文档,支持拖拽、排序、导入、权限继承、密码保护和共享展示。 |
| 在线与离线都能工作 | 可缓存完整工作区、正文和附件,断网继续阅读与编辑,联网后自动恢复增量同步。 |
| 写作、知识与行动统一 | 笔记、每日记录、任务、AI、思维导图和协作权限在同一套产品中完成,无需在多套工具间反复切换。 |
核心能力
| 模块 | 当前能力 |
|---|---|
| 统一知识树 | 文件夹、富文本与 Markdown 文档混合组织;支持根目录文档、无限层级、拖拽排序与层级调整、统一创建菜单、全部展开 / 收起、筛选搜索、数量统计、回收站和共享目录;三栏布局可展示子文件夹与层级范围。 |
| 富文本与 Markdown | Tiptap 3、CodeMirror 6、格式互转、实时预览与分屏、大纲、斜杠命令、表格、代码块、KaTeX、Mermaid、脚注、Callout、媒体嵌入、跨笔记格式粘贴、标题重复前缀提示、评论和版本历史。 |
| 可靠保存与离线工作区 | Yjs 持久化确认、未确认修改补传、IndexedDB 草稿恢复、富文本串行版本保存;支持个人空间、共享目录和工作区离线副本,并针对误冲突、重复副本和格式转换状态做保护;离线附件支持损坏 Blob 校验、隔离与恢复。 |
| 性能与加载 | 工作区、编辑器、任务、日记、文件管理、AI 等功能按需加载;静态资源支持缓存验证、Gzip / Brotli 预压缩,减少首屏依赖和重复传输。 |
| 知识组织与检索 | 彩色标签、收藏、置顶、全文搜索、当前目录笔记搜索、文内查找替换、双向链接、块引用、反向链接、知识图谱,以及“全部笔记”固定入口。 |
| AI 能力 | OpenAI 兼容接口、通义千问、Gemini、DeepSeek、豆包与 Ollama;支持续写、改写、翻译、标题与标签生成、总结、Embedding 索引和 RAG 知识问答。 |
| 每日记录 | 统一“瞬间 / 日历 / 日记”入口,支持短内容、心情、图片、视频、AI 周报 / 月报、自然日期命令、日记实体归档、历史目录整理和工作区共享日记。 |
| 任务与习惯 | 树形任务、列表、看板、日历、甘特图 / 时间轴、依赖关系、重复规则、提醒和模板;支持 My Day、标签、保存视图、预估时长、时间块、Inbox、快速捕获、离线任务 / 习惯,以及 Android 原生任务提醒调度,并补齐创建端时区、全天截止与服务端解析一致性。 |
| 协作、权限与分享 | Yjs + WebSocket 实时协作、工作区角色、目录级 ACL、Restricted 受限模式、显式允许 / 拒绝规则、权限继承、所有权转移、分享密码与有效期、访客评论、公开知识空间,以及富文本 / Markdown 划词批注。 |
| 导入、导出与迁移 | 支持 Markdown、Word / DOCX、网页 URL、微信公众号、SingleFile HTML、思源、Obsidian、小米笔记等;支持选择导入为 Markdown 或富文本,并提供后台任务、进度、重试、远程图片本地化和 Markdown 图片 / 脚注导出;团队空间单篇 ZIP 会按笔记真实工作区执行权限校验。 |
| 附件与存储 | 本地附件按 YYYY/MM 归档;支持缩略图、引用检查、孤儿扫描 / 清理、已有附件复用、手动上传文件保护,以及本地磁盘、S3、R2、MinIO,并强化移动端图片 / 视频文件身份与 multipart 上传稳定性。 |
| 备份与恢复 | 本地自动备份、后台完整 ZIP 任务、流式归档与校验、浏览器原生下载、邮件备份、凭据加密的 WebDAV 远程备份、Docker 在线升级前备份与失败回滚检查。 |
| 多端访问 | Web、Electron(Windows / macOS / Linux)、Android、iOS 工程、HarmonyOS 工程,以及 Docker / NAS 部署;支持绿联 UGOS、飞牛 fnOS,客户端可通过 IPv4、IPv6 或域名远程连接并登录 NAS 服务;Android 支持应用内图片手势预览。 |
| 开放能力 | OpenAPI 3.0、TypeScript SDK、CLI、Webhook、插件系统、Personal API Token、MCP Server 和浏览器剪藏扩展。 |
AI 问答与隐私
Nowen Note 的知识库问答采用 RAG 检索增强方式,不会在每次提问时把全部笔记内容都发送给大模型。
- 知识库模式:先在本地索引中检索相关笔记和附件,再发送匹配到的片段。
- 当前笔记模式:只使用当前打开的笔记。
- 选中文本模式:只使用当前选择或粘贴的文本。
- 本地模型:使用 Ollama 等本地服务时,可让问答内容留在自己的设备或服务器中。
使用在线 Embedding 或在线大模型时,建立索引或回答问题所需的相关文本会发送给你自行配置的服务商。身份证、密码、API Key、助记词等高度敏感信息仍不建议以明文保存。
让 AI 客户端连接 Nowen Note
Nowen Note 支持 MCP Server,可让 Claude Code、Cursor、VS Code 等 AI 客户端在授权范围内搜索、读取、创建和更新笔记。
当前正式可用方式为源码构建:安装 Node.js 20+,构建 packages/nowen-mcp,在 Nowen Note 创建 restricted Personal API Token,再把 packages/nowen-mcp/bin/nowen-mcp.mjs 的绝对路径配置到客户端。dist/scoped-entry.js 是启动器加载的内部构建入口,不应直接配置给客户端。
v1.4.12 重点更新
AI 问答
- 重构历史会话侧栏,支持搜索、拖拽调整宽度、宽度记忆,并优化长标题、重命名和删除操作。
- 新增更清晰的知识库范围选择器,可在全部知识库与指定笔记本之间快速切换。
- 优化上下文来源、索引状态与检索诊断展示,让 RAG 问答使用了哪些内容更容易理解和排查。
- 修复 AI 问答打开后主内容区域被侧栏横向挤出的问题,桌面窄窗口下的布局更加稳定。
备份与恢复
- 完整备份改为后台任务,前端通过状态轮询获取进度,避免长时间 HTTP 请求被浏览器、WebView 或反向代理提前中断。
- ZIP 归档和 SHA256 校验改为流式处理,降低大附件、大备份场景中的内存峰值与资源占用。
- 完整备份生成后使用短生命周期能力令牌触发浏览器原生下载,避免前端
response.blob()再复制一份大文件到内存。 - 保留 SQLite 在线快照、附件、字体、插件和密钥等完整恢复内容,继续以可恢复性而不是单纯“导出成功”作为全量备份目标。
团队空间与导出
- 修复团队空间单篇 Markdown / 附件 ZIP 导出失败:导出任务现在会根据笔记真实
workspaceId选择正确权限范围。 - 个人空间仍保持原有导出行为;旧后端缺少工作区字段时保留兼容回退。
- 团队成员只要拥有对应下载权限,就不会再因为不是笔记创建者而被错误拒绝。
编辑器与桌面端
- 修复钉钉等富文本来源的粘贴路由:剪贴板存在有效 HTML 时优先走富文本解析,避免数字列表等内容被误判为 Markdown。
- Electron 新增窗口状态持久化,记住主窗口位置、大小和最大化状态。
- 多显示器环境变化或副屏断开后,会自动把不可见窗口调整回可用显示区域。
完整记录请查看 CHANGELOG.md 和 v1.4.12 Release。
截图
桌面端
| AI 写作助手 | AI 服务商配置 |
|---|---|
![]() |
![]() |
移动端
| 侧边栏 | 笔记列表 | 编辑器 |
|---|---|---|
![]() |
![]() |
![]() |
官网与在线体验
- 官方网站:http://nowen.cn/
- 在线体验:http://note.nowen.cn/
- 账号:
demo - 密码:
demo123456
演示账号仅用于体验,数据可能被定期重置。请勿存放敏感或重要内容。
快速部署
Docker Compose(推荐)
要求已安装 Docker Engine 与 Docker Compose v2。
git clone https://github.com/cropflre/nowen-note.git
cd nowen-note
docker compose up -d
打开 http://<服务器IP>:3001。
默认管理员账号:
用户名:admin
密码:admin123
首次登录后请立即修改默认密码。公网部署还应配置 HTTPS、备份、正确的公开访问地址,并按需收紧 CORS。
绿联 NAS / 飞牛 NAS 远程连接登录
Nowen Note 支持部署在 绿联 NAS(UGOS / UGOS Pro) 与 飞牛 NAS(fnOS) 上。可使用 Releases 中对应的 .upk / .fpk 安装包,也可以直接通过 Docker Compose 部署。
部署并启动服务后:
- 局域网访问:浏览器打开
http://<NAS局域网IP>:3001。 - 远程访问:在 Web、桌面端或 Android 客户端中填写 NAS 的公网域名、IPv4 或 IPv6 服务地址并登录。
- 公网使用建议配置 HTTPS 反向代理,不建议直接暴露未加密的 HTTP 服务。
查看各平台安装包:GitHub Releases。
查看运行状态和日志:
docker compose ps
docker compose logs -f --tail=200 nowen-note
从旧版本升级
升级前先在管理后台创建完整备份,并确认数据库与附件目录已经持久化。
docker compose pull
docker compose up -d
需要固定当前稳定版本时:
NOWEN_IMAGE_TAG=v1.4.12 docker compose up -d
v1.4.12 重点改善 AI 问答、完整备份、团队空间单篇导出、富文本粘贴和 Electron 窗口状态。升级后建议重点检查 AI 会话与知识库范围、完整 ZIP 备份/下载、团队空间 Markdown + 附件 ZIP 导出、钉钉等富文本粘贴,以及桌面端窗口位置/最大化状态恢复。镜像回滚不等于数据库回滚,生产环境必须保留独立备份。
Docker 在线升级(可选)
在线升级仅支持仓库内的官方 docker-compose.yml,且默认关闭。主应用容器不会挂载 Docker Socket;只有独立、内网隔离并受限运行的 updater 容器拥有 Docker Engine 权限。
cp .env.example .env
printf '\nNOWEN_UPDATER_TOKEN=%s\n' "$(openssl rand -hex 32)" >> .env
NOWEN_IMAGE_TAG=v1.4.12 docker compose --profile updater up -d
启用后,管理员可在「设置 → 关于 → 版本信息」执行升级前检查、完整备份、升级、健康验证和失败回滚。
完整说明见 Docker 在线升级与恢复。
仅运行主应用
docker run -d \
--name nowen-note \
--restart unless-stopped \
-p 3001:3001 \
-e TZ=Asia/Shanghai \
-v /opt/nowen-note/data:/app/data \
cropflre/nowen-note:v1.4.12
数据、备份与配置
持久化目录
容器内的持久化根目录是 /app/data,不是 /data。默认 Compose 使用名为 nowen-note-data 的 Docker Volume。
/app/data/
├── nowen-note.db
├── attachments/
├── backups/
├── fonts/
└── .jwt_secret
- 默认生产数据库为 SQLite,主文件是
/app/data/nowen-note.db。 - 附件默认存储在
/app/data/attachments,新文件按YYYY/MM分目录。 - 自动备份默认位于
/app/data/backups。 - 生产环境建议把
BACKUP_DIR映射到独立物理磁盘,并遵循 3-2-1 备份原则。 - PostgreSQL 适配和迁移仍在验证中,当前正式部署与恢复流程继续以 SQLite 为默认基线。
常用环境变量
完整模板见 .env.example。
| 变量 | 默认值 | 用途 |
|---|---|---|
NOWEN_PORT |
3001 |
Compose 对外暴露端口 |
TZ |
Asia/Shanghai |
容器时区,会影响任务日期与日记自然日期判断 |
PUBLIC_WEB_ORIGIN |
空 | 反向代理或公网域名,用于生成正确的分享链接 |
JWT_SECRET |
自动生成并持久化 | 登录、会话与部分加密回退;多实例部署时必须统一配置 |
BACKUP_DIR |
/app/data/backups |
自动备份目录 |
BACKUP_WEBDAV_ENCRYPTION_KEY |
回退到 JWT_SECRET |
加密保存 WebDAV 凭据,生产环境建议单独配置 |
CORS_ORIGINS |
内置原生客户端来源 | 额外允许的网页 Origin,逗号分隔 |
MAX_ATTACHMENT_SIZE_MB |
100 |
单个附件大小上限 |
ATTACHMENT_STORAGE |
local |
设为 s3 后可接入 S3 / R2 / MinIO |
NOWEN_UPDATER_TOKEN |
空 | 启用 Docker 在线升级代理 |
客户端与平台状态
| 平台 | 获取 / 构建方式 | 状态说明 |
|---|---|---|
| Web / Docker | Docker Hub 或源码构建 | 推荐部署方式;镜像可构建 amd64、arm64 或多架构版本 |
| Windows / macOS / Linux | GitHub Releases 或 npm run electron:build |
Electron 客户端可连接远程服务,也可使用本地后端 |
| Android | Releases APK 或在 frontend/ 下使用 Capacitor 构建 |
正式维护;支持系统分享导入、Markdown 导入、沉浸式编辑、移动端知识树、图片手势预览、系统原生任务提醒,以及远程连接 NAS 服务登录 |
| iOS | Capacitor 工程与 GitHub Actions / TestFlight 流程 | 需要 Apple 签名与开发者账号,详见 iOS 发布指南 |
| HarmonyOS | 使用 DevEco Studio 打开 nowen-harmony/ |
ArkTS + ArkWeb MVP;部分原生能力仍在完善 |
| fnOS | Releases 中的 .fpk |
支持飞牛 NAS 安装;当前 .fpk 主要面向 x86_64,部署后可通过局域网或公网地址远程连接登录 |
| 绿联 UGOS | Releases / 构建脚本中的 .upk |
支持绿联 NAS 安装,依赖具体设备架构与应用安装能力;部署后可通过局域网或公网地址远程连接登录 |
| 其他 NAS | Docker Compose | 群晖、威联通、极空间等可按 Docker 方式部署 |
各平台实际发布的安装包以 GitHub Releases 为准。
本地开发
要求 Node.js 20+、npm、Git。Electron 和原生依赖构建还需要对应平台的编译工具链。
git clone https://github.com/cropflre/nowen-note.git
cd nowen-note
npm install
npm run install:all
npm run dev
也可以分别启动:
npm run dev:backend
npm run dev:frontend
访问 http://localhost:5173。
常用命令:
npm run build:all # 构建前端与后端
npm run electron:dev # Electron 开发
npm run electron:build # Electron 打包
(cd backend && npm test) # 后端测试
(cd frontend && npm run test:run) # 前端测试
Android:
cd frontend
npm run cap:build
npx cap open android
Capacitor 8 的 Android 发布工具链要求 Node.js 22+;日常 Web / Electron 开发仍可使用项目当前 Node.js 20+ 基线。
iOS:
npm run cap:sync:ios
npm run cap:open:ios
技术架构
| 层 | 主要技术 |
|---|---|
| 前端 | React 18、TypeScript、Vite 5、Tailwind CSS、Tiptap 3、CodeMirror 6、Yjs、IndexedDB |
| 后端 | Node.js 20、Hono 4、WebSocket、better-sqlite3、FTS5、sqlite-vec、sharp |
| 桌面端 | Electron 33、electron-builder、electron-updater |
| 移动端 | Capacitor 8(Android / iOS)、ArkTS + ArkWeb(HarmonyOS) |
| 存储与备份 | SQLite、本地附件、S3 / Cloudflare R2 / MinIO、邮件与 WebDAV;PostgreSQL 处于适配验证阶段 |
| 开放能力 | OpenAPI 3.0、TypeScript SDK、CLI、MCP Server、Webhook |
项目结构
nowen-note/
├── frontend/ # React Web 与 Capacitor 客户端
├── backend/ # Hono API、数据库、同步与后台任务
├── electron/ # Electron 主进程与打包配置
├── packages/ # SDK、CLI、MCP 等开发者包
├── nowen-harmony/ # HarmonyOS ArkTS / ArkWeb 客户端
├── docs/ # 部署、教程与设计文档
└── scripts/ # 构建、迁移、打包与发布脚本
文档导航
- 教程与帮助中心
- MCP Server 安装与使用
- 完整部署指南
- Docker 在线升级与恢复
- WebDAV 远程备份
- 附件对象存储
- 邮件备份配置
- ARM64 部署
- iOS 发布指南
- 隐私策略
- 浏览器剪藏扩展
- OpenAPI:服务启动后访问
/api/openapi.json
当前边界
- 数据库:SQLite 是当前默认且完整支持的生产方案;PostgreSQL 已有适配器、Schema 和部分双库测试,但尚未开放正式切换。
- 格式互转:Markdown 与富文本互转会尽量保留主要结构,但高度定制的 HTML、复杂扩展节点或第三方语法仍可能需要人工检查。
- AI 隐私:使用在线 Embedding 或在线大模型时,相关文本会发送到用户自行配置的服务商;敏感信息建议使用本地模型或不要存储。
- WebDAV:用于上传已经完成的备份文件,不是实时同步、数据库运行目录或附件在线存储后端。
- Docker 在线升级:只支持官方 Compose 受管部署,不支持任意容器、任意镜像或 NAS 应用包。
- macOS:安装包若未经过 Apple 公证,首次打开可能需要执行
xattr解除隔离,详见 桌面端教程。 - 移动端:Android 维护最完整;iOS 与 HarmonyOS 的分发、签名和部分原生桥接能力仍受平台工具链限制。
- 快速迭代:功能和安装包更新较快,请以 Releases、应用内版本信息和 CHANGELOG.md 为准。
版本与更新
README 维护稳定的产品定位、能力范围、近期版本和部署方式;完整提交历史请查看更新日志。
参与贡献
欢迎提交 Issue、功能建议和 Pull Request。提交代码前建议至少完成:
npm run build:all
(cd backend && npm test)
(cd frontend && npm run test:run)
反馈入口:
- GitHub Issues
- QQ 群:
1093473044
支持作者
如果 Nowen Note 对你有帮助,欢迎扫码请作者喝杯咖啡。感谢每一份支持,它会帮助项目持续维护和迭代。
| 微信赞赏 | 支付宝赞赏 |
|---|---|
![]() |
![]() |
也可以阅读 作者感言。
License
Nowen Note 基于 GNU General Public License v3.0 开源。






