吾身 Diarum:一天一篇,打开即写的自托管日记
从“为什么又做了一个日记应用”说起,完整介绍 Diarum 的设计理念与全部功能——日记、图片、统计、分享、AI 助手、MCP、备份、审计与访客统计。
吾日三省吾身。——《论语·学而》
Diarum,中文名吾身,是一款开源、可自托管的日记应用。它的规则只有一条:每天有且只有一篇日记。打开就是今天,写下就已保存,十年之后,依然能一眼翻到那一天。
这篇文章会完整地介绍 Diarum:为什么做它、它的设计理念,以及截至 v0.9.9 的全部功能。如果你只想快速体验,可以直接打开 演示站(账号 demo / 密码 demo@1234)。

为什么又做了一个日记应用
市面上优秀的日记和笔记软件已经很多了,但总有那么一点不满足我自己的需求。我想要的日记软件是这样的:
- 打开立刻就能开始写,不需要纠结文件名、标题和目录结构;
- 最好是网页的,我自己的设备横跨 MacBook、HarmonyOS NEXT、Android、Arch Linux 和 Windows,只有网页能同时照顾到所有平台;
- 方便自托管,数据完全在自己手里,搬家也容易;
- 能借助 AI 做复盘和总结,但前提是不把日记交给任何第三方。
于是就有了 Diarum。它使用 Go + Svelte 开发,打包成一个内嵌前端的单文件二进制,配合 SQLite,一条 docker run 就能跑起来。
今年 2 月第一次公开发布时,Diarum 还构建在 PocketBase 之上,功能也只有日记、图片、AI 和简单的 API。在那之后它经历了数十个版本的迭代:迁移到了原生 SQLite 后端,加入了 MCP、历史版本、那年今日、统计报表、三种视觉风格、自动备份、系统后台、审计日志、图片回收站、实况照片、访客统计……可以说已经是一个完全不同的应用了。
设计理念:刚刚好
Diarum 想做的是一本“刚刚好”的日记:
- 零负担——登录后直接进入今天的日记,不用做任何选择;
- 快记录——光标就在正文里,停笔即自动保存,离线也不丢;
- 怡复盘——日历、那年今日、统计、AI 助手,让回顾成为一件愉快的事。
“每天一篇”看起来是个限制,实际上是一种解放:你再也不需要决定“这条要不要单独建一篇”“标题叫什么”“放进哪个文件夹”。日期就是一切。
写:打开即写的日记体验
编辑器
编辑器所见即所得,同时兼容 Markdown 的输入习惯。输入 / 唤出命令菜单,可以插入标题、列表、待办清单、引用、代码块、分割线、图片和图集;右侧会自动生成目录大纲。每篇日记还可以选择当天的心情和天气,表情选项可以自定义。
自动保存与离线
写下的内容会自动保存,右上角实时显示保存状态,Ctrl+S / ⌘S 可以立即保存。断网时修改先保存在本地,联网后自动同步;最近的日记缓存在设备上,没网也能翻看。Diarum 是一个 PWA,可以安装到手机桌面或电脑上,像原生应用一样全屏使用。
历史版本
每次保存时,旧内容都会作为历史版本保留(默认每篇 10 个,可调到 20 个)。误删了一段?打开历史版本,预览,一键回滚。回滚本身也可以撤销。

三种视觉风格
- 经典:简洁专注的编辑器页面;
- 沉浸:像翻开一本真正的日记本,左页是日期、心情天气和那年今日,右页是正文;
- Windows 95:复古桌面 + 记事本,目录树、文档大纲、开始菜单,情怀拉满。


回顾:日历、那年今日与统计
日历总览用表情标出每天的心情和天气,旁边是本月篇数、连续记录天数和总篇数。写今天的日记时,那年今日会提示你往年的今天写过什么。全文搜索可以在所有回忆里即时查找。

「数据统计」页面会告诉你总共写了多少字、最近一个月 / 半年 / 一年写了多少,还有每日字数曲线(7 天到 1 年,或自定义范围)和每年字数曲线。中文按字、英文按词计数。

图片:不只是上传
- 粘贴、拖拽即可上传,多图并行;
- 后台自动生成缩略图和中等尺寸副本,日记默认加载中等尺寸,点开看原图;
- 支持 iPhone 实况照片和华为、荣耀、小米、OPPO、vivo、三星、Pixel 的动态照片,HEIC 自动转 JPEG,每张可设置循环 / 播放一次 / 不播放;
- 存储可选本地、S3 兼容对象存储或 Chevereto 图床,S3 支持路径前缀和 CDN 公开地址;
- 自带媒体库和回收站,可以一键清理不再被任何日记引用的图片,也能把日记里的外链图片保存到自己的图库。
分享:精美长图与 Markdown
点一下分享按钮,就能把当天的日记生成一张排版精美的长图,有暖纸、优雅深色、极简白、自然绿和 Windows 95 五种主题,宽度和清晰度可调,复制或下载都行。也可以复制为 Markdown,图片会自动换成可公开访问的 S3 / CDN 直链。

