2025-11-28 23:30:49 +08:00
|
|
|
|
# CarrotSkin 环境配置文件示例
|
|
|
|
|
|
# 复制此文件为 .env 并修改相应的配置值
|
|
|
|
|
|
|
2025-12-08 19:12:30 +08:00
|
|
|
|
# =============================================================================
|
|
|
|
|
|
# 站点配置
|
|
|
|
|
|
# =============================================================================
|
|
|
|
|
|
SITE_NAME=CarrotSkin
|
|
|
|
|
|
SITE_DESCRIPTION=一个优秀的Minecraft皮肤站
|
|
|
|
|
|
REGISTRATION_ENABLED=true
|
|
|
|
|
|
DEFAULT_AVATAR=
|
|
|
|
|
|
|
|
|
|
|
|
# =============================================================================
|
|
|
|
|
|
# 用户限制配置
|
|
|
|
|
|
# =============================================================================
|
|
|
|
|
|
MAX_TEXTURES_PER_USER=50
|
|
|
|
|
|
MAX_PROFILES_PER_USER=5
|
|
|
|
|
|
|
|
|
|
|
|
# =============================================================================
|
|
|
|
|
|
# 积分配置
|
|
|
|
|
|
# =============================================================================
|
|
|
|
|
|
CHECKIN_REWARD=10
|
|
|
|
|
|
TEXTURE_DOWNLOAD_REWARD=1
|
|
|
|
|
|
|
2025-11-28 23:30:49 +08:00
|
|
|
|
# =============================================================================
|
|
|
|
|
|
# 服务器配置
|
|
|
|
|
|
# =============================================================================
|
|
|
|
|
|
SERVER_PORT=:8080
|
|
|
|
|
|
SERVER_MODE=debug
|
|
|
|
|
|
SERVER_READ_TIMEOUT=30s
|
|
|
|
|
|
SERVER_WRITE_TIMEOUT=30s
|
2025-12-26 01:15:17 +08:00
|
|
|
|
SERVER_SWAGGER_ENABLED=true
|
2025-11-28 23:30:49 +08:00
|
|
|
|
|
|
|
|
|
|
# =============================================================================
|
|
|
|
|
|
# 数据库配置
|
|
|
|
|
|
# =============================================================================
|
|
|
|
|
|
DATABASE_DRIVER=postgres
|
|
|
|
|
|
DATABASE_HOST=localhost
|
|
|
|
|
|
DATABASE_PORT=5432
|
|
|
|
|
|
DATABASE_USERNAME=postgres
|
|
|
|
|
|
DATABASE_PASSWORD=your_password_here
|
|
|
|
|
|
DATABASE_NAME=carrotskin
|
|
|
|
|
|
DATABASE_SSL_MODE=disable
|
|
|
|
|
|
DATABASE_TIMEZONE=Asia/Shanghai
|
2026-02-25 19:00:50 +08:00
|
|
|
|
|
|
|
|
|
|
# 连接池配置(优化后的默认值)
|
|
|
|
|
|
# 最大空闲连接数:在连接池中保持的最大空闲连接数
|
|
|
|
|
|
# 建议值:CPU核心数 * 2 ~ CPU核心数 * 4
|
2025-11-28 23:30:49 +08:00
|
|
|
|
DATABASE_MAX_IDLE_CONNS=10
|
2026-02-25 19:00:50 +08:00
|
|
|
|
# 最大打开连接数:允许的最大并发连接数
|
|
|
|
|
|
# 建议值:根据并发需求调整,高并发场景可设置更高(如200-500)
|
2025-11-28 23:30:49 +08:00
|
|
|
|
DATABASE_MAX_OPEN_CONNS=100
|
2026-02-25 19:00:50 +08:00
|
|
|
|
# 连接最大生命周期:连接被重用前的最大存活时间
|
|
|
|
|
|
# 建议值:30分钟到1小时,避免长时间占用连接
|
2025-11-28 23:30:49 +08:00
|
|
|
|
DATABASE_CONN_MAX_LIFETIME=1h
|
2026-02-25 19:00:50 +08:00
|
|
|
|
# 连接最大空闲时间:连接被关闭前的最大空闲时间
|
|
|
|
|
|
# 建议值:5-15分钟,避免长时间空闲占用资源
|
2025-12-08 15:40:28 +08:00
|
|
|
|
DATABASE_CONN_MAX_IDLE_TIME=10m
|
2026-02-25 19:00:50 +08:00
|
|
|
|
# 连接获取超时:等待获取连接的超时时间(新增)
|
|
|
|
|
|
# 建议值:1-5秒,避免长时间阻塞
|
|
|
|
|
|
DATABASE_CONN_TIMEOUT=5s
|
|
|
|
|
|
# 查询超时:单次查询的最大执行时间(新增)
|
|
|
|
|
|
# 建议值:5-30秒,根据业务查询复杂度调整
|
|
|
|
|
|
DATABASE_QUERY_TIMEOUT=30s
|
|
|
|
|
|
# 慢查询阈值:记录慢查询的阈值(优化:从200ms调整为100ms)
|
|
|
|
|
|
# 超过此时间的查询将被记录为警告
|
|
|
|
|
|
DATABASE_SLOW_THRESHOLD=100ms
|
|
|
|
|
|
# 健康检查间隔:定期检查数据库连接健康的间隔(新增)
|
|
|
|
|
|
# 建议值:30秒到5分钟
|
|
|
|
|
|
DATABASE_HEALTH_CHECK_INTERVAL=30s
|
2025-11-28 23:30:49 +08:00
|
|
|
|
|
|
|
|
|
|
# =============================================================================
|
2026-02-25 19:00:50 +08:00
|
|
|
|
# Redis配置(优化后的默认值)
|
2025-11-28 23:30:49 +08:00
|
|
|
|
# =============================================================================
|
|
|
|
|
|
REDIS_HOST=localhost
|
|
|
|
|
|
REDIS_PORT=6379
|
|
|
|
|
|
REDIS_PASSWORD=
|
|
|
|
|
|
REDIS_DATABASE=0
|
2026-02-25 19:00:50 +08:00
|
|
|
|
|
|
|
|
|
|
# 连接池配置(优化后的默认值)
|
|
|
|
|
|
# 连接池大小:允许的最大并发连接数
|
|
|
|
|
|
# 建议值:CPU核心数 * 4 ~ CPU核心数 * 8,根据并发需求调整
|
|
|
|
|
|
REDIS_POOL_SIZE=16
|
|
|
|
|
|
# 最小空闲连接数:在连接池中保持的最小空闲连接数
|
|
|
|
|
|
# 建议值:CPU核心数 * 2 ~ CPU核心数 * 4
|
|
|
|
|
|
REDIS_MIN_IDLE_CONNS=8
|
|
|
|
|
|
# 最大重试次数:操作失败时的最大重试次数
|
|
|
|
|
|
REDIS_MAX_RETRIES=3
|
|
|
|
|
|
# 连接超时:建立连接的超时时间
|
|
|
|
|
|
# 建议值:3-10秒
|
|
|
|
|
|
REDIS_DIAL_TIMEOUT=5s
|
|
|
|
|
|
# 读取超时:读取数据的超时时间
|
|
|
|
|
|
# 建议值:3-5秒
|
|
|
|
|
|
REDIS_READ_TIMEOUT=3s
|
|
|
|
|
|
# 写入超时:写入数据的超时时间
|
|
|
|
|
|
# 建议值:3-5秒
|
|
|
|
|
|
REDIS_WRITE_TIMEOUT=3s
|
|
|
|
|
|
# 连接池超时:等待获取连接的超时时间
|
|
|
|
|
|
# 建议值:3-5秒
|
|
|
|
|
|
REDIS_POOL_TIMEOUT=4s
|
|
|
|
|
|
# 连接最大空闲时间:连接被关闭前的最大空闲时间
|
|
|
|
|
|
# 建议值:5-15分钟,避免长时间空闲占用资源
|
|
|
|
|
|
REDIS_CONN_MAX_IDLE_TIME=10m
|
|
|
|
|
|
# 连接最大生命周期:连接被重用前的最大存活时间
|
|
|
|
|
|
# 建议值:15-30分钟,避免长时间占用导致连接问题
|
|
|
|
|
|
REDIS_CONN_MAX_LIFETIME=30m
|
|
|
|
|
|
# 健康检查间隔:定期检查Redis连接健康的间隔
|
|
|
|
|
|
# 建议值:30秒到5分钟
|
|
|
|
|
|
REDIS_HEALTH_CHECK_INTERVAL=30s
|
|
|
|
|
|
# 错误时启用重试:操作失败时是否启用自动重试
|
|
|
|
|
|
# 建议值:true(生产环境),开发环境可设为false
|
|
|
|
|
|
REDIS_ENABLE_RETRY_ON_ERROR=true
|
2025-11-28 23:30:49 +08:00
|
|
|
|
|
|
|
|
|
|
# =============================================================================
|
|
|
|
|
|
# RustFS对象存储配置 (S3兼容)
|
|
|
|
|
|
# =============================================================================
|
|
|
|
|
|
RUSTFS_ENDPOINT=127.0.0.1:9000
|
2025-12-08 15:40:28 +08:00
|
|
|
|
RUSTFS_PUBLIC_URL=http://127.0.0.1:9000
|
2025-11-28 23:30:49 +08:00
|
|
|
|
RUSTFS_ACCESS_KEY=your_access_key
|
|
|
|
|
|
RUSTFS_SECRET_KEY=your_secret_key
|
|
|
|
|
|
RUSTFS_USE_SSL=false
|
|
|
|
|
|
RUSTFS_BUCKET_TEXTURES=carrot-skin-textures
|
|
|
|
|
|
RUSTFS_BUCKET_AVATARS=carrot-skin-avatars
|
|
|
|
|
|
|
|
|
|
|
|
# =============================================================================
|
|
|
|
|
|
# JWT配置
|
|
|
|
|
|
# =============================================================================
|
|
|
|
|
|
JWT_SECRET=your-jwt-secret-key-change-this-in-production
|
|
|
|
|
|
JWT_EXPIRE_HOURS=168
|
|
|
|
|
|
|
|
|
|
|
|
# =============================================================================
|
|
|
|
|
|
# 日志配置
|
|
|
|
|
|
# =============================================================================
|
|
|
|
|
|
LOG_LEVEL=info
|
|
|
|
|
|
LOG_FORMAT=json
|
|
|
|
|
|
LOG_OUTPUT=logs/app.log
|
|
|
|
|
|
|
|
|
|
|
|
# =============================================================================
|
|
|
|
|
|
# 安全配置
|
|
|
|
|
|
# =============================================================================
|
2025-12-08 15:40:28 +08:00
|
|
|
|
# CORS 允许的来源,多个用逗号分隔
|
|
|
|
|
|
SECURITY_ALLOWED_ORIGINS=*
|
|
|
|
|
|
# 允许的头像/材质URL域名,多个用逗号分隔
|
|
|
|
|
|
SECURITY_ALLOWED_DOMAINS=localhost,127.0.0.1
|
2025-11-28 23:30:49 +08:00
|
|
|
|
|
|
|
|
|
|
# =============================================================================
|
2025-12-08 15:40:28 +08:00
|
|
|
|
# 邮件配置
|
2025-11-28 23:30:49 +08:00
|
|
|
|
# 腾讯企业邮箱SSL配置示例:smtp.exmail.qq.com, 端口465
|
|
|
|
|
|
# =============================================================================
|
|
|
|
|
|
EMAIL_ENABLED=false
|
|
|
|
|
|
EMAIL_SMTP_HOST=smtp.example.com
|
|
|
|
|
|
EMAIL_SMTP_PORT=587
|
|
|
|
|
|
EMAIL_USERNAME=noreply@example.com
|
|
|
|
|
|
EMAIL_PASSWORD=your-email-password
|
|
|
|
|
|
EMAIL_FROM_NAME=CarrotSkin
|