跳转至

Memos 部署指南

Memos 是一个开源的笔记和备忘录管理工具。本文档介绍多种部署方式。

官方演示环境 GitHub 仓库


目录


方式一:Docker 部署(推荐)

Stable 稳定版

docker run -d \
  --name memos \
  -p 25230:5230 \
  -v ~/.memos:/var/opt/memos \
  neosmemo/memos:stable

Canary 最新版

Canary 版本包含最新的功能和 bug 修复,但也可能存在不稳定因素。

注意:最新版本需要赋予权限,否则启动报错(容器内的 nonroot 用户 UID 10001 需要写入权限)。

chown -R 10001:10001 ~/.memos

docker run -d \
  --name memos-canary \
  -p 25230:5230 \
  -v ~/.memos:/var/opt/memos \
  neosmemo/memos:canary

Docker Hub 镜像地址


系统要求(非 Docker 方式)

资源 最低要求
RAM 512 MB
存储 1 GB 可用空间
CPU 任意现代 x86_64 或 ARM64 处理器

支持的操作系统: - Linux (x86_64, ARM64) - macOS (Intel, Apple Silicon) - Windows (x86_64)


方式二:预编译二进制文件部署

2.1 下载二进制文件

前往 GitHub Releases 页面下载最新版本。

Linux x86_64:

wget https://github.com/usememos/memos/releases/download/v0.25.3/memos-linux-amd64.tar.gz

Linux ARM64:

wget https://github.com/usememos/memos/releases/download/v0.25.3/memos-linux-arm64.tar.gz

macOS Intel:

wget https://github.com/usememos/memos/releases/download/v0.25.3/memos-darwin-amd64.tar.gz

macOS Apple Silicon (M1/M2):

wget https://github.com/usememos/memos/releases/download/v0.25.3/memos-darwin-arm64.tar.gz

2.2 解压并安装

# 解压文件
tar -xzf memos-linux-amd64.tar.gz

# 移动到系统路径
sudo mv memos /usr/local/bin/

# 赋予执行权限
sudo chmod +x /usr/local/bin/memos

# 验证安装
memos --version

2.3 创建数据和配置目录

# 创建数据目录
sudo mkdir -p /var/opt/memos

# 创建日志目录
sudo mkdir -p /var/log/memos

# 赋予相应权限(将 username 替换为你的用户名)
sudo chown -R username:username /var/opt/memos /var/log/memos

2.4 运行 Memos

# 前台运行(用于测试)
memos --mode prod --data /var/opt/memos

# 后台运行
nohup memos --mode prod --data /var/opt/memos > /var/log/memos/memos.log 2>&1 &

访问 http://服务器IP:5230 即可使用。


方式三:systemd 服务部署

3.1 创建服务文件

创建 /etc/systemd/system/memos.service 文件:

sudo nano /etc/systemd/system/memos.service

写入以下内容:

[Unit]
Description=Memos Note-taking Service
After=network.target

[Service]
Type=simple
User=www-data
Group=www-data
WorkingDirectory=/var/opt/memos
ExecStart=/usr/local/bin/memos --mode prod --data /var/opt/memos
Restart=on-failure
RestartSec=5s

# 安全设置
NoNewPrivileges=true
PrivateTmp=true

# 资源限制
MemoryLimit=512M
CPUQuota=100%

# 日志
StandardOutput=journal
StandardError=journal
SyslogIdentifier=memos

[Install]
WantedBy=multi-user.target

3.2 启用并启动服务

# 重新加载 systemd 配置
sudo systemctl daemon-reload

# 启用开机自启
sudo systemctl enable memos

# 启动服务
sudo systemctl start memos

# 查看服务状态
sudo systemctl status memos

3.3 服务管理命令

# 启动服务
sudo systemctl start memos

# 停止服务
sudo systemctl stop memos

# 重启服务
sudo systemctl restart memos

# 查看服务状态
sudo systemctl status memos

# 查看实时日志
sudo journalctl -u memos -f

# 查看最近日志
sudo journalctl -u memos -n 100

方式四:从源代码编译

适用于需要自定义编译或开发的场景。

4.1 安装 Go 环境

# Ubuntu/Debian
sudo apt update
sudo apt install golang-go -y

# CentOS/RHEL
sudo yum install golang -y

# 验证安装
go version

4.2 克隆并编译

# 克隆仓库
git clone https://github.com/usememos/memos.git
cd memos

# 编译
go build -o memos ./cmd/memos

# 移动到系统路径
sudo mv memos /usr/local/bin/
sudo chmod +x /usr/local/bin/memos

配置数据库

Memos 默认使用 SQLite,也支持 PostgreSQL 和 MySQL。

使用 SQLite(默认)

