Przemysław Zalewski

Ta strona to Cloudflare Worker

wysłane z CMH US · wpisane przez HTMLRewriter

Programista Cloudflare: Worker na produkcji w tydzień, z limitem kosztów

Buduję i naprawiam aplikacje na Cloudflare Workers tak, żeby rój botów, awaria albo migracja nie skończyły się rachunkiem ani przestojem po Twojej stronie. Każdy płatny endpoint dostaje dzienny limit kosztów w kodzie, bo alerty budżetowe Cloudflare tylko wysyłają maila. Cztery moje projekty poboczne i ta strona działają na Workers, Durable Objects, R2 i Workers AI. Czarna plakietka nad nagłówkiem pokazuje, które centrum danych ją wysłało.

Rozmowy w tym tygodniu · start pracy 3 listopada 2026 · Wrocław, zdalnie

Przemysław Zalewski
270+wydań jednego produktu w 10 miesięcy 2026
10 000+programów partnerskich w katalogu, ~97% znalezionych automatycznie
260+moich zmergowanych PR w 2026 i 300+ review cudzych PR
300+wygenerowanych stron wdrażanych automatycznie

Brzmi znajomo?

Problemy z Cloudflare, które rozwiązuję w 2026

Czy Cloudflare blokuje Googlebota albo ChatGPT na mojej stronie?

Od 15 września 2026 nowe domeny w Cloudflare domyślnie blokują boty z kategorii Training i Agent na stronach z reklamami. Strona, która blokuje Training, odcina też Googlebota, Applebota i Bingbota, bo zbierają dane do obu celów (blog Cloudflare).

Ustawiam Search, Agent i Training osobno, tak jak chcesz być znajdowany, i dopasowuję do tego robots.txt oraz reguły WAF. Potem sprawdzam w logach, czy roboty wyszukiwarek i asystentów AI dostają odpowiedź 200. Dalej moje narzędzie Widoczność w AI może śledzić, czy asystenci Cię wymieniają. W czerwcu 2026 zmiana w naszej ochronie przed botami po cichu zepsuła logowanie w desktopowych i mobilnych aplikacjach produktu; naprawiłem to po stronie serwera tego samego wieczoru, bez wydania aplikacji.

Jak ustawić limit wydatków na Cloudflare Workers?

Alerty budżetowe w Cloudflare tylko informują. Nie wstrzymują ani nie ograniczają zużycia (dokumentacja Cloudflare), więc endpoint AI, który ktoś odpytuje masowo, nabija rachunek także po przyjściu maila z alertem.

Każdy płatny endpoint, który wdrażam, rezerwuje koszt w Durable Object, zanim model ruszy. Ma limity na IP i globalne, a po wyczerpaniu dziennego budżetu zwraca 429 z nagłówkiem Retry-After. Demo limitu na tej stronie zwraca 429 przy szóstym kliknięciu w ciągu 10 sekund. W październiku 2026, skoro Cloudflare nie ma limitu wydatków, zbudowałem własny hamulec: narzędzie staje przy 5 USD dziennie, a przy 50 USD dziennie wyłączam wszystko, co płatne, sprawdzam, że kontenery stoją, i nic nie wraca, dopóki nie przywrócę tego ręcznie.

Masz to u siebie? Umów bezpłatne 30 minut →

Czy nasza aplikacja w Next.js zadziała na Cloudflare Workers?

25 marca 2026 Next.js 16.2 dostał stabilne Adapter API, ale dokumentacja wdrożeń Next.js (aktualizacja z 6 sierpnia 2026) nadal wymienia jako zweryfikowane tylko adaptery Vercel i Bun. Cloudflare dopiero buduje swój, a obecna integracja z Workers nie jest zweryfikowana przez zespół Next.js (dokumentacja Next.js). Cache, rewalidację i streaming nadal trzeba sprawdzić w każdej aplikacji osobno.

