# opsx-licence - 环境变量配置模板 # 复制此文件为 .env 并根据需要修改 # Docker: cp .env.example .env && ./run.sh docker up # ============================================ # 后端配置 (backend) # ============================================ # 服务器端口 PORT=9001 # 运行模式: debug / release(生产 / Docker 请用 release) GIN_MODE=release # JWT 密钥(生产环境必须修改!) JWT_SECRET=your-super-secret-key-change-this-in-production # 离线许可证签发 seed(32 字节 hex)。生产必须固定;轮换需同步桌面公钥。 # 生成示例: openssl rand -hex 32 # 当前生产公钥(桌面已嵌入): 108375d485c58a1a738f93c2cbb838f76331de981ee5da13d90a1f280672131d # OFFLINE_LICENSE_SEED= # 机密字段信封加密主密钥(64 位 hex = 32 字节)。加密 DB 中的支付网关私钥/ # webhook 密钥/节点互联密钥;缺失则启动失败。双节点必须配置相同值! # 生成示例: openssl rand -hex 32 # OPSLIC_MASTER_KEY= # 信任代理 CIDR(逗号分隔)。直连公网的节点留空(不信任任何 X-Forwarded-For); # 经 nginx 反代的节点填反代机器的内网网段,否则限流可被伪造 XFF 绕过。 # 例: TRUSTED_PROXIES=192.168.14.0/24 # TRUSTED_PROXIES= # 客户端授权防护 # 过期宽限天数(仅商业过期;吊销/暂停无宽限,立即生效) GRACE_PERIOD_DAYS=15 # 单序列号 24 小时内新设备激活上限(0 = 不限制),抑制换座轮换共享 ACTIVATE_DAILY_LIMIT=5 # 激活记录在线状态有效期(分钟)。默认 8 天,适配客户端周检节奏; # 如客户端心跳更频繁可调小(如 30 = 在线即 30 分钟内活跃) ONLINE_TTL_MINUTES=11520 # 解绑是否强制校验设备激活令牌(新激活的设备必须持令牌才能解绑,防偷座) DEACTIVATE_REQUIRE_TOKEN=true # 数据库配置 # 可选: sqlite / mysql / postgres DB_DRIVER=sqlite # 本地开发可用相对路径;Docker Compose 会覆盖为 /data/db.sqlite3 DB_NAME=db.sqlite3 # MySQL 配置(使用 mysql 时填写) # DB_HOST=127.0.0.1 # DB_PORT=3306 # DB_USER=root # DB_PASSWORD=your-password # DB_NAME=opsx_licence # PostgreSQL 配置(使用 postgres 时填写) # DB_HOST=127.0.0.1 # DB_PORT=5432 # DB_USER=postgres # DB_PASSWORD=your-password # DB_NAME=opsx_licence # CORS 配置(多个用逗号分隔) # CORS_ORIGINS=http://localhost:5181,http://127.0.0.1:5181 # ============================================ # Waffo 支付(OpsXShell 收银台 · pancake.waffo.ai) # ============================================ # 店铺: https://pancake.waffo.ai/store/opsxshell-pwsi6m4n # 包年一次性: PROD_1BIezCi932IbgCzRIV8hcJ (type=onetime, currency=CNY) # 永久买断: PROD_0pcnzzT4nalEkkcdyIUoD5 (type=onetime, currency=CNY) # 勿设置单一 WAFFO_CHECKOUT_URL,否则无法按档位分流商品 WAFFO_STORE_SLUG=opsxshell-pwsi6m4n WAFFO_PRODUCT_ID=PROD_0pcnzzT4nalEkkcdyIUoD5 WAFFO_PRODUCT_ID_YEARLY=PROD_1BIezCi932IbgCzRIV8hcJ WAFFO_PRODUCT_ID_PERPETUAL=PROD_0pcnzzT4nalEkkcdyIUoD5 WAFFO_CURRENCY=CNY WAFFO_CURRENCY_YEARLY=CNY WAFFO_CURRENCY_PERPETUAL=CNY # test | live(test 时自动附加 test=true;API Key 会话由 Dashboard 环境决定) WAFFO_ENVIRONMENT=test # 支付成功回跳(桌面端 deep link;CreateOrder/Checkout 的 return_url 可覆盖) SUCCESS_URL=https://l123.91ai.io/api/v1/purchase/success # --- 官方打通必填(API Key 模式,见 https://docs.waffo.ai/zh/integrate/ai-integration)--- # Dashboard → Settings → API Keys:Merchant ID + RSA Private Key # 有这两项时走 POST /v1/actions/checkout/create-session,并把本系统 ORD-* 写入 orderMerchantExternalId # 没有则回退到 hosted store URL(无法可靠对账,仅调试用) # WAFFO_MERCHANT_ID=mch_xxx # 私钥 PEM(可用真实换行,或把换行写成 \n);勿提交仓库 # WAFFO_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY----- # 或 Base64 整段 PEM: # WAFFO_PRIVATE_KEY_BASE64= # 兼容旧名: # WAFFO_PRIVATE_KEY_PEM= # Dashboard → Settings → Webhooks: # URL: https://你的域名/api/v1/webhooks/waffo (尽量 HTTPS;Raw JSON;事件 order.completed) # 当前公网: https://l123.91ai.io/api/v1/webhooks/waffo # 验签公钥(RSA PEM)或共享密钥;配置后强制校验 X-Waffo-Signature # WAFFO_WEBHOOK_PUBLIC_KEY= # WAFFO_WEBHOOK_SECRET= # 通用回调 /api/v1/webhooks/payment 在 release 下必须配置,并通过 X-Webhook-Secret 传入 # INTERNAL_WEBHOOK_SECRET= # ============================================ # Docker Compose # ============================================ # ============================================ # 支付配置加密(后台「支付配置」页 · 微信支付 / 支付宝) # ============================================ # 敏感字段(微信 APIv3 密钥、支付宝应用私钥/公钥)入库前用 AES-256-GCM 加密, # 主密钥只从环境变量读取,绝不写入数据库或仓库。生成方式二选一: # openssl rand -hex 32 # 64 位 hex # openssl rand -base64 32 # 32 字节 base64 # 未设置时系统会退化为用 JWT_SECRET 派生主密钥(可开箱使用,但轮换 JWT_SECRET 会导致 # 已保存的支付密钥无法解密,必须重新填写)——生产环境请显式设置本变量。 # 注意:主密钥一旦更换,已保存的密文全部失效。 # PAYMENT_SECRET_KEY= # 支付证书/私钥落地目录(容器内数据卷,位于仓库之外); # 目录权限 0700、文件 0600,不通过任何静态路由对外暴露。默认 /data/payment-certs # PAYMENT_CERT_DIR=/data/payment-certs # 宿主机映射端口(容器内固定 9001) HOST_PORT=9001 VERSION=latest # ============================================ # 前端配置 (frontend) # ============================================ # 开发环境 API 地址 VITE_API_BASE_URL=http://localhost:9001/api # 生产环境 API 地址(构建时注入) # VITE_APP_BASE_API=/api