---
title: "توڕی وێب لەسەر Cloudflare Workers"
description: "توڕی وێبی کەمکراوەی Quire لەسەر Cloudflare Workers بەکاربهێنە."
image: "https://docs.quirelms.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.quirelms.com/ckb/llms.txt
> Use this file to discover all available pages before exploring further.

# توڕی وێب لەسەر Cloudflare Workers

<span id="the-web-tier-on-cloudflare-workers"></span>

دیزاینەکە لە `docs/architecture/23-ops.md` بەشی 6ە. Workers توڕی وێبێکی کەمکراوە کارپێدەکەن. یەکسانیی تایبەتمەندی لە Workers ئامانج نییە (PRD بەشی 12): ئەوەی ئەم ئامانجە ناتوانێت بیکات کاتی دەستپێکردن بە ناوی ڕەت دەکرێتەوە.

## دۆخ لەم بڵاوکراوەدا <!--quire:status-in-this-release-->

ڕێکخستنەکان ئامادەن (`apps/web/wrangler.jsonc`، پێشڕێکی Nitroی `cloudflare-module`، پەیوەندیدەری Hyperdrive و پشکنینەکانی دەستپێکردن). Worker پێویستی بە هەڵگرتنی سازگار لەگەڵ S3 بۆ R2 هەیە (`QUIRE_STORAGE_DRIVER=s3`)، ڕێگای کاتیی ڕاستەوخۆ لە نێوان داواکارییەکان (`QUIRE_REALTIME_DRIVER=durable_objects` یان `centrifugo`)، خەزێنەی هاوبەش (`QUIRE_CACHE_DRIVER=postgres` یان `valkey`) و دابینکەری ئیمەیڵی HTTP. بەبێ ئەمانە Worker دەستپێکردن ڕەت دەکاتەوە و تۆمارەکەی هەر ڕێکخستنێک ناو دەبات. دابینکەری Durable Objects کڕیارێکی Workerی ڕاستەوخۆ لە `apps/realtime-worker`ە (یەک Durable Object بۆ هەر کەناڵێک بۆ دابەشکردن، بوونی بەکارهێنەر و مێژوو؛ یەکێک بۆ هەر کەس بۆ پچڕان)؛ وەک خوارەوە لە تەنیشتیدا بڵاوی بکەرەوە یان Centrifugo بەکاربهێنە.

## پارچەکان <!--quire:the-pieces-->

| پارچە | لەسەر Cloudflare |
| --- | --- |
| `web` | Worker لەگەڵ `nodejs_compat` |
| Postgres | دەرەکی و لە ڕێگەی Hyperdriveوە دەستپێی دەگات: `HYPERDRIVE` بۆ ڕۆڵی بەرنامە، `REPORT_HYPERDRIVE` بۆ ڕۆڵی ڕاپۆرت لەسەر هەمان بنکەدراوەی جەستەیی. توڕی وێب هەر ڕشتەی پەیوەندییەک بۆ `DATABASE_URL` و `QUIRE_REPORT_DATABASE_URL` کۆپی دەکاتەوە کاتی دەستپێکردن |
| فایلەکان | R2 لە ڕێگەی APIی S3وە (`S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com`)؛ bindingی `FILES` حەوزەکە دەبەستێتەوە |
| کارەکانی پاشبنەما | pg-boss لەسەر Hyperdrive کاتێک پێویستە لەگەڵ نووسینێک کار زیاد بکرێت. لەگەڵ `QUIRE_QUEUE_DRIVER=cloudflare` لە workerی هاوڕێ، کارە سووکەکان (ئاگادارکردنەوە و گەیاندنی webhook بەبێ ڕیزبەندی) لە ڕێگەی Cloudflare Queues دەڕۆن بۆیە Postgres بۆیان ناپشکنرێت. workerی هاوڕێ هەردووکیان جێبەجێ دەکات |
| ڕاستەوخۆ | Workerی ڕاستەوخۆ، `apps/realtime-worker`، لەگەڵ Durable Objects |
| `worker`، `scheduler`، `collab`، `content`، ClamAV، Gotenberg، ffmpeg | میوانداریی حەوزەی هاوڕێ. Worker ناتوانێت ئەمانە جێبەجێ بکات |
| چاودێری | چاودێریی Workers، لە `wrangler.jsonc` چالاککراوە |

`REPORT_HYPERDRIVE` ڕۆڵی ڕاپۆرت بۆ هەمان بنکەدراوەی جەستەیی دابین دەکات کە `HYPERDRIVE` ناوی دەبات. ئەم ئامانجە tenantەکان خزمەت ناکات کە داتابەیسی جەستەیی زیادەیان تێدا جێگیرکراوە، وەک لە خوارەوە ڕوونکراوەتەوە.

## ئەم ئامانجە ناتوانێت چی بکات <!--quire:what-this-target-cannot-do-->

لە دەستپێکردندا ڕەت دەکرێتەوە و هەموو کێشەکان یەکجار لیست دەکرێن:

- **SMTP نییە.** دابینکەرێکی HTTP لە `QUIRE_EMAIL_PROVIDER_CONFIG` بەکاربهێنە.
- **دیسکی ناوخۆیی نییە.** `QUIRE_STORAGE_DRIVER` دەبێت هەڵگرتنی شتی تۆمارکراو دیاری بکات.
- **ڕاستەوخۆ یان خەزینەی ناوپرۆسێس نییە.** Workers لە نێوان داواکارییەکاندا بیرگە هاوبەش ناکەن، بۆیە `QUIRE_REALTIME_DRIVER=inprocess` و `QUIRE_CACHE_DRIVER=memory` ڕەت دەکرێنەوە.
- **ClamAV، Gotenberg یان ffmpeg لە Workerدا نییە.** دانانی `CLAMAV_URL`، `GOTENBERG_URL` و `FFMPEG_PATH` لەسەر Worker ڕەت دەکرێتەوە؛ لە جیاتی ئەوە لە workerی هاوڕێ دایانبنێ.
- **دامەزراوەی بنکەدراوی تایبەت نییە.** bindingەکانی Hyperdriveی Worker کاتی بڵاوکردنەوە جێگیرن، بۆیە دامەزراوەیەک کە بنکەدراوی تایبەتی هەیە پەڕەیەکی ڕوونی "لێرە بەردەست نییە" دەبینێت. لە Compose یان Vercel خزمەتی پێ بکە.

