Dealownia
Menu
sprawdzono – jak sprawdzamy oferty

Strona za darmo: Cloudflare Pages, GitHub Pages czy Netlify

Limity darmowego hostingu statycznego z dokumentacji Cloudflare Pages, GitHub Pages i Netlify, podpięcie własnej domeny i kiedy zamiast tego potrzebny jest VPS.

Hosting i stronyzaktualizowano 7 min czytania

Redakcja serwisu Dealownia · ceny i fakty ze stron dostawców, jak sprawdzamy

Który z trzech darmowych hostingów statycznych – Cloudflare Pages, GitHub Pages czy Netlify – pasuje do Twojej strony i jak wdrożyć ją automatycznie z repozytorium Git, z własną domeną i HTTPS. Porównujemy limity zapisane w dokumentacji (stan na 11.11.2026), a nie wrażenia, i mówimy wprost, kiedy darmowy hosting przestaje wystarczać.

Czego potrzebujesz

  • Stronę statyczną: czysty HTML albo wynik generatora (Astro, Hugo, Eleventy, Jekyll, Vite). Wszystko, co da się zbudować do katalogu z plikami, nadaje się na każdą z tych usług. Serwera ani bazy danych tu nie ma.
  • Repozytorium na GitHubie (dla GitHub Pages to jedyna opcja; Cloudflare Pages i Netlify obsługują też GitLab, a Netlify jeszcze inne usługi).
  • Własną domenę, jeśli nie chcesz adresu w subdomenie usługi (*.pages.dev, *.github.io, *.netlify.app).
  • Serwera nie potrzebujesz – płacisz najwyżej za domenę.

Do samej strony z tego poradnika żadna z ofert niżej nie jest potrzebna – mogą to być także płatne programy w promocji.

Pełne zestawienie darmowych planów, w tym tych trzech usług, znajdziesz na stronie darmowe.

Krok 1. Porównaj limity

Najważniejsze limity darmowych planów według dokumentacji:

Cloudflare Pages Free GitHub Pages Netlify Free
Ruch żądania do plików statycznych bez limitu 100 GB miesięcznie (limit miękki) w ramach 300 kredytów miesięcznie
Wdrożenia 500 buildów miesięcznie, 1 naraz, do 20 min 10 buildów na godzinę (limit miękki), do 10 min każde wdrożenie produkcyjne kosztuje 15 kredytów
Rozmiar do 20 000 plików, plik do 25 MiB strona do 1 GB, repozytorium zalecane do 1 GB –
Po przekroczeniu pliki statyczne bez limitu; limit dzienny dotyczy tylko Functions możliwy błąd 429 przy limitowaniu wszystkie projekty zespołu wstrzymane do nowego okresu
Ograniczenia użycia – bez stron firmowych, sklepów i SaaS –

Szczegóły i źródła:

  • Cloudflare Pages: 500 buildów miesięcznie, jeden naraz, limit 20 minut, do 100 domen własnych na projekt i 100 projektów na konto, 2000 statycznych i 100 dynamicznych przekierowań w pliku _redirects. Dokumentacja cennika Functions mówi wprost, że żądania do plików statycznych są darmowe i bez limitu; płatne lub limitowane są tylko Functions (wspólna pula z Workers, w planie Free 100 000 żądań dziennie).
  • GitHub Pages: opublikowana strona do 1 GB, wdrożenie do 10 minut, 100 GB transferu miesięcznie i 10 buildów na godzinę jako limity miękkie (limit buildów nie dotyczy publikacji przez własny workflow GitHub Actions). Na koncie GitHub Free repozytorium ze stroną musi być publiczne. GitHub zastrzega, że Pages nie jest darmowym hostingiem dla stron firmowych, sklepów i usług SaaS ani dla stron przyjmujących hasła i dane kart.
  • Netlify: plan Free działa na kredytach – 300 miesięcznie, twardy limit bez możliwości dokupienia. Wdrożenie produkcyjne kosztuje 15 kredytów, 1 GB transferu 20 kredytów, 10 000 żądań 2 kredyty. Podglądy wdrożeń, wdrożenia gałęzi i nieudane buildy nie zużywają kredytów. Gdy kredyty się skończą, według dokumentacji wstrzymanych projektów wszystkie projekty zespołu przestają odpowiadać (odwiedzający widzą komunikat „Site not available”) do początku następnego okresu albo do przejścia na płatny plan.

Prosty rachunek dla Netlify: 300 kredytów to na przykład 10 wdrożeń produkcyjnych (150 kredytów) i 7,5 GB transferu (150 kredytów) w miesiącu. Przy częstych wdrożeniach albo ciężkich obrazach limit kończy się szybciej, niż sugeruje słowo „darmowy”.

Krok 2. Wdróż stronę

Cloudflare Pages. W panelu Cloudflare utwórz projekt Pages, połącz konto GitHub lub GitLab i wybierz repozytorium. Podaj komendę budowania i katalog wyjściowy – dla Astro:

tekst
Build command:          npm run build
Build output directory: dist

Każdy push do głównej gałęzi publikuje stronę pod nazwa-projektu.pages.dev, a pozostałe gałęzie dostają adresy podglądu.

GitHub Pages. Najprostsza droga dla generatorów innych niż Jekyll to publikacja przez GitHub Actions: w repozytorium Settings → Pages ustaw źródło na „GitHub Actions” i dodaj workflow. Przykład dla strony, która buduje się do dist:

yaml
name: Deploy Pages
on:
  push:
    branches: [main]
