Files
order_site/.env.server.example
T

123 lines
4.8 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 生产部署模板。复制为 .env 后替换所有 change-me 值。
# 真实密钥不要提交到 git。
# App / Caddy
APP_DOMAIN=order.khhao.com
CADDY_SITE_ADDR=https://order.khhao.com
WORKER_SITE_ADDR=https://worker.khhao.com
TZ=Asia/Shanghai
BACKEND_PORT=3000
# 反向代理层数:Caddy 后保持 1(默认),后端直连暴露时设为 false
HTTP_TRUST_PROXY=1
# 构建镜像源(可选,默认阿里云公共源)
# 阿里云 ECS 同地域内网可改为 mirrors.cloud.aliyuncs.com 加速 apt/apk
# DEBIAN_MIRROR=mirrors.aliyun.com
# ALPINE_MIRROR=mirrors.aliyun.com
# NPM_REGISTRY=https://registry.npmmirror.com
# Claim Links
CLAIM_BASE_URL=https://order.khhao.com/#/claim
CLAIM_TOKEN_TTL_HOURS=0
# Database
POSTGRES_DB=order_site
POSTGRES_USER=postgres
POSTGRES_PASSWORD=change-me-postgres-password
DATABASE_URL=postgres://postgres:change-me-postgres-password@postgres:5432/order_site
DATABASE_MAX_CONNECTIONS=8
DATABASE_IDLE_TIMEOUT_MS=30000
DATABASE_CONNECTION_TIMEOUT_MS=5000
DATABASE_STATEMENT_TIMEOUT_MS=15000
# 慢查询告警阈值;超过该时长的 SQL 只记录指纹和耗时,不记录参数值
DATABASE_SLOW_QUERY_THRESHOLD_MS=500
# PostgreSQL 原生慢查询日志阈值(毫秒);-1 关闭
POSTGRES_LOG_MIN_DURATION_STATEMENT_MS=500
# PostgreSQL 容器资源与性能参数。默认值按 4 核 8G 且与其他服务共用的
# 服务器设置;数据库独占或内存更足时可上调 shared_buffers 与
# effective_cache_size(后者只是规划器提示,不实际占用内存):
POSTGRES_MEM_LIMIT=1.5g
POSTGRES_CPUS=2
POSTGRES_SHARED_BUFFERS=384MB
POSTGRES_EFFECTIVE_CACHE_SIZE=4GB
POSTGRES_WORK_MEM=16MB
POSTGRES_MAINTENANCE_WORK_MEM=256MB
# 后端与 Web 容器限额(内存紧张的小机器可相应收紧)
BACKEND_MEM_LIMIT=768m
BACKEND_CPUS=1.5
WEB_MEM_LIMIT=256m
WEB_CPUS=0.5
# Logging
LOG_LEVEL=info
# integration-*.log:对接日志级别(debug|info|warn|error),默认 warn 只记异常
LOG_INTEGRATION_LEVEL=warn
LOG_RETENTION_DAYS=30
# 单个 app/integration 日志文件达到 20MB 后轮转,单日最多保留 5 个分片
LOG_MAX_FILE_SIZE_MB=20
LOG_MAX_FILES=5
# 数据库敏感报文/事件保留策略(天)。清理任务每天执行一次。
RAW_PAYLOAD_RETENTION_DAYS=180
TASK_EVENT_RETENTION_DAYS=180
WEBHOOK_EVENT_RETENTION_DAYS=180
AUDIT_LOG_RETENTION_DAYS=365
# 文件存储:生产使用阿里云 OSS(生产编排已移除 MinIO,仅本地开发使用)。
# STORAGE_MODE 取值 minio | dual | ossdual 仅在 MinIO→OSS 迁移/回滚期间使用。
STORAGE_MODE=oss
# 以下 MinIO 配置仅在 STORAGE_MODE=dual/minio(迁移回滚场景)时使用。
STORAGE_ENDPOINT=http://minio:9000
STORAGE_BUCKET=order-site
STORAGE_ACCESS_KEY_ID=change-me-storage-access-key
STORAGE_SECRET_ACCESS_KEY=change-me-storage-secret-key
STORAGE_REGION=us-east-1
STORAGE_MAX_UPLOAD_SIZE_MB=10
# 阿里云 OSS S3 兼容端点:ECS 与桶同地域时用内网地址(免流量费、低延迟)
STORAGE_OSS_ENDPOINT=https://oss-cn-hangzhou-internal.aliyuncs.com
STORAGE_OSS_BUCKET=change-me-oss-bucket
STORAGE_OSS_ACCESS_KEY_ID=change-me-oss-access-key
STORAGE_OSS_SECRET_ACCESS_KEY=change-me-oss-secret-key
STORAGE_OSS_REGION=oss-cn-hangzhou
# 数据库备份 → OSS(deploy/backup-db.sh 与 dist/db-backup.js 使用)。
# 默认复用上面的 STORAGE_OSS_* 上传到同桶 backups/ 前缀,以下仅需按需调整。
DB_BACKUP_OSS_PREFIX=backups/postgres
# 服务器本地保留的备份份数(OSS 端过期请配置桶生命周期规则)
DB_BACKUP_KEEP=7
# 建议为备份单独创建 RAM 用户、只授予 backups/ 前缀权限(策略见 docs/数据库备份与恢复.md);
# 使用独立桶/密钥时取消注释覆盖:
# DB_BACKUP_OSS_ENDPOINT=https://oss-cn-hangzhou-internal.aliyuncs.com
# DB_BACKUP_OSS_BUCKET=change-me-backup-bucket
# DB_BACKUP_OSS_ACCESS_KEY_ID=change-me-backup-access-key
# DB_BACKUP_OSS_SECRET_ACCESS_KEY=change-me-backup-secret-key
# DB_BACKUP_OSS_REGION=oss-cn-hangzhou
# Admin
ADMIN_SESSION_SECRET=change-me-long-random-session-secret
ADMIN_DEFAULT_USERS_JSON=[{"username":"admin","password":"change-me-admin-password","role":"admin"},{"username":"operator","password":"change-me-operator-password","role":"operator"}]
# 生产环境必须使用显式来源白名单,多个来源用逗号分隔。
CORS_ALLOWED_ORIGINS=https://order.khhao.com,https://worker.khhao.com
# 91Kaquan
KAQUAN91_USER_ID=
KAQUAN91_SECRET=
# 快手行业电子凭证
KUASHOU_INDUSTRY_APP_KEY=
KUASHOU_INDUSTRY_APP_SECRET=
KUASHOU_INDUSTRY_SIGN_SECRET=
KUASHOU_INDUSTRY_MESSAGE_SECRET=
# Cloudtentacles
CLOUDTENTACLES_DEVICE_ID=08bc9d8c-fd15-48ea-bc00-8d754076cafc
CLOUDTENTACLES_DEVICE_TYPE=1
# 接单平台短信验证码(打手注册)
WORKER_SMS_PROVIDER=mock
WORKER_SMS_ACCESS_KEY_ID=
WORKER_SMS_ACCESS_KEY_SECRET=
WORKER_SMS_SIGN_NAME=
WORKER_SMS_TEMPLATE_CODE=