跳到主要内容
Mix SpaceMix Space

环境变量参考

所有环境变量的完整说明

如果你不确定某个变量的作用,保持默认值即可。

以下环境变量适用于 Mix Space Core 后端服务。Docker 用户在 docker-compose.yml 顶部的 x-mx-env 锚点中设置;源码用户在 .env 或 ecosystem.config.cjs 中设置。

这些变量必须配置在 mx-core 进程的环境中。mx-migrate(数据库结构迁移步骤)是独立进程,在官方编排文件里它引用同一个 *mx-env 块,所以改一处两边都生效;但如果你自定义了编排,注意别只给 app 服务单独加。

核心必填

变量名说明默认值示例
JWT_SECRETJWT 签名密钥。运行时不做长度校验,建议 16-32 个字符。未设置时 token 会在重启后全部失效-my-secret-key
JWTSECRETJWT_SECRET 的别名,两者都设置时以 JWT_SECRET 为准-my-secret-key
JWT_EXPIRE登录令牌有效期(天)1430
ALLOWED_ORIGINS允许的跨域域名。自建站必须显式设置,否则你的域名不在白名单内内置默认白名单(innei.ren、localhost:*、*.dev、*.vercel.app 等)example.com,www.example.com
SNOWFLAKE_WORKER_ID工作节点 ID,取值 0-1023 的整数。生产环境不设置会直接启动失败,单实例填 1-1

cluster 模式下可安全使用多实例:服务端会基于 NODE_APP_INSTANCE 为每个实例分配不重叠的 ID,所以只需提供同一个基准值。

PostgreSQL 数据库

变量名说明默认值示例
PG_URL完整连接字符串(推荐)-postgresql://mx:mx@localhost:5432/mx_core
PG_CONNECTION_STRINGPG_URL 的别名,两者都设置时以 PG_URL 为准-postgresql://mx:mx@localhost:5432/mx_core
PG_HOST数据库地址127.0.0.1localhost
PG_PORT端口54325432
PG_USER用户名mxmx
PG_PASSWORD密码mxsecret
PG_DATABASE数据库名mx_coremx_core
PG_MAX_POOL_SIZE连接池大小2020
PG_SSL启用 SSLfalsetrue

Redis

变量名说明默认值示例
REDIS_URL完整连接串,优先级最高,会覆盖下面三项。支持 redis:// / rediss://(rediss 自动启用 TLS),path 里的 /0 表示 db 序号-redis://:pass@host:6379/0
REDIS_CONNECTIONREDIS_URL 的别名--
REDIS_CONNECTION_STRINGREDIS_URL 的别名,优先级最高--
REDIS_HOST地址localhostredis
REDIS_PORT端口63796379
REDIS_PASSWORD密码-secret

安全与加密

变量名说明默认值示例
ENCRYPT_ENABLE启用加密false(⚠️ 只要设置了密钥就等价于 true)true
ENCRYPT_KEY加密密钥,必须正好 64 位自动取 machine-id 派生openssl rand -hex 32
MX_ENCRYPT_KEYENCRYPT_KEY 的别名,优先于 ENCRYPT_KEY同上-
MX_ENCRYPT_ENABLEENCRYPT_ENABLE 的别名,优先于 ENCRYPT_ENABLE同上-
ENCRYPT_ALGORITHM加密算法aes-256-ecbaes-256-cbc
ADMIN_UPDATE_S3_BASE_URL后台更新包(latest.json + admin-<version>.zip)的下载源https://admin-r2.innei.dev-

ENCRYPT_ENABLE 的判定逻辑是「未设置时,回落到是否设置了密钥」。只填密钥、不管开关,加密就已经开启。 想暂不加密必须显式写 ENCRYPT_ENABLE=false。详见 数据加密。

缓存与限流

变量名说明默认值示例
CDN_CACHE_HEADER是否下发 CDN 缓存头(s-maxage)truetrue
FORCE_CACHE_HEADER是否下发强制缓存头(max-age)falsetrue
HTTP_CACHE_ENABLE_CDN_HEADERCDN_CACHE_HEADER 的启动参数别名同上-
HTTP_CACHE_ENABLE_FORCE_CACHE_HEADERFORCE_CACHE_HEADER 的启动参数别名同上-
THROTTLE_TTL限流窗口(秒)1010
THROTTLE_LIMIT窗口内限流次数100100

API 缓存的开关由服务端按运行模式决定(开发模式自动关闭),没有 DISABLE_CACHE 这个生效的环境变量。

集群

变量名说明默认值示例
CLUSTER是否开启集群模式。布尔值,想显式关闭必须写 CLUSTER=false,留空或写别的值会被当作真值falsefalse
CLUSTER_WORKERS集群工作进程数-4
TRUST_PROXY信任的代理跳数或可信代理 IP / CIDR 列表。多层代理(CDN + Nginx)时必须设置,否则取到的客户端 IP 不对,会连带影响限流只信 1 跳2

调试与遥测

变量名说明默认值示例
DEBUG_MODE调试模式,仅当值为 1 时开启未开启1
DEBUG_MEMORY_DUMP内存快照转储falsetrue
MX_DEBUG_MEMORY_DUMPDEBUG_MEMORY_DUMP 的别名,优先于它同上-
HTTP_REQUEST_VERBOSE打印完整请求日志truefalse
DISABLE_TELEMETRY关闭匿名遥测未禁用true
MX_DISABLE_TELEMETRYDISABLE_TELEMETRY 的别名,优先于它同上-

推送中继

变量名说明默认值示例
MX_PUSH_RELAY_ORIGINSmx-core 允许连接的 Push Relay 来源,逗号分隔的 HTTPS origin。未配置时使用 Push Relay 会直接报错-https://relay.example.com
Push Relay origin is not allowed; configure MX_PUSH_RELAY_ORIGINS on mx-core

其他

变量名说明默认值示例
PORT服务端口23333000
TZ时区。属于 Node 运行时约定,不是 mx-core 自己的配置项;Asia/Shanghai 是官方 docker-compose.yml 的预设值,源码部署时默认跟随系统时区跟随系统UTC
NODE_ENV运行环境,production 会启用接口前缀、限流等正式行为-production
MX_FILE_STORAGE_ROOT本地文件存储根目录-/data/files
MIGRATIONS_DIR数据库迁移 SQL 目录-/app/migrations
GITHUB_TOKEN调用 GitHub API 时使用,用于读取发布信息-ghp_...
AGENT_BROWSER_BINAI Agent 使用的浏览器可执行文件路径,仅 Open Graph 截图功能需要-/usr/bin/chromium
AGENT_BROWSER_MAX_CONCURRENTAI Agent 浏览器最大并发数-2
AGENT_BROWSER_IDLE_MSAI Agent 浏览器空闲回收时间(毫秒)-300000

AGENT_BROWSER_* 三项只在启用 Open Graph 截图时需要,普通部署无需配置。

当前版本未生效的选项

以下选项在启动参数里仍然存在,但服务端从未读取,设置不会有任何效果:

选项说明
DISABLE_CACHE / --disable_cache缓存开关实际由运行模式决定
--http_cache_ttl缓存 TTL 被硬编码为 15 秒
--color保留给终端着色的开关,当前无效果