Memos 部署指南
Memos 是一个开源的笔记和备忘录管理工具。本文档介绍多种部署方式。
目录
方式一: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 方式)
| 资源 | 最低要求 |
|---|---|
| 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+