Przenoszę aplikację za Workera po jednej grupie tras i na obu hostingach puszczam testy Playwright na stronach, które zarabiają. DNS przełączam dopiero z przekierowaniami 301 i porównaniem sitemap. Jeśli coś nie działa na Workers, dowiadujesz się o tym przed przełączeniem, razem z planem B.

Cloudflare padł, a z nim nasza strona. Co robić?

20 lutego 2026 zmiana po stronie Cloudflare wycofała z internetu około 25% prefiksów Bring Your Own IP, a strony za nimi były nieosiągalne przez ponad pięć godzin, od 17:48 do 23:03 UTC. Część klientów przywróciła działanie sama w panelu, a ci, którym usunięto powiązania usług, musieli czekać (raport Cloudflare).

Procedurę piszę, zanim będzie potrzebna. Obejmuje token API z wąskimi uprawnieniami trzymany poza panelem, listę rekordów, które można bezpiecznie przełączyć na sam DNS, razem z tym, co wtedy przestanie działać, oraz alerty dostępności działające spoza sieci Cloudflare. W marcu 2026 długie synchronizacje skrzynek ucinał 100‑sekundowy limit Cloudflare z błędem 524; dodałem sygnał podtrzymania co 10 sekund i automatyczne ponawianie, po czym synchronizacje przestały padać.

Masz jeden z tych problemów? Umów bezpłatne 30 minut →

Dlaczego ja

Limity kosztów zamiast niespodzianek

Każdy endpoint z AI lub API, który wdrażam, ma limit per IP, limit globalny i dzienny limit kosztów w Durable Object. Pokaz poniżej celowo wpada w limit przy szóstym kliknięciu.

Sześć produktów Cloudflare na produkcji

Workers ze statycznymi plikami, R2 na generowane obrazki, Durable Objects jako atomowe liczniki, Workers AI do modeli, Cache API dla drogich odpowiedzi, HTMLRewriter do HTML per żądanie. Wszystkie sześć działa dziś na ciunkos.com.

Z WordPressa bez utraty ruchu z Google

Najpierw strony statyczne, potem API po kolei, z 301 dla każdego starego adresu i porównaniem sitemap przed przełączeniem. Tak przeniosłem centrum pomocy, opis niżej.

Szczelne nagłówki, łatki tego samego dnia

CSP bez skryptów inline, nosniff, polityki referrer i permissions, OAuth tam, gdzie trzeba. React2Shell załatałem w dniu publikacji ostrzeżenia, z dodatkową regułą WAF.

Pokaz na żywo

Zobacz, co widzi Worker

Kod centrum danych i kraj powyżej wpisał do tego HTML Worker przez HTMLRewriter, zanim strona opuściła Cloudflare. Panel niżej pyta Workera o kilka rzeczy więcej: wersję TLS, czas obiegu, trafienie w Cache API i rate limit, który gryzie.

Ładuję pokaz…

Kliknij „Pobierz dwa razy” i porównaj czasy. Potem naciskaj przycisk limitu i zobacz, jak przychodzi 429 z nagłówkiem Retry-After.

Dowody

Praca, którą mogę pokazać

Problem, co zrobiłem, efekt. Nazwy klientów tylko tam, gdzie wolno mi ich użyć.

Logowanie po cichu zepsute w aplikacjach, naprawione bez wydania aplikacji

Problem
W czerwcu 2026 logowanie mailem w aplikacjach produktu po cichu nie działało, a żaden alert się nie odezwał. Web i SSO działały, więc nikt nie patrzył na aplikacje desktopowe i mobilne.
Co zrobiłem
Ustaliłem, że winna była zmiana w naszej ochronie przed botami na brzegu sieci: wyzwanie przechodziło w krok, którego webview w aplikacji nie umie wykonać, więc logowanie mailem w aplikacjach padało. Zainstalowanych aplikacji nie dało się szybko zaktualizować, więc tego samego wieczoru naprawiłem to po stronie serwera, przepuściłem podpisanych klientów aplikacji, dodałem platformę do dziennika logowań i włączyłem alerty na błędy, których nikt nie widział.
Efekt
Logowanie znów działało we wszystkich aplikacjach bez czekania na review w sklepach, a następna taka awaria trafi do człowieka w dniu, w którym się zacznie.

