Memos 是一款极简的开源碎片笔记工具,界面类似微博式的时间流,支持 Markdown、标签、图片,并提供 API 接口与第三方客户端。部署一套 Memos,就拥有了完全私有的随手记本,数据全在自己手上。
本文要点
- Docker 一键部署 Memos
- 数据持久化与目录规划
- Nginx 反代 + SSL 配置
- 基本使用与 API 简介
部署 Memos
Memos 使用 SQLite 存储数据,无需额外数据库。单容器部署,资源占用极低:
mkdir -p /opt/memos/data
docker run -d \
--name memos \
-p 5230:5230 \
-v /opt/memos/data:/var/opt/memos \
--restart unless-stopped \
neosmemo/memos:stable或使用 docker-compose.yml:
# /opt/memos/docker-compose.yml
services:
memos:
image: neosmemo/memos:stable
container_name: memos
ports:
- "5230:5230"
volumes:
- ./data:/var/opt/memos
restart: unless-stoppedcd /opt/memos && docker compose up -d访问 http://服务器IP:5230,首次访问创建账号(第一个注册的账号自动成为管理员)。
数据持久化说明
Memos 的所有数据(笔记、附件、设置)都存储在挂载目录 /opt/memos/data(即容器内的 /var/opt/memos)。升级或重建容器时,只要保留该目录数据就不会丢失。
| 文件/目录 | 内容 | 备注 |
|---|---|---|
| memos_prod.db | SQLite 数据库(所有笔记) | 最重要,必须备份 |
| assets/ | 上传的图片和附件 | 按需备份 |
升级 Memos
执行 docker compose pull && docker compose up -d 即可拉取新版镜像并重启,数据完全不受影响。
Nginx 反向代理 + SSL
申请证书:certbot --nginx -d memo.yourdomain.com
创建 /etc/nginx/conf.d/memos.conf:
server {
listen 443 ssl;
server_name memo.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/memo.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/memo.yourdomain.com/privkey.pem;
client_max_body_size 20m;
location / {
proxy_pass http://127.0.0.1:5230;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
}
}nginx -t && systemctl reload nginx访问控制设置
在 Memos 管理后台(Settings → System)可以控制注册方式:
- 公开注册:任何人可注册账号(默认)
- 仅邀请:需要管理员邀请链接
- 禁止注册:仅自己使用时推荐
API 与第三方客户端
Memos 提供 REST API,可通过 iOS/Android 第三方客户端(如 Moe Memos)访问,或用 API 将笔记推送到其他平台。API 文档位于
https://memo.yourdomain.com/api/v1。备份
# 只需备份 data 目录即可
tar czf /tmp/memos_backup_$(date +%F).tar.gz -C /opt/memos data小结
- 极简单容器,资源占用小,适合个人独用
- 数据全在 data/ 目录,备份简单
- 配合 SSL 反代,可在手机客户端安全访问
- 管理员可在设置中关闭开放注册
常见问题
Memos 支持多用户吗?
支持。管理员可以开放注册或通过邀请链接添加用户,每个用户的笔记相互独立,管理员可查看所有用户内容。
图片和附件存在哪里?
默认存储在挂载目录的 assets/ 子目录中,与数据库文件在同一个目录,备份时一起打包即可。
如何迁移到另一台服务器?
在旧服务器停止容器并打包 data 目录,传到新服务器的相同路径后启动容器,数据完全恢复。