一个可部署到 Vercel 的多语言个人主页:前台聚合 GitHub、Steam、WeGame、网易云音乐、RSS、WakaTime 与 Codex 使用数据,后台统一维护个人资料、项目、主题视频和页脚。
- 多语言前台与后台:
cn、en、es、fr、ja。 - 后台配置个人资料、社交链接、技能、项目、主题视频和页脚。
- GitHub 项目与贡献、Steam、WeGame、网易云音乐、RSS、WakaTime 数据聚合。
- WakaTime 编程统计与 Codex Token、项目、模型、会话、API 等价成本合并展示。
- 日间/夜间自动主题、手动覆盖、背景视频、异火卡片装饰和统一外链确认弹窗。
- Upstash Redis 保存配置、同步缓存和 Codex 聚合数据。
| 服务 | 必需 | 用途 |
|---|---|---|
| Vercel | 是 | 部署 Next.js 主站和 API |
| Upstash Redis | 是 | 保存后台配置、项目数据与 AI 会话摘要 |
| GitHub Actions | 推荐 | 每 8 小时同步一次 GitHub 项目元数据 |
| Tolgee | 可选 | 管理和同步多语言词条 |
| MTranServer | 可选 | 批量补全本地语言包,主站运行不依赖它 |
| WakaTime | 可选 | 编程时长、项目、语言、编辑器和代码变更统计 |
| Codex 本机同步器 | 可选 | 空闲时增量上传 Token 数值摘要,不上传提示正文 |
最小部署只需要 Vercel 和 Upstash。lib/locales/ 已包含本地语言包,Tolgee 或 MTranServer 不在线时不影响页面访问。
git clone https://github.com/Flames1217/HuoYu.git
cd HuoYu
pnpm install
cp .env.example .env.local需要 Node.js 20+ 和 pnpm。
在 Upstash 控制台创建 Redis,或从 Vercel Marketplace 添加 Upstash 集成。
手动创建时配置:
UPSTASH_REDIS_REST_URL=your_upstash_redis_rest_url
UPSTASH_REDIS_REST_TOKEN=your_upstash_redis_rest_tokenVercel Marketplace 通常自动注入:
KV_REST_API_URL=your_kv_rest_api_url
KV_REST_API_TOKEN=your_kv_rest_api_token两组变量任选一组。默认 Redis key:
SETTINGS_REDIS_KEY=huoyu:settings
AI_SESSIONS_REDIS_KEY=huoyu:ai:sessions本地 .env.local 和 Vercel Project Settings → Environment Variables 至少配置:
PASSWORD=your_admin_password
NEXTAUTH_SECRET=your_random_nextauth_secret
CRON_SECRET=your_random_cron_secret
GITHUB_TOKEN=your_github_tokenPASSWORD:后台登录密码。NEXTAUTH_SECRET:NextAuth 会话密钥。CRON_SECRET:保护 GitHub 自动同步接口。GITHUB_TOKEN:读取 GitHub 仓库和贡献数据,推荐使用只读 fine-grained token。
第三方数据源按需配置:
STEAM_API_KEY=
STEAM_USER_ID=
NETEASE_USER_ID=
NETEASE_MUSIC_U=
NETEASE_API_BASE_URL=https://api-cloudmusic.viper3.top
WAKATIME_API_KEY=
WEGAME_TGP_ID=
WEGAME_COOKIE=
NEXT_PUBLIC_FEED_URL=站点运行直接读取 lib/locales/,不配置翻译服务也能完整显示多语言。
需要 Tolgee 管理词条时配置服务端变量:
TOLGEE_API_URL=https://tolgee.example.com
TOLGEE_API_KEY=your_tolgee_server_api_key
TOLGEE_PROJECT_ID=1
TOLGEE_SKIP_NEW_KEYS=false
TOLGEE_SYNC_CONCURRENCY=1需要前端 Tolgee 调试时再添加项目级 Client Key:
NEXT_PUBLIC_TOLGEE_API_URL=https://tolgee.example.com
NEXT_PUBLIC_TOLGEE_API_KEY=your_tolgee_project_client_key
NEXT_PUBLIC_TOLGEE_PROJECT_ID=1不要把 PAT 或服务端密钥放进 NEXT_PUBLIC_*。
MTranServer 仅用于本地翻译脚本:
MTRAN_API_URL=https://tran.example.com
MTRAN_API_KEY=your_translation_api_keyMTranServer 推荐部署到 VPS、NAS 或 Docker 主机,不建议放在 Vercel Serverless。
把仓库导入 Vercel,复制 .env.local 中需要的生产环境变量后部署。
- 前台:
https://your-domain/cn - 后台:
https://your-domain/cn/admin - 其他语言:将
cn换成en、es、fr或ja
首次登录后台后依次配置个人资料、项目管理和页脚管理。
同步接口默认复用已经配置的 CRON_SECRET,不需要新增环境变量。需要把权限拆开时,再给 Vercel 添加独立密钥:
AI_SYNC_SECRET=your_random_ai_sync_secretWindows 本机安装隐藏同步任务。未配置 AI_SYNC_SECRET 时,Secret 填 Vercel 中现有的 CRON_SECRET:
pwsh -NoProfile -File .\scripts\install-codex-ai-sync.ps1 `
-Endpoint "https://your-domain/api/ai-sync" `
-Secret "your_random_ai_sync_secret"任务每小时尝试一次,只在电脑空闲时运行,通过 wscript.exe 隐藏启动。同步器按文件修改时间增量解析,只上传以下摘要:
- 会话 ID、日期、项目目录名、模型和客户端名称。
- 输入、缓存输入、输出、推理 Token 和提示次数。
- 不上传提示正文、回复正文、文件内容或工具输出。
统计结果按会话 ID 覆盖写入 Upstash,移动或归档会话不会重复计数。
Codex 订阅与 API 计费并不等价。页面默认按 GPT-5.3-Codex 的公开 API 单价估算等价成本(输入 $1.75、缓存输入 $0.175、输出 $14 / 百万 Token);混用其他模型时仅作为参考。需要按实际模型价格覆盖时配置:
AI_INPUT_USD_PER_MILLION=
AI_CACHED_INPUT_USD_PER_MILLION=
AI_OUTPUT_USD_PER_MILLION=仓库内置 .github/workflows/sync-github-repos.yml,每 8 小时请求:
GET /api/cron/github-repos
Authorization: Bearer your_random_cron_secret
在 GitHub 仓库 Settings → Secrets and variables → Actions 添加:
| Secret | 示例 |
|---|---|
SITE_URL |
https://your-domain |
CRON_SECRET |
与 Vercel 的 CRON_SECRET 一致 |
本地语言包:
lib/locales/cn.json
lib/locales/en.json
lib/locales/es.json
lib/locales/fr.json
lib/locales/ja.json
常用命令:
pnpm translate:fill-en-defaults
pnpm translate:fill-en
node scripts/translate-locales-from-en.mjs
node scripts/sync-tolgee-direct.mjs首次允许 Tolgee 创建新 key:
TOLGEE_SKIP_NEW_KEYS=false node scripts/sync-tolgee-direct.mjs只更新已有翻译:
TOLGEE_SYNC_EXISTING_TRANSLATIONS_ONLY=true node scripts/sync-tolgee-direct.mjspnpm dev
node --test tests/*.test.mjs
pnpm buildapp/ 页面与 API
components/ 前台和后台组件
lib/ Redis、数据处理、本地语言包
public/ 静态资源与异火视频
scripts/ 翻译、同步和维护脚本
tests/ Node.js 回归检查
- 不要提交
.env.local、Cookie、Token、API Key 或本机 AI 同步配置。 NEXT_PUBLIC_*会暴露给浏览器,只能放公开项目级配置。- WeGame 与网易云 Cookie 会过期,数据异常时先检查凭据。
- Codex 成本是按配置单价计算的 API 等价估算,不代表 ChatGPT/Codex 订阅账单。