- Vrealmatic
- Cloudflare
Cloudflare wiki
Workers, Next.js, Express, Workers Cache, R2 a API tokeny - návody a know-how z produkce
Rozcestník našich návodů ke Cloudflare a k tomu krátké, často potřebné postupy, které se jinam nevešly: účtové API tokeny, deploy do více účtů a hromadná práce s R2 z příkazové řádky. Každý příkaz zkopírujete jedním kliknutím.
Obsah stránky
00 · Přehled
Cloudflare ve Vrealmaticu
Tady začíná všechno, co jsme o Cloudflare sepsali. Větší témata mají vlastní návody (Next.js, Express, Workers Cache). Krátké a často potřebné know-how, které k žádnému z nich nepatří, zůstává přímo zde: API tokeny, deploy do více účtů přes token a práce s úložištěm R2 z příkazové řádky.
Co potřebujete vyřešit?
| Otázka | Kde najdete odpověď |
|---|---|
| Chci provozovat aplikaci v Next.js na Cloudflare Workers. | Next.js na Cloudflare (anglicky) → |
| Mám API v Expressu a chci ho na Worker. | Express na Workers (anglicky) → |
| Stránky se mají vracet z edge bez spuštění Workeru. | Workers Cache → |
| Jaký token potřebuji, účtový, nebo uživatelský? | API tokeny → |
| Nasazuji do více účtů Cloudflare (klienti, projekty). | Deploy přes token → |
| Potřebuji nahrát nebo smazat hodně souborů v R2. | R2 z příkazové řádky → |
| Vystačím si s bezplatným plánem? | Limity v kostce → |
Stav k říjnu 2026: Wrangler 4, účtové API tokeny, Workers Cache (spuštěná v červenci 2026). Všechno popsané běží v produkci na našich vlastních webech včetně tohoto (Next.js na OpenNext, D1, R2, Workers Cache).
01 · Návody
Návody
Návody krok za krokem s kompletní konfigurací. Každý řeší jeden úkol od prázdného projektu po funkční deploy.
- Next.js na CloudflareStatický build nebo Worker OpenNext, aktualizace Wrangleru a Next.js, napojení R2, incremental cache a kombinace s Workers Cache.OpenNext · D1 · R2 · deploy · anglickyČíst návod →
- Express na Cloudflare WorkersNový projekt Workeru, Express přes httpServerHandler a nodejs_compat, napojení úložišť, typované env a šablony Handlebars.nodejs_compat · bindings · Handlebars · anglickyČíst návod →
- Cloudflare Workers CacheEdge cache před Workerem: zapnutí, hlavičky cache pro Next.js, ochrana proti otrávení cache, purge bez deploye a ověření.edge cache · purge · RSCČíst návod →
02 · API tokeny
Účtové a uživatelské API tokeny
Každý neinteraktivní přístup ke Cloudflare (Wrangler v CI, deploy do účtu klienta, skripty) potřebuje API token. Cloudflare dnes nabízí dva druhy a pro automatizaci je lepší volbou účtový token.
Účtový, nebo uživatelský token
| Account API token (účtový) | User API token (uživatelský) | |
|---|---|---|
| Kde | Manage Account → Account API Tokens | My Profile → API Tokens |
| Patří | účtu (servisní identita) | konkrétnímu člověku |
| Když člověk odejde | funguje dál | přestane fungovat, jakmile uživatele z účtu odeberete |
| Typické použití | CI/CD, deploy, integrace | vlastní skripty a pokusy |
| Poznáte ho podle | prefixu cfat_ | - |
Jak token založit bezpečně
- Začněte šablonou. Pro deploy Workerů použijte Edit Cloudflare Workers a přidejte jen to, co projekt opravdu používá (D1, R2, KV).
- Omezte zdroje na jeden účet a tam, kde jsou potřeba oprávnění k zóně, na konkrétní zóny (
Zone Resources). - Client IP Address Filtering povolí token jen z adres kanceláře, VPN nebo CI runneru. Uniklý token je pak jinde k ničemu.
- TTL (platnost) u tokenů, které potřebujete jen dočasně. Token na jednorázovou migraci nemá žít navždy.
Hodnotu tokenu Cloudflare ukáže jen hned po vytvoření. Uložte ji do správce hesel nebo rovnou do tajných proměnných CI. Když ji ztratíte, token přegenerujte (roll) nebo vytvořte nový. Několik produktů účtové tokeny nepodporuje (např. Page Rules, Registrar, Turnstile), tam použijte uživatelský.
03 · Deploy
Deploy přes token do více účtů
npx wrangler login vás přihlásí přes OAuth jako jednoho uživatele. Když nasazujete do více účtů Cloudflare (vlastního, klientských), je spolehlivější dát každému projektu vlastní účtový token v souboru .env. Wrangler si ho načte sám.
Krok 1: Odhlaste se z OAuth relace
Ať je jasné, jakou identitu Wrangler použije (token v prostředí má před OAuth stejně přednost).
npx wrangler logoutKrok 2: V každém cílovém účtu vytvořte účtový token
Manage Account → Account API Tokens → Create Token, šablona Edit Cloudflare Workers, omezená na tento jeden účet (viz bezpečné založení tokenu). Zkopírujte si i Account ID: na Account home klikněte na tři tečky vedle názvu účtu a zvolte Copy account ID.
Krok 3: Vložte token do .env v kořeni projektu
CLOUDFLARE_ACCOUNT_ID="<ACCOUNT_ID>"
CLOUDFLARE_API_TOKEN="<API_TOKEN>"printf '.env\n.env.*\n' >> .gitignoreSoubor .env se nesmí dostat do gitu. Pro více prostředí lze použít i soubory .env.<prostředí>.
Krok 4: Ověřte, jaký účet Wrangler vidí
Výpis musí ukázat token a účet, který čekáte. Pokud ne, zkontrolujte názvy proměnných a že příkaz spouštíte v kořeni projektu.
npx wrangler whoamiKrok 5: Nasaďte
npx wrangler deploy
# or the project's own script, e.g. npm run deploy- Jeden projekt = jeden účtový token ve vlastním .env. Přepínání mezi účty je pak jen přepínání mezi projekty.
wrangler logouttoken z .env nezneplatní. Nepotřebný token je nutné smazat v dashboardu.- Stejné dvě proměnné fungují i v CI (GitHub Actions, GitLab): uložte je jako tajné proměnné (secrets), ne do repozitáře.
04 · R2
R2 Object Storage z příkazové řádky
R2 je objektové úložiště kompatibilní s S3 bez poplatků za odchozí přenos. Na pár souborů stačí Wrangler, na hromadné nahrávání, synchronizaci a mazání celých prefixů použijte AWS CLI (nebo rclone) s tokenem pro R2. My tak třeba mažeme cache kontextu stránek tohoto webu.
Krok 1: Vytvořte API token pro R2
R2 Object Storage → Account Details → API Tokens: Manage, pak Create Account API token (nebo uživatelský). Zvolte úroveň oprávnění: Admin Read & Write pro práci napříč buckety, Object Read & Write omezené na konkrétní buckety, kde to jde. Pokud to formulář nabízí, přidejte TTL a filtr IP adres. Z ukázaných hodnot potřebujete Access Key ID a Secret Access Key (zobrazí se jen jednou) a endpoint https://<ACCOUNT_ID>.r2.cloudflarestorage.com.
Krok 2: Uložte klíče jako profil AWS CLI
Samostatný profil r2 drží R2 odděleně od případných skutečných přístupů do AWS. R2 region ignoruje, CLI ho ale vyžaduje, proto auto.
[r2]
aws_access_key_id = <ACCESS_KEY_ID>
aws_secret_access_key = <SECRET_ACCESS_KEY>[profile r2]
region = auto
# Only if an upload fails with a checksum error (older CLI/SDK setups):
# request_checksum_calculation = when_required
# response_checksum_validation = when_requiredNovější verze AWS CLI posílají ve výchozím stavu kontrolní součty CRC. R2 je dnes podporuje, dva zakomentované řádky jsou jen záloha pro případ, že nahrávání skončí chybou kontrolního součtu.
Krok 3: Nahrajte adresář do R2
sync nahraje jen nové a změněné soubory. Výstup jde do logu, což se hodí u tisíců souborů.
aws s3 sync <SOURCE_DIR> s3://<BUCKET>/<TARGET_PREFIX> --endpoint-url https://<ACCOUNT_ID>.r2.cloudflarestorage.com --profile r2 --exact-timestamps > r2-upload.log 2>&1Krok 4: Mazání souborů: nejdřív na zkoušku
S --dryrun příkaz jen vypíše, co by smazal. Až seznam sedí, spusťte ho znovu bez --dryrun.
aws s3 rm s3://<BUCKET>/<PREFIX_TO_REMOVE> --endpoint-url https://<ACCOUNT_ID>.r2.cloudflarestorage.com --profile r2 --recursive --dryrun# Example: drop the cached page context (v1) of this website
aws s3 rm s3://cache/cache_context/v1 --endpoint-url https://<ACCOUNT_ID>.r2.cloudflarestorage.com --profile r2 --recursiveAlternativy: Wrangler a rclone
Wrangler zvládne jednotlivé objekty a nastavení bucketu (CORS, pravidla životního cyklu, vlastní domény), hromadný přenos ani synchronizaci ale nemá. Pro velké přenosy je dobrou alternativou k AWS CLI rclone.
# Single objects (no bulk / sync command in Wrangler)
npx wrangler r2 object put <BUCKET>/<KEY> --file ./local/file.json --remote
npx wrangler r2 object get <BUCKET>/<KEY> --remote
npx wrangler r2 object delete <BUCKET>/<KEY> --remote[r2]
type = s3
provider = Cloudflare
access_key_id = <ACCESS_KEY_ID>
secret_access_key = <SECRET_ACCESS_KEY>
endpoint = https://<ACCOUNT_ID>.r2.cloudflarestorage.com
acl = private
# required with an Object-level token (bucket-scoped)
no_check_bucket = truerclone sync <SOURCE_DIR> r2:<BUCKET>/<TARGET_PREFIX> --dry-run
# remove --dry-run once the list of changes looks right05 · Limity
Limity bezplatného a placeného plánu v kostce
Bezplatný plán vystačí na překvapivě mnoho, má ale několik pevných limitů. Přehled ukazuje ty, na které narazíte nejdřív; ceny a limity se mění, proto si je před rozhodnutím ověřte v odkazované dokumentaci.
| Free | Workers Paid | |
|---|---|---|
| Požadavky na Worker | 100 000 denně | bez denního limitu, účtuje se za požadavek |
| Čas CPU na požadavek | 10 ms | výchozí 30 s, až 5 min |
| Podřízené požadavky (subrequests) | 50 | 10 000 |
| Statické soubory na verzi | 20 000 souborů | 100 000 souborů |
| D1 | 5 mil. čtených a 100 tis. zapsaných řádků denně, 5 GB | v ceně 25 mld. čtení a 50 mil. zápisů měsíčně |
| R2 (Standard) | 10 GB-měsíc, 1 mil. operací třídy A a 10 mil. třídy B měsíčně | 0,015 USD / GB-měsíc nad rámec free; odchozí přenos vždy zdarma |
| Workers Cache | k dispozici | HIT se účtuje jako požadavek, bez času CPU |
U renderování na serveru (Next.js na OpenNext) obvykle rozhodne limit 10 ms CPU v bezplatném plánu. S Workers Cache před Workerem se většina požadavků k Workeru vůbec nedostane.
Zdroje
Oficiální dokumentace
Ověřeno v dokumentaci Cloudflare v říjnu 2026 (anglicky):
- Account API tokensÚčtové tokeny, rozdíly a nepodporované produkty.
- Proměnné prostředí WrangleruCLOUDFLARE_API_TOKEN, CLOUDFLARE_ACCOUNT_ID a soubory .env.
- API tokeny pro R2Úrovně oprávnění, Access Key ID a Secret Access Key.
- R2 s AWS CLIProfil, endpoint a region auto.
- R2 s rcloneKonfigurace pro hromadné kopírování a synchronizaci.
- Limity WorkersPožadavky, čas CPU, subrequests, statické soubory.
- Ceník R2Bezplatná úroveň, třídy úložiště a operace.
Jak citovat tuto publikaci (ČSN ISO 690:2022)NEPOR, Vladimír. Cloudflare wiki: Workers, Next.js, R2, API tokeny a deploy. Online. Vrealmatic, 2026. Dostupné z: https://vrealmatic.com/cs/cloudflare. [citováno ].
Stavíte na Cloudflare?
Nastavíme Workers, OpenNext, D1, R2 i Workers Cache pro váš projekt.