1
0
Fork 0
blog/content/posts/逍遥游/Hello,Sink.md

104 lines
4.3 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
slug: hello-sink
summary: 我也不大知道这个有什么用,但是我认为它有用
tags:
- CloudFlare
title: HelloSink
date: 2024-07-29
description: 本文介绍了 Sink 项目的部署过程。Sink 是一个基于 CloudFlare 的短链接项目,支持数据分析和链接截止日期等功能。本文详细介绍了使用 CloudFlare 部署 Sink 的过程。
categories: ["逍遥游"]
featuredImage: https://img.viento.cc/cover/hello-sink-cover.webp
draft: false
---
各位老友们好,我是 Chlorine。
最近在重拾 TypeScript~~小氯你到底还要开多少个语言的坑啊~~),同时热衷于薅带善人 CloudFlare 的羊毛,于是盯上了 CloudFlare Workers&Pages然后找到了一个有趣的项目[Sink](https://sink.cool)。
## 简介
Sink 是一个完全基于 CloudFlare 的短链接shortURL项目支持数据分析和链接截止日期等多种功能。
啥是短链接?简单来说,如果你觉得小氯的文章[解决Swup导致的JavaScript加载失效问题](https://chlor.me/swup-modifying)写得不错(~~行了我知道你并不这么觉得~~),希望分享给朋友,你很可能会把这个链接直接粘贴给你的朋友:
```txt
https://chlor.me/swup-modifying
```
看着还行,不是吗?但是假如小氯的链接是:
```txt
https://ameaninglessprefix.averylongurlforchlorinechan.ameaninglesstldthatdoesntevenexist/ameaninglessdirthatstandsformyposts/anothermeaninglessprefix/2024/07/26/qwertyuiopasdfghjklzxcvbnm1234567890/swup-modifying
```
我敢打赌你的朋友看到这个链接就会汗流浃背。
但是如果现在你贴心地告诉朋友,这个链接也是一样的:
```txt
# 注:我瞎编的
https://cl.tld/swup
```
我相信你们之间的友谊会得到相当程度的强化。
概括一下,就是说有时候一个链接实在是太长了,不便于分享和发送,我们就想办法造出一个短链接来,使得这个短链接指向原本长链接一样的位置。
市面上的短链接服务有很多Sink 是其中能自部署的服务中比较出色的一个。
## What do I need?
- 一个 CloudFlare 账户
- 一个托管在 CloudFlare 的域名,短点最好
- 一个 GitHub 账户
- 一台能顺畅访问互联网的设备
- 手,脑子
## 准备工作
### 获取 CloudFlare Account ID
在 CloudFlare 仪表板中随便点击一个域名,进入概览页面,向下滑,在 API 一栏中就能看到【账户 ID】了。
![|426](https://img.viento.cc/202407292145948.avif)
### 创建 CloudFlare Account API
在仪表板的右上角点击账户图标-我的个人资料-API 令牌,然后点击创建 API 令牌。
滑动到最下方,选择【创建自定义令牌】,配置如下所示:
![|584](https://img.viento.cc/IMG-20240729215335.avif)
### 创建 CloudFlare KV
在侧边栏-Workers 和 Pages-KV 创建即可,名字随便起。
## 启动!
首先进入 GitHubfork [这个仓库](https://github.com/ccbikai/sink)(别忘记给作者点 star~)。然后进入 CloudFlare在侧边栏点击【Workers 和 Pages】新建一个 page选择【通过导入现有 Git 存储库创建】(如果还没绑定 CloudFlare Pages APP 到 GitHub按要求操作即可仓库选择刚刚克隆的仓库。
进入配置界面,项目名称随便起,框架预设选择 `Nuxt.js`,然后点击【环境变量(高级)】,增加如下几个环境变量:
- `NUXT_SITE_TOKEN`:这个随便起,但是**长度需要超过 8且不能是纯数字**
- `NUXT_CF_ACCOUNT_ID`:你的账户 ID
- `NUXT_CF_API_TOKEN`:你的 API token
然后点击部署,随即取消(~~CloudFlare你是真的苟~~)。进入项目管理界面-设置-函数,添加以下的绑定:
- KV键就是 `KV`,值是你刚才的 KV namespace。
- Workers AIOptional键为 `AI`,值会自动给你生成为 `Workers AI Catalog`
- Analytics Engine键为 `ANALYTICS` ,值为 `sink`(需要启动 CloudFlare 分析引擎,照做即可)。
> [!IMPORTANT]
> 注意这几个绑定的【生产】和【预览】选项卡是不同步的,需要分别创建!
然后重新部署即可。
## 绑定自定义域名
这个是可选的,但是 CloudFlare Pages 的域名很容易访问不畅,而且也太长了,违背了 short 的初衷。
绑定域名的步骤略过。剩下的时间,各位老友自由发挥吧。