明确配置值
命令支持启动参数及对应的 MEMOS_ 环境变量,显式命令行参数优先。请在实际部署的二进制文件上运行 --help。下表描述源码默认值;Dockerfile 额外设置 MEMOS_PORT=5230,工作数据目录为 /var/opt/memos。
| 参数 / 环境变量 | 作用 / 默认值 |
|---|---|
| --addr / MEMOS_ADDR | TCP 地址;空值表示 0.0.0.0 |
| --port / MEMOS_PORT | TCP 端口;原生默认 8081 |
| --data / MEMOS_DATA | 数据目录;建议明确指定持久路径 |
| --driver / MEMOS_DRIVER | sqlite(默认)、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 ''