---
title: "Verkon palvelutaso Cloudflare Workersissa"
description: "Suorita rajattu Quiren verkkopalvelutaso Cloudflare Workersissa."
image: "https://docs.quirelms.com/og.png"
---

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

# Verkon palvelutaso Cloudflare Workersissa

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

Rakenne kuvataan tiedoston `docs/architecture/23-ops.md` kohdassa 6. Workers suorittaa rajattua verkkopalvelutasoa. Toimintojen yhdenvertaisuus Workersiä käyttäen ei kuulu tavoitteeseen (PRD:n kohta 12): kohde kieltäytyy käynnistyessään ominaisuuksista, joita se ei tue, ja nimeää ne.

## Tämän julkaisun tila <!--quire:status-in-this-release-->

Asetukset ovat valmiina (`apps/web/wrangler.jsonc`, Nitro-esiasetus `cloudflare-module`, Hyperdrive-silta ja käynnistystarkistukset). Worker tarvitsee R2:n kanssa yhteensopivaa S3-tallennusta (`QUIRE_STORAGE_DRIVER=s3`), pyyntöjen välillä toimivan reaaliaikaisuusajurin (`QUIRE_REALTIME_DRIVER=durable_objects` tai `centrifugo`), jaetun välimuistin (`QUIRE_CACHE_DRIVER=postgres` tai `valkey`) ja HTTP-sähköpostipalveluntarjoajan. Jos jokin puuttuu, Worker ei käynnisty ja lokissa nimetään puuttuva asetus. Durable Objects -ajuri käyttää `apps/realtime-worker`-hakemiston reaaliaikaisuus-Workeriä (yksi Durable Object kanavaa kohden tapahtumien välitykseen, läsnäoloon ja historiaan; yksi käyttäjää kohden yhteyden katkeamiseen). Ota se käyttöön rinnalla alla kuvatulla tavalla tai käytä Centrifugoa.

## Osat <!--quire:the-pieces-->

| Osa | Cloudflaressa |
| --- | --- |
| `web` | Worker ja `nodejs_compat` |
| Postgres | Ulkoinen, Hyperdriven kautta: `HYPERDRIVE` sovellusroolille ja `REPORT_HYPERDRIVE` raporttiroolille samassa fyysisessä tietokannassa. Verkkopalvelutaso kopioi yhteysmerkkijonot käynnistyessään arvoiksi `DATABASE_URL` ja `QUIRE_REPORT_DATABASE_URL`. |
| Tiedostot | R2 sen S3-rajapinnan kautta (`S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com`); `FILES`-sidonta liittää säilön |
| Taustatyöt | pg-boss Hyperdriven kautta, kun työ on lisättävä kirjoituksen kanssa. Kun rinnakkaistyöntekijän `QUIRE_QUEUE_DRIVER=cloudflare`, kevyet työt (järjestämättömät ilmoitukset ja webhook-toimitukset) kulkevat Cloudflare Queuesin kautta, eikä Postgres-tietokantaa haeta niiden vuoksi. Rinnakkaistyöntekijä suorittaa molemmat. |
| Reaaliaikaisuus | Reaaliaikaisuus-Worker `apps/realtime-worker`-hakemistossa ja Durable Objects |
| `worker`, `scheduler`, `collab`, `content`, ClamAV, Gotenberg, ffmpeg | Rinnakkainen säiliöpalvelin. Worker ei voi suorittaa niitä. |
| Jäljitys | Workersin havainnointi, otettu käyttöön tiedostossa `wrangler.jsonc` |

`REPORT_HYPERDRIVE` antaa raporttiroolin yhteyden fyysiseen tietokantaan, johon `HYPERDRIVE` osoittaa. Tämä kohde ei palvele muita fyysisiä tietokantoja käyttäviä vuokraajia, kuten alla kuvataan.

## Mitä tässä kohteessa ei voi tehdä <!--quire:what-this-target-cannot-do-->

Käynnistys estetään ja kaikki ongelmat luetellaan kerralla:

