文档配置

Rust · 0.1.0

启动参数与环境变量

了解 Rust 启动命令的配置,以及容器打包后的默认值。

明确配置值

命令支持启动参数及对应的 MEMOS_ 环境变量,显式命令行参数优先。请在实际部署的二进制文件上运行 --help。下表描述源码默认值;Dockerfile 额外设置 MEMOS_PORT=5230,工作数据目录为 /var/opt/memos。

参数 / 环境变量作用 / 默认值
--addr / MEMOS_ADDRTCP 地址;空值表示 0.0.0.0
--port / MEMOS_PORTTCP 端口;原生默认 8081
--data / MEMOS_DATA数据目录;建议明确指定持久路径
--driver / MEMOS_DRIVERsqlite(默认)、postgres 或 mysql
--dsn / MEMOS_DSN数据库连接信息;SQLite 默认使用数据目录中的 memos_prod.db
--unix-sock / MEMOS_UNIX_SOCK使用 Unix 套接字而非 TCP;仅 Unix
--instance-url / MEMOS_INSTANCE_URL外部实例 URL;默认为空
--log-level / MEMOS_LOG_LEVEL默认 info;另支持 debug、warn 和 error
--demo / MEMOS_DEMO默认 false;演示模式仅支持 SQLite,不适合私人数据
--rate-limit / MEMOS_RATE_LIMIT默认 true
--trusted-proxies / MEMOS_TRUSTED_PROXIES逗号分隔的受信代理;默认 private
--allow-private-webhooks / MEMOS_ALLOW_PRIVATE_WEBHOOKS默认 false;不要随意放开整个私有网络
--webhook-private-network-allowlist / MEMOS_WEBHOOK_PRIVATE_NETWORK_ALLOWLIST逗号分隔、最小范围的出站例外

打包专用变量

MEMOS_DSN_FILE 由容器入口脚本处理,不属于原生 Rust 参数解析器。MEMOS_BUILD_VERSION 和 MEMOS_BUILD_COMMIT 是构建期元数据,不能代替运行配置或数据库版本。不要将凭据写入命令历史或源码仓库。

代理信任与容器专属参数

MEMOS_TRUSTED_PROXIES 可填逗号分隔的 IP/CIDR、表示内置私网范围的 private,或表示不信任转发节点的 none;此处不接受主机名。应填写后端看到的代理地址,不是外部客户端地址。容器还识别 MEMOS_UID、MEMOS_GID(均默认 10001)及 MEMOS_DSN_FILE,它们属于入口脚本,不能编造成 Rust 启动参数。改变外部变量不会重配已有进程,需要使用新部署配置重启。 下面的本地 SQLite 示例还会明确清除继承的 DSN,避免意外连接先前配置的数据库。 还应使用干净的开发 shell,且主机/容器的 /etc/secrets 不挂载生产配置;--data 不能隔离这些部署覆盖。

env -u MEMOS_UNIX_SOCK -u MEMOS_DEMO -u MEMOS_INSTANCE_URL \
  MEMOS_ADDR=127.0.0.1 MEMOS_PORT=5230 \
  MEMOS_DATA=./memos-data MEMOS_TRUSTED_PROXIES=none \
  ./build/memos --driver sqlite --dsn '' --demo=false --instance-url ''