---
title: "Web-sloj na Cloudflare Workers"
description: "Pokrenite ograničeni web-sloj Quirea na Cloudflare Workers."
image: "https://docs.quirelms.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.quirelms.com/hr/llms.txt
> Use this file to discover all available pages before exploring further.

# Web-sloj na Cloudflare Workers

<span id="the-web-tier-on-cloudflare-workers"></span>

Dizajn je opisan u odjeljku 6 dokumenta `docs/architecture/23-ops.md`.
Workers pokreće ograničeni web-sloj. Potpuna funkcionalna usklađenost na
Workersu nije cilj (odjeljak 12 dokumenta PRD): pri pokretanju odbijaju se
mogućnosti koje ovo odredište ne podržava, uz navođenje po imenu.

## Stanje u ovom izdanju <!--quire:status-in-this-release-->

Konfiguracija je spremna (`apps/web/wrangler.jsonc`, unaprijed postavljena
vrijednost Nitro `cloudflare-module`, most Hyperdrive i provjere pri
pokretanju). Worker treba pohranu kompatibilnu sa S3 za R2
(`QUIRE_STORAGE_DRIVER=s3`), upravljački program za stvarno vrijeme koji
opslužuje zahtjeve (`QUIRE_REALTIME_DRIVER=durable_objects` ili `centrifugo`),
zajedničku predmemoriju (`QUIRE_CACHE_DRIVER=postgres` ili `valkey`) i HTTP
pružatelja e-pošte. Bez njih Worker odbija pokretanje, a zapis navodi svaku
postavku. Upravljački program Durable Objects klijent je Worker procesa za
stvarno vrijeme u `apps/realtime-worker` (jedan objekt Durable Object po
kanalu za distribuciju, prisutnost i povijest te jedan po osobi za prekide
veze); uvedite ga zajedno s web-slojem prema uputama u nastavku ili koristite
Centrifugo.

## Sastavni dijelovi <!--quire:the-pieces-->

| Dio | Na Cloudflareu |
| --- | --- |
| `web` | Worker s `nodejs_compat` |
| Postgres | Vanjska baza kojoj se pristupa preko Hyperdrive: `HYPERDRIVE` za ulogu aplikacije, `REPORT_HYPERDRIVE` za ulogu izvješća u istoj fizičkoj bazi. Web-sloj pri pokretanju kopira svaki niz veze u `DATABASE_URL` i `QUIRE_REPORT_DATABASE_URL` |
| Datoteke | R2 preko njegova S3 API-ja (`S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com`); vezanje `FILES` priključuje spremnik |
| Pozadinski poslovi | pg-boss preko Hyperdrivea kad posao treba staviti u red zajedno sa zapisom. Kad se na pratećem radniku postavi `QUIRE_QUEUE_DRIVER=cloudflare`, jednostavni poslovi (neporedana isporuka obavijesti i web-dojavnika) prolaze kroz Cloudflare Queues pa se Postgres ne provjerava radi njih. Prateći radnik pokreće oboje |
| Događaji u stvarnom vremenu | Worker za stvarno vrijeme `apps/realtime-worker` s objektima Durable Objects |
| `worker`, `scheduler`, `collab`, `content`, ClamAV, Gotenberg, ffmpeg | Prateći poslužitelj spremnika. Worker ih ne može pokretati |
| Praćenje | Mogućnosti nadzora Workersa, uključene u `wrangler.jsonc` |

`REPORT_HYPERDRIVE` daje ulogu za izvješća za fizičku bazu navedenu u
`HYPERDRIVE`. Ovo odredište ne poslužuje klijente prikvačene na dodatne
fizičke baze, kao što je objašnjeno u nastavku.

## Što ovo odredište ne može <!--quire:what-this-target-cannot-do-->

Pri pokretanju se odjednom odbijaju sve mogućnosti koje nisu podržane:

- **Nema SMTP-a.** Koristite HTTP pružatelja u `QUIRE_EMAIL_PROVIDER_CONFIG`.
- **Nema lokalnog diska.** `QUIRE_STORAGE_DRIVER` mora navesti pohranu objekata.
- **Nema stvarnog vremena ni predmemorije u istom procesu.** Workers ne
  dijeli memoriju među zahtjevima, pa se odbijaju
  `QUIRE_REALTIME_DRIVER=inprocess` i `QUIRE_CACHE_DRIVER=memory`.
