# 服务器配置 # 监听端口(默认:3001) PORT=3001 # 绑定地址(默认:0.0.0.0,表示所有网络接口) HOSTNAME=0.0.0.0 # 运行环境(development | production) NODE_ENV=production # Next.js 开发模式允许访问热更新资源的主机名,逗号分隔(默认:127.0.0.1,localhost) FLYREQ_ALLOWED_DEV_ORIGINS=127.0.0.1,localhost # SQLite 数据库文件路径(默认:./flyreq-tasks.sqlite) FLYREQ_TASK_DB=./flyreq-tasks.sqlite # 最大并发图片数 FLYREQ_TASK_CONCURRENCY=50 # ============================================ # 队列与限流配置(运行时读取,修改 .env 后通常无需重启) # ============================================ # 全局最大待处理任务数(排队中 + 生成中),达到后返回 503 QUEUE_FULL FLYREQ_MAX_QUEUE_SIZE=200 # 限流窗口长度(毫秒) FLYREQ_RATE_LIMIT_WINDOW_MS=60000 # 单 IP 在一个窗口内最多创建多少个任务,超过返回 429 RATE_LIMITED FLYREQ_RATE_LIMIT_MAX_REQUESTS_PER_IP=10 # 单 API Key 在一个窗口内最多创建多少个任务,超过返回 429 RATE_LIMITED FLYREQ_RATE_LIMIT_MAX_REQUESTS_PER_API_KEY=10 # 单 IP 最多同时拥有多少个待处理任务,超过返回 429 TOO_MANY_PENDING_TASKS FLYREQ_MAX_PENDING_TASKS_PER_IP=20 # 单 API Key 最多同时拥有多少个待处理任务,超过返回 429 TOO_MANY_PENDING_TASKS FLYREQ_MAX_PENDING_TASKS_PER_API_KEY=20 # 队列满/限流时返回给客户端的 Retry-After 秒数 FLYREQ_RATE_LIMIT_RETRY_AFTER_SECONDS=60 # 服务端下载远程生成图片的最大字节数(范围:1024 至 209715200) FLYREQ_REMOTE_IMAGE_MAX_BYTES=52428800 # ============================================ # 上游 Base URL 内网改写(运行时读取) # ============================================ # 用户模型里仍可填写公开地址;后端实际请求时按这里改写为 Docker 内网地址,适合 1Panel / Docker 内部访问 new-api,避免 Cloudflare/Nginx 504。 # 支持多个映射。JSON 对象格式示例: # FLYREQ_BASE_URL_REWRITE_MAP={"https://flyreq.com":"http://new-api:3000","https://api.example.com":"http://example-new-api:3000"} FLYREQ_BASE_URL_REWRITE_MAP= # ============================================ # 上游请求服务标识(运行时读取) # ============================================ # 所有上游请求携带的稳定 User-Agent。请填写部署方真实、可追溯的服务标识,不要伪造浏览器或第三方服务身份。 FLYREQ_OUTBOUND_USER_AGENT=FlyReq-Image-Studio/3.1.1 # ============================================ # 平台品牌(运行时读取) # ============================================ # 页面标题、Header 名称与 PWA 名称。修改后刷新页面即可生效。 FLYREQ_PLATFORM_NAME=FlyReq Image # Header Logo:建议正方形,至少 128x128,支持 PNG/WebP/SVG。仅允许站内绝对路径或 HTTP(S) URL。 FLYREQ_PLATFORM_LOGO_URL=/favicon.png # 浏览器 favicon:建议 48x48 PNG 或 ICO; FLYREQ_PLATFORM_ICON_URL=/favicon.png # PWA 普通图标:必须为 192x192 PNG,Chrome 使用它判断应用是否可安装。 FLYREQ_PWA_ICON_192_URL=/icon-192.png # PWA 高清普通图标:必须为 512x512 PNG,用于安装界面和高分辨率设备。 FLYREQ_PWA_ICON_512_URL=/icon-512.png # PWA Maskable 图标:必须为 512x512 PNG,重要内容应位于中心 80% 安全区域内。 FLYREQ_PWA_MASKABLE_ICON_512_URL=/icon-maskable-512.png # ============================================ # 图片模型 API Key 指引(设置页展示,运行时读取) # ============================================ FLYREQ_IMAGE_MODEL_KEY_GUIDE_TITLE=还没有图片模型 API Key? FLYREQ_IMAGE_MODEL_KEY_GUIDE_DESCRIPTION=默认已为你准备 FlyReq 的 GPT Image 2 图片模型,只需要前往 FlyReq 获取 API Key,填入后保存即可开始生成图片。1元=20张4k图。 FLYREQ_IMAGE_MODEL_KEY_GUIDE_CTA_LABEL=前往 flyreq.com FLYREQ_IMAGE_MODEL_KEY_GUIDE_URL=https://flyreq.com # ============================================ # 首次图片模型默认配置(运行时读取) # ============================================ # 仅影响没有浏览器本地模型配置的新用户;API Key 由用户在设置页填写,不通过环境变量下发。 FLYREQ_DEFAULT_IMAGE_MODEL_KEY=flyreq-gpt-image-2 FLYREQ_DEFAULT_IMAGE_MODEL_NAME=FlyReq FLYREQ_DEFAULT_IMAGE_MODEL_PROTOCOL=openai FLYREQ_DEFAULT_IMAGE_MODEL_BASE_URL=https://flyreq.com # 留空时使用对应图片预设的模型 ID,并受 FLYREQ_IMAGE_PRESET_MODEL_IDS 覆盖。 FLYREQ_DEFAULT_IMAGE_MODEL_MODEL_ID= FLYREQ_DEFAULT_IMAGE_MODEL_PRESET=gpt-image-2 FLYREQ_DEFAULT_IMAGE_MODEL_MAX_REF_IMAGES=16 FLYREQ_DEFAULT_IMAGE_MODEL_MAX_OUTPUT_SIZE=4K FLYREQ_DEFAULT_IMAGE_MODEL_SUPPORTS_ADVANCED_PARAMS=true FLYREQ_DEFAULT_IMAGE_MODEL_SUPPORTS_TEMPERATURE=false # 仅 OpenAI GPT Image 2 预设有效,默认开启。 FLYREQ_DEFAULT_IMAGE_MODEL_STREAM_IMAGES=true # ============================================ # 视频模型与视频工作台(运行时读取) # ============================================ # 视频协议可选值: # new-api:New API 通用视频协议,创建端点为 /v1/video/generations。 # openai:OpenAI Videos(Sora)协议,创建端点为 /v1/videos;默认值。 # xai:xAI Videos 协议,创建端点为 /v1/videos/generations。 FLYREQ_DEFAULT_VIDEO_MODEL_KEY=flyreq-sora-2 FLYREQ_DEFAULT_VIDEO_MODEL_NAME=FlyReq FLYREQ_DEFAULT_VIDEO_MODEL_PROTOCOL=openai FLYREQ_DEFAULT_VIDEO_MODEL_BASE_URL=https://flyreq.com FLYREQ_DEFAULT_VIDEO_MODEL_MODEL_ID=sora-2 FLYREQ_VIDEO_MAX_REF_VIDEOS=3 FLYREQ_VIDEO_MAX_REF_AUDIOS=3 FLYREQ_VIDEO_MAX_REF_IMAGES=9 FLYREQ_VIDEO_RESOLUTIONS=720,480,1080,2160 FLYREQ_VIDEO_SIZES=1280x720,720x1280,1024x1024,1792x1024,1024x1792,auto FLYREQ_VIDEO_DURATIONS=6,10,12,15,20 # 视频协议能力 JSON Merge Patch;对象递归合并,数组整体替换,null 删除字段。 FLYREQ_VIDEO_PROTOCOL_CONFIG_OVERRIDES= FLYREQ_VIDEO_TASK_CONCURRENCY=2 FLYREQ_VIDEO_POLL_INTERVAL_MS=5000 FLYREQ_VIDEO_TIMEOUT_MS=1800000 FLYREQ_VIDEO_MAX_REFERENCE_VIDEO_BYTES=104857600 FLYREQ_VIDEO_MAX_REFERENCE_AUDIO_BYTES=26214400 FLYREQ_VIDEO_MAX_REFERENCE_IMAGE_BYTES=10485760 # 是否记录视频上游创建、轮询和下载阶段的每次请求与响应。默认开启;false、0、no、off 可关闭。 FLYREQ_VIDEO_UPSTREAM_LOG_ENABLED=true # 单条视频上游响应正文写入日志的最大字符数,范围 1024-1048576,超过后保留脱敏后长度并截断。 FLYREQ_VIDEO_UPSTREAM_LOG_MAX_CHARS=65536 # 按日期分割的视频上游日志目录,默认 backend/logs/video-upstream。 FLYREQ_VIDEO_UPSTREAM_LOG_DIR= # 兼容旧部署:未配置上面的新长度变量时,仍会读取 FLYREQ_UPSTREAM_ERROR_LOG_MAX_CHARS。 # 视频结果目录,留空时使用 backend/flyreq-videos。 FLYREQ_VIDEO_DIR= # 是否记录图片上游生成请求与响应。默认开启;false、0、no、off 可关闭。 FLYREQ_IMAGE_UPSTREAM_LOG_ENABLED=true # 单条图片上游响应正文写入日志的最大字符数,范围 1024-1048576,超过后保留脱敏后长度并截断。 FLYREQ_IMAGE_UPSTREAM_LOG_MAX_CHARS=65536 # 按日期分割的图片上游日志目录,默认 backend/logs/image-upstream。 FLYREQ_IMAGE_UPSTREAM_LOG_DIR= # ============================================ # 图片模板模型 ID 预设(可选) # ============================================ # JSON 对象,键为内置模板 ID,值为实际调用的模型 ID。按需修改右侧模型 ID。 FLYREQ_IMAGE_PRESET_MODEL_IDS={"gemini-2.5-flash-image":"gemini-2.5-flash-image","gemini-3-pro-image-preview":"gemini-3-pro-image-preview","gemini-3.1-flash-image-preview":"gemini-3.1-flash-image-preview","gemini-3.1-flash-lite-image":"gemini-3.1-flash-lite-image","gpt-image-2":"gpt-image-2","grok-imagine-image":"grok-imagine-image","grok-imagine-image-quality":"grok-imagine-image-quality"} # ============================================ # 提示词广场配置 # ============================================ # 提示词广场模式:1=常驻(直接显示) 2=私密(需密码验证,点七下标题) 3=关闭(完全隐藏) # 修改 .env 文件后实时生效,无需重启服务 PROMPT_GALLERY_MODE=1 PROMPT_GALLERY_PASSWORD=8848