Files
tg-vault/.env.example
T

158 lines
6.2 KiB
Bash

###############################################################################
# TG Vault 环境配置文件模板 (Environment Configuration Template)
# 说明:请复制此文件为 .env 并根据实际部署环境进行修改
###############################################################################
# =============================================================================
# 必填:部署前请先修改
# =============================================================================
# PostgreSQL 数据库密码
DB_PASSWORD=your_secure_password_here
# 前端访问后端的 API 地址,必须包含协议
# 示例:Nginx/Caddy 将 api.example.com 反代到宿主机 51947 端口
VITE_API_URL=https://api.example.com
# 必填:正式发布使用语义化版本标签,例如 v2.0.1;不允许省略后回退 latest
IMAGE_VERSION=v2.0.1
# 后端 OAuth 回调固定来源,通常与 VITE_API_URL 相同;必须是精确 https origin
OAUTH_CALLBACK_BASE_URL=https://api.example.com
# OAuth 成功页允许通知的前端精确来源,通常与 CORS_ORIGIN 相同
OAUTH_FRONTEND_ORIGIN=https://cloud.example.com
# 允许跨域的前端来源地址,通常填写前端网页完整地址
# 示例:Nginx/Caddy 将 cloud.example.com 反代到宿主机 47832 端口
CORS_ORIGIN=https://cloud.example.com
# 应用主域名,不带 http/https,用于生成链接和展示
DOMAIN=cloud.example.com
# =============================================================================
# 可选:Telegram 集成
# =============================================================================
# Telegram Bot 基础配置。只要填这三项,Bot 就可以收文件、管理任务、调用 yt-dlp。
# 生产 Telegram 部署建议设 TELEGRAM_REQUIRED=true;凭证无效或 Bot 启动失败时 /readyz 返回 503。
# false 时 Web/API 继续运行,但 /readyz 和管理页会暴露 degraded 的 Bot component status。
TELEGRAM_REQUIRED=true
TELEGRAM_BOT_TOKEN=
TELEGRAM_API_ID=
TELEGRAM_API_HASH=
# 建议:允许通过 Bot PIN 登录的 Telegram 数字 user id,多个用英文逗号分隔。
# 获取方式:让用户在 Telegram 私聊 @userinfobot 查看 Id。
# 如果留空,首次无人认证时,第一个正确输入 Bot PIN 的用户会自动加入允许列表。
TELEGRAM_ALLOWED_USER_IDS=
# 可选:限制账号级频道抓取来源,多个用户名/链接/频道 ID 用英文逗号分隔。
TELEGRAM_ALLOWED_SOURCES=
# Bot 自身 MTProto session 和账号级下载器 session 都必须位于 /data 持久卷。
TELEGRAM_SESSION_FILE=/data/telegram_session.txt
# 可选:账号级 Telegram 下载器 session 文件路径。
# 不生成 session 时,Bot 基础功能仍可用;但频道/群组批量抓取、订阅同步、
# 以及超过 Bot 限制的大文件下载会受限。
# 生成命令:docker compose run --rm --no-deps backend npm run login:telegram-user
TELEGRAM_USER_SESSION_FILE=/data/telegram_user_session.txt
# Telegram 并发下载 worker 数。单请求上限仍是 512KB;该值控制单个文件内部的并发分片请求数,建议 4-8,最大 16。
TELEGRAM_DOWNLOAD_WORKERS=4
# Telegram 文件级下载并发数:一次最多同时下载几个文件。可在 Bot 里用 /file_concurrency 调整。
TELEGRAM_FILE_DOWNLOAD_CONCURRENCY=2
# =============================================================================
# 可选:yt-dlp 视频下载
# =============================================================================
# yt-dlp 可执行文件路径(默认使用系统 PATH;仅在找不到命令时再改为绝对路径)
YTDLP_BIN=yt-dlp
# yt-dlp 下载工作目录
YTDLP_WORK_DIR=/data/uploads/ytdlp
# yt-dlp 下载任务并发
YTDLP_MAX_CONCURRENT=1
# =============================================================================
# 默认配置:通常无需修改
# =============================================================================
# 后端服务运行端口
PORT=51947
# 文件与缓存目录(容器内路径)
UPLOAD_DIR=/data/uploads
THUMBNAIL_DIR=/data/thumbnails
PREVIEW_DIR=/data/previews
CHUNK_DIR=/data/chunks
TG_VAULT_SECRET_DIR=/data/secrets
# 重复文件策略:copy=生成副本,skip=跳过重复(同名+同目录+同大小)
DUPLICATE_FILE_MODE=copy
# 是否自动清理本地 uploads 中未登记到数据库的孤儿文件。默认开启,可在 Bot 里用 /cleanup_settings 关闭。
AUTO_CLEANUP_ORPHANS=true
# Telegram Bot 限流:普通消息每分钟 30 次;重型命令每 10 分钟 5 次
TELEGRAM_RATE_WINDOW_MS=60000
TELEGRAM_RATE_MAX=30
TELEGRAM_HEAVY_RATE_WINDOW_MS=600000
TELEGRAM_HEAVY_RATE_MAX=5
TELEGRAM_PIN_FAIL_WINDOW_MS=900000
TELEGRAM_PIN_FAIL_MAX=5
TELEGRAM_PIN_LOCK_MS=900000
TELEGRAM_COMMENTS_MAX_PER_POST=200
TELEGRAM_SUBSCRIPTION_INTERVAL_MS=300000
TELEGRAM_SUBSCRIPTION_SCAN_LIMIT=100
# 生产默认不输出每条 SQL;仅记录超过阈值的结构化慢查询元数据(不含 SQL 文本和参数)。
LOG_LEVEL=info
SQL_LOG_SLOW_MS=500
SQL_LOG_ALL=false
# 安全与上传限制
TRUST_PROXY=loopback
COOKIE_SECURE=true
JSON_BODY_LIMIT=2mb
MAX_UPLOAD_CHUNK_MB=32
MAX_CHUNK_UPLOAD_GB=20
CHUNK_GLOBAL_BUDGET_GB=40
CHUNK_DISK_RESERVE_GB=8
MAX_TOTAL_CHUNKS=50000
CHUNK_SESSION_TTL_MS=86400000
CHUNK_COMPLETION_LEASE_MS=1800000
ORPHAN_CLEANUP_MIN_AGE_MS=600000
# 留空时从 /data/secrets 自动生成并持久化。显式设置时至少使用 32 个随机字符。
SESSION_SECRET=
STORAGE_CREDENTIALS_SECRET=
TOTP_SECRET=
# 默认只允许 HTTPS 的 S3/WebDAV endpoint。仅在可信内网测试时设为 true。
ALLOW_INSECURE_STORAGE_ENDPOINTS=false
# 云存储连接测试超时,以及 WebDAV 读请求无活动和单次上传超时。
STORAGE_PROBE_TIMEOUT_MS=15000
WEBDAV_INACTIVITY_TIMEOUT_MS=300000
WEBDAV_UPLOAD_TIMEOUT_MS=21600000
# 频道后台任务和磁盘保护高级参数。
TG_JOB_RECOVERY_DELAY_MS=10000
TG_JOB_SCAN_SEGMENT_SIZE=100
TG_JOB_DOWNLOAD_BATCH_SIZE=20
TG_JOB_MAX_ATTEMPTS=3
TG_LARGE_TASK_SEGMENT_SIZE=50
TG_LARGE_TASK_REFRESH_INTERVAL_MS=10000
TG_MEDIA_GROUP_ENQUEUE_BATCH_SIZE=50
TG_MIN_FREE_DISK_GB=8
TG_DISK_WATERMARK_RECHECK_MS=30000
TG_DISK_WATERMARK_MAX_WAIT_MS=0
# Telegram 状态调试日志(排查 Bot 消息刷新问题时再启用/查看)
TG_STATUS_DEBUG=0
TG_STATUS_DEBUG_LOG=/data/logs/tg_silent_debug.log
TG_DEBUG_LOG_MAX_MB=5