---
title: "Cloudflare Workers-eko web-maila"
description: "Exekutatu Quireren web-maila murriztua Cloudflare Workers-en."
image: "https://docs.quirelms.com/og.png"
---

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

# Cloudflare Workers-eko web-maila

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

Diseinua `docs/architecture/23-ops.md` ataleko 6. atalean dago. Workers-ek web-maila murriztua exekutatzen dute. Workers-en eginbide-parekotasuna ez dago xedean (PRD ataleko 12. puntua): helburu honek egin ezin dituenak abiaraztean ukatzen dira, arazo bakoitza izendatuz.

## Egoera bertsio honetan <!--quire:status-in-this-release-->

Konfigurazioa prest dago (`apps/web/wrangler.jsonc`, `cloudflare-module` Nitro aurrezarpena, Hyperdrive zubia eta abiarazte-egiaztapenak). Worker batek R2rako S3-rekin bateragarria den biltegiratzea behar du (`QUIRE_STORAGE_DRIVER=s3`), eskaeren artean dabilen denbora errealeko driver bat (`QUIRE_REALTIME_DRIVER=durable_objects` edo `centrifugo`), partekatutako cache bat (`QUIRE_CACHE_DRIVER=postgres` edo `valkey`) eta HTTP posta-hornitzaile bat. Horiek gabe, Worker-ak ez du abiatzea onartzen eta erregistroak ezarpen bakoitza izendatzen du. Durable Objects driver-a `apps/realtime-worker` proiektuko denbora errealeko Worker-aren bezeroa da (kanal bakoitzeko Durable Object bat hedapenerako, presentziarako eta historiarako; pertsona bakoitzeko bat deskonexioetarako); zabaldu harekin batera, jarraian azaltzen den moduan, edo erabili Centrifugo.

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

| Osagaia | Cloudflare-n |
| --- | --- |
| `web` | `nodejs_compat` gaituta duen Worker bat |
| Postgres | Kanpokoa, Hyperdrive bidez atzitua: `HYPERDRIVE` aplikazio-rolerako, eta `REPORT_HYPERDRIVE` datu-base fisiko bereko txosten-rolerako. Web-mailak konexio-kate bakoitza `DATABASE_URL` eta `QUIRE_REPORT_DATABASE_URL` aldagaietan kopiatzen du abiaraztean |
| Fitxategiak | R2, haren S3 APIaren bidez (`S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com`); `FILES` loturak bucket-a eransten du |
| Atzeko planoko lanak | pg-boss Hyperdrive bidez, idazketa batekin batera ilaran jarri behar den lanetarako. Worker laguntzailean `QUIRE_QUEUE_DRIVER=cloudflare` ezarrita badago, lan arinak (ordenarik gabeko jakinarazpen- eta webhook-bidalketak) Cloudflare Queues bidez doaz; horrela, Postgresentzat ez dago lan horien bila ibili beharrik. Worker laguntzaileak biak exekutatzen ditu |
| Denbora erreala | `apps/realtime-worker` denbora errealeko Worker-a, Durable Objects-ekin |
| `worker`, `scheduler`, `collab`, `content`, ClamAV, Gotenberg, ffmpeg | Edukiontzi-ostalari laguntzailea. Worker batek ezin ditu exekutatu |
| Aztarnak | Workers-en behagarritasuna, `wrangler.jsonc` fitxategian gaitua |

`REPORT_HYPERDRIVE`-k `HYPERDRIVE`-k izendatutako datu-base fisikorako txosten-rola hornitzen du. Helburu honek ez ditu datu-base fisiko gehigarrietan finkatutako maizterrak zerbitzatzen, jarraian azaltzen den moduan.

## Helburu honek egin ezin duena <!--quire:what-this-target-cannot-do-->

Abiaraztean ukatzen dira, arazo guztiak batera zerrendatuta:

