---
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/ky/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`, `cloudflare-module` Nitro
пресети, Hyperdrive көпүрөсү жана башталыш текшерүүлөрү). Worker'ге R2
үчүн S3 ылайыктуу сактоо (`QUIRE_STORAGE_DRIVER=s3`), суроолор
бойунча реалдуу убакыт драйвери (`QUIRE_REALTIME_DRIVER=durable_objects`
же `centrifugo`), орток кэш (`QUIRE_CACHE_DRIVER=postgres` же `valkey`)
жана HTTP почта провайдери керек. Алар болбосо Worker башталыштан баш
тартат жана анын журналы ар бир жөндөөнү атайт. Durable Objects драйвери
`apps/realtime-worker`'деги реалдуу убакыт Worker'инин клиенти (fan-out,
болуу жана тарых үчүн канал сайын бир Durable Object, ажыроолор үчүн адам
сайын бирөө); аны төмөндөгүдөй чогуу жайгаштырыңыз же Centrifugo'ну
колдонуңуз.

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

| Piece | On 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` байламасы bucket'ты туташтырат |
| Фон жумуштары | Жумуш жазуу менен кезекке турушу керек болсо Hyperdrive үстүндөгү pg-boss. Кошумча жумушчуда `QUIRE_QUEUE_DRIVER=cloudflare` болсо, жеңил жумуштар (тартиби жок билдирүү жана вебхук жеткирүүлөрү) ордуна Cloudflare Queues аркылуу өтөт, ошондуктан алар үчүн Postgres суранбайт. Кошумча жумушчу экөөсүн иштетет |
| Реалдуу убакыт | Durable Objects менен реалдуу убакыт Worker'и, `apps/realtime-worker` |
| `worker`, `scheduler`, `collab`, `content`, ClamAV, Gotenberg, ffmpeg | Кошумча контейнер хосту. Worker аларды иштете албайт |
| Көзөмөл | `wrangler.jsonc`'де иштетилген Workers observability |

`REPORT_HYPERDRIVE` `HYPERDRIVE` атаган физикалык маалымат базасы үчүн
отчёт ролун берет. Бул максат, төмөндө сүрөттөлгөндөй, кошумча
физикалык маалымат базаларына бекитилген tenantтарды тейлей албайт.

## Бул максат кылалбайт нерселер <!--quire:what-this-target-cannot-do-->

Башталышта четке кагылат, ар бир ката бир учурда тизилген:

- **SMTP жок.** `QUIRE_EMAIL_PROVIDER_CONFIG` ичинде HTTP провайдерди
  колдонуңуз.
- **Жергиликтүү диск жок.** `QUIRE_STORAGE_DRIVER` объекттик сактоону
  аташы керек.
- **Процесс ичинде реалдуу убакыт же кэш жок.** Workers суроолор
  ортосунда эс тутумун бөлүшпөйт, ошондуктан
  `QUIRE_REALTIME_DRIVER=inprocess` жана `QUIRE_CACHE_DRIVER=memory`
  четке кагылат.
- **Worker'де ClamAV, Gotenberg же ffmpeg жок.** Worker'де коюлган
  `CLAMAV_URL`, `GOTENBERG_URL` жана `FFMPEG_PATH` четке кагылат;
  алардын ордуна кошумча жумушчуга коюңуз.
- **Айырмаланган маалымат базасы бар уюмдар жок.** Worker'дин Hyperdrive
  байламалары жайгаштыруу учурунда бекитилет, ошондуктан өз маалымат
  базасы бар уюм так "unavailable here" бетин алат. Аны Compose же
  Vercel'ден тейлеңиз.

Жана четке кагылбайт, бирок билүү керек болгон бир нерсе: **алдын ала
рендерлөө жана тактыктуу статикалык кайра жаңылоо Workers'те иштебейт**,
фреймворк документациясы эмне айтпасын. Ар бир маршрут суроо сайын
рендерленет.

Бул максатта транзакцияларды кыска кармаңыз жана бирөөсүн тармак
чакырымынын үстүнөн кармабайт: байланыш бассейнге кайтканда 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. Реалдуу убакыт Worker'ин веб катмарынын `QUIRE_REALTIME_WORKER_SECRET`
   жана анын токен сыры `QUIRE_REALTIME_TOKEN_SECRET` катары менен
   жайгаштырыңыз (веб катмары реалдуу убакыт токендерин өзүнүн
   `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'теги жеңил жумуштар үчүн ар бир жеңил кезекке бир
   кезек түзүп, төмөнкүлөрдү кошумча жумушчуга коюңуз (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 нускакасындагыдай](/ky/ops/vercel/) 3-кадамда
   иштетиңиз. Миграциялар ошол жерде, ар бир Worker жайгаштыруусунан
   мурун иштетилет.

Четке кагылган конфигурация `bun run --bun wrangler tail`'де "The web tier did
not start on cloudflare" катары көрсөтүлөт, андан кийин өзгөртүү керек
болгон ар бир жөндөө келет.

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