- **SMTP ei ole käytettävissä.** Käytä `QUIRE_EMAIL_PROVIDER_CONFIG`-asetuksessa HTTP-palveluntarjoajaa.
- **Paikallinen levy ei ole käytettävissä.** `QUIRE_STORAGE_DRIVER`-muuttujan on määritettävä objekti- tai pilvitallennus.
- **Prosessinsisäinen reaaliaikaisuus tai välimuisti ei ole käytettävissä.** Workerin pyynnöt eivät jaa muistia, joten arvot `QUIRE_REALTIME_DRIVER=inprocess` ja `QUIRE_CACHE_DRIVER=memory` hylätään.
- **ClamAV, Gotenberg tai ffmpeg ei ole käytettävissä Workerissa.** Workerille asetetut `CLAMAV_URL`, `GOTENBERG_URL` ja `FFMPEG_PATH` hylätään. Aseta ne sen sijaan rinnakkaistyöntekijälle.
- **Omistetun tietokannan organisaatiot eivät ole käytettävissä.** Workerin Hyperdrive-sidonnat määritetään käyttöönoton yhteydessä, joten oman tietokannan omaavan organisaation sivulla näytetään selkeä ilmoitus, että palvelu ei ole täällä käytettävissä. Palvele organisaatioita Composesta tai Vercelistä.

Yksi muu rajoite ei estä käynnistymistä, mutta se on tärkeä tietää: **esirenderöinti ja vaiheittainen staattinen uudelleenluonti eivät toimi Workersissa**, vaikka kehyksen dokumentaatio väittäisi muuta. Jokainen reitti renderöidään pyynnöstä.

Pidä tässä kohteessa tapahtumat lyhyinä äläkä säilytä tapahtumaa verkkokutsun ajan. Hyperdrive nollaa istunnon tilan, kun yhteys palautuu pooliin, joten vuokraajakonteksti asetetaan jokaisessa tapahtumassa.

## Käyttöönotto <!--quire:deploying-->

1. Luo tarvittavat resurssit:
   ```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
   ```
   Lisää molemmat Hyperdrive-tunnisteet tiedostoon `apps/web/wrangler.jsonc`.
2. Aseta salaisuudet yksi kerrallaan komennolla `bun run --bun wrangler secret put <NAME>` hakemistossa `apps/web`: `QUIRE_SECRET_KEY`, `QUIRE_MASTER_KEY`, `QUIRE_EMAIL_PROVIDER_CONFIG`, `S3_ACCESS_KEY_ID`, `S3_SECRET_ACCESS_KEY`, `QUIRE_COLLAB_SIGNING_KEY` ja `QUIRE_REALTIME_WORKER_SECRET`. Tavalliset asetukset (`QUIRE_APP_ORIGIN`, `QUIRE_CONTENT_ORIGIN`, `QUIRE_PLATFORM_DOMAINS`, `QUIRE_DATABASE_ID`, `S3_ENDPOINT`, `S3_BUCKET`, `QUIRE_COLLAB_URL`) lisätään `vars`-kohtaan.
3. Muodosta ja ota käyttöön hakemistossa `apps/web`:
   ```sh
   NITRO_PRESET=cloudflare-module bun run build
   bun run --bun wrangler deploy
   ```
4. Ota reaaliaikaisuus-Worker käyttöön. Aseta sille verkkopalvelutason `QUIRE_REALTIME_WORKER_SECRET` ja tokenin salaisuudeksi `QUIRE_REALTIME_TOKEN_SECRET`. Verkkopalvelutaso allekirjoittaa reaaliaikaistokenit omalla `QUIRE_REALTIME_TOKEN_SECRET`-arvollaan tai sen puuttuessa `QUIRE_SECRET_KEY`-arvolla, joten käytä samaa arvoa kuin palvelutaso. Aseta sen jälkeen verkkopalvelutason `QUIRE_REALTIME_WORKER_URL` osoittamaan Workerin osoitteeseen:
   ```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. Luo Cloudflare Queues -jonot kevyille töille. Luo oma jono kutakin kevyttä jonoa kohti ja aseta nämä rinnakkaistyöntekijälle (API-tunnisteella, jolla on jonojen luku- ja kirjoitusoikeudet):
   ```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
   ```
   Aseta `QUIRE_QUEUE_DRIVER=cloudflare`, `CLOUDFLARE_ACCOUNT_ID`, `CLOUDFLARE_QUEUES_TOKEN` ja tarvittaessa etuliitteeksi `QUIRE_QUEUE_PREFIX` (oletus `quire-`).
6. Suorita rinnakkaispalvelin [Vercel-oppaan](/fi/ops/vercel/) vaiheen 3 mukaisesti. Migraatiot suoritetaan siellä ennen jokaista Worker-julkaisua.

Jos asetukset hylätään, `bun run --bun wrangler tail` näyttää ensin tekstin "The web tier did not start on cloudflare" ja luettelee sitten muutettavat asetukset.

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