- **Ez dago SMTPrik.** Erabili HTTP hornitzaile bat `QUIRE_EMAIL_PROVIDER_CONFIG` aldagaian.
- **Ez dago disko lokalik.** `QUIRE_STORAGE_DRIVER` aldagaian objektu-biltegiratzea izendatu behar da.
- **Ez dago prozesu barruko denbora errealekorik edo cacherik.** Worker-ek ez dute memoria partekatzen eskaeren artean; beraz, `QUIRE_REALTIME_DRIVER=inprocess` eta `QUIRE_CACHE_DRIVER=memory` ez dira onartzen.
- **Worker-ak ezin ditu ClamAV, Gotenberg edo ffmpeg exekutatu.** Worker-ean ezarritako `CLAMAV_URL`, `GOTENBERG_URL` eta `FFMPEG_PATH` ez dira onartzen; ezarri ordez worker laguntzailean.
- **Ez dago datu-base bereizia duten erakundeentzako euskarririk.** Worker-aren Hyperdrive loturak zabaltzean finkatzen dira; beraz, bere datu-basea duen erakunde bati "unavailable here" orria erakusten zaio. Zerbitzatu Compose edo Vercel erabiliz.

Gainera, ukatzen ez den arren jakin beharreko zerbait: **aurreerrendatzeak eta inkrementalki sortutako orrialde estatikoak ez dute funtzionatzen Workers-en**, esparruaren dokumentazioak dioena gorabehera. Ibilbide bakoitza eskaera bakoitzean errendatzen da.

Helburu honetan, mantendu transakzioak labur eta ez eutsi sareko dei batean zehar: konexio bat biltegira itzultzean, Hyperdrive-k saioaren egoera berrezartzen du; beraz, maizterraren testuingurua transakzio bakoitzean ezartzen da.

## Zabaltzea <!--quire:deploying-->

1. Sortu baliabideak:
   ```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
   ```
   Jarri Hyperdrive bi IDak `apps/web/wrangler.jsonc` fitxategian.
2. Ezarri sekretuak banan-banan `bun run --bun wrangler secret put <NAME>` erabiliz, `apps/web` barrutik: `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`. Ezarpen arruntak (`QUIRE_APP_ORIGIN`, `QUIRE_CONTENT_ORIGIN`, `QUIRE_PLATFORM_DOMAINS`, `QUIRE_DATABASE_ID`, `S3_ENDPOINT`, `S3_BUCKET`, `QUIRE_COLLAB_URL`) `vars` atalean jartzen dira.
3. Eraiki eta zabaldu `apps/web` barrutik:
   ```sh
   NITRO_PRESET=cloudflare-module bun run build
   bun run --bun wrangler deploy
   ```
4. Zabaldu denbora errealeko Worker-a, web-mailaren `QUIRE_REALTIME_WORKER_SECRET` eta haren token-sekretua `QUIRE_REALTIME_TOKEN_SECRET` gisa erabiliz (web-mailak denbora errealeko tokenak sinatzen ditu bere `QUIRE_REALTIME_TOKEN_SECRET` erabiliz, edo `QUIRE_SECRET_KEY` aldagai hori ez badago; beraz, erabili erabiltzen duena), eta ezarri haren helbidea web-mailaren `QUIRE_REALTIME_WORKER_URL` aldagaian:
   ```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-en lan arinak egiteko, sortu ilara arin bakoitzeko ilara bat, eta ezarri hauek worker laguntzailean (irakurtzeko eta idazteko baimena duen API token batekin):
   ```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
   ```
   Ezarri `QUIRE_QUEUE_DRIVER=cloudflare`, `CLOUDFLARE_ACCOUNT_ID`, `CLOUDFLARE_QUEUES_TOKEN`, eta `QUIRE_QUEUE_PREFIX` balioa `quire-` ez bada.
6. Exekutatu ostalari laguntzailea [Vercel gidako](/eu/ops/vercel/) 3. urratsean bezala. Migrazioak han exekutatzen dira Worker-a zabaldu aurretik.

Konfigurazio bat ukatzen bada, `bun run --bun wrangler tail` komandoaren emaitzan "The web tier did not start on cloudflare" mezua agertzen da, eta ondoren aldatu beharreko ezarpen guztiak.

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