1. 安装部署
  2. 参数配置

steedos.config.js 用于配置系统参数,位于项目的根目录。

建议不要直接修改此文件,其中的大部分参数可以通过环境变量设置。

2.2.52 之前的版本使用 steedos-config.yml 和 moleculer.config.js 配置系统参数,现已合并到统一的 steedos.config.js

环境变量

# 平台
PORT=5000
ROOT_URL=http://localhost:5000

# 微服务通讯 [https://moleculer.services/docs/0.14/networking.html](https://moleculer.services/zh/docs/0.14/networking.html)
TRANSPORTER=redis://127.0.0.1:6379

# 缓存 https://moleculer.services/zh/docs/0.14/caching.html
CACHER=redis://127.0.0.1:6379/1

# 数据库
MONGO_URL=mongodb://127.0.0.1:27017/steedos
MONGO_OPLOG_URL=mongodb://127.0.0.1:27017/local

# 开发环境元数据同步
[metadata]
METADATA_SERVER=http://localhost:5000
METADATA_APIKEY=#会自动填充为初始界面中输入的环境变量值

[steedos-cloud]
STEEDOS_CLOUD_SPACE_ID=#绑定云服务的魔方ID
STEEDOS_CLOUD_API_KEY=#云平台中创建的私有部署的API Key

平台初始化

华炎魔方新安装时,如果数据库中无用户记录,默认显示初始化向导界面。也可以通过以下环境变量自动初始化。

STEEDOS_INITIAL_USERNAME= # 用户名
STEEDOS_INITIAL_PASSWORD= # 密码
STEEDOS_INITIAL_NAME= # 可选,姓名,未配置时默认为用户名
STEEDOS_INITIAL_EMAIL= # 可选,邮箱
STEEDOS_INITIAL_MOBILE= # 可选,手机号
STEEDOS_INITIAL_TENANT_ID= # 可选,未配置时自动生成
STEEDOS_INITIAL_TENANT_NAME= # 可选,未配置时就是“我的公司”
STEEDOS_INITIAL_API_KEY= # 可选,未配置时自动生成随机串

登录界面

配置登录界面相关参数,例如是否允许注册、是否允许修改密码、是否允许创建企业。

STEEDOS_TENANT_ENABLE_REGISTER=true  # 允许创建账户,空库时默认true
STEEDOS_TENANT_ENABLE_FORGET_PASSWORD=true  # 允许密码密码,设置为true时将显示找回密码链接用于找回密码,默认false。
STEEDOS_TENANT_ENABLE_CREATE_TENANT=false  # 允许创建企业,默认只有空库时允许创建
STEEDOS_TENANT_ENABLE_PASSWORD_LOGIN=true # 允许使用密码登录,启用时,注册和登录都默认使用密码。默认true
STEEDOS_TENANT_ENABLE_BIND_EMAIL=false # 强制绑定邮箱,登录后必须输入和验证邮箱。默认false
STEEDOS_TENANT_ENABLE_BIND_MOBILE=false # 强制绑定手机号,登录后必须输入和验证手机号。默认false
STEEDOS_TENANT_ENABLE_EMAIL_CODE_LOGIN=false #允许使用邮箱验证码登录,启用时,注册和登录都默认使用验证码。
STEEDOS_TENANT_ENABLE_MOBILE_CODE_LOGIN=false # 允许使用手机验证码登录,启用时,注册和登录都默认使用验证码。
STEEDOS_TENANT_TOKEN_SECRET=  # 默认值 43位字符串, 每次重启服务时生成新的值
STEEDOS_TENANT_ACCESS_TOKEN_EXPIRES_IN= # 默认值 90d
STEEDOS_TENANT_REFRESH_TOKEN_EXPIRES_IN=  # 默认值 7d

文件存储

配置附件存储的相关参数。

本地

STEEDOS_CFS_STORE=local
STEEDOS_STORAGE_DIR=/app/storage

S3

附件可以保存在 S3 协议的服务器中,包括AW、阿里云、腾讯云的云存储服务,或是私有部署的 minio 服务

STEEDOS_CFS_STORE=S3
STEEDOS_CFS_AWS_S3_ENDPOINT=http://minio:9000
STEEDOS_CFS_AWS_S3_FORCE_PATH_STYLE=true
STEEDOS_CFS_AWS_S3_BUCKET=steedos-prod
STEEDOS_CFS_AWS_S3_ACCESS_KEY_ID=${MINIO_ROOT_USER:-steedos} 
STEEDOS_CFS_AWS_S3_SECRET_ACCESS_KEY=${MINIO_ROOT_PASSWORD:-steedos123}

免登录下载

默认系统中上传的头像、图片、附件需要登录之后才能下载。

配置以下变量可以设定免登录下载。

