把笔记搬回自己服务器——Memos 部署手记

把笔记搬回自己服务器——Memos 部署手记

_

把笔记搬回自己服务器——Memos 部署手记


一、Memos 是什么

Memos 是一个开源、自托管的轻量笔记服务。可以理解成私人版 Twitter——没有算法、没有广告、数据都在你自己的服务器上。支持 Markdown、标签、图片上传、RSS、OpenAPI、PWA。最新稳定版 v0.30.0(2026 年 7 月发布)。$TRAE_REF

你需要准备:

  • 一台 Linux 服务器(本文以 Ubuntu 22.04/24.04 为例)
  • 一个域名(可选但强烈建议,否则只能 IP:端口访问)
  • Docker 环境(方法一、二需要;方法三不需要)

二、三种部署方式速览

方式场景难度一句话
Docker快速上手一条命令跑起来
Docker Compose生产环境配置文件管理,升级方便
二进制不想装 Docker直接跑宿主机上

选一个往下看就行,不用全读。


三、方法一:Docker 一条命令

这是最快的方式。$TRAE_REF

Docker 部署终端

# 1. 创建数据目录
mkdir -p ~/.memos

# 2. 启动容器
docker run -d \
  --name memos \
  --restart unless-stopped \
  -p 5230:5230 \
  -v ~/.memos:/var/opt/memos \
  neosmemo/memos:stable

# 3. 浏览器访问 http://你的服务器IP:5230

参数简释:-d 后台运行,--restart unless-stopped 开机自启+异常重启,-p 5230:5230 端口映射,-v ~/.memos:/var/opt/memos 数据持久化到宿主机。

常用管理:

docker logs -f memos   # 看日志
docker stop memos      # 停止
docker start memos     # 启动
docker restart memos   # 重启

升级:

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

如果之前设置了 MEMOS_INSTANCE_URL 等环境变量,记得一并带上,否则升级后会丢失配置。


四、方法二:Docker Compose

比裸 docker run 更适合长期使用:配置可 Git 管理、升级方便、扩展容易。$TRAE_REF

mkdir -p ~/memos && cd ~/memos

创建 docker-compose.yml

services:
  memos:
    image: neosmemo/memos:stable
    container_name: memos
    restart: unless-stopped
    ports:
      - "5230:5230"
    volumes:
      - ./data:/var/opt/memos
    environment:
      MEMOS_PORT: 5230
      MEMOS_DRIVER: sqlite
      # 有域名时取消注释,启用公开模式(RSS、匿名访问)
      # MEMOS_INSTANCE_URL: https://memos.yourdomain.com

MEMOS_INSTANCE_URL 不设 = 私有模式(需登录才能访问)。设为公网域名后启用公开模式。$TRAE_REF

docker compose up -d   # 启动

升级三步:

docker compose pull
docker compose down
docker compose up -d

数据在 ./data 目录,不删它就没事。


五、方法三:二进制文件

不装 Docker 也能跑。$TRAE_REF

下载

GitHub Releases,以 Linux amd64 为例:

cd /tmp
wget https://github.com/usememos/memos/releases/download/v0.30.0/memos_v0.30.0_linux_amd64.tar.gz
tar -xzf memos_v0.30.0_linux_amd64.tar.gz

部署

sudo mv memos /usr/local/bin/
sudo mkdir -p /var/lib/memos
/usr/local/bin/memos --port 5230 --data /var/lib/memos   # 前台测试

配置 systemd(开机自启)

创建 /etc/systemd/system/memos.service

[Unit]
Description=Memos
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/memos --port 5230 --data /var/lib/memos
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable memos --now
sudo systemctl status memos

二进制方式需自己管理反向代理、HTTPS、升级和备份。


六、Nginx 反向代理 + HTTPS

不管你用哪种方式部署,生产环境建议加一层 Nginx 并配 SSL。

部署架构:用户 → Nginx → Memos

6.1 安装+基础配置

sudo apt update && sudo apt install nginx -y

创建 /etc/nginx/sites-available/memos

server {
    listen 80;
    server_name memos.yourdomain.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_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
sudo ln -s /etc/nginx/sites-available/memos /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

6.2 SSL 证书(Let's Encrypt)

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d memos.yourdomain.com

Certbot 会自动修改 Nginx 配置启用 HTTPS,证书到期前自动续期。确认一下:

sudo systemctl status certbot.timer

此时你的 Nginx 配置已变成带 80→443 跳转的完整版本,无需手动改。

6.3 回填 MEMOS_INSTANCE_URL

配好域名和 HTTPS 后,根据你的部署方式设置:

Docker: 删除旧容器,重新 run 时加上环境变量:

docker stop memos && docker rm memos
docker run -d \
  --name memos \
  --restart unless-stopped \
  -p 5230:5230 \
  -v ~/.memos:/var/opt/memos \
  -e MEMOS_INSTANCE_URL=https://memos.yourdomain.com \
  neosmemo/memos:stable

Docker Compose: 取消 docker-compose.yml 中的注释:

environment:
  MEMOS_INSTANCE_URL: https://memos.yourdomain.com

然后 docker compose down && docker compose up -d

二进制: 在 systemd 配置的 ExecStart 中追加参数:

ExecStart=/usr/local/bin/memos --port 5230 --data /var/lib/memos --instance-url https://memos.yourdomain.com

然后 sudo systemctl daemon-reload && sudo systemctl restart memos


七、初始化

首次访问会看到注册页。第一个注册的用户自动成为管理员。

登录后进 Settings 建议调整:

  • 时区设为 Asia/Shanghai
  • 有域名的话,在系统设置中填好站点名称和公开模式

备份

SQLite 数据库就在数据目录里,备份就是复制:

# 先创建备份目录(首次)
mkdir -p ~/backups

# Docker 方式
cp -r ~/.memos ~/backups/memos-$(date +%Y%m%d)

# Docker Compose 方式
cp -r ~/memos/data ~/backups/memos-$(date +%Y%m%d)

# 二进制方式
cp -r /var/lib/memos ~/backups/memos-$(date +%Y%m%d)

配合 cron 定时跑就行。


八、常见问题

端口被占用?-p 参数,比如 -p 8080:5230,Nginx 的 proxy_pass 也跟着改。

目录权限报错? 镜像内以非 root 运行(UID 10001)。$TRAE_REF 加环境变量覆盖:-e MEMOS_UID=1000 -e MEMOS_GID=1000

想用 MySQL / PostgreSQL? SQLite 单机够用。真要换,加环境变量:$TRAE_REF

environment:
  MEMOS_DRIVER: postgres
  MEMOS_DSN: "postgres://user:password@host:5432/memos?sslmode=disable"

MySQL 的 DSN 格式:user:password@tcp(host:3306)/memos

手机上能用吗? Memos 是 PWA,浏览器打开后"添加到主屏幕"即可像 App 一样使用。

支持 Markdown? 完整支持,含任务列表和 LaTeX 公式。


参考来源:Memos 官方文档 · GitHub Releases · Docker Hub

飞驰人生3 观影笔记 2026-08-13

评论区