naprawa tego samego wieczoru bez wydania aplikacji nowe alerty

Cztery projekty poboczne na Cloudflare Workers pod jedną domeną

Problem
Pomysły umierają, gdy wdrożenie kosztuje weekend. Chciałem drogi od pomysłu do adresu w jeden wieczór.
Co zrobiłem
Korpo Tłumacz, Wyrocznia, Migawki i Przemo (Agent): każdy to Worker ze statycznymi assetami, Workers AI z limitami per IP i globalnym, sufit kosztów w Durable Object, R2 na generowane obrazki, własne proxy PostHoga i CSP bez skryptów inline.
Efekt
Działają pod ciunkos.com/korpo-tlumacz, /wyrocznia, /migawki i /przemo. Ta strona działa na tym samym wzorcu.

Workers AI Durable Objects R2 Otwórz ↗

Odkrywanie programów partnerskich: z 300 do 10 000+, 97% automatycznie

Problem
Ręcznie prowadzona lista ~300 programów partnerskich nie nadążała za rynkiem.
Co zrobiłem
Wielofazowe wyszukiwanie semantyczne na pgvector z rozszerzaniem zapytań i zapytaniami negatywnymi, klastrowanie na embeddingach, warstwowe cache w Cloudflare R2. Due diligence 230+ marek według 50 kryteriów odrzuciło dwie trzecie z nich.
Efekt
Katalog 10 000+ pozycji, ~97% znalezionych automatycznie.

10 000+ ~97% automatycznie pgvector + R2

Zobacz też: AI i agenci

Masz podobny problem? Umów bezpłatną rozmowę →

Jedna noga w drzwiach

Nie czas na projekt? Zacznij od tygodnia albo jednego PR‑a.

Dwa sposoby, żeby zobaczyć, jak pracuję, zanim zamówisz sprint. Stały zakres, widełki ceny poniżej, ostateczna kwota na piśmie w ciągu 24 godzin od rozmowy.

Tygodniowy audyt kodu Cloudflare

Ręcznie czytam repo, CI, testy, wdrożenia i miejsca, których zespół unika. Dostajesz pisemny raport: ryzyka uszeregowane po koszcie, co naprawić najpierw, plan z kamieniami milowymi i decyzję go/no‑go, którą da się obronić. Raport zostaje u Ciebie bez względu na to, czy pracujemy dalej.

4 500⁠–⁠8 800 zł netto · 30⁠–⁠40 h · Zobacz cenę i termin →

Code review jednego pull requesta albo modułu

Przyślij diff, który Cię martwi. W kilka dni dostajesz komentarze do linii, trzy rzeczy, które zmieniłbym najpierw, i werdykt: zmergowałbym czy nie. W jednym produkcie przejrzałem od 2018 roku ponad 800 pull requestów.

300⁠–⁠880 zł netto · 2⁠–⁠4 h · Zobacz cenę i termin →

Umów rozmowę i wybierz Najpierw bezpłatna rozmowa 30 min. Jeśli żadne nie pasuje, powiem to na rozmowie.

Jak to działa

Trzy kroki od tej strony do działającego projektu.

  1. 1

    Rozmowa 30 minut

    Opisujesz produkt i problem. Ja zadaję pytania, które zadałbym pierwszego dnia.

  2. 2

    Zakres na piśmie

    W ciągu 24 godzin po rozmowie dostajesz krótki plan na piśmie: co budujemy najpierw, co mierzymy, jak pracujemy i ile to kosztuje. Bez prezentacji.

  3. 3

    Działający kawałek w pierwszym tygodniu

    Wdrożony, zmierzony i gotowy do przejrzenia. Dalej tempo wyznaczają liczby.

Dopasowanie

Czy to pasuje?

Dobre dopasowanie, gdy

  • Potrzebujesz seniora, który bierze odpowiedzialność za dowiezienie, nie pary rąk
  • Produkt ma wyjść i być mierzony, z product managerem albo bez
  • Współpraca solo albo jeden zespół do czterech osób, który prowadzę bezpośrednio
  • TypeScript, React, Node.js, Cloudflare, Postgres, PostHog, a Python, gdy praca tego wymaga