STEEDOS_CFS_DOWNLOAD_PUBLIC=avatars,images # 可选 avatars,images,files, 默认值为avatars

邮件配置

配置SMTP服务的相关参数,用于系统发送推送邮件。

email:
  from: ${STEEDOS_EMAIL_FROM}
  url: ${STEEDOS_EMAIL_URL}
  host: ${STEEDOS_EMAIL_HOST}
  port: ${STEEDOS_EMAIL_PORT}
  username: ${STEEDOS_EMAIL_USERNAME}
  password: ${STEEDOS_EMAIL_PASSWORD}
  secure: ${STEEDOS_EMAIL_SECURE}
  signname: ${STEEDOS_EMAIL_SIGNNAME}

OIDC 身份认证

企业版:配置 OpenID Connnect 单点登录的参数,可以连接 Keycloak 服务器。

# OpenID Connect
STEEDOS_IDENTITY_OIDC_ENABLED=true
STEEDOS_IDENTITY_OIDC_CONFIG_URL=https://id.steedos.cn/realms/master/.well-known/openid-configuration
STEEDOS_IDENTITY_OIDC_CLIENT_ID=steedos-oidc-public
STEEDOS_IDENTITY_OIDC_CLIENT_SECRET=none
STEEDOS_IDENTITY_OIDC_NAME=Steedos ID
STEEDOS_IDENTITY_OIDC_LOGO=
STEEDOS_IDENTITY_OIDC_REQUIRE_LOCAL_ACCOUNT=false

发送短信配置

配置手机短信服务,用于通过手机短信登录和接受账户提醒消息。

sms:
  qcloud:
    smsqueue_interval: 1000
    sdkappid: ${STEEDOS_SMS_QCLOUD_SDKAPPID}
    appkey: ${STEEDOS_SMS_QCLOUD_APPKEY}
    signname: ${STEEDOS_SMS_QCLOUD_SIGNNAME}

密码规则配置

密码的复杂度是通过password.policy 属性来控制的,值为正则表达式。

public:
  password:
    policy: ^[A-Za-z0-9]{8,}$
    policyError: "密码不能少于8位"
    policies:
      - policy: 123
        policyError: "密码必须包含123"
      - policy: 456
        policyError: "密码必须包含456"
    policyFunction: !
      function(password){
        if(password === '12345678'){
          throw new Error('密码不能是12345678');
        }
      }
  • public.password.policyFunction: string Function. 自定义验证函数(1个参数: 用户输入的password), 可通过import等手段引入验证库. 或者直接编写验证规则. 不符合规则时, 直接throw error即可.
  • public.password.policies: Array<{policy: ‘正则表达式’, policyError: ‘不符合表达式时的提示消息’}>
  • 配置了多个密码规则时会同时生效,上述示例中配置的规则是会同时生效的。

定时任务配置

配置定时任务的属性。

cron:
  build_index: "0 0 * * * *"
  statistics: "0 0 0 * * *"
  mailqueue_interval: 1000
  push_interval: 1000
  calendar_dav_interval: 30000
  calendar_remind: 60000
  webhookqueue_interval: 1000
  instancerecordqueue_interval: 10000
  objectwebhooksqueue_interval: 10000
  • build_index: 创建数据库索引的执行时间,如上面的“0 0 * * * *”意为每小时为数据库执行一次创建索引操作,已存在的索引不会重复创建。
  • statistics: 流程统计的执行时间,如上面的“0 0 0 * * *”意为每天的00:00:00
  • mailqueue_interval: 邮件队列的轮询间隔(单位毫秒)
  • push_interval: 消息推送的轮询间隔(单位毫秒)
  • calendar_dav_interval: 日历同步的轮询间隔(单位毫秒)
  • calendar_remind: 日程提醒的轮询间隔(单位毫秒)
  • webhookqueue_interval: 流程触发器队列的轮询间隔(单位毫秒)
  • instancerecordqueue_interval: 对象流程队列的轮询间隔(单位毫秒)
  • objectwebhooksqueue_interval: 对象触发器队列的轮询间隔(单位毫秒)

账户相关

配置账户相关参数。

accounts:
  mobile_phone_locales: ['zh-CN']
  mobile_regexp: '^[0-9]{11}$'
    is_username_skip_minrequiredlength: true
    UTF8_Names_Validation: '[A-Za-z0-9-_.\u00C0-\u017F\u4e00-\u9fa5]'
  • mobile_phone_locales: 此参数优先。手机号本地化,配置为zh-CN表示使用中国的11位手机号,要支持其他国家手机号请参考 validator
  • mobile_regexp: 手机号格式正则表达式,使用一个正则表达式来描述正确的手机号格式。
  • is_username_skip_minrequiredlength:是否跳过用户名最小位数限制,默认最小为6位。
  • UTF8_Names_Validation: 用户名规则正则表达式。