- JWT 记录 iat,exp=min(now+24h, iat+7d) - 已认证请求自动续签 httpOnly Cookie - 新增 ACCESS_TOKEN_IDLE_HOURS / ACCESS_TOKEN_MAX_HOURS
146 lines
6.1 KiB
Bash
146 lines
6.1 KiB
Bash
# ===== 环境变量配置 =====
|
||
# 复制此文件为 .env 并修改相应值
|
||
# Docker 部署时 docker-compose.yml 会自动读取 .env 文件
|
||
|
||
# JWT 密钥(生产环境必须设置!)
|
||
# 生成方式: python -c "import secrets; print(secrets.token_urlsafe(32))"
|
||
JWT_SECRET_KEY=
|
||
|
||
# 后台登录会话:空闲 24h 过期,绝对上限 7d(活跃请求自动续期,不会突破 7d)
|
||
# 旧变量 ACCESS_TOKEN_EXPIRE_HOURS 仍可作为 ACCESS_TOKEN_IDLE_HOURS 的回退值。
|
||
ACCESS_TOKEN_IDLE_HOURS=24
|
||
ACCESS_TOKEN_MAX_HOURS=168
|
||
|
||
# 敏感字段落盘加密密钥(生产环境必须设置且长期保持不变!)
|
||
# 用于加密账号密码、邮箱密码、Cookie、代理密钥等数据库字段
|
||
# 生成方式: python -c "import secrets; print(secrets.token_urlsafe(32))"
|
||
APP_ENCRYPTION_KEY=
|
||
|
||
# 默认管理员账号(仅首次启动建库时生效)
|
||
ADMIN_USERNAME=admin
|
||
ADMIN_PASSWORD=admin123
|
||
|
||
# Docker 对外端口(容器内仍监听 8800;服务器当前使用 8000)
|
||
APP_PORT=8000
|
||
|
||
# 应用日志等级:DEBUG、INFO、WARNING、ERROR、CRITICAL;生产环境建议保持 INFO。
|
||
LOG_LEVEL=INFO
|
||
# 单日日志 app-YYYY-MM-DD.log 达到该大小时自动压缩归档;支持 K/M/G,例如 100M。
|
||
LOG_ROTATION_SIZE=50M
|
||
# 压缩归档保留天数;到期后写日志时自动清理。
|
||
LOG_RETENTION_DAYS=14
|
||
# 日志目录由启动脚本固定:./dev.sh 使用项目 logs/,Docker 使用挂载的 /app/logs。
|
||
|
||
# CK 重登保护:单账号最多尝试次数与总耗时秒数,超时/失败均保留旧 Cookie。
|
||
COOKIE_RELOGIN_MAX_RETRIES=5
|
||
COOKIE_RELOGIN_MAX_TOTAL_TIME=600
|
||
|
||
# Docker 构建镜像源(网络可访问官方源时保持 false;国内服务器可改为 true)
|
||
USE_CHINA_MIRRORS=false
|
||
|
||
# MySQL 配置(生产环境必须设置密码;默认只映射到宿主机 127.0.0.1,供本地 dev.sh 使用)
|
||
# 默认使用 DaoCloud 镜像,与既有部署保持一致;可按需覆盖为其他可用地址。
|
||
# MYSQL_IMAGE=docker.m.daocloud.io/library/mysql:8.4
|
||
MYSQL_DATABASE=douyu_login
|
||
MYSQL_USER=douyu_login
|
||
MYSQL_PASSWORD=
|
||
MYSQL_ROOT_PASSWORD=
|
||
MYSQL_BIND_HOST=127.0.0.1
|
||
MYSQL_HOST_PORT=3307
|
||
# MySQL 性能观测;同机部署资源紧张时可先使用 256M。
|
||
MYSQL_INNODB_BUFFER_POOL_SIZE=512M
|
||
MYSQL_SLOW_QUERY_LOG=1
|
||
MYSQL_LONG_QUERY_TIME=1
|
||
|
||
# 本地调试后端连接 MySQL(./dev.sh 使用;默认连接上面的宿主机端口)
|
||
DEV_DB_HOST=127.0.0.1
|
||
DEV_DB_PORT=3307
|
||
|
||
# 直接运行后端时使用;./dev.sh 会自动按 DEV_DB_* 和 MYSQL_* 生成这些变量
|
||
# DB_HOST=127.0.0.1
|
||
# DB_PORT=3307
|
||
# DB_NAME=douyu_login
|
||
# DB_USER=douyu_login
|
||
# DB_PASSWORD=
|
||
|
||
# 数据库连接池配置(仅 MySQL 生效)
|
||
DB_POOL_SIZE=20
|
||
DB_MAX_OVERFLOW=20
|
||
DB_POOL_TIMEOUT=30
|
||
DB_POOL_RECYCLE=1800
|
||
|
||
# Cookie 安全标志(生产环境 HTTPS 部署时设为 true)
|
||
COOKIE_SECURE=false
|
||
|
||
# 本地调试端口(./dev.sh / deploy.sh dev 使用;Docker 生产默认 8800)
|
||
# BACKEND_PORT=8800
|
||
# FRONTEND_PORT=5174
|
||
# BACKEND_HOST=0.0.0.0
|
||
# FRONTEND_HOST=0.0.0.0
|
||
|
||
# CORS 允许的源(逗号分隔,不设则默认开发环境)
|
||
# CORS_ORIGINS=https://example.com,https://www.example.com
|
||
|
||
# 应用宝充值 Worker(与 Web 合并在同一容器;生产环境必须设置为随机长密钥)
|
||
# 生成方式: python3 -c "import secrets; print(secrets.token_urlsafe(32))"
|
||
YYB_WORKER_KEY=
|
||
# Docker 与 dev.sh 均通过本机 Worker 访问,无需设置 YYB_WORKER_URL。
|
||
# YYB_WORKER_URL=http://127.0.0.1:8810
|
||
# YYB_WORKER_TIMEOUT=30
|
||
# 本地调试 Worker(仅 dev.sh 使用,默认只绑定 127.0.0.1)
|
||
# YYB_WORKER_PORT=8810
|
||
# DEV_YYB_WORKER_URL=http://127.0.0.1:8810
|
||
|
||
# 鱼翅直充供应商 API(供应商确认网关地址及订单查询字段后启用)
|
||
# AppKey 当前文档未说明其传输字段,保留以供后续确认,不会自动发送。
|
||
FISH_FIN_RECHARGE_BASE_URL=
|
||
FISH_FIN_RECHARGE_APP_ID=
|
||
FISH_FIN_RECHARGE_APP_KEY=
|
||
FISH_FIN_RECHARGE_APP_SECRET=
|
||
# 公网回调地址;不填则只通过 queryOrderV2 轮询订单状态。
|
||
FISH_FIN_RECHARGE_NOTIFY_URL=
|
||
# FISH_FIN_RECHARGE_TIMEOUT=20
|
||
# 排查供应商协议时临时开启;协议参数会按 DEBUG 级别脱敏输出,排查后建议关闭。
|
||
FISH_FIN_RECHARGE_DEBUG=false
|
||
|
||
# Roundcube 邮件验证码读取服务地址(可选;不填则使用默认服务)
|
||
# MAIL_ROUNDCUBE_URL=http://127.0.0.1:8000/
|
||
|
||
# ---- 文件存储:在线协作的图片上传 ----
|
||
# local = 存本地 ./data/file_storage(开发/测试默认,无需对象存储);
|
||
# oss = 阿里云 OSS 或任意 S3 兼容存储,生产用这个。
|
||
OSS_MODE=local
|
||
# ECS 与桶同地域时必须用内网 endpoint:免公网流量费、延迟低。
|
||
# 本机(非 ECS)调试要改成公网:https://oss-cn-hangzhou.aliyuncs.com
|
||
# OSS_ENDPOINT=https://oss-cn-hangzhou-internal.aliyuncs.com
|
||
# OSS_BUCKET=live-hub-assets
|
||
# OSS_ACCESS_KEY_ID=
|
||
# OSS_ACCESS_KEY_SECRET=
|
||
# 实测该 RAM 子账号的权限边界(2026-10-16,ossutil 2.1.2):桶内 ListObjects /
|
||
# PutObject / GetObject / DeleteObject 都通;ListBuckets、GetBucketStat、
|
||
# GetObjectAcl、跨桶访问一律 403。所以代码**不调** HeadBucket/GetBucketStat
|
||
# (见 file_storage.S3ObjectStorage.ensure_ready),RAM 策略也不用放开这些。
|
||
# region 默认从 endpoint 推导(oss-cn-hangzhou-internal → oss-cn-hangzhou),一般不用配。
|
||
# OSS_REGION=
|
||
# 上传大小上限(MB,默认 10)。前端会在上传前把长边压到 1600 以内。
|
||
# OSS_MAX_UPLOAD_SIZE_MB=10
|
||
# local 模式的对象根目录(默认 ./data/file_storage,已随 data/ 一起忽略)
|
||
# OSS_LOCAL_ROOT=
|
||
# OSS_PREFIX 是 P2 资料收集(collect)用的前缀,本功能由 scene 决定命名空间。
|
||
|
||
# ---- 登录短信(用户名 + 密码 + 短信验证码 + DCAuth 设备签名)----
|
||
# mock(默认):只写日志、不真实发送、不限制每日次数;
|
||
# aliyun:阿里云 Dysmsapi(RPC 签名),需要下面四项凭据。
|
||
WORKER_SMS_PROVIDER=mock
|
||
WORKER_SMS_ACCESS_KEY_ID=
|
||
WORKER_SMS_ACCESS_KEY_SECRET=
|
||
WORKER_SMS_SIGN_NAME=
|
||
WORKER_SMS_TEMPLATE_CODE=
|
||
# 验证码有效期 / 重发冷却 / 真实渠道每日上限
|
||
WORKER_SMS_CODE_TTL_SECONDS=300
|
||
WORKER_SMS_COOLDOWN_SECONDS=60
|
||
WORKER_SMS_DAILY_LIMIT=10
|
||
|
||
# Uvicorn reload(开发模式设为 true,生产环境保持 false)
|
||
UVICORN_RELOAD=false
|