Skip to content

Repository files navigation

LemonHub.net

让每个前端项目在构建完成后,3 秒内拥有一个独立的子域名展示站点——无需额外配置、无需支付流量费用、无需运维服务器。

基于 Cloudflare R2 + Cloudflare Worker 的泛域名静态站点托管平台。


项目结构

lemonhub/
├── apps/
│   ├── web/            # Next.js 14 控制台与落地页
│   └── worker/         # Cloudflare Worker API + 泛域名托管
├── packages/
│   └── shared/         # 共享类型定义
└── infra/              # 部署与配置模板

核心技术

  • 存储:Cloudflare R2(出站流量免费)
  • 计算/路由:Cloudflare Worker + TypeScript
  • 数据库:Cloudflare D1(项目、版本、用户、Session)
  • 前端:Next.js 14 App Router + Tailwind CSS + Framer Motion + React-Three-Fiber
  • 部署:Wrangler CLI

已实现功能

  • ✅ 自建用户系统(邮箱 + 密码)
  • ✅ 无需邮箱验证,注册即用
  • ✅ 每 IP 最多注册 3 个账号,防止滥用
  • ✅ 深浅色双主题切换
  • ✅ React-Three-Fiber 3D 柠檬 Hero / 部署进度动画
  • ✅ Web 控制台:创建项目、上传 ZIP、自动分配子域名
  • ✅ Worker 泛域名路由:*.lemonhub.net
  • ✅ 版本管理与一键回滚
  • ✅ ZIP 炸弹与文件类型防护

本地开发

1. 安装依赖

pnpm install

2. 配置环境变量

cp .env.example .env
cp apps/web/.env.local.example apps/web/.env.local

根据你的环境修改 NEXT_PUBLIC_LEMONHUB_API_URL(本地默认为 http://127.0.0.1:8787)。

3. 初始化 D1 数据库

pnpm db:migrate

4. 启动 Worker 开发服务器

pnpm --filter worker dev

Worker 将运行在 http://127.0.0.1:8787

5. 启动 Web 控制台

pnpm --filter web dev

访问 http://localhost:3000

生产部署

部署 Worker

  1. 在 Cloudflare 控制台创建 R2 bucket lemonhub-assets 和 D1 数据库 lemonhub_db
  2. 更新 apps/worker/wrangler.toml 中的 database_idbucket_name
  3. 执行数据库迁移:
wrangler d1 execute lemonhub_db --file=./apps/worker/migrations/0001_init.sql
  1. 部署:
pnpm deploy:worker

部署 Web 控制台

apps/web 部署到任意支持 Next.js 的平台(Vercel / Cloudflare Pages 等),并设置环境变量 NEXT_PUBLIC_LEMONHUB_API_URL 指向 Worker 域名。

DNS 配置

在 Cloudflare 中为 lemonhub.net 添加:

  • *.lemonhub.net AAAA 记录指向 100::
  • 开启橙色云朵(代理)
  • SSL/TLS 模式设为“完全”或“灵活”,泛域名 SSL 证书会自动覆盖所有一级子域名

使用流程

  1. 注册账号(无需验证)
  2. 控制台创建项目,获得子域名
  3. 进入部署页,拖入构建产物 ZIP 或文件夹
  4. 3 秒后访问 https://<子域名>.lemonhub.net

安全与限制

  • 密码使用 PBKDF2(60 万次迭代)哈希存储
  • Session Token 使用 SHA-256 哈希后存入 D1,支持登出失效
  • 单 IP 注册账号上限 3 个
  • 单 ZIP 最大 100MB,解压后最大 250MB
  • 子域名黑名单保留关键名称

许可证

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages