首页
cloudflare技术

在 Cloudflare 上零成本搭建带分析功能的私有短链接服务

在 Cloudflare 上零成本搭建带分析功能的私有短链接服务:Sink" 是一款完全免费的短链接服务,利用 Cloudflare 的全球边缘节点提供极速性能和数据私有化。它的核心优势包括零成本、极速性能、数据私有化和零运维成本。 Sink 的功能包括 URL 缩短、实时分析、无服务器部署、自…

洛宸

洛宸

在 Cloudflare 上零成本搭建带分析功能的私有短链接服务

Sink:在 Cloudflare 上零成本搭建带分析功能的私有短链接服务

项目介绍

在社交媒体、博客营销或日常分享中,冗长的 URL 不仅影响美观,还可能被平台屏蔽或截断。传统的短链接服务(如 Bitly、TinyURL 等)虽然方便,但要么收费,要么无法掌握完整的访问数据。而 Sink 的出现完美解决了这一问题——它是一个运行在 Cloudflare 上的现代化短链接服务,让你可以在零服务器成本的情况下,拥有一个功能完整、界面优雅、自带分析功能的私有短链接系统。

项目地址:https://github.com/luochen-zhang/Sink

开源协议:MIT

核心优势

  • 费用:0 元(利用 Cloudflare 免费额度)
  • 性能:极速(部署在 Cloudflare 全球边缘节点)
  • 数据私有:所有链接和访问数据都存储在自己的 Cloudflare 资源中
  • 运维成本:零——无需管理服务器

核心功能

Sink 是一套完整的短链接服务解决方案,功能覆盖了日常使用的方方面面:[reference:0]

功能 说明
URL 缩短 将冗长的 URL 压缩到最短长度
实时分析 监控链接访问数据,收集具有洞察力的统计数据[reference:1]
无服务器 无需传统服务器即可部署,完全运行在 Cloudflare 上[reference:2]
自定义 Slug 支持个性化的短链别名,可配置大小写敏感[reference:3]
AI 辅助 可选使用 Cloudflare Workers AI 自动生成 Slug 和 OpenGraph 元数据[reference:4]
链接控制 设置链接过期时间、访问密码、不安全链接警告页[reference:5]
智能路由 按设备类型或国家/地区智能跳转[reference:6]
社交预览 自定义标题、描述和图片的社交预览[reference:7]
二维码生成 为短链接生成二维码,方便线下分享[reference:8]
导入/导出 通过 JSON 导入导出链接,通过 CSV 导出访问数据[reference:9]
多语言 完整的国际化支持,仪表盘和跳转页均支持多语言[reference:10]
3D 地球展示 实时显示全球访问分布,采用 10 秒轮询和客户端回放[reference:11]

技术栈

Sink 采用了现代化的全栈技术方案:[reference:12]

  • 平台:Cloudflare(Workers / Pages)
  • 前端框架:Nuxt 4
  • 数据库:Cloudflare D1(权威链接存储)+ Workers KV(读写缓存)[reference:13]
  • ORM:Drizzle ORM
  • 分析引擎:Cloudflare Workers Analytics Engine[reference:14]
  • 对象存储:Cloudflare R2(可选,用于 OpenGraph 图片上传)[reference:15]
  • AI:Cloudflare Workers AI(可选)[reference:16]
  • UI 组件:shadcn-vue[reference:17]
  • 样式:Tailwind CSS[reference:18]

部署教程

准备工作

开始部署前,你需要准备:

  1. 一个 Cloudflare 账号
  2. 一个 GitHub 账号
  3. (可选)一个自定义域名——如果使用 Cloudflare Pages 默认域名也可正常访问

方式一:Cloudflare Pages 可视化部署(推荐)

这是最简单的部署方式,全程在浏览器中完成。[reference:19]

第 1 步:Fork 仓库

登录 GitHub,打开 Sink 项目仓库,点击右上角的 Fork 按钮,将仓库复制到你的 GitHub 账号下。[reference:20]

第 2 步:进入 Cloudflare Workers & Pages

登录 Cloudflare 控制台,进入 Workers & Pages 创建页面:

https://dash.cloudflare.com/?to=/:account/workers-and-pages/create

第 3 步:连接 GitHub 并选择仓库

点击 连接到 Git,按提示授权 Cloudflare 访问你的 GitHub 账号,然后选择你刚刚 Fork 的 Sink 仓库。[reference:21]

第 4 步:配置构建设置

  • 框架预设:选择 Nuxt.js(不要选错成 Next.js)[reference:22]
  • 构建命令npm run build(会自动带出)
  • 输出目录dist(会自动带出)[reference:23]

第 5 步:配置环境变量

这是至关重要的一步,需要添加以下三个环境变量:[reference:24]

变量名 说明 获取方式
NUXT_SITE_TOKEN 网站登录的管理密码 自行设置,至少 8 个字符的强密码
NUXT_CF_ACCOUNT_ID Cloudflare 账号 ID 在 Cloudflare 仪表盘右侧 "Account details" 中查找
NUXT_CF_API_TOKEN Cloudflare API 令牌 Cloudflare API Tokens 创建,至少需要 Account.Account Analytics 权限

⚠️ 重要NUXT_SITE_TOKEN 请使用强随机字符串,不要使用简单密码,这是你访问管理后台的唯一凭证。

第 6 步:保存并触发部署

点击 保存并部署,等待部署流程开始。[reference:28]

第 7 步:配置绑定(关键步骤)

部署开始后,立即取消部署(点击取消),然后进入项目的 设置 → 绑定,添加以下绑定:

  1. KV 命名空间绑定

    • 变量名:KV
    • 值:在 Cloudflare 存储和数据库 → KV 中创建一个新的命名空间,然后绑定[reference:30]
  2. Analytics Engine 绑定(必需):

    • 在 Workers & Pages 右侧面板找到 Analytics Engine,点击 Set up 启用免费版
    • 返回 设置 → 绑定 → 添加,选择 Analytics Engine
    • 变量名:ANALYTICS,绑定到 sink 数据集
  3. Workers AI 绑定(可选,用于 AI 生成 Slug):

    • 变量名:AI,绑定到 Workers AI Catalog[reference:33]
  4. R2 存储桶绑定(可选,用于 OpenGraph 图片上传):

    • 在 Cloudflare 创建 R2 存储桶,绑定变量名 R2

第 8 步:配置 Compatibility Flags

进入 设置 → 运行时,添加兼容性标志:nodejs_compat

第 9 步:重新部署

完成所有绑定和配置后,回到 部署 页面,点击最新部署记录右侧的 ··· → 重试部署,等待部署完成。[reference:36]

第 10 步:访问使用

部署成功后,访问你的 Pages 域名(或自定义域名),使用你设置的 NUXT_SITE_TOKEN 登录即可开始使用。[reference:37]

💡 官方演示站:https://sink.cool/dashboard(Site Token: SinkCool)[reference:38]

方式二:Cloudflare Workers 部署(适合进阶用户)

Sink 也支持部署到 Cloudflare Workers:

# 克隆仓库
git clone https://github.com/luochen-zhang/Sink.git
cd Sink

# 安装依赖
npm install

# 登录 Cloudflare
npx wrangler login

# 部署
npx wrangler deploy