使用 Docker 快速部署 Memos 个人笔记系统

Memos 简介

Memos 是一款开源的轻量级笔记服务,它允许你像发微博或推特一样,轻松记录每一个灵感和想法。由于其开源、支持 Docker 部署的特性,我们可以用它来搭建一个完全由自己掌控的私有化笔记系统。

Memos 的核心功能包括:

  • Markdown 语法支持
  • 标签 (Tag) 管理
  • 任务列表 (Task) 支持
  • 公开/私密 笔记权限设置
  • 多用户 协同使用

在开始部署之前,你可以访问官方的 Memos Live Demo 来快速体验一下。

本教程将指导你如何使用 Docker Compose 快速部署一个安全、私有的 Memos 实例,让你在快速拥有属于自己的笔记管理系统。

一、环境准备

在开始前,需要我们有一个自己的 VPS 或是支持 Docker 容器的 NAS 系统。

1. 安装 Docker 和 Docker Compose

如果你的服务器尚未安装 Docker 和 Docker Compose ,可以参考以下教程:

2. 创建项目目录

为 Memos 创建一个专用的目录,用于存放配置文件和数据。

1
mkdir -p /opt/memos && cd /opt/memos

二、使用 Docker Compose 部署 Memos

创建 docker-compose.yml 文件

在项目目录 (/opt/memos) 中,创建一个名为 docker-compose.yml 的文件。

1
vim docker-compose.yml

将以下内容粘贴到文件中:

1
2
3
4
5
6
7
8
9
10
11
12
services:
memos:
image: neosmemo/memos:latest
container_name: memos
ports:
- 5230:5230
volumes:
- ./data:/var/opt/memos
restart: always
environment:
- MEMOS_MODE=prod
- MEMOS_PORT=5230

配置解析:

  • ports: 将 Memos 的 Web 界面映射到主机的 5230 端口
  • volumes: 将 Memos 的数据存储在 docker-compose.yml 相同目录下的 data 文件夹中,确保容器重建后数据不丢失

未来如果需要备份或是迁移,直接打包复制 /opt/data 文件夹即可。

启动 Memos 服务

docker-compose.yml 文件所在目录中,执行以下命令来拉取镜像并启动服务:

1
docker compose up -d

然后打开浏览器,访问 http://<你的服务器IP>:5230 即可访问 Memos 的 Web 界面,第一次打开会让我们注册管理员账户(网页默认显示英文,可以在底部切换语言)。

memos-signup

三、安全设置

对于一个私有笔记系统,安全同样重要,如果我们只是个人使用,可以关闭注册。

1. 禁用用户注册

登录到 Memos 后,进入管理员设置:

  • 点击左侧边栏的设置按钮
  • 选择 系统
  • 打开 Disallow user registration 的选项

2. (强烈推荐)使用反向代理

直接暴露 Web 端口到公网是不安全的。推荐使用 Nginx 或其他反向代理工具来提供 Web 服务,并且使用 HTTPS 访问。

1 修改端口映射: 将 Memos 的 Web 端口限制为仅限本机访问。
修改 docker-compose.yml 文件中的 ports 部分:

1
2
ports:
- "127.0.0.1:5230:5230" # 仅允许本地访问

2 重启服务:

1
2
docker compose down
docker compose up -d

3 配置反向代理: 在你的反向代理工具中,设置一个代理规则,将 memos.yourdomain.com 的流量转发到 http://127.0.0.1:5230

Nginx 示例(仅反代部分)

以下示例将域名 memos.example.com 的 HTTP 流量反代到本机的 127.0.0.1:5230

1
2
3
4
5
6
7
8
9
10
11
12
location / {
proxy_pass http://127.0.0.1:5230/;

rewrite ^/(.*)$ /$1 break;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade-Insecure-Requests 1;
proxy_set_header X-Forwarded-Proto https;
}

测试并重载 Nginx 配置:

1
2
nginx -t
nginx -s reload

结论

恭喜!通过本教程,你已经成功地为自己搭建了一个功能强大且完全私有的个人笔记系统。Memos 以其轻量级的设计和对 Markdown 的良好支持,成为了记录想法、管理任务和构建个人知识库的绝佳工具。

现在,你可以开始自由地记录你的每一个灵感,而无需担心数据隐私问题。由于我们使用了 Docker Compose,未来的维护和升级也将变得异常简单。

希望这个全新的笔记系统能为你的学习和工作带来便利。