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-stopped
cd /opt/memos && docker compose up -d

访问 http://服务器IP:5230,首次访问创建账号(第一个注册的账号自动成为管理员)。

数据持久化说明

Memos 的所有数据(笔记、附件、设置)都存储在挂载目录 /opt/memos/data(即容器内的 /var/opt/memos)。升级或重建容器时,只要保留该目录数据就不会丢失。

文件/目录内容备注
memos_prod.dbSQLite 数据库(所有笔记)最重要,必须备份
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 目录,传到新服务器的相同路径后启动容器,数据完全恢复。