| title | Deploy on Cloudflare Workers |
|---|---|
| description | Deploy Sink on Cloudflare Workers through Git integration. |
Create a fork of the Sink repository. In the Cloudflare dashboard, create:
| Binding name | Product | Required? | What it is |
|---|---|---|---|
DB |
D1 database | Yes | Stores links |
KV |
KV namespace | Yes | Speeds up redirects |
ANALYTICS |
Analytics Engine dataset | Recommended | Visit stats |
R2 |
R2 bucket | Optional | Backups and social images |
AI |
Workers AI | Optional | AI suggestions |
Copy the D1 database ID and KV namespace ID from each resource’s detail page.
Analytics is optional — short links still work without it. Setup: Analytics and Realtime.
In the Cloudflare dashboard, create a Worker with Git integration and connect your fork:
- Production branch:
master - Build command:
pnpm build - Deploy command:
pnpm deploy:worker
Add these build variables (do not put production IDs into tracked wrangler.jsonc — set DEPLOY_* instead):
| Variable | Value |
|---|---|
DEPLOY_D1_DATABASE_ID |
Your D1 database ID (from the D1 detail page) |
DEPLOY_KV_NAMESPACE_ID |
Your KV namespace ID (from the KV detail page) → kv_namespaces[].id |
DEPLOY_KV_PREVIEW_NAMESPACE_ID |
Optional Wrangler preview KV → preview_id (defaults to DEPLOY_KV_NAMESPACE_ID) |
DEPLOY_R2_BUCKET_NAME |
Your R2 bucket name (only if you use R2; omit to skip R2) → bucket_name |
DEPLOY_R2_PREVIEW_BUCKET_NAME |
Optional Wrangler preview R2 → preview_bucket_name (defaults to DEPLOY_R2_BUCKET_NAME) |
DEPLOY_D1_DATABASE_NAME |
Optional; default sink |
DEPLOY_ANALYTICS_DATASET |
Optional; default sink (keep in sync with NUXT_DATASET if you change it) |
pnpm deploy:worker generates gitignored wrangler.deploy.jsonc from these values, updates the D1 schema, then deploys. When you connect the repo, Cloudflare creates a deploy token — no extra credential to paste.
Under Settings → Variables and Secrets, add:
| Variable | Type | Purpose |
|---|---|---|
NUXT_SITE_TOKEN |
Encrypted secret | Dashboard login password and API password (at least 8 characters, keep it stable) |
NUXT_CF_ACCOUNT_ID |
Variable | Recommended for analytics |
NUXT_CF_API_TOKEN |
Encrypted secret | Recommended for analytics |
Analytics details: Analytics and Realtime. Full list: configuration.
Confirm bindings use the exact names DB, KV, ANALYTICS, R2, and AI.
Start a build from master and wait until it finishes.
- Open
/dashboardand sign in withNUXT_SITE_TOKEN - Open Dashboard → Links once (one-time storage setup)
- Create a link
::: tip First open of Links Until storage setup finishes, creating links may fail with “storage not ready” (HTTP 423). :::
Later upgrades: Upgrading Sink.