把想法,
留在自己的服务器上。

V5Notes 是一套可以私有部署的 Markdown 云笔记。桌面端负责写作,管理后台负责人和权限,正文、目录、历史与文件都落在你自己的 MySQL 或 PostgreSQL 里。

Windows · macOS · Linux | Apache 2.0 | v2.0.0

V5Notes 桌面客户端:左侧是一棵目录树,右侧是等待打开的空白纸面 V5Notes 桌面客户端深色主题:左侧目录树,右侧空白纸面
图版 01 · 客户端的空白页

云笔记很好用,
直到你想把数据拿回来。

本地 Markdown 很自由,但目录、搜索、误删和多设备会把事情变乱。V5Notes 把这两件事合成一套你能自己装、自己备份、自己改的系统。

原来的麻烦 V5Notes 的做法

笔记散在聊天记录、网盘和本地文件夹里

一篇笔记就是一份 Markdown,按目录归好,按标题搜索。

内容存在别人的服务器上

API、数据库、Redis 和上传文件都由你部署,备份就是拷走三个目录。

写作界面被管理功能塞满

桌面端只留目录、正文和写作工具;用户、角色、审计放在管理后台。

改乱了,或删错了一整棵目录

正文保留历史版本;删除先进回收站,保留 30 天。

适合想自己托管笔记的个人、需要给家人或小团队开通账号的人,以及希望在一套现成的用户、权限和笔记 API 上继续做产品的开发者。

打开电脑就能写,
换一台接着写。

桌面端只有一个目标:让你尽快进入正文。左侧一棵树,右侧一张纸,中间不放大按钮。

目录与笔记同屏

搜索、新建、重命名、删除都在同一棵树里完成,不用在页面之间跳。

三种模式

所见即所得、源码、预览,⌘1 / ⌘2 / ⌘3 直接切;共用同一个编辑器实例,Markdown 状态和撤销历史都还在。

专注写作

收起侧栏,编辑器占满窗口;想回来时,侧栏还在原来的位置。

大纲与查找

长文用右侧大纲定位,⌘F 在当前笔记里查找,不离开正文。

命令面板

⌘K 打开全部命令:切换模式、调整字号、导出 HTML / PDF / Markdown / 长图。

草稿不丢

断网或刷新,未保存的内容还在;切换笔记或关窗口之前会先问你。

V5Notes 源码模式:左侧目录树,右侧是带行号的 Markdown 原文
图版 02 · 源码模式

正文下面,
是一套自己写的编辑器。

V5Notes 的写作体验来自 v5md——一套开源的所见即所得 Markdown 编辑器。它不发明私有格式:Markdown 字符串是唯一数据源,输入、粘贴和工具条命令都只改这段字符串,再重新解析、重绘。

数据就是 Markdown

拿到的不是私有 JSON 或 HTML,而是可以直接入库、走 diff、交给任何 Markdown 渲染器的字符串。

标记按需显形

平时看到的是排版结果;光标落在标题、粗体、代码块上,才露出 #、**、围栏,改完自动收回。

中文输入法友好

组合输入期间不重绘 DOM,候选框不错位,拼音上屏不丢字。

粘贴即转换

从网页、Word、飞书复制来的富文本,先转成 Markdown 再写入文档。

不锁死框架

@v5md/vue 与 @v5md/react 只是薄壳,核心是 @v5md/view 的 Editor 类,也能挂到任意 DOM。

可插拔

工具条、命令、对外 API 都能由插件提供;字号和导出是官方插件。

标题、粗体、斜体、下划线、删除线、高亮、行内代码、链接、列表、任务列表、引用、带语法高亮的代码块、表格、分割线、图片(可拖拽缩放)、KaTeX 公式、Mermaid 图表、YAML frontmatter;以及撤销重做、查找替换(正则 / 全词)、整篇源码模式、大纲跳转、表格行列编辑、导出 Markdown / HTML / PDF / 图片。

v5md 以 MIT 许可开源,可以单独用在别的项目里。

GitHub github.com/zyw/v5md | npm @v5md/vue · @v5md/react · @v5md/view | 当前 v0.0.3

v5md 编辑器:左侧是带大纲的排版结果,右侧是同一份 Markdown 源码
v5md 编辑器:左边是排版结果,右边是同一份 Markdown 源码。

删得安心,改得回去。

写作里最贵的不是打字,是「刚才那一版去哪了」。

V5Notes 历史版本弹窗:左侧是带时间戳的版本列表,右侧是该版本正文的预览
图版 03 · 历史版本

历史版本

正文每次保存留一份快照,可以逐版预览,也可以把任意一版恢复成当前正文。

回收站

笔记和目录先进入回收站,保留 30 天;删除目录时,子目录和笔记一起进去,恢复也是一起回来。

本地草稿

刷新、断网、换一台设备,未保存的内容不会凭空消失。

写作之外的事,
交给管理后台。

管理后台和桌面端共用同一套笔记服务。写的人只管写,管的人在另一个入口。

V5Notes 管理后台工作台:内容资产、内容增长、最近更新与系统脉搏
图版 04 · 管理后台工作台

用户与组织

用户、部门、岗位、角色、菜单、字典、参数、通知,一套系统管理里配齐。

笔记与目录

在后台查看、检索、导出、管理所有人的笔记与目录。

客户端接入

控制哪些客户端可以接入,用哪对公钥完成登录加密。

审计

在线用户、登录日志、操作日志:谁在什么时候做了什么。

系统监控

缓存、接口和运行状态,出问题先看见。

文件

上传内容跟数据库放在一起,备份时一起拷走。

一套笔记服务,同时服务
桌面端和管理后台。

客户端走 /client/notes,管理后台走 /notes、/system 和 /basics;雪花 ID 从接口到页面始终按字符串处理。

桌面客户端

Vue 3.5 · Tauri 2

API

Java 21 · Spring Boot 4.1

管理后台

Vue 3.5 · Element Plus

MySQL 8.4 或 PostgreSQL | Redis 7.4 | 本地文件存储 | Flyway 建表

装在自己的机器上,
三种方式。

数据库表由 API 启动时的 Flyway 创建。选一种方式,把整套系统跑起来。

cd v5notes2 && mvn -DskipTests package
cd ../v5notes-admin2 && pnpm install && pnpm build
cd ../v5notes2/docker && cp env.example .env
docker compose up -d --build

管理后台 http://localhost:8988 | API http://localhost:8080

Docker Compose

上面四行,把 API、管理后台、MySQL 和 Redis 一起跑起来。

Jar + Nginx

已有 MySQL / Redis 时

PostgreSQL

同一个开关切方言和 Flyway 目录。

备份

数据库
v5notes2/docker/mysql/data
缓存
v5notes2/docker/redis/data
文件
v5notes2/docker/uploadfile

第一次打开

  1. 用 admin / admin123 登录后台并改密码
  2. 新建「客户端用户」
  3. 在桌面端填服务器地址登录

一套能读、能改、
能自己维护的栈。

后端
Java 21 / Spring Boot 4.1.2 / MyBatis-Plus / Sa-Token / Flyway / Redisson
前端
Vue 3.5 / TypeScript / Vite / Element Plus / Pinia / UnoCSS
桌面
Tauri 2
编辑器
v5md(@v5md/vue,MIT)

登录

访问令牌只在内存,刷新令牌默认 30 天、一次性轮换;客户端不保存密码。

三语

简体中文、繁體中文、English,三端都能切;后端按 Content-Language 返回提示。

开源

Apache 2.0,三个目录可以分开改;接口、表结构和 i18n 都有明确入口。

把下一段想法,写在自己的服务器上。