Skip to content

配置文件详解 ​

后端启动时读取 config.yml(用 --config 路径 指定,默认是当前目录下的 config.yml)。 仓库里的 backend/config.example.yml 是模板,复制一份改名即可。

  • 配置文件里没写的项使用下表中的默认值;
  • 每一项都可以用环境变量覆盖,见 环境变量覆盖;
  • 改完配置要重启后端才生效。

哪些东西不在配置文件里

站点名、Logo、主题色、支付渠道、邮件 SMTP、验证码、注册开关等“运营设置”都在管理后台里改, 保存后立即生效,不用重启。配置文件只放“启动时就要确定”的东西。

app:应用密钥 ​

键默认说明
app.secret_key无,必填加密数据库敏感字段(支付密钥、对接密钥等)用的密钥来源。至少 16 位,上线后不要修改,否则已加密的数据无法解密
app.totp_issuerZebra-Store两步验证 App 里显示的发行方名称

server:HTTP 服务 ​

键默认说明
server.host0.0.0.0监听地址。前面有反向代理时建议 127.0.0.1;Docker 里保持 0.0.0.0
server.port8081监听端口
server.modedebugdebug 或 release,生产环境用 release
server.trusted_proxies["127.0.0.1/32", "::1/128"]信任哪些反向代理传来的真实 IP(X-Forwarded-For)。IP 或 CIDR 网段;拒绝 0.0.0.0/0

log:日志 ​

键默认说明
log.levelinfotrace / debug / info / warn / error,也可以写更细的过滤规则,例如 info,zs_infra=debug
log.jsonfalsetrue 时每行输出一个 JSON,方便接入日志系统
log.dir空保留项(与原项目一致),当前版本日志只输出到标准输出,由 systemd / Docker 收集

database:数据库 ​

键默认说明
database.urlsqlite://data/zebra.db?mode=rwc数据库地址,开头决定类型,见 切换数据库
database.max_connections10连接池上限
database.min_connections1连接池下限
database.connect_timeout_seconds10连接超时
database.idle_timeout_seconds600空闲连接回收时间
database.sql_logfalse打印 SQL

jwt / user_jwt:登录令牌 ​

键默认说明
jwt.secret无,必填管理员登录令牌的签名密钥,至少 16 位
jwt.expire_hours24管理员登录多久后过期(小时)
user_jwt.secret无,必填买家登录令牌的签名密钥,至少 16 位
user_jwt.expire_hours24买家登录有效期(小时)
user_jwt.remember_me_expire_hours168勾选“记住我”时的有效期(小时,默认 7 天)

app.secret_key、jwt.secret、user_jwt.secret 三个值必须互不相同,否则程序拒绝启动。 修改 jwt.secret 或 user_jwt.secret 会让所有人需要重新登录。

bootstrap:首次启动 ​

键默认说明
bootstrap.default_admin_usernameadmin第一次启动时创建的超级管理员用户名
bootstrap.default_admin_password空这个管理员的密码。只在数据库里还没有该管理员时使用,之后修改它不会改变已有密码(改密码请在后台或用命令行 admin reset-password)

telegram_auth / google_auth:第三方登录的初始值 ​

这两段是 Telegram 登录和 Google 登录的初始值,后台 系统设置 → Telegram设置 / Google登录 保存后以后台为准。

键说明
telegram_auth.enabled、bot_username、bot_token、client_secret、oidc_redirect_uri、mini_app_url、login_expire_seconds、replay_ttl_secondsTelegram 登录(Widget / OIDC / Mini App)
google_auth.enabled、client_idGoogle 登录

redis:可选 ​

键默认说明
redis.enabledfalse保留项。当前版本的缓存、限流和任务队列都在进程内和数据库中实现,不需要 Redis
redis.urlredis://127.0.0.1:6379/0同上
redis.prefixzs同上

queue:后台任务 ​

键默认说明
queue.concurrency8同时执行的后台任务数(发卡、邮件、采购、回调等)
queue.poll_interval_ms500多久检查一次新任务(毫秒)
queue.upstream_sync_interval5m上游商品库存/价格同步间隔(后台“上游同步”设置优先)

