Memos:一条 Docker 命令,构建你的私有知识库

你的笔记数据,真的属于你吗?
当你在某云笔记上写下第三千条日记,当你把项目文档托付给某企业服务平台,你有没有想过——这些数据真正的所有权在谁手里?
Memos 是一个开源的自托管笔记服务,GitHub 上已经获得 46,000+ star,Docker 镜像下载量超过 710 万次。这不是又一个"我也能做笔记"的轮子,而是从架构层面重新定义了笔记服务应该有的样子。

Memos 技术细节
技术架构:Go + React 的高性能组合
后端:Go 语言的性能优势
Memos 使用 Go 和 React 构建,提供闪电般的性能。Go 语言在后端的选择并非偶然:
- 内存占用:Docker 镜像小于 40MB,内存使用约 30MB
- 并发处理:Go 的 goroutine 机制让服务器可以轻松处理数千个并发请求
- 编译部署:单一二进制文件,无需运行时环境
Go 的 net/http 标准库提供了高效的 HTTP 服务能力,配合 gRPC 支持,Memos 可以同时服务 Web 界面和 API 调用。相比 Node.js 或 Python 框架,Go 编译后的二进制文件启动时间在毫秒级,内存占用仅为它们的 1/5 到 1/10。
前端:React 的组件化设计
React 前端采用函数式组件和 Hooks,配合 Markdown 编辑器实现流畅的写作体验。代码层面,React 的虚拟 DOM diff 算法确保了只有实际变化的部分才会重新渲染:
const MemoEditor = () => {
const [content, setContent] = useState('');
const handleSave = async () => {
await fetch('/api/v1/memos', {
method: 'POST',
body: JSON.stringify({
content })
});
};
return (
<div>
<textarea
value={
content}
onChange={
(e) => setContent(e.target.value)}
/>
<button onClick={
handleSave}>Save</button>
</div>
);
};
数据存储:灵活的数据库支持
Memos 支持三种数据库后端:
- SQLite: 默认选项,单文件数据库,适合个人使用
- MySQL: 适合团队协作,数据量大于 10GB
- PostgreSQL: 企业级特性,支持全文搜索和 JSON 查询
SQLite 的优势在于零配置。当你运行 docker run 命令时,Memos 会自动在挂载的目录创建 memos_prod.db 文件,所有数据包括用户、笔记、附件元信息都存储在这个文件里。迁移时只需复制这个文件,无需导入导出。
安装与使用
五分钟部署指南
Docker 部署(推荐)
docker run -d \
--name memos \
-p 5230:5230 \
-v ~/.memos/:/var/opt/memos \
neosmemo/memos:stable
这条命令做了三件事:
- 拉取
neosmemo/memos:stable镜像 - 映射 5230 端口到主机
- 挂载本地目录
~/.memos/用于数据持久化

运行后,打开浏览器访问 http://localhost:5230,首次访问会引导创建管理员账号。整个过程不超过一分钟。

基础文本笔记
在右侧输入框输入:
# 我的第一条 Memo
今天成功部署了 Memos,这是一个轻量级的自托管笔记服务。
## 为什么选择 Memos?
- 完全开源
- 数据自己掌控
- 部署只需一条命令
#新手入门 #部署成功
- 即时保存,无需等待
- Markdown 实时渲染
- 标签自动识别(以 # 开头)

Markdown 格式支持
创建一条包含多种格式的笔记:

支持:
- 代码高亮(支持 100+ 语言)
- 任务列表可交互打勾
- 表格自动格式化
- 链接自动识别
标签与过滤
创建多条带标签的笔记
笔记 1:
今天学习了 Go 语言的并发模型,goroutine 真的很强大。
#编程 #golang #学习笔记
笔记 2:
周末计划:
- 阅读《设计模式》第 5 章
- 健身房
- 整理书房
#个人 #周末计划
笔记 3:
周末计划:
- 阅读《设计模式》第 5 章
- 健身房
- 整理书房
#个人 #周末计划
- 点击左侧标签云中的 #编程
- 只显示包含该标签的笔记
- 点击多个标签测试组合过滤
- 使用搜索框搜索"项目"


项目支持:
- 标签自动聚合
- 点击标签即时过滤
- 搜索功能支持全文检索
Memo支持的功能还有很多,包括但不限于:
- 基础笔记创建和快捷键
- Markdown 全功能支持
- 标签、过滤、快捷方式
- 可见性控制、公开笔记、附件
- 数据掌控:导出、备份、迁移
- API 集成:命令行创建笔记,展示自动化能力
- 高级功能:搜索语法、Daily Review、移动端
Docker Compose(生产环境)
生产环境推荐使用 Docker Compose,配合 MySQL:
version: '3'
services:
memos:
image: neosmemo/memos:stable
container_name: memos
ports:
- "5230:5230"
environment:
MEMOS_DRIVER: mysql
MEMOS_DSN: "root:password@tcp(mysql:3306)/memos"
volumes:
- ./data:/var/opt/memos
depends_on:
- mysql
mysql:
image: mysql:8
container_name: memos-mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: memos
volumes:
- ./mysql:/var/lib/mysql
执行 docker-compose up -d 即可启动。MySQL 会自动创建数据库,Memos 启动时执行 schema 迁移。
结语
Memos 的优势在于:
- 部署简单:一条命令即可运行,无需配置 Node.js 环境
- 性能领先:Go 后端的内存占用仅为 Node.js 方案的 20%
- 社区活跃:更新频率高,问题响应快


Memos 团队正在开发的功能包括:
- 端到端加密
- 协作编辑(实时多人协作)
- 插件系统(用户可自定义扩展)
- 桌面端应用(Electron 封装)
项目在第一年达到 1000 stars,第二年增长到 20,000。这种增长速度表明开源社区对自托管笔记服务的需求正在快速增长。当越来越多的人意识到数据主权的重要性,Memos 这样的项目会成为主流选择。
相关链接:
- GitHub:
https://github.com/usememos/memos - 官网:
https://usememos.com - 文档:
https://usememos.com/docs - Discord 社区: https://discord.gg/tfPJa4UmAv
💬 你用过哪款 AI 编程工具?欢迎评论区分享你的体验!
⭐ 觉得有用?点个「在看」让更多开发者看到这篇对比!