---
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/ka/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-ს სჭირდება 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, მისი S3 API-ით (`S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com`); `FILES` მიბმა აერთებს ბაკეტს |
| ფონური სამუშაოები | pg-boss Hyperdrive-ზე, როცა სამუშაო ჩაწერასთან ერთად უნდა დადგეს რიგში. `QUIRE_QUEUE_DRIVER=cloudflare`-ით თანმხლებ worker-ზე მსუბუქი სამუშაოები (ურიგო შეტყობინებებისა და ვებჰუკის მიწოდებები) ამის ნაცვლად Cloudflare რიგებით მიდის, ასე რომ Postgres მათთვის არ იკითხება. თანმხლები worker-ი ორივეს აწარმოებს |
| რეალურ დროში | რეალურ დროში Worker-ი, `apps/realtime-worker`, Durable Objects-ით |
| `worker`, `scheduler`, `collab`, `content`, ClamAV, Gotenberg, ffmpeg | თანმხლები კონტეინერების ჰოსტი. Worker-ს მათი გაშვება არ შეუძლია |
| ტრასირება | Workers დაკვირვება, ჩართული `wrangler.jsonc`-ში |

`REPORT_HYPERDRIVE` აწვდის ანგარიშის როლს ფიზიკური მონაცემთა ბაზისთვის, დასახელებულს
`HYPERDRIVE`-ით. ეს სამიზნე არ ემსახურება მოიჯარეებს, მიბმულს დამატებით
ფიზიკურ მონაცემთა ბაზებზე, როგორც ქვემოთ არის აღწერილი.

## რისი გაკეთება არ შეუძლია ამ სამიზნეს <!--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-ზე.
- **გამოყოფილი მონაცემთა ბაზის ორგანიზაციები არ არის.** Worker-ის Hyperdrive მიბმები
  ფიქსირდება გაშვებისას, ასე რომ ორგანიზაცია საკუთარი მონაცემთა ბაზით იღებს ნათელ
  „აქ მიუწვდომელია“ გვერდს. მოემსახურეთ მას Compose-დან ან Vercel-დან.

და ერთი რამ, რაც არ უარყოფილია, მაგრამ უნდა იცოდეთ: **წინასწარი რენდერი და
ინკრემენტული სტატიკური რეგენერაცია Workers-ზე არ მუშაობს**, რასაც არ უნდა ამბობდეს
ფრეიმვორკის დოკუმენტაცია. ყოველი მარშრუტი მოთხოვნაზე რენდერდება.

ამ სამიზნეზე ტრანზაქციები მოკლე იქონიეთ და არასდროს გეჭიროთ ერთი ქსელის
ზარის განმავლობაში: Hyperdrive აბრუნებს სესიის მდგომარეობას, როცა შეერთება პულში ბრუნდება,
ასე რომ მოიჯარის კონტექსტი ტრანზაქციაზე დგება.

## გაშვება <!--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 რიგებზე შექმენით ერთი რიგი თითო მსუბუქ რიგზე და
   დააყენეთ ეს თანმხლებ worker-ზე (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 სახელმძღვანელოში](/ka/ops/vercel/), ნაბიჯი 3.
   მიგრაციები იქ მუშაობენ, ყოველი Worker გაშვების წინ.

უარყოფილი კონფიგურაცია `bun run --bun wrangler tail`-ში ჩნდება, როგორც „ვებ-დონე cloudflare-ზე არ
გაშვებულა“, რასაც მოჰყვება თითოეული შესაცვლელი პარამეტრი.

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