- **Nema ClamAV-a, Gotenberga ni ffmpega unutar Workera.** Postavke
  `CLAMAV_URL`, `GOTENBERG_URL` i `FFMPEG_PATH` na Workeru odbijaju se;
  postavite ih na pratećem radniku.
- **Nema organizacija s namjenskim bazama podataka.** Vezanja Hyperdrivea za
  Worker utvrđuju se pri uvođenju, pa se za organizaciju s vlastitom bazom
  prikazuje jasna stranica „ovdje nije dostupno”. Poslužujte je s Composa ili
  Vercela.

Postoji još jedna stvar koja se ne odbija, ali je morate znati:
**predizrada i inkrementalna ponovna generacija statičkih stranica ne rade na
Workersu**, bez obzira na dokumentaciju okvira. Svaka se ruta renderira pri
svakom zahtjevu.

Na ovom odredištu transakcije moraju biti kratke i ne smiju obuhvaćati mrežni
poziv: Hyperdrive pri vraćanju veze u skup poništava stanje sesije, pa se
kontekst klijenta postavlja za svaku transakciju.

## Uvođenje <!--quire:deploying-->

1. Izradite resurse:
   ```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
   ```
   Unesite dva ID-ja Hyperdrivea u `apps/web/wrangler.jsonc`.
2. Postavite tajne, jednu po jednu naredbom `bun run --bun wrangler secret put <NAME>`
   iz direktorija `apps/web`: `QUIRE_SECRET_KEY`, `QUIRE_MASTER_KEY`,
   `QUIRE_EMAIL_PROVIDER_CONFIG`, `S3_ACCESS_KEY_ID`, `S3_SECRET_ACCESS_KEY`,
   `QUIRE_COLLAB_SIGNING_KEY` i `QUIRE_REALTIME_WORKER_SECRET`. Obične
   postavke (`QUIRE_APP_ORIGIN`, `QUIRE_CONTENT_ORIGIN`,
   `QUIRE_PLATFORM_DOMAINS`, `QUIRE_DATABASE_ID`, `S3_ENDPOINT`, `S3_BUCKET`,
   `QUIRE_COLLAB_URL`) dodajte u `vars`.
3. Izradite paket i uvedite aplikaciju iz direktorija `apps/web`:
   ```sh
   NITRO_PRESET=cloudflare-module bun run build
   bun run --bun wrangler deploy
   ```
4. Uvedite Worker za stvarno vrijeme s vrijednošću
   `QUIRE_REALTIME_WORKER_SECRET` iz web-sloja i njegovom tajnom tokena kao
   `QUIRE_REALTIME_TOKEN_SECRET`. Web-sloj potpisuje tokene za stvarno vrijeme
   vlastitom postavkom `QUIRE_REALTIME_TOKEN_SECRET`, odnosno ključem
   `QUIRE_SECRET_KEY` ako ona nije postavljena, stoga upotrijebite onu koju
   koristi. Postavite `QUIRE_REALTIME_WORKER_URL` web-sloja na njegovu adresu:
   ```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. Za jednostavne poslove na Cloudflare Queuesu izradite jedan red po vrsti
   jednostavnog posla i postavite navedeno na pratećem radniku (API token s
   ovlastima čitanja i zapisivanja u redove):
   ```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
   ```
   Postavite `QUIRE_QUEUE_DRIVER=cloudflare`, `CLOUDFLARE_ACCOUNT_ID`,
   `CLOUDFLARE_QUEUES_TOKEN` i `QUIRE_QUEUE_PREFIX` ako prefiks nije `quire-`.
6. Pokrenite prateći poslužitelj kao u [vodiču za Vercel](/hr/ops/vercel/), korak 3.
   Migracije se ondje izvršavaju prije svakog uvođenja Workera.

Odbijena konfiguracija prikazuje se u izlazu naredbe `bun run --bun wrangler tail` kao
„The web tier did not start on cloudflare”, a zatim slijedi popis svake
postavke koju treba promijeniti.

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