《【华为云 ECS 实战】2核2G部署 Memos,搭建属于自己的私人笔记与记忆时间轴》

举报
yd_229180646 发表于 2026/10/29 11:37:52 2026/10/29
【摘要】 【华为云 ECS 实战】2核2G部署 Memos,搭建属于自己的私人笔记与记忆时间轴一、前言日常使用电脑和手机时,我们经常会产生各种零散的信息:突然想到的灵感、需要保存的命令、临时记录的任务,以及一些值得以后回顾的生活片段。这些内容通常分散在微信收藏、手机备忘录、聊天记录和不同的笔记软件中。时间一长,想找回某条记录反而变得困难。如果已经拥有一台云服务器,能不能搭建一个由自己管理的轻量笔记系统...

【华为云 ECS 实战】2核2G部署 Memos,搭建属于自己的私人笔记与记忆时间轴

一、前言

日常使用电脑和手机时,我们经常会产生各种零散的信息:突然想到的灵感、需要保存的命令、临时记录的任务,以及一些值得以后回顾的生活片段。

这些内容通常分散在微信收藏、手机备忘录、聊天记录和不同的笔记软件中。时间一长,想找回某条记录反而变得困难。

如果已经拥有一台云服务器,能不能搭建一个由自己管理的轻量笔记系统?

这次我们选择开源项目 Memos,利用华为云弹性云服务器 ECS 和 Docker Compose,搭建一个支持 Markdown、标签分类和时间轴浏览的个人笔记平台。

整个方案以轻量、数据可控、容易备份为目标,适合个人学习、自托管应用实践和小规模使用。

二、Memos 是什么?

Memos 是一款开源、自托管的笔记应用,强调快速记录与自主掌控数据。

和传统的复杂知识库不同,Memos 更接近于个人微博或时间轴:打开页面,输入内容,保存即可。

它主要具有以下特点:

  • 快速记录: 无需创建复杂的文件夹和页面,可以直接发布一条笔记。

  • Markdown 支持: 可以记录文字、代码片段和结构化内容。

  • 时间轴浏览: 按时间回顾过去的想法和记录。

  • 标签管理: 通过标签整理不同主题。

  • 自主存储: 数据保存在自己的服务器中。

  • 轻量部署: 支持 Docker 和 SQLite,无需为个人使用场景单独部署数据库服务器。

Memos 还提供 API 等扩展能力,后续可以进一步探索自动记录、外部应用集成等用途。

三、部署环境与方案

本教程以一台华为云 ECS 为例,参考环境如下:

项目 配置
云服务平台 华为云 ECS
CPU 2 核
内存 2 GB
操作系统 Ubuntu / Debian 等 Linux 发行版
容器环境 Docker + Docker Compose
应用 Memos
数据库 SQLite
应用端口 5230

以上为部署示例配置,不代表实际性能测试结果。服务器如果已运行多个容器,应先检查剩余内存和磁盘空间。

本次采用以下结构:

个人电脑浏览器
       |
       | SSH 加密隧道
       |
华为云 ECS
       |
       | 127.0.0.1:5230
       |
Docker 容器:Memos
       |
       | 持久化挂载
       |
本地数据目录
       |
       +-- SQLite 数据库
       +-- 图片与附件

这样既能保留数据持久化,也不需要将 Memos 的应用端口直接开放到公网。

需要特别说明:中国大陆节点提供互联网信息服务涉及 ICP 备案要求,包括通过 IP 地址对外提供网站服务的情况。本教程仅演示私人远程管理方式,不将 SSH 隧道视为公开网站的备案替代方案。

四、检查服务器环境

首先,通过 SSH 登录华为云 ECS。

检查 Docker 是否安装:

docker --version

检查 Docker Compose:

docker compose version

如果两个命令均正常显示版本号,说明容器环境已经具备。

继续查看服务器剩余资源:

free -h
df -h

检查 5230 端口是否已被使用:

ss -lntp | grep ':5230'

如果有输出,需要确认现有服务的用途,避免直接覆盖或占用其他应用的端口。

对于已经运行其他业务的服务器,建议先检查容器列表:

docker ps -a

确认不存在需要保留的同名 Memos 容器后,再继续部署。

五、创建 Memos 工作目录

为了便于后续备份、升级和迁移,我们将应用集中保存在独立目录中。

执行:

mkdir -p ~/apps/memos/data
cd ~/apps/memos

目录结构如下:

~/apps/memos/
├── compose.yaml
└── data/

