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_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= # 可选,未配置时自动生成随机串


## 登录界面

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

```bash
STEEDOS_TENANT_ENABLE_REGISTER=true  # 允许创建账户,空库时默认true
STEEDOS_TENANT_ENABLE_FORGET_PASSWORD=true  # 允许密码密码,设置为true时将显示找回密码链接用于找回密码,默认falseSTEEDOS_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

文件预览

华炎魔方支持在线预览PDF及Office文件,只需要配置对应的文件预览服务地址即可。

如果配置了文件预览服务,点击附件标题还是会下载附件,可以点击对应的预览按钮来直接打开文件,目前以下界面支持在线预览功能:

  • 审批王 的申请单详细界面的附件列表和正文文件,其附件标题旁边会显示预览按钮。
  • 华炎魔方对象记录详细界面的附件列表,比如合同详细界面的附件列表,每条附件记录右侧的下拉框列表会显示预览按钮。

需升级到2.4最新版,否则会报附件跨域问题;如果未配置文件预览服务,只能点击附件标题来下载文件,然后在本地查看文件内容。

修改配置文件steedos.config.js,修改为:

require('dotenv-flow').config({
    path: process.cwd(),
    silent: true
});
module.exports = {
    ......
    started(broker) {
        broker.createService(require("@steedos/service-enterprise"));
    },
    // 添加settings自定义配置
    settings: {
        public: {
            webservices: {
                pdfOnline: {
                    url: "https://unpkg.steedos.cn/@steedos/pdfjs-dist@1.0.0/web/viewer.html?rangeChunkSize=1024&file="
                },
                officeOnline: {
                    url: "https://view.officeapps.live.com/op/view.aspx?src="
                }
            }
        }
    }
};
  • public.webservices.officeOnline.url: Office文件在线预览,需配置的预览服务地址,上述已配置的地址是微软提供的Office文件在线预览服务地址。

Office文件预览注意事项

PDF文件预览服务是支持IP地址访问的,Office文件预览服务则与之不同,如果使用上述配置的微软在线预览服务时,需采用域名及默认端口访问,不能使用IP地址及非默认端口。

邮件配置

配置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

密码规则配置

密码的复杂度是通过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: ‘不符合表达式时的提示消息’}>
  • 配置了多个密码规则时会同时生效,上述示例中配置的规则是会同时生效的。

定时任务配置

配置定时任务的属性。

STEEDOS_CRON_BUILD_INDEX="0 0 * * * *"
STEEDOS_CRON_WORKFLOW_RULE='*/10 * * * * *'
STEEDOS_CRON_MAILQUEUE_INTERVAL=10000
STEEDOS_CRON_PUSH_INTERVAL=1000
STEEDOS_CRON_WEBHOOKQUEUE_INTERVAL=10000
STEEDOS_CRON_INSTANCERECORDQUEUE_INTERVAL=10000
STEEDOS_CRON_SMSQUEUE_INTERVAL=1000
STEEDOS_CRON_OBJECTWEBHOOKSQUEUE_INTERVAL=10000
  • STEEDOS_CRON_BUILD_INDEX: 创建数据库索引的执行时间,如上面的“0 0 * * * *”意为每小时为数据库执行一次创建索引操作,已存在的索引不会重复创建。
  • STEEDOS_CRON_WORKFLOW_RULE: 工作流规则队列的执行时间,基于时间的工作流操作依赖此配置,如上面的“/10 * * * *”意为每10秒执行。
  • STEEDOS_CRON_MAILQUEUE_INTERVAL: 邮件队列的轮询间隔(单位毫秒)
  • STEEDOS_CRON_PUSH_INTERVAL: 消息推送的轮询间隔(单位毫秒)
  • STEEDOS_CRON_WEBHOOKQUEUE_INTERVAL: 流程触发器队列的轮询间隔(单位毫秒)
  • STEEDOS_CRON_INSTANCERECORDQUEUE_INTERVAL: 对象流程队列的轮询间隔(单位毫秒)
  • STEEDOS_CRON_SMSQUEUE_INTERVAL: 短信发送队列的轮询间隔(单位毫秒)
  • STEEDOS_CRON_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: 用户名规则正则表达式。