AI:内置助手 + MCP + API
AI 是 Diarum 从第一天就在做的方向,现在它已经覆盖了三个层次。
内置 AI 助手
在设置中填入任意 OpenAI 兼容的 API 地址和 Key(OpenAI、DeepSeek、通义千问、OpenRouter,甚至本地的 Ollama 都可以),选择对话模型和向量模型。Diarum 会自动把日记切分、向量化并存入内置向量库,之后写日记会增量更新。
和助手对话时,它会先检索出与你的问题最相关的日记片段,再交给大模型回答。于是你可以很自然地完成:
- 今日复盘;
- 周报、月报生成;
- 年终总结;
- “最近我的情绪有什么变化?”
MCP 服务
Diarum 内置了一个 MCP 服务端(Streamable HTTP)。在「设置 → API 访问」中开启后,把生成的配置粘贴到 Claude、Cursor、Cherry Studio 等客户端,AI Agent 就能通过 get_diary、list_diaries、search_diaries 三个只读工具查询你的日记。
{
"mcpServers": {
"diarum": {
"type": "http",
"url": "https://diary.example.com/api/v1/mcp",
"headers": { "Authorization": "Bearer <your-api-token>" }
}
}
}
REST API 与 Webhook
基于令牌的只读 API 可以按日期或日期范围读取日记,每个实例都自带 OpenAPI 文档(/api/v1/docs)。配合 n8n 这样的平台,可以搭建自动生成周报、月报并推送到邮箱或 IM 的工作流。如果你也在用 Memos,开启 Memos Webhook 同步后,memo 的新增、修改和删除会自动同步到对应日期的日记里。
数据:你的,随时带走
- 导出:一个
.zip包含完整的结构化数据diarum_export.json、每天一个 Markdown 文件,以及原始图片;可以选择日期范围和内容(日记 / 媒体 / AI 对话); - 导入:同一个压缩包导回去,日记、图片、对话全部恢复,向量自动重建;
- 自动备份:配置一个 S3 兼容存储桶,按 cron 计划自动备份,按数量保留,带连接测试与备份日志,备份列表里可以直接下载或一键恢复。
即使有一天不用 Diarum 了,你的日记也能被任何 Markdown 编辑器打开。
安全:不只拥有数据,还能证明没人看过
日记是最私密的数据。自托管解决了“数据在谁手里”的问题,Diarum 还想回答另一个问题:怎么确认没有人偷看?
系统审计日志
Diarum 会记录每一次 API 调用:谁、什么时间、从哪个 IP 和客户端、通过网页 / API / MCP 哪个入口、做了什么、结果如何、耗时多久。日记正文从不写入审计日志。 管理员可以在系统后台按时间范围检索、筛选并查看统计分析;日志每天一个 JSON Lines 文件,本地保留 3 天,可以归档到 S3 并随时一键拉回分析。

访客统计
管理员开启访客统计后,每篇日记的每一次读取都会被记录——无论来自网页、API 还是 MCP,包括被拒绝和未登录的尝试。每个用户都能看到自己的访客统计:访问次数、访客、设备、被拒绝的尝试。如果所有成功的访问都来自你本人,页面会显示一个让人安心的绿色提示。

访问记录有去重和限流保护,存放在独立的 SQLite 文件中,默认保留 3 年,可以归档到 S3 保存 10 年。
多用户与系统后台
一个 Diarum 实例可以给全家人一起用,每个人的数据完全隔离。第一个注册的账户自动成为管理员,可以在 /admin 系统后台查看系统概览(用户、日记、图片、数据库大小、最近 24 小时的请求量与错误率……)、管理用户角色。同一个二进制还提供了 diarum users list / diarum users set-role 命令,方便在容器里管理。

五分钟部署
docker run -d \
--name diarum \
-p 8090:8090 \
-v /path/to/your/data:/app/data \
songtianlun/diarum:latest
打开 http://服务器IP:8090,注册第一个账户,就可以开始写了。镜像同时支持 amd64 和 arm64,NAS、树莓派都能跑。更多部署方式(Docker Compose、反向代理、从源码构建)请看 部署文档。
最后
Diarum 是我每天都在用的工具,也是我花了大量心思打磨的作品。项目完全开源,单元测试覆盖率在 Codecov 上公开追踪。
- 源码:github.com/songtianlun/diarum
- 演示:demo.diarum.app
- 版本更新:版本发布
- 功能详解:全部功能
如果你在使用中遇到任何问题,欢迎在 GitHub 提 Issue,或者微信搜索 frytea26 添加开发者好友(备注 diarum)加入交流群。也欢迎给项目点一个 Star ⭐️。
愿你每天都能留下一点属于自己的文字。