其中:

  • compose.yaml 用于定义容器部署配置。

  • data/ 用于保存数据库及本地附件等持久化数据。

这样即使容器被删除,只要保留数据目录和部署配置,就可以在兼容版本下重新部署或恢复。

六、编写 Docker Compose 配置

在工作目录创建配置文件:

nano compose.yaml

写入以下内容:

services:
  memos:
    image: neosmemo/memos:stable
    container_name: memos
    restart: unless-stopped

    ports:
      - "127.0.0.1:5230:5230"

    environment:
      MEMOS_PORT: "5230"
      MEMOS_DRIVER: sqlite

    volumes:
      - ./data:/var/opt/memos

这里有几个关键配置值得解释。

1. 镜像版本

neosmemo/memos:stable 使用官方稳定版镜像标签。

需要注意,stable 并非固定版本。未来执行镜像更新时,可能会下载新版本。因此正式长期运行后,可以根据经过验证的版本固定具体镜像标签。

2. 自动重启

restart: unless-stopped 表示在容器异常退出或服务器重启后,Docker 通常会尝试重新启动该容器,除非容器被明确停止。

3. 仅绑定本机回环地址

ports:
  - "127.0.0.1:5230:5230"

这是本教程的重要安全配置。

Memos 的端口只绑定在 ECS 的本地回环地址上,不通过 Docker 端口映射直接暴露到服务器公网接口。

4. 数据持久化

volumes:
  - ./data:/var/opt/memos

Memos 的数据库和相关本地文件将保存到宿主机的 data 目录。

容器更新时无需重新创建笔记数据。

七、启动 Memos

保存配置后,在工作目录执行:

docker compose up -d

Docker 会根据配置拉取镜像并创建容器。

拉取时间取决于服务器网络环境和镜像仓库的连通情况。

查看运行状态:

docker compose ps

正常情况下,应该能看到 Memos 容器处于运行状态。

查看启动日志:

docker compose logs --tail=100 memos

如果没有明显错误,可以继续测试服务。

在 ECS 上执行:

curl -I http://127.0.0.1:5230

如果返回 HTTP 响应,说明本机已经能够连接 Memos 服务。具体状态码可能随应用版本和请求路径变化。

还可以通过以下命令观察资源使用:

docker stats memos --no-stream

它会显示容器的 CPU、内存、网络等指标。

这里应以实际输出为准,不建议仅根据其他环境的测试结果判断 2GB 内存是否足够。

八、通过 SSH 隧道访问 Memos

由于我们没有将 5230 端口直接开放到公网,因此不能直接使用 ECS 公网 IP 加端口访问。

这时可以使用 SSH 本地端口转发。

在自己的电脑终端中执行:

ssh -N -L 5230:127.0.0.1:5230 用户名@ECS公网IP

将命令中的用户名和公网 IP 替换为实际信息。如果 SSH 使用了自定义端口或密钥文件,还需要添加相应参数。

建立隧道后,在电脑浏览器打开:

http://127.0.0.1:5230

浏览器访问的是本地端口,连接通过 SSH 加密通道转发到云服务器上的 Memos。

需要保持 SSH 连接运行,浏览器才能继续通过隧道访问服务。

这种方式比较适合个人维护和学习环境。

如果后续计划向其他用户提供网站访问,则应另行设计 HTTPS、身份认证、备案及公网访问方案。

九、首次初始化与隐私设置

首次打开 Memos 后,按照页面提示创建管理员账号。

管理员账号拥有实例管理权限,应设置强密码,并避免在截图或文章中暴露账号凭据。

完成初始化后,建议优先检查以下设置:

1. 检查实例访问策略

在管理设置中确认访问模式符合预期。个人笔记系统建议使用私有访问策略。

2. 关闭不必要的用户注册

如果只计划个人使用,没有必要长期开放其他用户注册入口。

3. 检查笔记公开权限

笔记内容可能包含个人记录、命令、工作信息等,不应默认允许匿名访问。

4. 谨慎管理 API Token

如果未来使用 API 接入自动化程序,应该为不同应用分别管理凭据,并设置合理的有效期。

完成这些配置后,就可以尝试创建第一条笔记。

例如:

# 华为云 ECS 学习记录

今天部署了 Memos。

#Linux #Docker #云服务器

常用检查命令:

docker ps
docker stats
df -h

通过这种方式,可以逐步把零散的技术记录整理为可搜索、可回顾的个人时间轴。

