这两天看到了面条的新项目——Sink,这是一款基于 Cloudflare 的带访问统计功能的短链系统。我之前只听说过短链系统,但从未使用过,对此很感兴趣。项目开源后,我便尝试部署了一下。

An image to describe post

这是我第一次使用 Cloudflare Pages,按照 GitHub 上的英文教程一步步来进行配置,也非常顺利(况且大家也有翻译)。

Sink 的功能

Sink 提供了一系列实用功能,包括:

  • URL 缩短:轻松将长链接压缩为短链接,方便分享和管理。
  • 分析功能:实时监控链接的访问数据,提供详细的统计分析。
  • 链接过期:可设置链接的有效期,确保链接管理的灵活性。

Sink 的特性

Sink 拥有以下特性:

  • 无服务器架构:不再需要传统服务器,利用 Cloudflare Workers 提供高效的计算能力,还避免了服务器的成本。
  • 个性化 Slug:支持自定义链接的 Slug,让每个链接都与众不同。
  • AI 生成 Slug:借助 AI 技术智能生成 Slug,提升用户体验。

Sink 的技术栈

Sink 采用现代化的技术栈,确保项目的高性能和可扩展性:

  • 框架:Nuxt
  • 数据库:Cloudflare Workers KV
  • 分析引擎:Cloudflare Workers Analytics Engine
  • UI 组件:Shadcn-vue
  • 样式:Tailwind CSS
  • 部署:Cloudflare

不过需要注意的是 Sink 主要面向个人自部署场景,并不适合团队使用。

演示站

Sink 有演示站,可以访问 Sink.Cool 体验,使用以下站点令牌登录:

Site Token: SinkCool

An image to describe post

An image to describe post

部署方法

部署 Sink 非常简单,需要用到 GitHub 和 Cloudflare:

  1. 首先将仓库 fork 到你的 GitHub 账号。

  2. 创建一个 Cloudflare Pages 项目。选择 Sink 仓库和 Nuxt.js 预设。

  3. 配置环境变量。
    NUXT_SITE_TOKEN 长度必须超过 8。
    NUXT_CF_ACCOUNT_ID 查找你的账户 ID。
    NUXT_CF_API_TOKEN 创建一个 Cloudflare API 令牌。此令牌至少需要具备 Account.Account Analytics 权限。可参考

  4. 保存并部署。

  5. 取消部署,导航Settings -> Functions
    KV namespace 绑定。将变量名 KV 绑定到一个 KV namespace。
    Workers AI 绑定。将变量名 AI 绑定到 Workers AI 目录。(这一步可选)
    Analytics Engine 绑定。将变量名 ANALYTICS 绑定到 sink 数据集,并为你的账户启用 Cloudflare Analytics Engine beta。

  6. 重新部署,然后就完成了。

更多详细配置请参考项目的配置文档。如果还有不清楚的地方,可以加入面条的 Telegram 群组

Sink 的未来计划

面条对 Sink 有明确的 Roadmap,目前已规划的功能有浏览器扩展、Raycast 扩展、Apple Shortcuts 支持、增强的链接管理功能、更强大的分析功能、仪表板性能优化、单元测试以及支持更多部署平台。

我个人是很喜欢 Sink 这个工具,现在已在自己的博客和项目上使用,效果很不错,期待 Sink 未来的更多功能和改进。