跳到主要内容
Mix SpaceMix Space

使用外部数据库

配置外部 Redis 或 PostgreSQL 服务

如果你需要使用来自远端或非容器内的 Redis / PostgreSQL 服务,可以通过环境变量或启动参数传入配置。

以下环境变量需要配置在 mx-core 进程的环境中。mx-migrate(数据库结构迁移步骤)是独立进程,不会继承 services.app 里设置的全部变量。

外部 Redis

支持传入的参数:

参数说明
redis_connection_string完整连接串,优先级最高,会覆盖下面三项。支持 redis:// / rediss://(rediss 会自动启用 TLS),path 里的 /0 表示 db 序号。Docker 环境变量为 REDIS_URL(也接受 REDIS_CONNECTION / REDIS_CONNECTION_STRING)
redis_hostRedis 服务地址,域名或 IP
redis_portRedis 服务端口,默认 6379
redis_passwordRedis 服务密码

Docker 部署

在 docker-compose.yml 的 services.app.environment 中添加:

services:
  app:
    container_name: mx-server
    image: innei/mx-server:latest
    environment:
      - TZ=Asia/Shanghai
      - NODE_ENV=production
      - REDIS_URL=redis://:redis?passwd@远端地址:6379/0
      - ALLOWED_ORIGINS=localhost
      - JWT_SECRET=YOUR_SUPER_SECURED_JWT_SECRET_STRING
      - SNOWFLAKE_WORKER_ID=1
    volumes:
      - ./data/mx-space:/root/.mx-space

修改完成后执行 docker compose up -d 重启服务。

源码部署

修改 ecosystem.config.cjs,在 script 项中添加参数:

      script: 'out/main.mjs',
+     script: 'out/main.mjs --redis_host=远端地址 --redis_password=redis?passwd',

然后重启服务:

pm2 restart ecosystem.config.cjs

外部 PostgreSQL

支持传入的参数:(Docker 中为对应大写环境变量)

参数说明
pg_connection_string连接地址(postgresql:// 或 postgres:// 开头),优先级高于以下五项。Docker 环境变量为 PG_URL(也接受 PG_CONNECTION_STRING)
pg_hostPostgreSQL 服务地址
pg_portPostgreSQL 服务端口,默认 5432
pg_userPostgreSQL 用户名,默认 mx
pg_passwordPostgreSQL 密码,默认 mx
pg_databasePostgreSQL 数据库名,默认 mx_core
pg_ssl是否启用 SSL 连接,true 为启用,默认 false
pg_max_pool_size连接池大小,默认 20

如果使用密码登录,必须同时传入 user 和 password,建议对数据库划分好用户权限。

Docker 部署

在 docker-compose.yml 的 services.app.environment 中添加:

services:
  app:
    container_name: mx-server
    image: innei/mx-server:latest
    environment:
      - TZ=Asia/Shanghai
      - NODE_ENV=production
      - PG_URL=postgresql://postgres-test:db?passwd@远端地址:5432/mx_core
      - REDIS_HOST=redis
      - ALLOWED_ORIGINS=localhost
      - JWT_SECRET=YOUR_SUPER_SECURED_JWT_SECRET_STRING
      - SNOWFLAKE_WORKER_ID=1
    volumes:
      - ./data/mx-space:/root/.mx-space

修改完成后执行 docker compose up -d 重启服务。

SNOWFLAKE_WORKER_ID 是必填项,取值为 0-1023 的整数。生产环境未设置时 mx-core 会直接启动失败并报 SNOWFLAKE_WORKER_ID is required,单实例部署填 1 即可。

源码部署

修改 ecosystem.config.cjs,在 script 项中添加参数:

      script: 'out/main.mjs',
+     script: 'out/main.mjs --pg_host=远端地址 --pg_user=postgres-test --pg_password=db?passwd --pg_database=mx_core',

然后重启服务:

pm2 restart ecosystem.config.cjs