---
title: "Cloudflare Workers ရှိ ဝဘ်အဆင့်"
description: "Cloudflare Workers တွင် လျှော့ချထားသော Quire ဝဘ်အဆင့် လည်ပတ်ပါ။"
image: "https://docs.quirelms.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.quirelms.com/my/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` အပိုင်း ၆ ဖြစ်သည်။ Workers က
လျှော့ချထားသောဝဘ်အဆင့် လည်ပတ်သည်။ Workers ရှိ လုပ်ဆောင်ချက်တူညီမှုက နယ်ပယ်အပြင်
(PRD အပိုင်း ၁၂)– ဤပစ်မှတ် မလုပ်နိုင်သည့်အရာကို စတင်သည့်အခါ အမည်ပေး၍ ငြင်းပယ်သည်။

## ဤထုတ်ဝေမှုရှိ အခြေအနေ <!--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 ၏ client ဖြစ်သည်
(ဖြန့်ဝေမှု၊ တည်ရှိမှုနှင့် မှတ်တမ်းအတွက် channel တစ်ခုလျှင် Durable Object တစ်ခု၊
ချိတ်ဆက်ပြတ်မှုအတွက် လူတစ်ဦးလျှင် တစ်ခု)။ အောက်၌ပါသည့်အတိုင်း ၎င်းဘေးတွင်
ဖြန့်ကျက်ပါ၊ သို့မဟုတ် Centrifugo အသုံးပြုပါ။

## အစိတ်အပိုင်းများ <!--quire:the-pieces-->

| အစိတ်အပိုင်း | Cloudflare တွင် |
| --- | --- |
| `web` | `nodejs_compat` ပါသော Worker တစ်ခု |
| Postgres | Hyperdrive မှတစ်ဆင့် ရောက်သော ပြင်ပ– အက်ပလီကေးရှင်းအခန်းကဏ္ဍအတွက် `HYPERDRIVE`၊ တူညီသောရုပ်ပိုင်းဆိုင်ရာဒေတာဘေ့စ်တွင် အစီရင်ခံအခန်းကဏ္ဍအတွက် `REPORT_HYPERDRIVE`။ ဝဘ်အဆင့်က စတင်သည့်အခါ ချိတ်ဆက်မှုစာကြောင်းတစ်ခုစီကို `DATABASE_URL` နှင့် `QUIRE_REPORT_DATABASE_URL` အဖြစ် ကူးသည် |
| Files | ၎င်း၏ S3 API မှတစ်ဆင့် R2 (`S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com`)။ `FILES` ချိတ်ဆက်မှုက ပုံးကို တွဲသည် |
| Background jobs | စာရေးမှုဖြင့် တန်းစီရမည့်အလုပ်အတွက် Hyperdrive ပေါ်မှ pg-boss။ အဖော်အလုပ်သမားတွင် `QUIRE_QUEUE_DRIVER=cloudflare` ဖြင့် ပေါ့ပါးသောအလုပ်များ (အစီအစဉ်မချထားသော အသိပေးချက်နှင့် webhook ပို့ဆောင်မှုများ) က Postgres ကို စစ်ဆေးမနေစေရန် အစား Cloudflare Queues မှတစ်ဆင့် သွားသည်။ အဖော်အလုပ်သမားက နှစ်ခုစလုံး လည်ပတ်သည် |
| Realtime | Durable Objects ပါသော realtime Worker၊ `apps/realtime-worker` |
| `worker`၊ `scheduler`၊ `collab`၊ `content`၊ ClamAV၊ Gotenberg၊ ffmpeg | အဖော်ကွန်တိန်နာအိမ်ရှင်။ Worker တစ်ခုက ၎င်းတို့ကို လည်ပတ်၍မရပါ |
| Tracing | `wrangler.jsonc` တွင် ဖွင့်ထားသော Workers စောင့်ကြည့်မှု |

`REPORT_HYPERDRIVE` က `HYPERDRIVE` အမည်ပေးသောရုပ်ပိုင်းဆိုင်ရာဒေတာဘေ့စ်အတွက်
အစီရင်ခံအခန်းကဏ္ဍ ပေးသည်။ ဤပစ်မှတ်က အောက်၌ဖော်ပြထားသည့်အတိုင်း
ထပ်တိုးရုပ်ပိုင်းဆိုင်ရာဒေတာဘေ့စ်များတွင် ချိတ်ထားသော tenant များကို ဝန်ဆောင်မှု မပေးပါ။

