---
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/lo/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`, preset
`cloudflare-module` ຂອງ Nitro, ຂົ້ນ Hyperdrive ແລະການກວດສອບ
ການເລີ່ມ). Worker ຕ້ອງການການເກັບທີ່ເຂົ້າກັບ S3 ສຳລັບ R2
(`QUIRE_STORAGE_DRIVER=s3`), ແຂກຮັບຊົງ realtime ຂ້າມຄຳຮ້ອງຂໍ
(`QUIRE_REALTIME_DRIVER=durable_objects` ຫຼື `centrifugo`), cache
ທີ່ແບ່ງປັນ (`QUIRE_CACHE_DRIVER=postgres` ຫຼື `valkey`) ແລະ
ຜູ້ໃຫ້ບໍລິການອີເມວ HTTP. ໂດຍບໍ່ມີພວກມັນ Worker ປະຕິເສດການ
ເລີ່ມ ແລະບັນທຶກຂອງມັນລະບຸການຕັ້ງຄ່າແຕ່ລະອັນ. ແຂກຮັບຊົງ
Durable Objects ແມ່ນ client ຂອງ Worker realtime ໃນ
`apps/realtime-worker` (Durable Object ໜຶ່ງຕໍ່ channel ສຳລັບການ
ແຈກຢາຍ, ການມີຕົວຢູ່ ແລະປະຫວັດ, ໜຶ່ງຕໍ່ຄົນສຳລັບການຕັດ
ການເຊື່ອມຕໍ່); ສົ່ງມັນຄຽງຄູ່, ດັງທີ່ຂ້າງລຸ່ມ, ຫຼື ໃຊ້ Centrifugo.

## ອັນລວມຕ່າງໆ <!--quire:the-pieces-->

| ອັນລວມ | ຢູ່ Cloudflare |
| --- | --- |
| `web` | Worker ກັບ `nodejs_compat` |
| Postgres | ພາຍນອກ, ເຂົ້າເຖິງຜ່ານ Hyperdrive: `HYPERDRIVE` ສຳລັບບົດບາດແອັບພັກ, `REPORT_HYPERDRIVE` ສຳລັບບົດບາດລາຍງານຢູ່ຖານຂໍ້ມູນທາງກາຍະພາບດຽວກັນ. ຊັ້ນເວັບຄັດລອກ connection string ແຕ່ລະອັນເຂົ້າ `DATABASE_URL` ແລະ `QUIRE_REPORT_DATABASE_URL` ເມື່ອມັນເລີ່ມ |
| ໄຟລ໌ | R2, ຜ່ານ S3 API ຂອງມັນ (`S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com`); binding `FILES` ຕິດ bucket |
| ງານພື້ນຫຼັງ | pg-boss ເທິງ Hyperdrive ເມື່ອງານຕ້ອງຖືກບັນທຶກເຂົ້າ queue ພ້ອມການຂຽນ. ດ້ວຍ `QUIRE_QUEUE_DRIVER=cloudflare` ໃນ worker ເພື່ອການ ງານເບົາໆ (ການແຈ້ງເຕືອນ ແລະການສົ່ງ webhook ທີ່ບໍ່ມີລຳດັບ) ໄປຜ່ານ Cloudflare Queues ແທນ ດັ່ງນັ້ນ Postgres ບໍ່ຖືກເອີ້ນສຳລັບພວກມັນ. Worker ເພື່ອການແລ່ນທັງສອງ |
| Realtime | Worker realtime, `apps/realtime-worker`, ກັບ Durable Objects |
| `worker`, `scheduler`, `collab`, `content`, ClamAV, Gotenberg, ffmpeg | ເຊີບເວີ container ເພື່ອການ. Worker ແລ່ນພວກມັນບໍ່ໄດ້ |
| ການຕິດຕາມ | ການສັງເກດເບິ່ງຂອງ Workers, ເປີດໃນ `wrangler.jsonc` |

`REPORT_HYPERDRIVE` ສະໜອງບົດບາດລາຍງານສຳລັບຖານຂໍ້ມູນທາງ
ກາຍະພາບທີ່ `HYPERDRIVE` ລະບຸ. ເປົ້າໝາຍນີ້ບໍ່ບໍລິການ tenants
ທີ່ຖືກຜູກກັບຖານຂໍ້ມູນທາງກາຍະພາບເພີ່ມເຕີມ, ດັງທີ່ອະທິບາຍ
ຂ້າງລຸ່ມ.

## ສິ່ງທີ່ເປົ້າໝາຍນີ້ບໍ່ສາມາດເຮັດໄດ້ <!--quire:what-this-target-cannot-do-->

ຖືກປະຕິເສດໃນຂະນະເລີ່ມ, ພ້ອມບັນຫາທຸກໆອັນລາຍຊື່ພ້ອມກັນ:

- **ບໍ່ມີ SMTP.** ໃຊ້ຜູ້ໃຫ້ບໍລິການ HTTP ໃນ `QUIRE_EMAIL_PROVIDER_CONFIG`.
- **ບໍ່ມີດິດທ້ອງຖິ່ນ.** `QUIRE_STORAGE_DRIVER` ຕ້ອງຊື່ການເກັບ object.
- **ບໍ່ມີ realtime ຫຼື cache ໃນຂະບວນການ.** Workers ບໍ່ແບ່ງຄວາມ
  ຈື່ຈຳລະຫວ່າງຄຳຮ້ອງຂໍ ດັ່ງນັ້ນ `QUIRE_REALTIME_DRIVER=inprocess`
  ແລະ `QUIRE_CACHE_DRIVER=memory` ຖືກປະຕິເສດ.
- **ບໍ່ມີ ClamAV, Gotenberg ຫຼື ffmpeg ໃນ Worker.** `CLAMAV_URL`,
  `GOTENBERG_URL` ແລະ `FFMPEG_PATH` ທີ່ຕັ້ງໃນ Worker ຖືກປະຕິເສດ;
  ຕັ້ງພວກມັນໃນ worker ເພື່ອການແທນ.
- **ບໍ່ມີອົງການທີ່ມີຖານຂໍ້ມູນສະເພາະ.** Binding Hyperdrive ຂອງ
  Worker ຖືກກຳນົດໄວ້ໃນເວລາສົ່ງ ດັ່ງນັ້ນອົງການທີ່ມີຖານຂໍ້ມູນ
  ຂອງຕົນເອງຈະໄດ້ໜ້າ "unavailable here" ທີ່ຊັດເຈນ. ບໍລິການມັນ
  ຈາກ Compose ຫຼື Vercel.

ແລະ ສິ່ງໜຶ່ງທີ່ບໍ່ຖືກປະຕິເສດແຕ່ຕ້ອງຮູ້: **ການສ້າງໜ້າລ່ວງໜ້າ
ແລະການປັບແປງ static ເພີ່ມທະວີບໍ່ເຮັດວຽກຢູ່ Workers** ເຖິງແມ່ນ
ເອກະສານຂອງ framework ບອກແນວໃດ. ເສັ້ນທາງທຸກໆອັນ render ຕາມ
ຄຳຮ້ອງຂໍ.

ໃນເປົ້າໝາຍນີ້ຮັກສາ transactions ສັ້ນໆ ແລະບໍ່ເຄີຍຖືກອັນໜຶ່ງ
ຂ້າມການເອີ້ນເຄືອຂ່າຍ: Hyperdrive ຕັ້ງຄ່າສະຖານະເຊັນຊັນຄືນ
ເມື່ອການເຊື່ອມຕໍ່ກັບມາຫາ pool ດັ່ງນັ້ນ context ຂອງ 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 ids ທັງສອງເຂົ້າ `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 realtime, ພ້ອມ `QUIRE_REALTIME_WORKER_SECRET` ຂອງຊັ້ນ
   ເວັບ ແລະຄວາມລັບຂອງ token ຂອງມັນເປັນ
   `QUIRE_REALTIME_TOKEN_SECRET` (ຊັ້ນເວັບລາຍລານື້ realtime tokens
   ດ້ວຍ `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 ໜຶ່ງຕໍ່ light queue
   ແລະຕັ້ງສິ່ງເຫຼົ່ານີ້ໃນ worker ເພື່ອການ (API token ກັບສິດ
  ອ່ານ ແລະຂຽນ 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](/lo/ops/vercel/), ຂັ້ນຕອນ 3.
   ການຍ້າຍຂໍ້ມູນແລ່ນຢູ່ທີ່ນັ້ນ, ກ່ອນການສົ່ງ Worker ແຕ່ລະຄັ້ງ.

ການຕັ້ງຄ່າທີ່ຖືກປະຕິເສດສະແດງຢູ່ `bun run --bun wrangler tail` ເປັນ
"The web tier did not start on cloudflare", ຕິດຕາມດ້ວຍການຕັ້ງຄ່າ
ແຕ່ລະອັນທີ່ຈະປ່ຽນ.

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