upload:上传 ​

键默认说明
upload.diruploads上传文件保存目录(相对运行目录)
upload.max_size10485760单个文件最大字节数(10 MB)
upload.allowed_typesjpeg / png / gif / webp允许的 MIME 类型
upload.allowed_extensions.jpg .jpeg .png .gif .webp允许的扩展名
upload.max_width / max_height4096图片最大宽高(像素)

cors:跨域 ​

键默认说明
cors.allowed_origins["*"]允许哪些网页来源调用接口。前后台和接口同域名部署时可以写你的域名,例如 ["https://shop.example.com"]
cors.allow_credentialstrue是否允许携带凭据
cors.max_age600预检请求缓存秒数

security:登录安全 ​

键默认说明
security.login_rate_limit.window_seconds300统计窗口(秒)
security.login_rate_limit.max_attempts5窗口内最多失败次数
security.login_rate_limit.block_seconds900超过后锁定多久(秒)
security.password_policy.min_length8密码最短长度
security.password_policy.require_upper / require_lower / require_number / require_specialtrue / true / true / false密码必须包含大写 / 小写 / 数字 / 特殊字符

email:邮件初始值 ​

SMTP 的初始值。后台 系统设置 → 邮件配置 (SMTP) 保存后以后台为准。

键默认说明
email.enabledfalse是否启用邮件
email.host / port空 / 465SMTP 服务器和端口
email.username / password空SMTP 账号
email.from / from_name空发件地址和发件人名称
email.use_ssl / use_tlstrue / false465 端口一般用 SSL,587 端口用 TLS(STARTTLS)
email.verify_code.expire_minutes10验证码有效期
email.verify_code.send_interval_seconds60重发间隔
email.verify_code.max_attempts5最多输错次数
email.verify_code.length6验证码位数

order:订单 ​

键默认说明
order.payment_expire_minutes15未付款订单多久自动取消(后台“基础配置”里的设置优先)
order.max_refund_days30付款后多少天内允许退款

reseller:分站 / 分销 ​

键默认说明
reseller.enabledfalse是否开启分销功能
reseller.main_hosts[localhost, 127.0.0.1, "::1"]主站的域名列表。用这些域名访问时是主站,其他已登记的域名是分站。记得加上你的主域名
reseller.subdomain_base空分站子域名的基础域名,例如 example.com,分销商就能用 xxx.example.com
reseller.self_apply_enabledtrue是否允许用户在前台自助申请成为分销商
reseller.settlement_confirm_days7分站利润的结算确认天数(0–3650),过了这么多天才能提现
reseller.trusted_forwarded_hostfalse是否信任反向代理传来的 X-Forwarded-Host。只有反向代理会改写 Host 时才需要打开

web:网页(保留项) ​

键默认说明
web.admin_path/admin保留项(与原项目一致)。当前版本后台的访问路径由打包参数 --base 和 Web 服务器配置决定
web.storefront_dir / web.admin_dir空保留项,当前版本由 Web 服务器直接提供网页

integration:站点对接 ​

键默认说明
integration.allow_private_addressesfalse是否允许对接请求访问内网 / 本机地址。只在可信的内网测试环境打开,打开后会有服务端请求伪造(SSRF)风险
integration.acg_faka_compattrue是否提供异次元发卡“共享店铺”接口 /shared/*。用户没有生成兼容密钥之前接口不会生效
integration.mcy_compattrue是否提供萌次元 OpenApi 接口 /plugin/open-api/*

启动时的校验 ​

下面任何一条不满足,程序都会拒绝启动,并在日志里说明原因:

  • 三个密钥为空、少于 16 位、还是示例值,或者有两个相同;
  • trusted_proxies 里有格式错误的地址,或者写了 /0;
  • database.url 不是 sqlite、mysql、postgres 开头。

斑马小铺 Zebra Store:dujiao-next 的 Rust + Vue 3 复刻版