# 从一条Docker命令开始：搭建私有笔记，把数据主动权拿回来

**URL:** <https://forum.rainyun.com/t/topic/13323>\
**Category:** 云服务器 RCS\
**Created:** [2026 年7 月 26 日 01:57 UTC](https://forum.rainyun.com/t/topic/13323 "2026-07-26T01:57:54Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

作者： ![gzy](https://forum.rainyun.com/user_avatar/forum.rainyun.com/gzy/32/12796_2.png) [@gzy](https://forum.rainyun.com/u/gzy)\
发布日期： [2026 年7 月 26 日 01:57 UTC](https://forum.rainyun.com/t/topic/13323/1 "2026-07-26T01:57:54Z")

</div>

​本文来自我的个人博客：[从一条Docker命令开始：搭建私有笔记，把数据主动权拿回来 - 叹惋博客](https://twbk.cn/265.html "从一条Docker命令开始：搭建私有笔记，把数据主动权拿回来 - 叹惋博客")

​

不知道你有没有这样的经历：脑子里突然闪过一个不错的想法，打开手机备忘录记下来（嗯，我有段时间就很喜欢去手机备忘录），结果换到电脑上就找不到了（我只会用文件传输助手复制粘贴呵呵）；或者写了半天的笔记存到某云笔记里，心里总隐约担心哪天服务关了、数据丢了。

今天这篇文章，带你用 Docker 在自己的服务器上部署一个叫 **Memos** 的开源笔记工具—— **数据完全掌握在自己手里，没有广告，没有追踪，永久免费** 。

Memos 在 GitHub 上已经获得了60k+ Star，Docker 镜像轻量到只有 20MB 左右。它到底好在哪？后面会慢慢说。

### **一、Memos 是什么？能用来干什么？**

简单说，Memos 是一个 **开源的、可以自己部署的碎片化知识管理工具** 。它主打“打开就写、数据在自己手里”。

**你可以用它来：**

1.记录每天的待办事项和工作计划

2.随手写下突然冒出来的灵感和想法

3.写读书笔记、观影感受

4.替代微信的“文件传输助手”或手机自带备忘录

5.打造一个属于自己的轻量化“卡片笔记”系统

**它的几个核心特点：**

1. **极轻量** ——单个 Go 二进制文件，Docker 镜像大约只有 **20MB** 。运行时的内存占用大约 **50 到 80MB** 。哪怕是你手里吃灰的树莓派都能跑得动。

2. **数据自主** ——所有笔记都存在你服务器上的数据库里（默认 SQLite），零遥测、无追踪。

3. **颜值高** ——UI 设计简约大气，交互体验流畅。

4. **支持中文** ，也支持多用户。

5. **部署极其简单** ——一条 Docker 命令就能搞定。

> **顺便说一句，Memos 默认使用 SQLite 数据库——就是一个单文件，所有的用户、笔记、附件信息都存里面。以后想迁移数据，直接复制这个文件就行，不需要折腾导入导出。**

### **二、准备工作**

开始之前，你需要有一台 **Linux 服务器** ，我用的是[雨云服务器](https://www.rainyun.com/xls_)（本文以 Ubuntu 24.04 为例）。

硬件方面，Memos 的要求非常低：1核1G即可

**端口方面** ，Memos 默认使用 **5230 端口** 。你需要确保服务器防火墙放行这个端口，或者后续用 Nginx 反代到其他端口也行。

> **一个小提醒：如果你的服务器在国内，从 Docker Hub 拉取镜像可能会比较慢。后面我会提到怎么解决这个问题。**

### **三、安装 Docker**

如果你的服务器上还没有安装 Docker，需要先装一下。Ubuntu 系统可以用官方一键安装脚本：

（有时候安装的比较慢，不要急哈哈，耐心等一等）

```auto
curl -fsSL https://get.docker.com | sh

```

安装完成后，把当前用户加入 docker 组，避免每次都要输 sudo：

```auto
sudo usermod -aG docker $USER

```

**然后退出当前终端重新登录** ，或者执行下面的命令让权限立即生效：

```auto
newgrp docker

```

验证一下 Docker 是否安装成功：

```auto
docker --version
docker compose version

```

能看到版本号就说明装好了。

![](https://forum.rainyun.com/uploads/default/original/2X/6/6b7997d4648117cb71f159024a720f3799123cc0.png)

### **四、部署 Memos**

#### **方式一：直接用 docker run 命令（最简单，推荐新手）**

这是最快的方式，一条命令搞定。

首先创建一个目录用来存放 Memos 的数据（ **这一步非常重要** ，如果不做数据挂载，容器删了笔记就没了）：

```auto
mkdir -p ~/.memos

```

然后执行启动命令：

```auto
docker run -d \
  --name memos \
  --restart unless-stopped \
  -p 5230:5230 \
  -v ~/.memos:/var/opt/memos \
  neosmemo/memos:stable

```

**这条命令的几个参数解释一下** ：

| 参数 | 含义 |
| --- | --- |
| `-d` | 后台运行容器 |
| `--name memos` | 给容器起个名字叫 memos，方便管理 |
| `--restart unless-stopped` | 服务器重启后自动启动 Memos |
| `-p 5230:5230` | 把容器内的 5230 端口映射到服务器的 5230 端口 |
| `-v ~/.memos:/var/opt/memos` | 把数据挂载到本地目录，数据持久化 |

**如果你在国内拉取镜像很慢** ，可以用镜像加速地址替换 `neosmemo/memos:stable`：

```auto
docker run -d \
  --name memos \
  --restart unless-stopped \
  -p 5230:5230 \
  -v ~/.memos:/var/opt/memos \
  docker.xuanyuan.me/neosmemo/memos:stable

```

命令执行后，查看一下容器是否正常运行：

```auto
docker ps

```

应该能看到名为 `memos` 的容器状态是 `Up`。

![](https://forum.rainyun.com/uploads/default/optimized/2X/8/8fdbea1deda6175c9c4b3d55e2acc3d26ca6c758_2_690x44.png)

也可以看启动日志确认：

```auto
docker logs memos

```

如果看到类似这样的输出，就说明启动成功了。

 ![](https://forum.rainyun.com/uploads/default/original/2X/a/abe35a1b8f021e44c2eaef2bc02ba692c7c0a54b.png)

#### **方式二：用 docker-compose（适合喜欢整洁配置的朋友）**

如果你更习惯用配置文件来管理服务，可以写一个 `docker-compose.yml`。

创建项目目录和配置文件：

```auto
mkdir -p ~/memos
cd ~/memos

```

新建 `docker-compose.yml` 文件，写入以下内容：

```auto
version: "3.0"
services:
  memos:
    image: neosmemo/memos:stable
    container_name: memos
    restart: unless-stopped
    volumes:
      - ~/.memos:/var/opt/memos
    ports:
      - 5230:5230

```

然后启动：

```auto
docker compose up -d

```

效果和上面用 `docker run` 是一样的。以后要停止或重启，只需要在 `~/memos` 目录下执行：

```auto
docker compose down # 停止
docker compose up -d # 重新启动

```

### **五、初始化 Memos**

部署完成后，打开浏览器，访问：

```auto
http://你的服务器IP:5230

```

第一次打开会看到注册页面。 **第一次注册的账号会自动成为系统管理员** 。

填好用户名、密码，点击注册。

> **注意：管理员账号请一定记好密码，目前 Memos 没有提供自助重置密码的功能。**
> 
> ![](https://forum.rainyun.com/uploads/default/original/2X/3/343d014928a9f0c98b0b3bd4c0080e4eb6d84323.png)

注册完成后，界面默认是英文的（我没想通为啥注册界面是中文，注册完进去又变回英文了）。切换成中文：

 ![](https://forum.rainyun.com/uploads/default/original/2X/4/43556b4bfcecd0bd820dd6ac61de9af38b667558.png)

### **六、开始使用**

#### **写第一条笔记**

在页面右侧的输入框里直接打字就行。Memos 支持 **Markdown 语法** ，比如：

```auto
# 我的第一条笔记

今天成功部署了 Memos！以后所有零碎的想法都可以记在这里了。

- 支持 **加粗** 和 *斜体*
- 支持 `代码`
- 支持 #标签 自动识别

```

输入完成后，点击保存或按快捷键就能发布。

 ![](https://forum.rainyun.com/uploads/default/original/2X/2/2409e0234d4061d9fd3fc3298ea983fb68fa3723.png)

#### **常用功能**

**标签** ：在笔记内容中以 `#` 开头输入，比如 `#想法`、`#读书笔记`，系统会自动识别成标签，以后可以按标签筛选。

**日历视图** ：左侧有日历，可以按日期查看当天的所有备忘。

**公开/私有** ：每条笔记都可以设置可见范围——公开、仅自己、或指定成员。

#### **关闭用户注册（个人使用建议）**

如果你只是想自己用，不想让别人注册账号，可以在设置里关掉注册功能：

这样其他人就打不开注册页面了。

 ![](https://forum.rainyun.com/uploads/default/original/2X/9/9c29d3161847f203ec4b8e20dc69323ac408f64d.png)

### **七、进阶配置：Nginx 反向代理 + HTTPS 证书（可选）**

通过 IP+端口访问始终不太方便，而且 HTTP 明文传输在公网环境下存在安全隐患。配一个域名和 SSL 证书体验会好很多。

#### **7.1 安装 Nginx**

```auto
sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx

```

#### **7.2 编写站点配置**

假设你的域名是 `memos.example.com`，在 `/etc/nginx/sites-available/memos` 创建配置文件：

```auto
sudo nano /etc/nginx/sites-available/memos

```

把下面这段内容贴进去。 **记得把`memos.example.com`换成你自己的域名**

```auto
server {
    listen 80;
    server_name memos.example.com;

    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-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        
        
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

```

粘贴完后后按`Ctrl+X`，按`Y`，再按`Enter`退出。

启用配置：

```auto
sudo ln -s /etc/nginx/sites-available/memos /etc/nginx/sites-enabled/
sudo nginx -t   
sudo systemctl reload nginx

```

#### **7.3 申请 SSL 证书（Certbot）**

```auto
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d memos.example.com

```

按照提示输入邮箱并同意协议，Certbot 会自动申请证书并修改 Nginx 配置。证书有效期 90 天，Certbot 会通过 systemd timer 自动续期。

### **八、数据备份与恢复**

#### **8.1 备份策略**

Memos 的所有数据都在 `~/.memos` 目录下。

```auto
sudo docker stop memos

mkdir -p ~/backups

sudo tar -czf ~/backups/memos_$(date +%Y%m%d_%H%M%S).tar.gz -C ~ .memos

sudo docker start memos

# 验证备份文件存在
ls -lh ~/backups/

```

![](https://forum.rainyun.com/uploads/default/original/2X/d/d4df43a9c7600f6217d938266d19aa2c661f4008.png)

#### **8.2 恢复数据**

```auto
docker stop memos

cp ~/backups/memos_20260101.db ~/.memos/memos_prod.db

docker start memos

```

> **注意：恢复时的 Memos 版本最好与备份时的版本一致，否则可能存在数据库 schema 迁移问题。建议升级前先做备份，升级后如果出问题还能回滚。**

### **九、使用单点登录**

**第一步：在 GitHub 上创建 OAuth 应用**

1. **进入设置页面** ：登录 GitHub 后，点击右上角的头像，在菜单中进入 **Settings** (设置)。

2. **找到开发者设置** ：在 Settings 页面的左侧边栏最下方，找到并点击 **Developer settings** 。

3. **创建新 OAuth App** ：在 Developer settings 页面中，选择左侧的 **OAuth Apps** ，然后点击页面右侧的 **New OAuth App** 按钮。

4. **填写应用信息** ：在注册新应用的页面，你需要填写以下信息：

\<1\> **Application name** ：填写一个你容易识别的名字

\<2\> **Homepage URL** ：填写你的 Memos 站点首页地址，如 `https://memos.your-domain.com`。

\<3\> **Authorization callback URL** ： **这是最关键的一步，必须精确填写。**

格式为 `你的Memos站点地址/auth/callback`。

例如，如果你的 Memos 地址是 `https://memos.example.com`

那么这里就应该 写 `https://memos.example.com/auth/callback`。

5. **注册应用** ：填写完成后，点击 **Register application** 按钮。

6. **获取凭证** ：应用创建成功后，页面会跳转到该应用的管理界面。你会看到 **Client ID** 和 **Client Secret** 两个关键信息。

- **`Client ID`** 是公开的，可以直接复制使用。
- **`Client Secret`** 是机密信息， **请务必妥善保管，不要泄露给任何人** 。你需要点击 **Generate a new client secret** 按钮来生成它，并立即复制下来（离开页面后将无法再次查看）。

1. 

**第二步：在 Memos 中配置 SSO 登录**

1. **进入系统设置** ：使用你的 **管理员账号** 登录 Memos，点击左下角 进入设置页面。

2. **找到 SSO 设置** ：在设置页面中，找到并点击 **单点登录** 。

3. **添加身份提供商** ：点击 **创建** 或 **添加** 按钮，选择提供商模板为 **GitHub** 。

4. **填写配置信息** ：根据你从 GitHub 获取的信息，填写以下字段：

- **`clientId`** ：粘贴你在上一步获取的 **Client ID** 。
- **`clientSecret`** ：粘贴你在上一步获取的 **Client Secret** 。
- 确保 **Scopes** 字段至少包含 `user:email`，这是为了获取你的 GitHub 邮箱信息。

5. **保存配置** ：填写完毕后，点击保存。

1. 

 ![](https://forum.rainyun.com/uploads/default/original/2X/1/1992351995b82543ac7426bfd1b63310995823dc.png)

**验证与测试**

1. **退出登录** ：保存配置后，先退出你的管理员账号。

2. **检查登录页面** ：回到 Memos 的登录页面，你应该能看到一个新增的 **“使用 GitHub 登录”** 或类似的按钮。

3. **测试登录** ：点击该按钮，它应该会跳转到 GitHub 的授权页面。授权后，如果一切顺利，你就会被重定向回 Memos 并成功登录。

1. 

### **十、容器运维常见操作**

```auto
# 查看容器状态
docker ps -a --filter "name=memos"

# 查看实时日志（按 Ctrl+C 退出）
docker logs -f memos

# 进入容器内部（调试用）
docker exec -it memos /bin/sh

# 更新镜像版本
docker pull neosmemo/memos:stable
docker stop memos
docker rm memos
docker run -d --name memos --restart unless-stopped -p 5230:5230 -v ~/.memos:/var/opt/memos neosmemo/memos:stable

# 清理无用镜像
docker image prune -f

```

升级时有个细节要注意：如果跨大版本升级，Memos 可能会自动执行数据库迁移，这个过程取决于数据量大小，一般几秒到几十秒。期间容器可能短暂不可用，属于正常现象，不要强制重启。 **升级前强烈建议先备份数据** 。

**关于端口改动的说明** ：如果你的服务器 5230 端口已被占用，修改宿主机映射端口即可，例如改为 `-p 5231:5230`。但要注意，改了端口之后，所有外部访问都需要使用新端口，Nginx 代理配置中的 `proxy_pass http://127.0.0.1:5230` 也要同步修改。

### **十一、Memos 的丰富生态**

Memos 虽然本身是个轻量级工具，但社区生态相当活跃：

**Web Clipper** ：官方提供了 Chrome 和 Firefox 的浏览器剪藏插件，可以一键保存网页、选中的文本和图片到你的 Memos 实例

**Moe Memos** ：第三方 iOS 和 Android 客户端，支持 Memos 0.27.0 到 0.29.1 版本，体验接近原生 App

**微信小程序** ：社区有开发者做了微信小程序版本

**Telegram Bot** ：可以通过 Telegram 机器人发送消息到 Memos

**API 支持** ：Memos 提供了完整的 REST 和 gRPC API，方便二次开发和集成

### **十二、写在最后**

从拉取镜像到完成初始化，快的朋友可能五分钟就走完了。这也是我当初选择 Memos 的原因——它足够简单，却又足够好用。

给自己搭一个专属的笔记系统，听起来好像挺有技术门槛，其实几条命令就能搞定。现在动手试一下，说不定明天开始，你的碎片想法就有了一个安稳的「家」。

部署过程中遇到任何问题（镜像拉取超时、端口被占、数据库报错等等），欢迎在评论区留言，我看到就会回复。

---

<div class="post-metadata">

作者： ![mei](https://forum.rainyun.com/user_avatar/forum.rainyun.com/mei/32/8588_2.png) [@mei](https://forum.rainyun.com/u/mei)\
发布日期： [2026 年7 月 27 日 15:03 UTC](https://forum.rainyun.com/t/topic/13323/2 "2026-07-27T15:03:31Z")

</div>

wc,你怎么复活了

---

<div class="post-metadata">

作者： ![gzy](https://forum.rainyun.com/user_avatar/forum.rainyun.com/gzy/32/12796_2.png) [@gzy](https://forum.rainyun.com/u/gzy)\
发布日期： [2026 年7 月 28 日 04:15 UTC](https://forum.rainyun.com/t/topic/13323/3 "2026-07-28T04:15:28Z")

</div>

暑假闲得慌 😄
