老样子,先上项目链接:https://github.com/usememos/memos
什么是 Memos?
简单来说,Memos 是一个开源的、自托管的笔记服务。它的核心理念就四个字:你的数据,你做主。
项目官网是:https://www.usememos.com
在线体验地址:https://demo.usememos.com/
官方文档地址:https://www.usememos.com/docs
用技术术语说,它是一个基于 Go 后端和 React 前端构建的知识库系统,支持 Markdown、REST API、gRPC API,还能用 SQLite、MySQL 或 PostgreSQL 数据库。
用人话来说,就是你可以把它装在自己的服务器上(或者家里闲置的旧电脑、NAS 什么的),所有的数据都存在你自己这里,不用担心隐私泄露,也不用担心服务倒闭数据丢失。
为什么选 Memos 而不是云服务?
咱们来对比一下,你就明白为什么我这么推荐它了:
数据隐私方面
云服务:数据在别人的服务器上,他们想怎么分析就怎么分析
Memos:自托管,零遥测,你的基础设施你做主
长期成本方面
云服务:周期性订阅,一年下来好几百
Memos:永久免费,MIT 许可证,一次性部署终身使用
性能体验方面
云服务:网络延迟,速度还得看天意
Memos:本地部署,响应速度快得飞起
数据控制方面
云服务:导出困难,专有格式,想走都难
Memos:纯文本 Markdown,想导出就导出,想迁移就迁移
API 访问方面
云服务:要么限制功能,要么得付费
Memos:完整的 REST + gRPC API,随便折腾
定制化方面
云服务:人家给你什么你就用什么
Memos:开源代码在手,想怎么改就怎么改
Memos 的核心功能
🔒 隐私优先架构
完全自托管,零遥测收集
完整的数据所有权和导出能力
没有追踪,没有广告,没有供应商锁定
📝 Markdown 原生支持
完整的 Markdown 语法支持
纯文本存储,数据随身带
⚡ 极速响应
Go 后端 + React 前端
任何规模下都优化过的性能
🐳 简单部署
一行 Docker 命令搞定
支持 SQLite、MySQL 和 PostgreSQL
🔗 开发者友好
完整的 REST 和 gRPC API
轻松集成到现有工作流
🎨 精美界面
简洁的极简设计
深色模式支持
移动端响应式布局
多语言支持(30+ 语言)
实用部署教程(保姆级)
好了,废话不多说,直接上干货。我按照从简单到复杂的顺序,给大家介绍几种部署方式。
方法一:Docker 一键部署(最简单)
这是最推荐的方法,适合大多数用户,特别是你只是想快速上手试试。
前提条件
你的电脑上已经安装了 Docker
部署步骤
第一步:打开终端(Linux/Mac)或者命令提示符(Windows)
第二步:输入以下命令
docker run -d \ --name memos \ -p 5230:5230 \ -v ~/.memos:/var/opt/memos \ neosmemo/memos:stable这个命令做了几件事:
-d 表示后台运行
--name memos 给容器起个名字
-p 5230:5230 把容器的 5230 端口映射到主机的 5230 端口
-v ~/.memos:/var/opt/memos 把容器内的 /var/opt/memos 目录挂载到主机的 ~/.memos 目录,这样数据就能持久化存储
neosmemo/memos:stable 使用最新的稳定版镜像
第三步:等待镜像下载和容器启动(第一次可能需要几分钟)
第四步:打开浏览器访问:http://localhost:5230
第五步:首次访问会让你设置管理员账号,按照提示填写就行
第六步:完事!你可以开始写笔记了
就这么简单,五个命令就搞定,是不是比某笔记软件下载安装注册还要快?
方法二:Docker Compose 部署(推荐给生产环境)
如果你打算长期使用,或者想要更方便的管理,建议用 Docker Compose。
前提条件
安装了 Docker 和 Docker Compose
部署步骤
第一步:在你喜欢的目录下创建一个 docker-compose.yml 文件
第二步:把下面的内容复制进去
version: '3.8'services: memos: image: neosmemo/memos:latest container_name: memos volumes: - ./memos-data:/var/opt/memos ports: - 5230:5230 restart: unless-stopped这个配置比刚才的稍微高级一点:
使用了 latest 版本而不是 stable,如果你追求稳定性可以改回去
使用当前目录下的 memos-data 文件夹来存储数据,比 ~/.memos 更清晰
添加了 restart: unless-stopped,容器意外停止会自动重启
第三步:在 docker-compose.yml 文件所在目录执行
docker-compose up -d第四步:等待容器启动,然后访问 http://localhost:5230
第五步:设置管理员账号,开始使用
常用管理命令
停止服务
docker-compose down启动服务
docker-compose up -d查看日志
docker-compose logs -f memos重启服务
docker-compose restart方法三:使用外部数据库(高级玩法)
如果你想用 MySQL 或 PostgreSQL 而不是 SQLite,也可以。这里以 MySQL 为例。
部署步骤
第一步:首先启动一个 MySQL 容器
docker run -d \ --name mysql-memos \ -e MYSQL_ROOT_PASSWORD=yourpassword \ -e MYSQL_DATABASE=memos \ -v mysql-data:/var/lib/mysql \ mysql:8第二步:修改 docker-compose.yml
version: '3.8'services: memos: image: neosmemo/memos:latest container_name: memos volumes: - ./memos-data:/var/opt/memos ports: - 5230:5230 environment: - MEMOS_DRIVER=mysql - MEMOS_DSN=root:yourpassword@tcp(mysql-memos:3306)/memos depends_on: - mysql restart: unless-stopped mysql: image: mysql:8 container_name: mysql-memos environment: - MYSQL_ROOT_PASSWORD=yourpassword - MYSQL_DATABASE=memos volumes: - mysql-data:/var/lib/mysql restart: unless-stoppedvolumes: mysql-data:第三步:启动服务
docker-compose up -d方法四:二进制文件部署(不用 Docker)
如果你不想用 Docker,或者你的服务器性能有限,也可以直接用编译好的二进制文件。
部署步骤
第一步:从项目的 Releases 页面下载对应系统的二进制文件
https://github.com/usememos/memos/releases
第二步:解压文件
第三步:给文件执行权限
chmod +x memos第四步:运行
./memos第五步:访问 http://localhost:5230
默认情况下,数据会存储在 ~/.memos 目录下。
方法五:从源代码编译(开发者专用)
如果你是个技术控,想自己改代码或者想用最新功能,可以从源码编译。
前提条件
安装了 Go 1.20 或更高版本
安装了 Node.js 18 或更高版本
编译步骤
第一步:克隆仓库
git clone https://github.com/usememos/memos.gitcd memos第二步:编译前端
cd webpnpm installpnpm buildcd ..第三步:编译后端
go build -o bin/memos ./cmd/memos第四步:运行
./bin/memos实用功能使用技巧
Markdown 笔记写作
Memos 完全支持 Markdown,你可以尽情发挥:
# 一级标题## 二级标题### 三级标题**粗体文本***斜体文本*~~删除线~~- 无序列表项1- 无序列表项21. 有序列表项12. 有序列表项2[链接文字](https://example.com)`行内代码`代码块
> 引用文本
---
水平分隔线
标签系统
Memos 支持用 # 标签来组织你的笔记:
这是一个关于 #编程 的笔记,同时也属于 #学习 记录。点击标签就能查看所有带这个标签的笔记,方便整理和检索。
笔记可见性设置
Memos 支持设置笔记的可见性:
公开:所有人可见
受保护:登录用户可见
私有:只有自己可见
这样你可以把一些敏感的内容设为私有,而把一些知识分享设为公开。
API 集成
Memos 提供了完整的 REST API,你可以用它来做各种自动化:
# 创建笔记curl -X POST http://localhost:5230/api/v1/memos \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "content": "# 标题\n\n这是笔记内容 #标签", "visibility": "PRIVATE" }'你可以用这个 API 做很多事情,比如:
用脚本自动备份笔记
用浏览器书签快速添加笔记
与其他应用集成
数据导出
如果你想备份数据或者迁移到其他平台,可以导出所有笔记:
第一步:登录后进入设置
第二步:找到数据导出选项
第三步:选择导出格式(通常是 Markdown)
第四步:下载导出文件
导出的文件是纯文本的 Markdown,你可以在任何支持 Markdown 的编辑器中打开。
高级玩法与技巧
自定义域名和 HTTPS
如果你想把 Memos 部署到公网上,并使用自己的域名,需要配置反向代理。这里以 Nginx 为例。
第一步:安装 Nginx
第二步:配置 Nginx
server { listen 80; server_name your-domain.com; location / { proxy_pass http://localhost:5230; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }}第三步:使用 Certbot 获取免费 SSL 证书
sudo certbot --nginx -d your-domain.com定时备份
你可以用 cron 定时备份 Memos 数据:
# 每天凌晨 2 点备份0 2 * * * tar -czf /path/to/backup/memos-$(date +\%Y\%m\%d).tar.gz ~/.memos与其他工具集成
Memos 可以与很多工具集成,比如:
Telegram Bot
用 Telegram 快速添加笔记
浏览器书签
一键把网页内容保存到 Memos
Obsidian
定期导出 Memos 数据到 Obsidian
GitHub Actions
自动化工作流
实际应用场景
说了这么多,Memos 到底能用来干嘛?这里给你几个实际应用场景:
场景一:个人知识管理
适合人群:开发者、研究人员、学生、知识工作者
使用方式:
每天学习新知识点时,及时记录到 Memos
用标签分类,比如 #编程、#算法、#设计模式
定期整理,形成知识体系
导出为 Markdown 文档,备份到 GitHub 或其他平台
优势:数据在自己手里,不用担心服务倒闭,长期积累的知识资产不会丢失。
场景二:团队知识库
适合人群:小团队、创业公司、开源项目组
使用方式:
部署到团队服务器,所有成员共享访问
创建公开笔记,分享项目文档、API 说明、最佳实践
用标签区分不同项目或部门
配置 Webhook,新笔记自动通知团队
优势:成本低(一个服务器就够了),数据安全,支持多用户协作。
场景三:博客内容创作
适合人群:博主、自媒体人、内容创作者
使用方式:
在 Memos 中起草文章,用 Markdown 格式
用标签管理不同主题的文章
导出 Markdown 文件,发布到 Hugo、Hexo 等静态博客平台
配合 API 实现自动化发布流程
优势:写作体验好,数据可迁移,不会被困在一个平台。
场景四:技术文档库
适合人群:技术团队、开源项目维护者
使用方式:
用 Memos 编写技术文档
支持代码高亮、数学公式等
定期导出,生成静态文档站点
团队成员可以协作编辑
优势:编辑器轻量,支持 Markdown,部署简单。
场景五:个人日记和反思
适合人群:所有想记录生活的人
使用方式:
每天写一条记录今天的想法
用日期作为标题,方便查找
设置为私有,保护隐私
定期回顾,反思成长
优势:数据完全私有,不用担心隐私泄露,长期存储。
总结
Memos 不是一个功能最丰富的笔记软件,但它可能是最适合技术人员的笔记软件。它的优势在于:
开源免费,永久使用
自托管,数据完全掌控
简洁轻量,专注笔记本身
开发者友好,API 完善
部署简单,几分钟搞定
如果你也在寻找一个靠谱的、不会被收割的笔记工具,不妨试试 Memos。说不定就像我一样,从此告别笔记焦虑。
最后的最后,如果你对技术细节感兴趣,可以看看这些文档:
系统架构:https://www.usememos.com/docs
Docker 部署指南:https://www.usememos.com/docs/installation
API 文档:https://www.usememos.com/docs/api
好啦,今天的分享就到这里。希望这篇文章对你有帮助!