permissions:
  contents: read
  pages: write
  id-token: write
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - uses: actions/setup-node@v7
        with:
          node-version: 24
      - run: npm ci && npm run build
      - uses: actions/upload-pages-artifact@v5
        with:
          path: dist
  deploy:
    needs: build
    runs-on: ubuntu-latest
    environment:
      name: github-pages
    steps:
      - uses: actions/deploy-pages@v5

Wersje akcji są z ich repozytoriów na dzień 11.11.2026; GitHub co jakiś czas wycofuje starsze, więc przy błędzie o przestarzałej akcji podnieś numer. Przy publikacji przez własny workflow nie obowiązuje limit 10 buildów na godzinę.

Netlify. Dodaj nowy projekt z repozytorium, podaj komendę budowania i katalog publikacji (npm run build, dist). Ustawienia możesz też trzymać w repozytorium, w pliku netlify.toml:

toml
[build]
  command = "npm run build"
  publish = "dist"

Krok 3. Własna domena

Cloudflare Pages (dokumentacja domen): domenę zawsze dodajesz najpierw w panelu projektu (Custom domains). Domena główna (example.pl) wymaga, żeby strefa DNS była w Cloudflare – przeniesienie opisuje poradnik o Cloudflare. Subdomenę (www.example.pl) podepniesz też przy zewnętrznym DNS rekordem CNAME na nazwa-projektu.pages.dev. Sam rekord CNAME bez dodania domeny w panelu skończy się błędem 522.

GitHub Pages (dokumentacja domen): najpierw zweryfikuj domenę w ustawieniach konta (chroni przed przejęciem jej przez cudze repozytorium) i wpisz ją w Settings → Pages. Potem rekordy:

tekst
example.pl.      A      185.199.108.153
example.pl.      A      185.199.109.153
example.pl.      A      185.199.110.153
example.pl.      A      185.199.111.153
www.example.pl.  CNAME  twoj-login.github.io.

Opcjonalnie rekordy AAAA: 2606:50c0:8000::153, 2606:50c0:8001::153, 2606:50c0:8002::153, 2606:50c0:8003::153. Gdy DNS się rozejdzie, zaznacz „Enforce HTTPS” – opcja może pojawić się dopiero po 24 godzinach. Nie używaj rekordów wieloznacznych *.example.pl.

Netlify (dokumentacja zewnętrznego DNS): dla www rekord CNAME na nazwa-strony.netlify.app, dla domeny głównej rekord ALIAS/ANAME na apex-loadbalancer.netlify.com albo, gdy Twój DNS tego nie obsługuje, rekord A na 75.2.60.5. Netlify zaleca, żeby przy zewnętrznym DNS adresem głównym była subdomena www.

Sprawdzenie po zmianach:

bash
dig +short example.pl A
dig +short www.example.pl CNAME
curl -sI https://example.pl | head -1

Jak działają rekordy A, CNAME i TTL, wyjaśnia poradnik o DNS.

Kiedy darmowy hosting wystarczy, a kiedy VPS

Darmowy hosting statyczny wystarczy, gdy strona to wizytówka, blog, dokumentacja, portfolio albo strona projektu open source, a formularze i komentarze obsługuje zewnętrzna usługa. Dostajesz CDN, HTTPS i wdrożenia z Gita bez administrowania serwerem.

VPS jest potrzebny, gdy:

  • potrzebujesz backendu działającego cały czas: bazy danych, kolejki, zadań w tle, WebSocketów;
  • chcesz trzymać na tej samej maszynie narzędzia (analitykę, monitoring, newsletter) – jak w stacku w jednym pliku compose;
  • strona jest komercyjna, a wybrałeś GitHub Pages – regulamin tego nie dopuszcza;
  • ruch albo liczba wdrożeń regularnie zbliża się do limitów, a nie chcesz, żeby strona zniknęła do końca miesiąca jak przy wyczerpaniu kredytów w Netlify;
  • potrzebujesz pełnej kontroli nad serwerem WWW, nagłówkami i logami.

Jak przenieść stronę statyczną na własny serwer, opisuje poradnik o wdrożeniu Astro na VPS, a pod tani serwer – ranking VPS.

Najczęstsze problemy

  • Podstrony zwracają 404, strona główna działa. Generator tworzy pliki strona.html zamiast katalogów strona/index.html albo na GitHub Pages strona projektu leży pod /nazwa-repo/, a linki są absolutne od /. Ustaw w generatorze ścieżkę bazową (w Astro base) albo podepnij własną domenę.
  • Build działa lokalnie, a w usłudze nie. Inna wersja Node. Ustaw ją jawnie: w Cloudflare Pages i Netlify zmienną NODE_VERSION albo plikiem .nvmrc, w GitHub Actions w setup-node.
  • Domena na Cloudflare Pages zwraca 522. Rekord CNAME dodany ręcznie bez dodania domeny w panelu projektu.
  • Strona na Netlify nagle pokazuje „Site not available”. Wyczerpane kredyty – sprawdź zużycie w Usage & Billing. Zmniejsz liczbę wdrożeń produkcyjnych (np. scalaj zmiany przed wypchnięciem) albo przenieś stronę.
  • „Enforce HTTPS” w GitHub Pages jest wyszarzone. Certyfikat jeszcze się nie wystawił albo rekordy wskazują inne adresy niż podane wyżej. Usuń domyślne rekordy dodane przez dostawcę DNS i poczekaj do 24 godzin.

Co dalej

Jeśli zostajesz przy własnej domenie, porównaj ceny odnowień w rankingu domen. Inne darmowe plany przydatne przy małej stronie – monitoring, bazy, wysyłka e-maili – zebraliśmy na stronie darmowe i w poradniku o darmowych planach dla programistów.

Powiązane poradniki