Raczej nie, gdy

  • Projekt na dziesięcioosobowy zespół dostawcy
  • Stack zbudowany wokół Javy albo chmury, w której nie pracuję
  • Body leasing na godziny bez wpływu na sposób pracy

Styl pracy

Jak pracuję

Zero zaległych bugów

Błąd jest naprawiony albo świadomie zamknięty, nigdy odłożony. Alerty i śledzenie błędów w każdym projekcie, więc o problemach dowiaduję się przed klientem.

Agenci pod regułami

Claude Code i Codex pracują na mainie z hookami, bramkami lint i testów. Model podpowiada, kryteria decydują. Każdy PR ma ludzki review, a treści z AI są oznaczone.

Mierzone, nie zakładane

PostHog w każdym projekcie od pierwszego dnia. Plan zdarzeń dla każdej funkcji i dashboardy, z których zarząd bierze liczby, zamiast o nie pytać.

Warto wiedzieć

Rozliczenia i limity Cloudflare, których mało kto czyta

Bezczynny kontener też kosztuje

Containers liczą pamięć i dysk za każdą sekundę, gdy instancja nie śpi, nawet bez ruchu; tylko CPU liczy się od użycia. Według cennika obudzony standard‑4 bez ruchu to około 2,71 USD dziennie (cennik Containers).

Durable Object płaci za 128 MB i czas zegarowy

Czas trwania liczony jest od pełnych 128 MB, niezależnie od zużycia. accept() na WebSockecie nalicza cały czas połączenia, Hibernation API tego unika (cennik Durable Objects).

Jeden zawieszony fetch trzyma obiekt przy życiu

Każda oczekująca operacja I/O może trzymać Durable Object w pamięci, i na rachunku, do 15 minut. Każde setAlarm() liczy się też jako zapisany wiersz (cennik Durable Objects).

10 000 subrequestów, nie 1000

W płatnym planie Worker ma domyślnie 30 sekund CPU (do 5 minut) i 10 000 subrequestów, w darmowym 10 ms i 50. Starsze wpisy z liczbą 1000 są nieaktualne (limity Workers).

Transfer z R2 jest darmowy, listowanie nie

ListObjects to operacja klasy A, czyli droższa. Infrequent Access dokłada minimum 30 dni, opłatę za odczyt i brak darmowego progu (cennik R2).

D1 przyjmuje najwyżej 100 parametrów

Zapytanie D1 przyjmuje najwyżej 100 związanych parametrów, co psuje naiwne masowe INSERT‑y. Baza ma limit 10 GB w płatnym planie (limity D1).

FAQ

Pytania, które padają przed umówieniem rozmowy