无需额外配置,Memos 会自动在数据目录创建数据库文件。

使用 PostgreSQL

# 安装 PostgreSQL
sudo apt install postgresql postgresql-contrib -y

# 创建数据库和用户
sudo -u postgres psql
CREATE DATABASE memos;
CREATE USER memos_user WITH PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE memos TO memos_user;
\q

配置 Memos 使用 PostgreSQL,编辑 systemd 服务文件:

Environment="MEMOS_DSN=postgres://memos_user:your_password@localhost:5432/memos?sslmode=disable"

使用 MySQL/MariaDB

# 安装 MySQL
sudo apt install mysql-server -y

# 创建数据库和用户
sudo mysql
CREATE DATABASE memos;
CREATE USER 'memos_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON memos.* TO 'memos_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

配置 Memos 使用 MySQL:

Environment="MEMOS_DSN=memos_user:your_password@tcp(localhost:3306)/memos"

配置反向代理

Nginx 配置

安装 Nginx:

sudo apt install nginx -y

创建配置文件 /etc/nginx/sites-available/memos

server {
    listen 80;
    server_name your-domain.com;

    # 可选:限制上传文件大小
    client_max_body_size 100M;

    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;

        # WebSocket 支持
        proxy_http_version 1.1;
        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

配置 HTTPS(使用 Let's Encrypt)

# 安装 Certbot
sudo apt install certbot python3-certbot-nginx -y

# 获取证书
sudo certbot --nginx -d your-domain.com

# 自动续期(已自动配置)
sudo certbot renew --dry-run

常用运维命令

命令行参数

# 查看帮助
memos --help

# 指定端口
memos --mode prod --port 8080 --data /var/opt/memos

# 指定监听地址
memos --mode prod --addr 127.0.0.1:5230 --data /var/opt/memos

环境变量配置

可以在 systemd 服务文件中使用环境变量进行配置:

[Service]
# 基本配置
Environment="MEMOS_MODE=prod"
Environment="MEMOS_PORT=5230"
Environment="MEMOS_ADDR=0.0.0.0"

# 数据库配置
Environment="MEMOS_DSN=postgres://user:pass@localhost:5432/memos"

# 实例 URL(用于分享链接)
Environment="MEMOS_INSTANCE_URL=https://your-domain.com"

# 驱动模式(sqlite, postgres, mysql)
Environment="MEMOS_DRIVER=postgres"

备份数据

# 备份 SQLite 数据库
cp /var/opt/memos/memos_prod.db /backup/memos_backup_$(date +%Y%m%d).db

# 备份整个数据目录
tar -czf /backup/memos_backup_$(date +%Y%m%d).tar.gz /var/opt/memos

恢复数据

# 停止服务
sudo systemctl stop memos

# 恢复数据库
cp /backup/memos_backup_20240101.db /var/opt/memos/memos_prod.db

# 启动服务
sudo systemctl start memos

升级 Memos

# 1. 备份数据
sudo systemctl stop memos
tar -czf /backup/memos_pre_upgrade_$(date +%Y%m%d).tar.gz /var/opt/memos

# 2. 下载新版本
wget https://github.com/usememos/memos/releases/download/v0.26.0/memos-linux-amd64.tar.gz
tar -xzf memos-linux-amd64.tar.gz

# 3. 替换二进制文件
sudo mv memos /usr/local/bin/

# 4. 启动服务
sudo systemctl start memos

故障排查

服务无法启动

# 查看详细日志
sudo journalctl -u memos -n 100 --no-pager

# 检查端口占用
sudo netstat -tlnp | grep 5230
# 或
sudo ss -tlnp | grep 5230

# 检查文件权限
ls -la /var/opt/memos
ls -la /var/log/memos

数据库错误

# 检查数据库文件权限
ls -la /var/opt/memos/memos_prod.db

# 修复 SQLite 数据库(如需要)
sqlite3 /var/opt/memos/memos_prod.db "PRAGMA integrity_check;"

防火墙配置

# UFW (Ubuntu)
sudo ufw allow 5230/tcp
sudo ufw reload

# firewalld (CentOS/RHEL)
sudo firewall-cmd --permanent --add-port=5230/tcp
sudo firewall-cmd --reload

常见问题

问题 解决方案
无法访问 Web 界面 检查防火墙设置,确保端口 5230 开放
数据丢失 检查数据目录权限,定期备份
服务自动停止 检查内存限制,查看 journalctl 日志
上传文件失败 检查磁盘空间,调整 Nginx client_max_body_size
Canary 版本启动失败 执行 chown -R 10001:10001 ~/.memos 赋予权限

参考资料


文档版本: v2.0 更新日期: 2026-02-03 适用版本: Memos v0.25.x+