十、备份数据,避免笔记丢失

自托管的优势是数据掌握在自己手里,但这也意味着必须自行承担备份责任。

不能因为容器能够正常运行,就认为数据永远安全。

对于 SQLite 数据库,简单可靠的备份方式之一是短暂停止应用,再备份数据目录。

首先进入工作目录:

cd ~/apps/memos
mkdir -p backups

停止容器:

docker compose stop memos

创建备份文件:

tar -czf \
  "backups/memos-$(date +%F-%H%M).tar.gz" \
  compose.yaml data

完成后恢复容器:

docker compose start memos

如果备份命令报错,也应及时检查原因并手动恢复服务,避免容器一直处于停止状态。

查看备份文件:

ls -lh backups/

这个备份包含 Compose 配置和持久化数据目录。

建议定期将备份复制到其他设备或独立存储位置。只在同一台 ECS 上保存备份,仍然无法抵御服务器磁盘故障或实例误删除。

还应定期进行恢复演练,确认备份文件确实可用。

十一、更新与日常维护

Memos 发布新版本后,可以通过 Docker Compose 更新应用。

更新前,建议先阅读版本变更说明,特别是数据库迁移和不兼容升级要求。

完成可靠备份后执行:

cd ~/apps/memos
docker compose pull memos
docker compose up -d

查看升级后的状态:

docker compose ps
docker compose logs --tail=100 memos

需要注意:镜像更新并不等于数据库可以任意降级。如果新版已经修改数据库结构,直接切换旧版镜像不一定能够恢复正常。

因此,涉及版本回退时,应同时考虑恢复升级前的数据库和对应部署配置。

日常维护可以使用:

命令 用途
docker compose ps 查看服务状态
docker compose logs -f memos 实时查看日志
docker compose restart memos 重启服务
docker stats memos --no-stream 查看资源使用
df -h 检查磁盘空间

十二、常见问题排查

1. 容器启动失败

首先检查日志:

docker compose logs --tail=200 memos

重点关注端口冲突、数据目录权限、镜像架构以及数据库初始化错误。

2. SSH 隧道建立后无法访问

可以依次确认:

  • Memos 容器是否处于运行状态。

  • ECS 本机是否能访问 127.0.0.1:5230。

  • SSH 隧道是否保持连接。

  • 本地电脑的 5230 端口是否已经被其他程序占用。

如果本地端口被占用,可以改用 15230:

ssh -N -L 15230:127.0.0.1:5230 用户名@ECS公网IP

此时浏览器访问:

http://127.0.0.1:15230

3. 重建容器后笔记消失

优先检查 Compose 配置中的数据挂载目录是否发生变化。

尤其要确认当前工作目录正确,避免在其他目录中创建了新的空数据卷。

4. 服务器内存不足

运行:

free -h
docker stats --no-stream

如果 ECS 上已经运行多个服务,应结合整体资源使用情况分析,不能直接认定问题一定由 Memos 引起。

5. 公网 IP 无法直接访问 5230

本教程默认只绑定 127.0.0.1,因此公网无法直接访问 5230 是预期行为,不需要为此把安全组开放到所有来源。

如果未来确实需要公开部署,应按照实际网络架构、相关备案要求和安全策略重新配置。

十三、总结

通过这次部署,我们利用华为云 ECS、Docker Compose 和 Memos,构建了一套轻量的私人笔记系统。

这个方案的核心价值,并不只是把一个 Web 应用运行起来,而是学习了几个值得长期使用的自托管实践:

  • 使用 Docker Compose 管理服务配置。

  • 使用持久化目录保护应用数据。

  • 通过 SSH 隧道访问不公开暴露的个人服务。

  • 对 SQLite 数据库与附件进行备份。

  • 在升级前评估数据兼容性与恢复方案。

对于个人开发者而言,一台 2核2G 的云服务器不一定要运行复杂的大型平台。合理利用资源、选择适合的小型开源项目,同样可以构建有实际价值的工具。

后续还可以探索 Memos 的 API、自动化记录和其他知识管理工具之间的集成,让个人记录从简单的笔记逐步发展为可持续积累的信息系统。

技术实践的最终目标,不是部署更多容器,而是让这些工具真正帮助我们管理自己的信息与数据。


参考资料:

  • Memos 官方部署文档

  • Memos 官方安全配置及备份恢复文档

  • 华为云 ECS 安全组配置文档

  • 华为云 ICP 备案相关说明

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。