Memos 0.31.0 常用 CLI 命令与工具详解
Memos 0.31.0 命令行使用面全解:官方单二进制的 version/help/completion 子命令与 13 个启动参数、MEMOS_* 环境变量覆盖优先级实测、SIGTERM 优雅停机、systemd 服务管理全流程、sqlite3 库层只读运维与 PAT 认证 API 交互,全部回显逐字实测。
Memos 0.31.0 常用 CLI 命令与工具详解
目标:系统讲清 Memos 0.31.0 的命令行使用面——官方单二进制
memos的全部子命令(version/help/completion)与 13 个启动参数、MEMOS_*环境变量双通道的覆盖优先级实测、SIGTERM 优雅停机、systemd 服务管理全流程、sqlite3 库层只读运维,以及 PAT(个人访问令牌)认证的 API 交互。文中全部命令与回显均在真实服务器环境(Ubuntu 24.04.5 LTS、Memos 0.31.0 官方二进制 + systemd 托管,监听 8081,数据目录/var/opt/memos)逐条实测通过,回显逐字照抄。
一、环境信息
本篇实测环境的关键信息如下:
- 操作系统:Ubuntu 24.04.5 LTS,x86_64,系统时区 Asia/Shanghai(journalctl 回显时间戳为 +08:00)
- Memos:0.31.0(官方单二进制,静态链接,GitHub Releases 资产
memos_0.31.0_linux_amd64.tar.gz,2026-09-20 发布) - 安装位置:二进制
/usr/local/bin/memos,数据目录/var/opt/memos - 进程托管:systemd 服务
memos.service(Type=simple,systemctl is-active实测active) - 监听端口:8081(二进制默认端口,
--port默认值实查);本篇参数覆盖实测另用空闲端口 8145/8146/8147 - 数据库:sqlite(默认驱动,库文件
/var/opt/memos/memos_prod.db) - 管理账号:root / q1w2e3r4(实例管理员 Host)
- 组件背景:Memos 的定位与选型见 《Memos 介绍与选型指南》;二进制裸跑之外的 Compose 编排部署形态见 《Memos 0.31.0 Docker Compose 部署指南》;13 个启动参数与 7 组实例设置的逐项参数学见 《Memos 0.31.0 配置参数详解》
二、工具概览
Memos 只有一个可执行文件 memos,它同时是服务进程与命令行工具(基于 Go 的 cobra 命令行框架构建)。不带子命令直接执行时启动 Web 服务;子命令只有三个,全部与运维自检相关:
| 命令/用法 | 作用 |
|---|---|
memos(无子命令) | 启动 Memos 服务(前台阻塞运行) |
memos version | 打印当前版本号 |
memos -V / memos --version | 同上(短参数形式) |
memos help | 打印帮助(与 --help 等价) |
memos completion <shell> | 生成 bash/zsh/fish/powershell 自动补全脚本 |
围绕这个单二进制,本篇实测的配套工具链:
- systemd + journalctl:把
memos托管为系统服务,开机自启、崩溃拉起、集中日志; - sqlite3:对默认 SQLite 库做只读核验与在线热备;
- curl:通过 HTTP API 与实例交互(密码换令牌、PAT 免密认证、数据导出)。
服务层配置(站点标题、注册策略、存储等 7 组实例设置)不在命令行修改,而是存数据库、经 Web 设置页或 API 变更,其参数学见本专栏《Memos 0.31.0 配置参数详解》。
三、前置条件
3.1 安装官方二进制
从 GitHub Releases 下载、校验并安装(完整步骤与代理下载提示见《Memos 0.31.0 配置参数详解》第二章,此处给关键命令):
mkdir -p /opt/memos && cd /opt/memos
wget https://github.com/usememos/memos/releases/download/v0.31.0/memos_0.31.0_linux_amd64.tar.gz
wget https://github.com/usememos/memos/releases/download/v0.31.0/checksums.txt
sha256sum -c checksums.txt 2>/dev/null | grep linux_amd64
tar -xzf memos_0.31.0_linux_amd64.tar.gz
mv memos /usr/local/bin/memos && chmod +x /usr/local/bin/memos
校验命令实测回显:
memos_0.31.0_linux_amd64.tar.gz: OK
安装后立即验证可执行性:
memos version
实测回显:
0.31.0
3.2 准备数据目录
Memos 的数据目录规则(--data 默认值判定逻辑):/var/opt/memos 存在且可写时用它;否则用当前工作目录。服务器部署建议显式创建:
mkdir -p /var/opt/memos
💡 说明:不建目录就地在
$HOME下启动,库文件会散落在启动目录,后续备份与 systemd 托管都会变别扭——这是新手最常见的「数据去哪了」问题的根源。
四、memos 命令详解
4.1 version:版本自检
memos version
memos --version
memos -V
三种写法实测回显一致:
0.31.0
升级前后各执行一次,是确认替换二进制生效的最快手段。
4.2 help 与 --help:命令与参数全景
memos --help
实测回显(全文):
Usage:
memos [flags]
memos [command]
Available Commands:
completion Generate the autocompletion script for the specified shell
help Help about any command
version Print the current Memos version
Flags:
--addr string address of server
--data string data directory
--demo enable demo mode
--driver string database driver (sqlite, mysql, postgres, d1) (default "sqlite")
--dsn string database source name (DSN)
-h, --help help for memos
--instance-url string canonical external URL of the Memos instance
--log-level string log verbosity level (debug, info, warn, error) (default "info")
--port int port of server (default 8081)
--rate-limit enable request rate limiting (default true)
--trusted-proxies strings proxies whose forwarding headers identify the client: CIDRs, IPs, "private" (default; the loopback and private ranges), or "none" when the instance is reached without a header-rewriting proxy (default [private])
--unix-sock string path to the unix socket, overrides --addr and --port
-V, --version print the current Memos version
--webhook-private-network-allowlist strings private webhook destinations to allow (exact hostname, IP, or CIDR)
Use "memos [command] --help" for more information about a command.
从回显可直接读出各参数的真实默认值,整理如下(13 个配置项 + 2 个信息项):
| 参数 | 默认值 | 说明 |
|---|---|---|
--port int | 8081 | HTTP 监听端口 |
--addr string | 空(监听全部网卡) | 监听地址 |
--unix-sock string | 空 | Unix socket 路径,覆盖 --addr 与 --port |
--data string | 空(按 3.2 节规则判定) | 数据目录 |
--driver string | sqlite | 数据库驱动:sqlite/mysql/postgres/d1 |
--dsn string | 空 | 数据库连接串(外部数据库必填) |
--instance-url string | 空 | 实例对外规范 URL |
--demo | false | 演示模式(仅限 sqlite 驱动) |
--log-level string | info | 日志级别 debug/info/warn/error |
--rate-limit | true | 请求限流开关 |
--trusted-proxies strings | [private] | 可信代理网段(private/none/CIDR 列表) |
--webhook-private-network-allowlist strings | 空 | 允许 webhook 访问的内网目标白名单 |
-V, --version | — | 打印版本 |
-h, --help | — | 打印帮助 |
子命令的帮助可以继续下钻:
memos version --help
实测回显:
Print the current Memos version
Usage:
memos version [flags]
Flags:
-h, --help help for version
4.3 completion:Shell 自动补全
completion 下有 bash/fish/powershell/zsh 四个子命令:
memos completion --help
实测回显:
Generate the autocompletion script for memos for the specified shell.
See each sub-command's help for details on how to use the generated script.
Usage:
memos completion [command]
Available Commands:
bash Generate the autocompletion script for bash
fish Generate the autocompletion script for fish
powershell Generate the autocompletion script for powershell
zsh Generate the autocompletion script for zsh
Flags:
-h, --help help for completion
Use "memos completion [command] --help" for more information about a command.
生成 bash 补全脚本(输出为完整脚本,实测节选头部):
memos completion bash | head -8
实测回显:
# bash completion V2 for memos -*- shell-script -*-
__memos_debug()
{
if [[ -n ${BASH_COMP_DEBUG_FILE-} ]]; then
echo "$*" >> "${BASH_COMP_DEBUG_FILE}"
fi
}
zsh 形态(实测节选头部):
memos completion zsh | head -3
实测回显:
#compdef memos
compdef _memos memos
# zsh completion for memos -*- shell-script -*-
当前会话即时启用 bash 补全:source <(memos completion bash);要常驻则把该行追加到 ~/.bashrc(zsh 对应 ~/.zshrc)。启用后,输入 memos -- 按 Tab 可列出全部启动参数。
4.4 默认行为:前台启动服务
不带子命令执行即启动服务(前台阻塞,Ctrl+C 停止)。用显式 --port 在实测端口启动:
memos --data /var/opt/memos --port 8145
实测回显(节选):
Memos 0.31.0 started successfully!
Database driver: sqlite
Server running on port 8145
Access your memos at: http://localhost:8145
Access mode: private
💡 说明:
--port 8145生效的关键行是Server running on port 8145——显式参数覆盖了二进制默认的 8081。生产服务器不建议前台裸跑,配合 systemd 托管见第七章。
4.5 废弃参数的识别与替代
--allow-private-webhooks 在 0.31 已废弃,但它没有出现在 --help 列表里(被框架隐藏)。传入时程序会给出两层告警但仍能启动——实测:
memos --allow-private-webhooks --data /var/opt/memos --port 8145
实测回显(节选,前两行为告警):
Flag --allow-private-webhooks has been deprecated, use --webhook-private-network-allowlist to allow only required destinations
time=2026-10-22T09:31:43.793+08:00 level=WARN msg="--allow-private-webhooks is deprecated and disables webhook private-network protection; use --webhook-private-network-allowlist"
Memos 0.31.0 started successfully!
Server running on port 8145
Access mode: private
要点:第一层是参数解析框架的 deprecation 提示,第二层是应用日志的 WARN,替代方案是 --webhook-private-network-allowlist(按主机名/IP/CIDR 粒度放行 webhook 内网目标,默认拒绝全部)。老版本升级脚本里若还带这个参数,看到双重告警即应替换。
五、启动参数与环境变量实战
5.1 双通道映射规则与优先级
每个启动参数都有同名环境变量:MEMOS_ 前缀 + 参数名中划线转下划线(如 --port ↔ MEMOS_PORT、--trusted-proxies ↔ MEMOS_TRUSTED_PROXIES)。三级取值顺序为:显式传入的启动参数 > 环境变量 > 内置默认值(参数绑定顺序见源码 cmd/memos/main.go)。环境变量的完整对照表见《Memos 0.31.0 配置参数详解》第四章,本节用两个实测验证覆盖链路。
5.2 环境变量覆盖默认值实测(MEMOS_PORT)
不传任何参数,仅设置 MEMOS_PORT:
MEMOS_PORT=8146 memos --data /var/opt/memos
实测回显(节选):
Memos 0.31.0 started successfully!
Database driver: sqlite
Server running on port 8146
Access your memos at: http://localhost:8146
Access mode: private
默认 8081 被环境变量覆盖为 8146,验证了「环境变量 > 内置默认值」一级。
5.3 显式参数优先级实测(--port 与 MEMOS_PORT 并存)
再叠加显式参数,验证最高一级:
MEMOS_PORT=8146 memos --data /var/opt/memos --port 8145
实测回显(节选):
Server running on port 8145
环境变量设了 8146、显式参数给了 8145,最终按 8145 监听——「显式参数 > 环境变量」成立。systemd 排障时若怀疑环境变量干扰,先检查 unit 的 Environment= 与 ExecStart= 两处取值。
5.4 Unix socket 监听实测(--unix-sock)
--unix-sock 设置后覆盖 TCP 监听(--addr/--port 失效),适合本机反代场景:
memos --data /var/opt/memos --unix-sock /run/memos.sock --port 8147
先确认 TCP 端口没有按 --port 8147 监听:
ss -ltn | grep ':8147'
实测回显(无输出,说明 TCP 未监听):
改用 socket 文件访问健康检查端点:
curl -s --unix-socket /run/memos.sock http://localhost/healthz -w "\nhttp_code=%{http_code}\n"
实测回显:
Service ready.
http_code=200
服务日志也印证了监听形态(节选):
Server running on unix socket: /run/memos.sock
进程退出后 socket 文件自动清理(ls /run/memos.sock 实测 No such file or directory),不留残留文件。
5.5 数据目录规则实测(--data)
--data 显式指定数据目录时,日志会回显最终生效路径(见 4.4 节回显中的 Data directory: 行)。若不传 --data 也没有 /var/opt/memos,Memos 会退回当前工作目录——实测在一个空目录里直接启动,日志回显 Data directory: 指向该目录,并在其中生成 memos_prod.db 三件套。因此 systemd 单元必须写死 WorkingDirectory 或显式 --data,否则服务的数据目录随单元配置漂移。
5.6 数据库驱动与 DSN(--driver/--dsn 报错实录)
切换驱动只改两个参数:--driver(sqlite/mysql/postgres/d1)+ --dsn(连接串)。MySQL DSN 形如 root:q1w2e3r4@tcp(mysql-host:3306)/memos,PostgreSQL DSN 形如 postgresql://memos:q1w2e3r4@pg-host:5432/memos?sslmode=disable。两个高频错误实测如下。
错误一:只给驱动不给 DSN——程序按空连接串连本机:
memos --driver mysql
实测报错回显:
time=2026-10-22T08:54:49.988+08:00 level=ERROR msg="memos failed" error="failed to migrate database: failed to pre-migrate: failed to check if database is initialized: failed to check if database is initialized: Error 1045 (28000): Access denied for user ''@'localhost' (using password: NO)"
错误二:demo 模式配外部驱动——--demo 只允许 sqlite:
memos --demo --driver postgres
实测报错回显:
time=2026-10-22T08:54:49.943+08:00 level=ERROR msg="memos failed" error="failed to validate profile: demo mode requires the sqlite database driver, got \"postgres\""
两种错误进程都直接退出(level=ERROR msg="memos failed"),不进入监听状态。
六、优雅停机实测(SIGTERM)
前台运行时按 Ctrl+C(或向进程发 SIGTERM),Memos 走优雅停机流程——停止接收新请求、等待在途请求完成后退出。实测对运行中的进程执行 kill -TERM <pid>,日志回显:
time=2026-10-22T09:31:47.785+08:00 level=INFO msg="server shutting down"
time=2026-10-22T09:31:47.787+08:00 level=INFO msg="memos stopped properly"
memos stopped properly 即优雅退出的标志行。systemd 停止服务(systemctl stop/restart)默认向主进程发 SIGTERM,因此 journalctl -u memos 中同样能看到这两行(见 7.3 节实测)——升级或重启前后用它们确认没有硬截断请求。
七、systemd 服务管理
7.1 服务单元文件
/etc/systemd/system/memos.service 本篇实测采用:
[Unit]
Description=Memos self-hosted memo service
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/var/opt/memos
ExecStart=/usr/local/bin/memos --data /var/opt/memos --port 8081
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
查看与本文一致的原始内容:
systemctl cat memos --no-pager
实测回显(# /etc/systemd/system/memos.service 头行 + 上述全文)。
要点:Restart=on-failure 异常退出自动拉起(正常 stop 不拉起);RestartSec=5 拉起间隔 5 秒;ExecStart 用绝对路径并把 --data 写死,杜绝 5.5 节的目录漂移问题。生产环境可将 User= 改为专用低权账号(需同步 chown 数据目录)。
7.2 启用与状态查看
systemctl daemon-reload
systemctl enable --now memos
enable --now 同时完成开机自启注册与立即启动(无回显即成功)。状态自检:
systemctl status memos --no-pager
实测回显(节选):
● memos.service - Memos self-hosted memo service
Loaded: loaded (/etc/systemd/system/memos.service; enabled; preset: enabled)
Active: active (running) since Thu 2026-10-22 09:37:22 CST; 2s ago
Main PID: 602 (memos)
Tasks: 11 (limit: 94371)
Memory: 15.5M (peak: 17.3M)
CPU: 35ms
Oct 22 09:37:22 997a6dd867b0 systemd[1]: Started memos.service - Memos self-hosted memo service.
Oct 22 09:37:22 997a6dd867b0 memos[602]: Memos 0.31.0 started successfully!
Oct 22 09:37:22 997a6dd867b0 memos[602]: Data directory: /var/opt/memos
Oct 22 09:37:22 997a6dd867b0 memos[602]: Database driver: sqlite
Oct 22 09:37:22 997a6dd867b0 memos[602]: Server running on port 8081
Oct 22 09:37:22 997a6dd867b0 memos[602]: Access your memos at: http://localhost:8081
Oct 22 09:37:22 997a6dd867b0 memos[602]: Access mode: private
Memory: 15.5M (peak: 17.3M)——空闲态内存常驻 15MiB 上下,是典型轻量服务水位;日志尾部回显的五件套(版本/数据目录/驱动/端口/访问模式)与前台启动一致。
7.3 重启与日志跟踪
重启一次并跟踪完整生命周期日志:
systemctl restart memos
journalctl -u memos --no-pager -n 14
实测回显:
Oct 22 09:37:22 997a6dd867b0 systemd[1]: Stopping memos.service - Memos self-hosted memo service...
Oct 22 09:37:22 997a6dd867b0 memos[549]: time=2026-10-22T09:37:22.243+08:00 level=INFO msg="server shutting down"
Oct 22 09:37:22 997a6dd867b0 memos[549]: time=2026-10-22T09:37:22.244+08:00 level=INFO msg="memos stopped properly"
Oct 22 09:37:22 997a6dd867b0 systemd[1]: memos.service: Deactivated successfully.
Oct 22 09:37:22 997a6dd867b0 systemd[1]: Stopped memos.service - Memos self-hosted memo service.
Oct 22 09:37:22 997a6dd867b0 systemd[1]: Started memos.service - Memos self-hosted memo service.
Oct 22 09:37:22 997a6dd867b0 memos[602]: Memos 0.31.0 started successfully!
Oct 22 09:37:22 997a6dd867b0 memos[602]: Data directory: /var/opt/memos
Oct 22 09:37:22 997a6dd867b0 memos[602]: Database driver: sqlite
Oct 22 09:37:22 997a6dd867b0 memos[602]: Server running on port 8081
Oct 22 09:37:22 997a6dd867b0 memos[602]: Access your memos at: http://localhost:8081
Oct 22 09:37:22 997a6dd867b0 memos[602]: Access mode: private
链路完整可读:Stopping → 优雅停机两行(第六章的 SIGTERM 日志)→ Deactivated successfully → 旧 PID 549 停止 → 新 PID 602 启动五件套。日常排障两条常用变体:journalctl -u memos -f 实时跟踪;journalctl -u memos --since "1 hour ago" 按时段过滤。
7.4 修改单元文件后的生效流程
改 memos.service(如调整 ExecStart 参数、加 Environment=)后,直接 restart 不会加载新单元内容,正确顺序:
systemctl daemon-reload
systemctl restart memos
daemon-reload 无回显即成功(重载单元定义),第二步才以新配置重启进程。漏掉第一步是「改了配置不生效」的头号原因。
八、库层工具:sqlite3 只读运维
8.1 数据目录构成
SQLite 方案下数据目录即全部数据:
ls -la /var/opt/memos/
实测回显(结构示意,尺寸随数据量变化):
-rw-r--r-- 1 10001 10001 151552 Oct 22 08:55 memos_prod.db
-rw-r--r-- 1 10001 10001 32768 Oct 22 09:03 memos_prod.db-shm
-rw-r--r-- 1 10001 10001 37112 Oct 22 09:03 memos_prod.db-wal
drwxr-xr-x 2 10001 10001 4096 Oct 22 08:55 assets
库文件三件套(主库 + WAL + SHM)加 assets/ 附件目录。备份恢复的完整实测(在线热备 .backup 与停机冷备)见《Memos 0.31.0 Docker Compose 部署指南》第五章,本节只做只读核验与版本查询。
8.2 表清单与数据核验
sqlite3 /var/opt/memos/memos_prod.db ".tables"
实测回显(13 张业务表):
attachment memo reaction system_setting user_setting
idp memo_relation space user
inbox memo_share space_member user_identity
核验账号与 memo 数量(只读 SELECT,勿在业务库执行写操作):
sqlite3 /var/opt/memos/memos_prod.db "SELECT count(*) FROM memo; SELECT username FROM user;"
实测回显:
1
root
⚠️ 注意:WAL 模式下直接拷贝主库单文件可能丢最近写入,核验用只读命令没有问题,备份请用 8.4 节的
.backup或停机冷备。
8.3 schema 版本查询
Memos 的 schema 版本存在 system_setting 表的 BASIC 行 JSON 里。该行同时含实例密钥 secretKey,查询时只提取版本字段,避免把密钥打进终端记录:
sqlite3 /var/opt/memos/memos_prod.db "SELECT value FROM system_setting WHERE name='BASIC';" | python3 -c "import json,sys; print(json.load(sys.stdin)['schemaVersion'])"
实测回显:
0.31.8
该值与启动日志的 schemaVersion=0.31.8 一致。schema 迁移只在启动时发生且只升不降(详见部署篇升级实测一节),版本排查时以库内值为准,而不是二进制版本号。
8.4 在线热备一条命令
不停服一致性备份(apt install sqlite3 后可用):
mkdir -p /var/opt/memos-backup
sqlite3 /var/opt/memos/memos_prod.db ".backup '/var/opt/memos-backup/memos_prod_$(date +%Y%m%d).db'"
命令无回显即成功;备份文件可独立打开核验(SELECT count(*) FROM memo;)。搭配 cron 每日执行即是最简备份方案,完整恢复演练见部署篇第五章。
九、API 交互与 PAT 认证
命令行与实例交互走 HTTP API(REST 网关,路径前缀 /api/v1,兼容 ConnectRPC)。两种认证方式:密码登录换短时 JWT(完整实测见部署篇第四章),或 PAT 免密认证——后者更适合脚本与自动化。
9.1 创建 PAT
以实例用户身份在 Web 端设置页创建 Personal Access Token,得到 memos_pat_ 前缀的长期令牌(服务端只保存哈希,令牌明文仅创建时可见,注意保存)。
9.2 PAT 调用实测
用 PAT 直接创建一条 memo(免登录、无 Cookie):
PAT=memos_pat_你的令牌
curl -s -X POST http://127.0.0.1:8081/api/v1/memos -H "Authorization: Bearer $PAT" -H "Content-Type: application/json" -d '{"content":"PAT 认证实测:免登录口令直连 API 写入。 #实测"}' | head -c 260
实测回显:
{"name":"memos/LntayQmGntuGioZCVwLBLi","state":"NORMAL","creator":"users/root","createTime":"2026-10-22T01:34:07Z","updateTime":"2026-10-22T01:34:07Z","content":"PAT 认证实测:免登录口令直连 API 写入。 #实测","visibility":"PRIVATE","tags":["
(head -c 260 截断展示,tags 数组及后续字段被截去。)PAT 请求与密码登录请求走同一 API 面,脚本化备份、批量导入、外部系统联动均可用此形态。API 的完整服务清单与设置读写(含 PATCH 整组覆盖语义的坑)见《Memos 0.31.0 配置参数详解》第五、七章。
9.3 个人数据导出
设置页(Settings → Export & Import)或一条 GET 即可导出当前用户全部 memo 为 Memos Export Format ZIP(manifest.json + 每条 memo 的 .json/.md),实测命令与产物结构见部署篇第五章,可作跨实例搬家与人工留档手段。
十、注意事项
- 限流默认开启:
--rate-limit默认true,同实例连续错误口令登录第 11 次起返回 429(实测序列400 ×10 → 429 ×2,见部署篇 FAQ)。自动化脚本一律走 PAT 认证,公网实例不要关闭限流。 - schema 只升不降:启动即迁移到目标版本,降级二进制前必须先恢复旧备份库,否则旧版本无法识别新库。
/etc/secrets文件级配置改动需重启进程生效:文件配置遮蔽数据库同名设置,改文件后systemctl restart memos(机制详解见配置参数详解篇)。- 敏感信息不进终端历史:
system_setting的BASIC行含实例密钥,查询参照 8.3 节只提取需要的字段。 - 废弃参数会静默换行为:
--allow-private-webhooks已废弃且从帮助中隐藏(4.5 节实录),升级后检查启动脚本与 unit 文件,改用--webhook-private-network-allowlist。 --demo数据无保障:演示模式仅限临时展示(且只能配 sqlite),生产禁用。
十一、常见问题(FAQ)
Q1:改了 unit 里的参数,restart 后还是旧行为?
漏了 systemctl daemon-reload。systemd 缓存单元定义,restart 只重启进程不重载定义;先 daemon-reload 再 restart(7.4 节)。若改的是 Environment=,还要注意 5.3 节的优先级——unit 里 ExecStart 的显式参数会覆盖 Environment。
Q2:换端口启动后,外部还是访问不了?
先确认监听生效(回显 Server running on port <端口>),再排查两层:ss -ltn | grep <端口> 确认内核监听;防火墙/安全组放行该端口。--instance-url 只影响对外规范 URL 生成,不影响监听。
Q3:MySQL/PostgreSQL 驱动启动即退,报 Access denied?
DSN 没配全。--driver mysql 不配 --dsn 会按空凭据连本机(5.6 节错误一实录:Error 1045 (28000): Access denied for user ''@'localhost')。外部数据库必须写全「用户:密码@主机:端口/库名」。
Q4:想临时演示又不想动生产数据?
--demo 模式(配独立 --data 目录 + sqlite 驱动),数据不保证持久(5.6 节错误二实录了 demo+postgres 会直接退出)。演示结束删掉该数据目录即可,与生产实例互不影响。
Q5:bash 补全想开机常驻?
echo 'source <(memos completion bash)' >> ~/.bashrc 后重开终端生效(zsh 用 ~/.zshrc 与 completion zsh)。验证:输入 memos -- 按 Tab 应列出全部启动参数。
Q6:日志太多想降噪?
--log-level 改 warn(或 unit 的 Environment=MEMOS_LOG_LEVEL=warn)后重启;临时排查再切回 debug。journalctl 侧可用 -p warning 只看警告级以上条目,两者组合定位问题更快。
十二、参考链接
- 官方文档:https://usememos.com/docs
- v0.31.0 源码(参数定义与绑定权威来源
cmd/memos/main.go):https://github.com/usememos/memos/tree/v0.31.0 - v0.31.0 官方变更日志:https://github.com/usememos/memos/blob/v0.31.0/CHANGELOG.md
- 官方发行资产(二进制与校验文件):https://github.com/usememos/memos/releases/tag/v0.31.0
- 本专栏相关篇章:《Memos 介绍与选型指南》、《Memos 0.31.0 Docker Compose 部署指南》、《Memos 0.31.0 配置参数详解》