HiCyou 是一个免费开源的工具目录平台,旨在帮助用户发现、整理并提交各类有用的工具和资源。 基于 Vercel 、Supabase 和 Cloudflare R2 等服务,你可以在几乎零成本的前提下,搭建一个专属的网址导航 / 资源目录站点,用来集中管理优质链接、为主站导流、推荐优秀网站等。
HiCyou 适合个人开发者、站长和团队快速搭建“工具库 / 资源库”类网站,可用于展示、收录,也可以开放给用户自主提交资源,打造持续更新的高质量目录。
应用场景示例:
在开始之前,请确保你已经拥有以下账号和服务:
更详细的图文教程:《 Supabase 实战指南:从零开始搭建数据库、配置 Auth 并接入 Resend 邮件服务》
DATABASE_URL。
anon``public key (NEXT_PUBLIC_SUPABASE_ANON_KEY)。service_role secret key (SUPABASE_SERVICE_ROLE_KEY)。NEXT_PUBLIC_SUPABASE_URL)。更详细的图文教程:《 Cloudflare R2 实战指南:配置免费 10G 存储和免费流量的对象存储与 S3 兼容 API Key 》
hicyou-assets),位置选择 "Automatic" 或离你目标用户最近的区域。R2_BUCKET_NAME。R2.dev 子域名。R2_PUBLIC_URL。Access Key ID (R2_ACCESS_KEY_ID)Secret Access Key (R2_SECRET_ACCESS_KEY)Endpoint (只需取类似 https://<ACCOUNT_ID>.r2.cloudflarestorage.com 中的 <ACCOUNT_ID> 部分作为 R2_ACCOUNT_ID)。在部署到 Vercel 之前,我们需要在本地配置好相关环境变量,并将数据库结构和初始数据同步到 Supabase 。
.env 文件,填入之前获取的 Supabase 和 Cloudflare R2 信息,以及你的 AI Key:# Supabase
NEXT_PUBLIC_SUPABASE_URL=https://xxxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJh...
SUPABASE_SERVICE_ROLE_KEY=eyJh...
# Database (推荐使用 Connection Pooler 端口 6543, 并在末尾加 ?pgbouncer=true)
DATABASE_URL="postgresql://postgres.[ref]:[password]@aws-0-[region].pooler.supabase.com:6543/postgres?pgbouncer=true"
# Cloudflare R2
R2_ACCOUNT_ID=...
R2_ACCESS_KEY_ID=...
R2_SECRET_ACCESS_KEY=...
R2_BUCKET_NAME=...
R2_PUBLIC_URL=...全部变量名的介绍:
| 变量名 | 说明 |
|---|---|
| 数据库配置 | |
NEXT_PUBLIC_SUPABASE_URL |
Supabase Project URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY |
Supabase Anon Key |
SUPABASE_SERVICE_ROLE_KEY |
Supabase Service Role Key |
DATABASE_URL |
Postgres 连接字符串 |
| 存储配置 (R2) | |
R2_ACCOUNT_ID |
Cloudflare Account ID |
R2_ACCESS_KEY_ID |
R2 Access Key |
R2_SECRET_ACCESS_KEY |
R2 Secret Key |
R2_BUCKET_NAME |
R2 Bucket 名称 |
R2_PUBLIC_URL |
R2 公开访问域名 |
R2_UPLOAD_DIR |
上传目录前缀,可以默认不变 |
R2_LOGO_DIR |
Logo 目录名,可以默认不变 |
R2_COVER_DIR |
封面目录名,可以默认不变 |
| 网站基础配置 | |
NEXT_PUBLIC_SITE_URL |
你的生产环境域名 |
NEXT_PUBLIC_SITE_NAME |
网站名称 |
NEXT_PUBLIC_MAIL |
联系邮箱 |
NEXT_PUBLIC_Blog |
博客地址 |
| 安全与管理 | |
ADMIN_EMAILS |
管理员邮箱 (逗号分隔) |
CRON_SECRET |
定时任务密钥 (任意长字符串),可以用openssl rand -hex 32 生成 |
| 赞助商配置 (可选) | |
NEXT_PUBLIC_SPONSOR_IMAGE_URL |
赞助商图片地址 |
NEXT_PUBLIC_SPONSOR_LINK |
赞助商跳转链接 |
NEXT_PUBLIC_SPONSOR_TEXT |
赞助商文案 |
| 其他 (可选) | |
EXASEARCH_API_KEY |
Exa 搜索 API Key |
NEXT_PUBLIC_TURNSTILE_SITE_KEY |
Cloudflare Turnstile ,留默认的就是 CF 官网测试 Key |
TURNSTILE_SECRET_KEY |
Cloudflare Turnstile Secret Key |
| AI 配置(可选) | Qwen 、DeepSeek 、Kimi 这些国产的都是支持的 |
AI_API_KEY |
AI 服务商 Key |
AI_BASE_URL |
AI API 地址 |
AI_MODEL |
模型名称 |
此步骤将在 Supabase 数据库中创建所需的表结构。
# 推送迁移到远程数据库
pnpm db:migrate
此步骤将写入默认分类和示例数据,帮助你快速开始。
# 运行 Seed 脚本
pnpm db:seed


.env 文件中配置好的变量逐一填入。next build。R2_PUBLIC_URL 是否配置正确且公网可访问。?pgbouncer=true。.env 中的 DATABASE_URL 能正常连接,然后运行 pnpm dev。祝你部署顺利!
其他参考教程:
A Practical Guide to Supabase: Setting up a Database, Auth, and Integrating Resend