---
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/kk/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-тармағында. Worker-лер
жеңілдетілген веб-деңгейді жүргізеді. Worker-лерде толық функционал
теңдігі қарастырылмаған (PRD 12-тармақ): бұл мақсат не істей алмайтыны
іске қосылғанда атауымен көрсетіліп, қабылданбайды.

## Осы шығарылымдағы күйі <!--quire:status-in-this-release-->

Баптау орнында тұрады (`apps/web/wrangler.jsonc`, `cloudflare-module`
Nitro пресеті, Hyperdrive көпірі және іске қосу тексерістері). Worker-ге
R2 үшін S3-үйлесімді қойма (`QUIRE_STORAGE_DRIVER=s3`), сұраныстар
бойынша жұмыс істейтін realtime драйвері
(`QUIRE_REALTIME_DRIVER=durable_objects` немесе `centrifugo`), ортақ
кэш (`QUIRE_CACHE_DRIVER=postgres` немесе `valkey`) және HTTP пошта
провайдері қажет. Олар болмаса, Worker іске қосылудан бас тартады және
оның журналы әр параметрді атайды. Durable Objects драйвері
`apps/realtime-worker` файлындағы realtime Worker-дің клиенті болып
табылады (fan-out, қатысу және тарих үшін арнаға бір Durable Object,
ажырау үшін әр адамға біреу); оны төмендегідей қатар орналастырыңыз
немесе Centrifugo пайдаланыңыз.

## Бөліктер <!--quire:the-pieces-->

| Бөлік | Cloudflare-де |
| --- | --- |
| `web` | `nodejs_compat` бар Worker |
| Postgres | Сыртқы, Hyperdrive арқылы қолжетімді: қолданба рөлі үшін `HYPERDRIVE`, сол физикалық дерекқордағы есеп рөлі үшін `REPORT_HYPERDRIVE`. Веб-деңгей іске қосылғанда әр байланыс жолын `DATABASE_URL` пен `QUIRE_REPORT_DATABASE_URL`-ге көшіреді |
| Файлдар | R2, оның S3 API арқылы (`S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com`); `FILES` байланыстыруы шелекті бекітеді |
| Фондық жұмыстар | Жазу арқылы кезекке түсу қажет болғанда Hyperdrive үстіндегі pg-boss. Жанама worker-де `QUIRE_QUEUE_DRIVER=cloudflare` орнатылса, жеңіл жұмыстар (реттелмеген хабарламалар мен webhook жеткізілімдері) орнына Cloudflare Queues арқылы өтеді, сондықтан Postgres солар үшін сұраныс жасамайды. Жанама worker екеуін де жүргізеді |
| Realtime | `apps/realtime-worker` realtime Worker-і, Durable Objects-пен |
| `worker`, `scheduler`, `collab`, `content`, ClamAV, Gotenberg, ffmpeg | Жанама контейнер хосты. Worker оларды жүргізе алмайды |
| Ізқуару | Workers observability, `wrangler.jsonc` ішінде қосылған |

`REPORT_HYPERDRIVE` `HYPERDRIVE` атап тұрған физикалық дерекқор үшін
есеп рөлін қамтамасыз етеді. Бұл мақсат төменде сипатталғандай,
қосымша физикалық дерекқорларға бекітілген tenant-терге қызмет
етпейді.

## Бұл мақсат не істей алмайды <!--quire:what-this-target-cannot-do-->

Іске қосылғанда бас тартады, барлық мәселе бірден тізіледі:

- **SMTP жоқ.** `QUIRE_EMAIL_PROVIDER_CONFIG` ішінде HTTP провайдер
  пайдаланыңыз.
- **Жергілікті диск жоқ.** `QUIRE_STORAGE_DRIVER` объектілік қойманы
  атауы керек.
- **Процесс ішіндегі realtime немесе кэш жоқ.** Worker-лер сұраныстар
  арасында жад бөліспейді, сондықтан `QUIRE_REALTIME_DRIVER=inprocess`
  және `QUIRE_CACHE_DRIVER=memory` қабылданбайды.
- **Worker-де ClamAV, Gotenberg немесе ffmpeg жоқ.** Worker-ге
  орнатылған
  `CLAMAV_URL`, `GOTENBERG_URL` және `FFMPEG_PATH` қабылданбайды;
  олардың орнына жанама worker-ге орнатыңыз.
- **Жеке дерекқоры бар ұйымдар жоқ.** Worker-дің Hyperdrive
  байланыстырулары орналастыру сәтінде бекітіледі, сондықтан өз
  дерекқоры бар ұйым анық «мұнда қолжетімсіз» бетін алады. Оны Compose
  немесе Vercel-ден қызмет етіңіз.

Ал бас тартпайтын, бірақ білу керек бір нәрсе бар: **алдын ала құрастыру
және үздіксіз статикалық қайта жаңарту Worker-лерде жұмыс істемейді**,
қай framework құжаты айтпасын. әр маршрут сұраныс үшін бөлек
құрастырылады.

Бұл мақсатта транзакцияларды қысқа ұстаңыз және оларды ешқашан
желілік шақырудың үстінде ұстамаңыз: байланыс pool-ге қайтқанда
Hyperdrive сессия күйін қалпына келтіреді, сондықтан tenant контексті
әр транзакция үшін орнатылады.

## Орналастыру <!--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 id-ін `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. Realtime Worker-ді веб-деңгейдің `QUIRE_REALTIME_WORKER_SECRET`
   параметрімен және оның токен құпиясын `QUIRE_REALTIME_TOKEN_SECRET`
   ретінде (веб-деңгей realtime токендеріне өзінің
   `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-тегі жеңіл жұмыстар үшін жеңіл кезекке бір-бір
   кезек жасап, мына параметрлерді жанама worker-ге орнатыңыз (Queues
   оқу мен жазуға арналған API токені):
   ```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 нұсқаулығының](/kk/ops/vercel/) 3-қадамындағыдай
   жүргізіңіз. Миграциялар сонда, әр Worker орналастыруынан бұрын жүреді.

Қабылданмаған баптау `bun run --bun wrangler tail` жолында "The web tier did
not start on cloudflare" түрінде көрінеді, одан кейін өзгерту керек әр
параметр тізіледі.

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