Ile kosztuje projekt na Cloudflare?
Stawka bazowa to 180 zł netto za godzinę, 150 zł przy prostych zadaniach i 220 zł przy trudnych. Tygodniowy audyt repo na Workers to 4500⁠–⁠8800 zł netto, trzytygodniowy pierwszy etap 15 300⁠–⁠30 360 zł netto. Wszystkie widełki są w cenniku, a ostateczną kwotę dostajesz na piśmie w ciągu 24 godzin od rozmowy.
Pomożesz przy migracji albo odtworzeniu bazy D1?
Tak. D1 ma odtwarzanie do punktu w czasie, ale cofnięcie bazy nie cofa wysłanych maili, zmian subskrypcji ani klikniętych przypomnień. Dlatego migrację ćwiczę najpierw na klonie, akcje wychodzące mają klucze idempotencji, a przy prawdziwej awarii: zatrzymać przetwarzanie, przywrócić, sprawdzić spójność, uzgodnić historię u dostawców płatności i poczty, dopiero potem włączyć. Całość opisuje jak pracuję.
Workers czy serwer Node.js?
Workers, gdy produkt ma kształt żądania: strony, API, logika na brzegu, zadania cykliczne, lekkie AI. Serwer Node.js, gdy potrzebne są długo żyjące procesy, ciężkie biblioteki albo baza na tej samej maszynie. Często oba, z Workers z przodu.
Kiedy sięgasz po Durable Objects?
Gdy dwa żądania muszą się zgodzić co do jednego stanu tu i teraz: licznik kosztów, limiter z pamięcią, archiwum per kanał, pokój WebSocket. Nie jako ogólna baza danych.
Jak trzymasz rachunki za Workers AI w ryzach?
Limit per IP, limit globalny, rezerwacja w Durable Object przed uruchomieniem modelu i rozliczenie po odpowiedzi. Cztery projekty poboczne pod ciunkos.com dzielą ten wzorzec, a na stronie o AI i agentach działa na nim agent.
Przeniesiesz nas z Vercela, WordPressa albo VPS‑a?
Tak. Zwykle wygląda to tak: audyt tego, co obecny host robi za Ciebie, worker serwujący najpierw część statyczną, potem API po kolei, z przekierowaniami 301 i porównaniem sitemap, żeby ruch z wyszukiwarki przeżył. Przy Next.js zacznij od strony o Next.js. Dla strony firmowej na WordPressie jest oferta liczona w godzinach.
Robisz Cloudflare dla kont enterprise?
Pracuję na platformie Workers, DNS, regułach WAF i Access. Nie odsprzedaję planów i nie jestem partnerem Cloudflare. O inżynierię pytaj mnie, o umowę pytaj Cloudflare.
Czy Workers nas uzależnią?
Tylko tam, gdzie uznasz, że warto. Nie ma własnościowego frameworka: logika biznesowa zostaje w zwykłych modułach TypeScript, a części specyficzne dla Cloudflare (D1, R2, Durable Objects, bindingi) są wypisane w repo razem z tym, czego wymagałaby wymiana każdej z nich. Kod i konto Cloudflare są Twoje od pierwszego commita, a autorskie prawa majątkowe przechodzą na Ciebie na piśmie.
Obiecasz, że rachunek za Cloudflare nigdy nie skoczy?
Dokładnej faktury nie obieca nikt: alerty budżetowe Cloudflare tylko powiadamiają i nie zatrzymują zużycia (dokumentacja Cloudflare). Mogę za to wpisać limit w kod: limity per IP i globalne, rezerwację najgorszego kosztu przed każdym płatnym wywołaniem, dzienny limit, który odpowiada 429 z Retry-After, i awaryjny stop, który zostaje włączony, dopóki człowiek go nie zdejmie. Ten sam hamulec działa na moich Workerach.
Czyje jest konto i co, jeśli Cię zabraknie?
Twoje. Pracuję na Twoim koncie Cloudflare z tokenem API o wąskich uprawnieniach, nigdy przez swoje, więc rozliczenia, logi i dane zostają u Ciebie. Kod, CI, runbook i opis architektury są w Twoim repozytorium od pierwszego dnia. Wypowiedzenie to miesiąc w obie strony z przekazaniem na piśmie, a gdy choruję, wiesz o tym tego samego dnia. Nie sprzedaję dyżurów, więc runbook na awarię piszę tak, żeby Twój zespół wykonał go beze mnie. Jak pracuję.
Twoja praca na Cloudflare to tylko projekty poboczne?
To, co sprawdzisz przed zapłatą, jest moje: ta strona, cztery Workery pod ciunkos.com i darmowe narzędzia. Praca dla klientów na Cloudflare jest pod NDA, na przykład warstwowy cache w R2 za katalogiem 10 000+ programów partnerskich. Nawyki dowożenia pochodzą z produktów z prawdziwymi użytkownikami: Patriot Mail (zbudowany w Sanddev) dwa razy przeszedł CASA Tier 2, w styczniu i październiku 2026, a Sandtime.io (zbudowany w Sanddev) miał 270+ otagowanych wydań w 10 miesięcy 2026.
Od kiedy możesz zacząć?
Od 3 listopada 2026. Umów rozmowę teraz, a pierwszy Worker może działać w pierwszym tygodniu. Jeśli się nie uda, przerywasz: rozliczenie godzinowe nie ma minimum, a kod jest już w Twoim repozytorium.
Czemu rachunek za Cloudflare Containers jest wysoki, choć nic nie działa?
Pamięć i dysk liczą się za każdą sekundę, gdy instancja nie śpi, nawet bez użycia CPU (cennik Containers). Ustawiam twardy czas życia instancji i sprawdzam, czy naprawdę się zatrzymała.
Czy Workers KV nada się na liczniki albo limity?
Nie. KV jest ostatecznie spójne i zapis potrafi pojawić się gdzie indziej po 60 sekundach albo później (jak działa KV). Liczniki trzymaj w Durable Object albo D1.
Czy Cloudflare blokuje Googlebota albo ChatGPT na mojej stronie?
Od 15 września 2026 nowe domeny w Cloudflare domyślnie blokują boty z kategorii Training i Agent na stronach z reklamami. Strona, która blokuje Training, odcina też Googlebota, Applebota i Bingbota, bo zbierają dane do obu celów (blog Cloudflare). Ustawiam Search, Agent i Training osobno, tak jak chcesz być znajdowany, i dopasowuję do tego robots.txt oraz reguły WAF. Potem sprawdzam w logach, czy roboty wyszukiwarek i asystentów AI dostają odpowiedź 200. Dalej moje narzędzie Widoczność w AI może śledzić, czy asystenci Cię wymieniają. W czerwcu 2026 zmiana w naszej ochronie przed botami po cichu zepsuła logowanie w desktopowych i mobilnych aplikacjach produktu; naprawiłem to po stronie serwera tego samego wieczoru, bez wydania aplikacji.

