# 生产环境示例:复制为 backend/.env 后再替换所有 change-* 占位值。 APP_ENV=production APP_ADDR=:8080 # Caddy 自动申请和续签 HTTPS 证书使用。 CADDY_DOMAIN=hfb.221329.cc.cd CADDY_EMAIL=admin@example.com # 选号网(hfb_show)独立域名,与主站同机;不部署选号网可留空。 # CADDY_SHOW_DOMAIN=show.example.com # 选号网源码目录(相对 hfb_sys 根或绝对路径),默认 ../hfb_show # HFB_SHOW_DIR=../hfb_show # 选号网 npm 源(国内服务器默认用 npmmirror,避免 registry.npmjs.org 超时) # NPM_REGISTRY=https://registry.npmmirror.com # MySQL 容器初始化变量,同时供后端 DSN 使用。 MYSQL_ROOT_PASSWORD=change-root-password MYSQL_DATABASE=hfb_sys MYSQL_USER=hfb MYSQL_PASSWORD=change-hfb-password MYSQL_DSN=hfb:change-hfb-password@tcp(mysql:3306)/hfb_sys?charset=utf8mb4&parseTime=True&loc=Local REDIS_ADDR=redis:6379 REDIS_PASSWORD= REDIS_DB=0 JWT_SECRET=change-to-a-long-random-secret # 前端后台页面入口;生产请改成不公开的单段路径,不要使用 /admin。 VITE_ADMIN_BASE_PATH=/manage-7x9k2p # 首次启动且管理员表为空时创建首个超级管理员;生产密码至少 12 位且包含字母和数字。 # 创建成功后建议从 .env 移除,后续管理员通过后台维护。 ADMIN_BOOTSTRAP_USERNAME=change-admin-username ADMIN_BOOTSTRAP_PASSWORD=change-admin-password-123 ADMIN_BOOTSTRAP_NICKNAME=超级管理员 # API 限流:默认开启,每个 IP 每分钟 300 次。 RATE_LIMIT_ENABLED=true RATE_LIMIT_REQUESTS_PER_MINUTE=300 # 后端容器使用宿主机业务用户的 UID/GID,服务器上可用 id -u yml、id -g yml 查询。 BACKEND_UID=1000 BACKEND_GID=1000 LOG_LEVEL=info LOG_DIR=/app/logs LOG_ENABLE_CONSOLE=false LOG_ENABLE_FILE=true LOG_RETAIN_DAYS=14 # 主对象存储:图片等数据已迁移到阿里云 OSS,MinIO 已从生产编排移除。 # 杭州 ECS 应使用内网 Endpoint:https://oss-cn-hangzhou-internal.aliyuncs.com # OSS 的 S3 兼容访问使用 cn-hangzhou 区域和 DNS Bucket 寻址。 STORAGE_ENDPOINT=https://oss-cn-hangzhou-internal.aliyuncs.com STORAGE_BUCKET=hfb-sys-assets STORAGE_ACCESS_KEY_ID=change-oss-access-key-id STORAGE_SECRET_ACCESS_KEY=change-oss-access-key-secret STORAGE_REGION=cn-hangzhou STORAGE_BUCKET_LOOKUP=dns # 历史镜像写入配置,迁移完成后保持为空。 STORAGE_MIRROR_ENDPOINT= STORAGE_MIRROR_BUCKET= STORAGE_MIRROR_ACCESS_KEY_ID= STORAGE_MIRROR_SECRET_ACCESS_KEY= STORAGE_MIRROR_REGION= STORAGE_MIRROR_BUCKET_LOOKUP= # 生产环境建议接入真实短信服务;未配置时不要使用 mock 对外运营。 SMS_PROVIDER=aliyun ALIYUN_ACCESS_KEY_ID= ALIYUN_ACCESS_KEY_SECRET= ALIYUN_SMS_ENDPOINT=dysmsapi.aliyuncs.com ALIYUN_SMS_SIGN_NAME= ALIYUN_SMS_LOGIN_TEMPLATE_CODE= # 生产环境建议接入真实实名服务;未配置时不要使用 mock 对外运营。 REALNAME_PROVIDER=cloudmarket REALNAME_CLOUDMARKET_URL=https://sinocheck2.market.alicloudapi.com/fortest/ttttt REALNAME_CLOUDMARKET_APPCODE= # 支付商户、网关和回调等业务配置通过后台支付配置页维护。 # 支付配置加密密钥(必须为 16、24 或 32 字节,生产环境必填) # 用于加密存储支付商户配置中的敏感信息(sign_key、notify_key) # 生成方式:openssl rand -hex 16 # 警告:此密钥一旦设置不要更改,否则已有配置无法解密 PAYMENT_CONFIG_ENCRYPTION_KEY=change-to-32-byte-encryption-key # 业务字段加密密钥(必须为 16、24 或 32 字节,生产环境必填且与 legacy 不同) # 用于加密实名信息(姓名、身份证)和收款账号(银行卡/支付宝号) # 生成方式:openssl rand -hex 16 FIELD_ENCRYPTION_KEY=change-to-32-byte-field-encryption-key # 业务字段旧密钥(密钥轮换期间用于透明解出旧密文,验证全部密文轮换完后删除) # 首次部署若数据库已有用旧硬编码密钥加密的存量数据,填 hfb-sys-2024-secret-key-32bytes! FIELD_ENCRYPTION_LEGACY_KEY= # 开放导入接口可选签名密钥;内部调用方暂不签名时可留空。 # 若启用签名,生成方式:openssl rand -hex 32 EXTERNAL_UPLOAD_SECRET= # 可选:逗号分隔的 IP 或 CIDR 白名单,例如 203.0.113.10,10.0.0.0/8。 EXTERNAL_UPLOAD_ALLOWED_IPS= # 在线备份(scripts/backup-online.sh / scripts/archive-binlog.sh)。所有项为生产必填。 # 本地备份根目录,必须是独立数据盘上的 /data 子目录;包含加密全量备份与 binlog 状态。 BACKUP_DIR=/data/backups # 隔离恢复演练的数据目录,必须与 BACKUP_DIR 不同;prepare 后的 MySQL 原始数据只放在这里。 BACKUP_RESTORE_DIR=/data/restore # 备份专用 OSS Bucket(与业务 Bucket 分离),ossutil 使用。 # 生成方式:ossutil config 交互配置,或环境变量 OSS_ACCESS_KEY_ID / OSS_ACCESS_KEY_SECRET。 BACKUP_OSS_URI=oss://hfb-backup # 客户端加密密码短语(独立保管,与业务密钥一同纳入 KMS/密码管理)。 # 生成方式:openssl rand -hex 32 BACKUP_PASSPHRASE=change-to-random-backup-passphrase # OSS 服务端 KMS 加密 Key ID,备份脚本强制使用,不可留空。 BACKUP_KMS_KEY_ID=change-kms-key-id # XtraBackup 专用 MySQL 账号,部署脚本会幂等创建并授予最小备份权限。 BACKUP_MYSQL_USER=hfb_backup # 生成方式:openssl rand -hex 24。不要和 MySQL 应用账号或 root 密码复用。 BACKUP_MYSQL_PASSWORD=change-backup-mysql-password # 本地保留策略(OSS 侧用 Bucket 生命周期规则管理,见脚本头部注释)。 BACKUP_KEEP_DAILY=14 BACKUP_KEEP_WEEKLY=8 BACKUP_KEEP_MONTHLY=12