# ============================================================================= # s-file 客户侧静态默认配置(两台机器共用同一份,现场一般不用改) # # 随角色/环境变化的取值一律由 docker-compose 的环境变量注入,本文件不放: # 数据库/Redis/MQ 地址与口令、JWT 密钥、用户初始密码、传输方向与摆渡目录、 # MeshSafe 开关与凭证、MQ 交换机命名 —— 全部在 .env 里填 # 这样交付物里不存在任何写死的口令或密钥 # ============================================================================= server: port: 8080 spring: application: name: s-file datasource: driver-class-name: org.postgresql.Driver type: com.alibaba.druid.pool.DruidDataSource druid: initial-size: 5 min-idle: 5 max-active: 50 validation-query: SELECT 1 test-while-idle: true # 摆渡解包/送检会在多任务里并发取连接,压太低会出现等待 max-wait: 10000 redis: timeout: 5000 lettuce: pool: max-active: 16 max-idle: 8 servlet: multipart: max-file-size: 500MB max-request-size: 500MB main: allow-bean-definition-overriding: true mybatis-plus: mapper-locations: classpath*:com/senmesh/**/mapper/*.xml # 平台编码,需与 sql/02-init-data.sql 里 uc_platform.platform_code 一致 system: code: 1 security: jwt: enable: true # secret 由环境变量 SECURITY_JWT_SECRET 注入,勿在此填写 expiration: 86400000 header: Authorization ignoring: /error,/favicon.ico login-page: /login superior-only: false # 单机自闭环部署:权限走本地库,不接外部用户中心 use-local: true allow-if-all-abstain-decisions: true oauth2: enable: false not-logs: "" anonymous: "" # 新用户初始密码由环境变量 USER_DEFAULT_PASSWORD 注入 user: default: password: ${USER_DEFAULT_PASSWORD:} file: # 这个前缀必须与老系统一致:库里 xs_file_record.file_path 存的是拼接好的绝对路径, # 换前缀 = 历史文件全部读不到(要迁数据)。compose 里 app 的挂载点必须与这里逐字相同 upload-dir: /var/s-file/upload storage: type: local transfer: # location / send-dir / receive-dir / monitor.cron 均由环境变量注入 # 解包时是否再做一次内容风险识别(依赖下面的 dify,未部署 dify 时保持 false) unpack-risk-check: false monitor: # 单轮处理时间预算(秒)。超预算即结束本轮,剩余留给下一轮。 # 与监听周期配套:周期 5 秒则预算留 4 秒,保证两轮不互相挤压。 # 目录持续积压(日志「目录剩余待处理」超过 50)时调大此值 round-budget-seconds: 4 # 单轮兜底个数上限,防止极端场景单轮过长 round-max-files: 500 # 包内单个文件大小上限(MB)。解包时整个文件读进堆,峰值约 2-3 倍文件大小, # 超限直接标 .error 而不是解包到 OOM。按 APP_JAVA_OPTS 的 -Xmx 调整:-Xmx3g 对应 512 max-unpack-size-mb: 512 # 校验不通过或解包异常,且文件静止超过该秒数即判定为坏包,标 .error 停止重试。 # 用于区分「光闸还在搬」与「搬完了但是坏包」,必须大于光闸搬运单个包的最长时间 stale-after-seconds: 300 # 内容风险识别(Dify)。未部署 Dify 时留空并保持 file.transfer.unpack-risk-check=false dify: risk: rule: api-key: "" scan: api-key: "" # MeshSafe 全段由环境变量注入(MESHSAFE_*),未部署时 MESHSAFE_ENABLED=false 即可, # 前端会自动隐藏「安全检测」列,跨网摆渡不受影响 meshsafe: review-sync-to-meshsafe: true # 接口文档在生产关闭 swagger: enable: false # 日志文件路径与格式沿用老系统(/usr/local/logs/s-file.log), # compose 把宿主机 volumes/logs 挂到 /usr/local/logs,日志直接落数据盘、重装不丢 logging: file: name: /usr/local/logs/s-file.log pattern: console: "%d{yyyy/MM/dd-HH:mm:ss} %X{traceId:-} [%thread] %-5level %logger- %msg%n" file: "%d{yyyy/MM/dd-HH:mm:ss} %X{traceId:-} [%thread] %-5level %logger- %msg%n" logback: rollingpolicy: # 老系统没配轮转,日志单文件会一直长;这里按天切、最多留 30 天 max-history: 30 level: com.senmesh: info