Bonus · #suchar

Suchar na deser

Gratis, jak pierwsza rozmowa. To samo poczucie humoru dostajesz w pakiecie z projektem.

Dlaczego Worker nigdy się nie męczy?Puenta

Bo pracuje tylko na żądanie. Ba‑dum‑tss.

Gdzie mieszka Cloudflare?Puenta

Na krawędzi. W centrum za drogo. Ba‑dum‑tss.

Co mówi serwer do serwera na randce?Puenta

„Mamy dobre połączenie, ale boję się, że to tylko keep‑alive”. Ba‑dum‑tss.

W 30 minut sprawdzisz, czy do siebie pasujemy

Ty przynosisz problem, ja pytania. Chcesz najpierw liczbę? Konfigurator pokaże godziny, widełki ceny i termin startu.

albo napisz na ciunkos@gmail.com

Po umówieniu dostajesz zaproszenie do kalendarza. Nic więcej do wypełniania.

Moja obietnica

  • Odpowiedź w 24 godziny. Odpowiadam w ciągu 24 godzin w dni robocze. Osobiście, nie bot. Wiadomości z weekendu: do poniedziałku, do 12:00.
  • Spóźnienie znaczy gratis. Jeśli się spóźnię, pierwsza godzina pracy jest za darmo. Nie musisz o to prosić.
  • Zakres na piśmie w 24 godziny. Bezpłatna rozmowa 30 minut bez prezentacji firmy, potem zakres i cena na piśmie w ciągu 24 godzin. Ty decydujesz.
  • Osoba, która wykona pracę. Rozmawiasz z osobą, która wykona pracę. Bez warstwy sprzedaży, bez przekazywania dalej.
  • Odzywam się tylko z czymś nowym. Odzywam się tylko wtedy, gdy mam dla Ciebie coś nowego. Nigdy „czy jest już decyzja?”.
  • Uczciwe „to nie dla mnie”. Jeśli nie jestem właściwą osobą, mówię to na rozmowie i wskazuję kogoś, kto jest.

Rozmowy w tym tygodniu · start pracy 3 listopada 2026 · Kontrakt B2B · Wrocław, zdalnie

Kod, domena i konta są Twoje od pierwszego dnia. Nic nie trzymam jako zakładnika.