## ဤပစ်မှတ် မလုပ်နိုင်သည့်အရာ <!--quire:what-this-target-cannot-do-->

စတင်စဉ် ငြင်းပယ်သည်၊ ပြဿနာတိုင်း တစ်ပြိုင်နက် စာရင်းပြုစုလျက်–

- **SMTP မရှိပါ။** `QUIRE_EMAIL_PROVIDER_CONFIG` တွင် HTTP ဝန်ဆောင်မှုပေးသူ
  အသုံးပြုပါ။
- **ဒေသခံဒစ်ခ် မရှိပါ။** `QUIRE_STORAGE_DRIVER` က object သိုလှောင်မှု အမည်ပေးရမည်။
- **လုပ်ငန်းစဉ်တွင်း realtime သို့မဟုတ် သိမ်းဆည်းမှု မရှိပါ။** Workers က
  တောင်းဆိုမှုများအကြား မှတ်ဉာဏ် မမျှဝေပါ၊ ထို့ကြောင့်
  `QUIRE_REALTIME_DRIVER=inprocess` နှင့် `QUIRE_CACHE_DRIVER=memory` ကို ငြင်းပယ်သည်။
- **Worker တွင် ClamAV၊ Gotenberg သို့မဟုတ် ffmpeg မရှိပါ။** Worker တွင်
  သတ်မှတ်ထားသော `CLAMAV_URL`၊ `GOTENBERG_URL` နှင့် `FFMPEG_PATH` ကို ငြင်းပယ်သည်။
  အစား အဖော်အလုပ်သမားတွင် သတ်မှတ်ပါ။
- **သီးသန့်ဒေတာဘေ့စ်အဖွဲ့အစည်းများ မရှိပါ။** Worker ၏ Hyperdrive ချိတ်ဆက်မှုများ
  ဖြန့်ကျက်ချိန်တွင် ပုံသေဖြစ်သောကြောင့်၊ ကိုယ်ပိုင်ဒေတာဘေ့စ်ပါသောအဖွဲ့အစည်းက
  ရှင်းလင်းသော “ဤနေရာတွင် မရနိုင်ပါ” စာမျက်နှာ ရသည်။ Compose သို့မဟုတ် Vercel မှ
  ၎င်းကို ဝန်ဆောင်မှုပေးပါ။

ငြင်းပယ်မထားသော်လည်း သိရမည့်အရာတစ်ခု– **ကြိုတင်ဖော်ပြခြင်းနှင့် ထပ်တိုးတည်ငြိမ်
ပြန်လည်ထုတ်လုပ်ခြင်း Workers တွင် အလုပ်မလုပ်ပါ**၊ framework စာရွက်စာတမ်း
ဘာပြောသည်ဖြစ်စေ။ လမ်းကြောင်းတိုင်း တောင်းဆိုမှုတစ်ခုစီအလိုက် ဖော်ပြသည်။

ဤပစ်မှတ်တွင် ငွေလွှဲများ တိုအောင် ထားပြီး ကွန်ရက်ခေါ်ဆိုမှုတစ်ခုဖြတ် တစ်ခုကို
ဘယ်တော့မှ မကိုင်ထားပါနှင့်– ချိတ်ဆက်မှုတစ်ခု ပေါင်းကူးသို့ ပြန်ရောက်သည့်အခါ
Hyperdrive က session အခြေအနေ ပြန်လည်သတ်မှတ်သောကြောင့်၊ 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 ရှိ ပေါ့ပါးသောအလုပ်များအတွက် အပေါ့စားတန်းစီတစ်ခုလျှင်
   တန်းစီတစ်ခုဖန်တီးပြီး အဖော်အလုပ်သမားတွင် ယင်းတို့ကို သတ်မှတ်ပါ (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 လမ်းညွှန်](/my/ops/vercel/) အတိုင်း၊ အဆင့် ၃၊ အဖော်အိမ်ရှင် လည်ပတ်ပါ။
   ရွှေ့ပြောင်းမှုများ ထိုနေရာတွင် လည်ပတ်သည်၊ Worker ဖြန့်ကျက်မှုတစ်ခုစီမပြုမီ။

ငြင်းပယ်သောစီစဉ်မှုက `bun run --bun wrangler tail` တွင် “The web tier did not start on cloudflare” အဖြစ် ပြပြီး၊ နောက်၌ ပြောင်းရမည့်ဆက်တင်တစ်ခုစီ ပါရှိသည်။

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