Sink 部署实录:把短链接免费跑在 Cloudflare 上

先把结论放前面:一小时、零成本、一个你自己的短链接服务,跑在 Cloudflare Workers 上。

实例:sink.yuanbixue.com,已经在跑了。密码是sink123456


为什么是 Sink

Sink 是一款开源短链接工具,亮点就三个:

  1. 100% 跑在 Cloudflare Workers 上——Workers 免费额度每天 10 万次请求,个人用绰绰有余
  2. Nuxt 3 全栈——前后端一套代码,部署就是 wrangler deploy 一条命令
  3. 内置分析——点击统计、热力图、来源/地区/浏览器筛选、CSV 导出,全有

比自建 Shlink/YOURLS 省一台服务器,比用第三方 SaaS 安心。


部署七步走

1. Fork 仓库

原项目:ccbikai/Sink,fork 到自己账号下。

2. 本地构建

git clone https://github.com/zyhui98/Sink.git
cd Sink
pnpm install
pnpm run build

3. 创建 KV Namespace

Cloudflare Dashboard → Workers & Pages → KV,建一个 Namespace,拿到 ID 填到 wrangler.jsonc 里。

Sink 用 KV 存短链接数据。

4. 部署

npx wrangler deploy

第一次部署给一个 xxx.workers.dev 域名,先测通。

5. 绑自定义域名

Dashboard 里给 Worker 绑个域名(如 sink.yuanbixue.com),CDN 自动生效,不用手动配 DNS。

6. 配环境变量

NUXT_SITE_TOKEN=你的登录密码
NUXT_CF_ACCOUNT_ID=你的账号ID
NUXT_CF_API_TOKEN=你的API Token  # 查统计用

API Token 建议用 secret 方式:

echo "你的token" | wrangler secret put NUXT_CF_API_TOKEN

7. 最终 wrangler.jsonc

{
  "name": "sink",
  "main": ".output/server/index.mjs",
  "kv_namespaces": [
    { "binding": "KV", "id": "你的KV ID" }
  ],
  "analytics_engine_datasets": [
    { "binding": "ANALYTICS", "dataset": "see" }
  ],
  "triggers": { "crons": ["0 0 * * *"] }
}

三个坑

坑一:Analytics Engine 必须手动启用

Sink 的统计依赖 Cloudflare Workers Analytics Engine。这东西不能通过 API 或 wrangler 启用。 作者试了 API Token、Headless Browser、MCP 调用 Cloudflare API——全部失败。

必须登录 Dashboard → Workers & Pages → Analytics Engine,手动点 Enable。再建一个 dataset(命名为 see),在 wrangler.jsonc 加上 binding。

这个坑的影响:没法 CI/CD 全自动。第一次必须人肉点一下。

坑二:缺 binding 导致报错

第一次部署没加 analytics_engine_datasets binding,打开统计面板直接报错。补上 binding 重新部署后硬刷新解决——浏览器缓存问题。

坑三:API Token 权限不够

NUXT_CF_API_TOKEN 必须有读 Analytics Engine SQL API 的权限。配错了统计面板能打开但数据加载不出来。


验证

部署完查一下数据有没有写入:

curl -X POST \
  -H "Authorization: Bearer 你的token" \
  "https://api.cloudflare.com/client/v4/accounts/{account_id}/analytics_engine/sql" \
  -d "SELECT blob1 AS slug, SUM(_sample_interval) AS visits
      FROM see
      WHERE timestamp >= NOW() - INTERVAL '7' DAY
      GROUP BY slug"

返回正常就是跑通了。


一句总结

比用第三方短链接服务安心,比自建 Shlink 省钱。Cloudflare 免费额度吃一辈子。

声明:来自猿必学,仅代表创作者观点。链接:https://eyangzhen.com/8478.html

猿必学的头像猿必学

相关推荐

添加微信
添加微信
Ai学习群
返回顶部