هەروەها یەک شت ڕەت ناکرێتەوە بەڵام پێویستە بزانرێت: **پێشتر وێنەکردن و نوێکردنەوەی وردەوردەی دۆخی ساکن لەسەر Workers کار ناکەن**، سەربەخۆ لەوەی بەڵگەنامەی چوارچێوەکە چی دەڵێت. هەر ڕێڕەوێک بەپێی داواکاری وێنە دەکرێت.

لەسەر ئەم ئامانجە transactionەکان کورت بهێڵەوە و هەرگیز لە ماوەی پەیوەندیی تۆڕدا بەردەوامیان مەکە: Hyperdrive دۆخی دانیشتن دوای گەڕاندنەوەی پەیوەندییەک بۆ pool ڕێکدەخاتەوە، بۆیە سیاقی tenant بۆ هەر transactionێک دادەنرێت.

## بڵاوکردنەوە <!--quire:deploying-->

1. سەرچاوەکان دروست بکە:
   ```sh
   bun run --bun wrangler hyperdrive create quire-app --connection-string="postgres://quire_app:...@db.example.com:5432/quire"
   bun run --bun wrangler hyperdrive create quire-report --connection-string="postgres://quire_report:...@db.example.com:5432/quire"
   bun run --bun wrangler r2 bucket create quire-files
   bun run --bun wrangler queues create quire-jobs
   ```
   دوو ناسێنەری Hyperdrive لە `apps/web/wrangler.jsonc` دابنێ.
2. نهێنییەکان یەک بە یەک بە `bun run --bun wrangler secret put <NAME>` لە `apps/web` دابنێ: `QUIRE_SECRET_KEY`، `QUIRE_MASTER_KEY`، `QUIRE_EMAIL_PROVIDER_CONFIG`، `S3_ACCESS_KEY_ID`، `S3_SECRET_ACCESS_KEY`، `QUIRE_COLLAB_SIGNING_KEY`، `QUIRE_REALTIME_WORKER_SECRET`. ڕێکخستنە ئاساییەکان (`QUIRE_APP_ORIGIN`، `QUIRE_CONTENT_ORIGIN`، `QUIRE_PLATFORM_DOMAINS`، `QUIRE_DATABASE_ID`، `S3_ENDPOINT`، `S3_BUCKET`، `QUIRE_COLLAB_URL`) لە `vars` دابنێ.
3. لە `apps/web` بنیاتنان و بڵاوکردنەوە بکە:
   ```sh
   NITRO_PRESET=cloudflare-module bun run build
   bun run --bun wrangler deploy
   ```
4. Workerی ڕاستەوخۆ بڵاو بکەرەوە، بە `QUIRE_REALTIME_WORKER_SECRET`ی توڕی وێب و tokenی نهێنییەکەی وەک `QUIRE_REALTIME_TOKEN_SECRET` (توڕی وێب tokenی ڕاستەوخۆ بە `QUIRE_REALTIME_TOKEN_SECRET`ی خۆی واژۆ دەکات، یان ئەگەر دیاری نەکرابێت `QUIRE_SECRET_KEY`؛ بۆیە هەر ئەوە بەکاربهێنە کە ئەو بەکاری دەهێنێت)، و `QUIRE_REALTIME_WORKER_URL` لە توڕی وێب بۆ ناونیشانەکە دابنێ:
   ```sh
   cd apps/realtime-worker
   bun run --bun wrangler secret put QUIRE_REALTIME_WORKER_SECRET
   bun run --bun wrangler secret put QUIRE_REALTIME_TOKEN_SECRET
   bun run --bun wrangler deploy
   ```
5. بۆ کارە سووکەکان لە Cloudflare Queues، بۆ هەر ڕیزی سووک queueێک دروست بکە و لە workerی هاوڕێ دایانبنێ (tokenی API کە خوێندنەوە و نووسینی Queuesی هەیە):
   ```sh
   bun run --bun wrangler queues create quire-events-notifications
   bun run --bun wrangler queues create quire-events-notifications-dead
   bun run --bun wrangler queues create quire-events-webhooks
   bun run --bun wrangler queues create quire-events-webhooks-dead
   ```
   `QUIRE_QUEUE_DRIVER=cloudflare`، `CLOUDFLARE_ACCOUNT_ID`، `CLOUDFLARE_QUEUES_TOKEN` و ئەگەر `QUIRE_QUEUE_PREFIX` بە `quire-` نییە دایانبنێ.
6. میوانداری هاوڕێ وەک لە [ڕێنمایی Vercel](/ckb/ops/vercel/) هەنگاوی 3دا جێبەجێ بکە. کۆچکردنەکان پێش هەر بڵاوکردنەوەی Worker لەوێ ڕوودەدەن.

ڕێکخستنی ڕەتکراوە لە `bun run --bun wrangler tail` وەک "The web tier did not start on cloudflare" دەردەکەوێت و هەر ڕێکخستنێکی پێویست بە گۆڕین لیست دەکات.

Source: https://docs.quirelms.com/ckb/ops/cloudflare/index.mdx
