Polski

Blog · Poradniki wdrożeń

Jak wdrożyć stronę Jekyll w 2026: Dockerfile, jedno polecenie i HTTPS

Zespół Pethost · · 9 min czytania

Masz stronę w Jekyllu, która buduje się na twoim laptopie przez bundle exec jekyll build, i chcesz ją mieć online pod adresem z HTTPS. Na Pethost wystarczy do tego Dockerfile z 38 linii, który skopiujesz z tej strony, i jedno polecenie, pethost deploy. Strona, którą tworzy jekyll new, za pierwszym razem była online po 34 sekundach, a po zmianie po 3 sekundach.

W skrócie
  • Jeden plik: Dockerfile w dwóch etapach. Ruby 4.0 uruchamia bundle install i JEKYLL_ENV=production bundle exec jekyll build, a potem Caddy serwuje _site.
  • Jedno polecenie: pethost deploy w katalogu z _config.yml. 34 s za pierwszym razem, 3 s przy kolejnym wdrożeniu.
  • Adresy Jekylla działają: /about/ odpowiada 200, /about do niego prowadzi, wpis odpowiada z .html i bez, a adres, pod którym nie ma podstrony, pokazuje własny 404.html strony.
  • Adres: https://my-site.yourname.pethost.app, od razu z HTTPS. Twoja własna domena to jeden rekord DNS.
  • Cena: 9,99 € miesięcznie za 2 vCPU, 3 GB i 30 GB, na tę stronę i każdy inny twój projekt. Nie ma darmowego planu.

Czego potrzebujesz, żeby wdrożyć stronę Jekyll w 2026

Trzech rzeczy: strony, polecenia pethost i konta Pethost.

Strona to w tym przykładzie ta, którą tworzy szybki start Jekylla. Jekyll wymaga Ruby w wersji 2.7.0 lub nowszej; my zrobiliśmy ją z Ruby 4.0.9:

gem install jekyll bundler
jekyll new my-site
cd my-site

jekyll new zapisuje Gemfile z Jekyllem 4.4.1, motywem minima i pluginem jekyll-feed, uruchamia bundle install, który zapisuje Gemfile.lock, i dodaje stronę główną, podstronę about, wpis powitalny, 404.html oraz .gitignore, który pomija _site. Zachowaj Gemfile.lock: build instaluje dokładnie te gemy, które on wymienia.

Polecenie to jeden program, instalowany jedną linią. Wszystkie jego polecenia są w dokumentacji CLI.

curl -fsSL https://pethost.dev/install.sh | sh      # macOS, Linux
irm https://pethost.dev/install.ps1 | iex           # Windows, in PowerShell

Konto potrzebuje planu. Gdy trzeba się zalogować, pethost deploy otwiera przeglądarkę i cię loguje. Jeśli nie masz jeszcze planu, pokazuje, gdzie go wybrać, i czeka.

Dlaczego strona Jekyll potrzebuje Dockerfile na Pethost

Projekt na Pethost działa z Dockerfile albo z pliku Compose. Dla rodzajów projektów, które zna, takich jak strona Eleventy, pethost deploy sam pisze Dockerfile. Jekylla wśród nich nie ma, więc w katalogu, który zrobił jekyll new, wdrożenie zatrzymuje się na odpowiedzi maszyny. Oto cały ekran:

$ pethost deploy
Name it [my-site]:              it will live at https://my-site.sam.pethost.app
✓ Packed 8 files, 17 KB
✓ Uploaded straight to your machine
✗ /compose.yaml: the project directory has no compose.yaml at its root: add one
  Your coding agent writes one in a minute: "Write a Dockerfile for this app".
  Then run pethost deploy again.     How Pethost runs a folder: https://pethost.dev/docs/api/#CreateProject

Nie utworzono niczego: ani projektu, ani adresu. Dodaj poniższy plik i uruchom to samo polecenie.

Dockerfile dla strony Jekyll

Zapisz to jako Dockerfile w katalogu z _config.yml. To cały plik:

# Jekyll builds the site into _site, and Caddy serves it.
FROM ruby:4.0 AS build
WORKDIR /site

# The gems first: a change to a page does not install them again.
COPY Gemfile Gemfile.lock ./
RUN bundle install

COPY . .
RUN JEKYLL_ENV=production bundle exec jekyll build

# The site is files: Caddy serves them on port 80.
FROM caddy:2
COPY --from=build /site/_site /srv

COPY <<'EOF' /etc/caddy/Caddyfile
:80 {
	root * /srv
	# A browser that takes its answers compressed gets them so.
	encode
	# Names that begin with a dot are no pages;
	# .well-known is the one such folder that is there for visitors.
	@own {
		path */.*
		not path /.well-known/*
	}
	error @own 404
	# A page's address works without its ".html", and a folder's leads to its index.html.
	try_files {path} {path}.html {path}/
	file_server
	# An address that is no page: the site's own 404.html, if it has one.
	handle_errors 404 {
		rewrite * /404.html
		file_server
	}
}
EOF
EXPOSE 80

Pierwszy etap buduje stronę tak, jak robisz to na laptopie:

Drugi etap to mały serwer WWW, który pethost pisze dla każdej strony złożonej z plików. Serwuje _site, katalog wyjściowy Jekylla, i nic z obrazu Ruby nie idzie razem z nim: strona działała w 15 MB pamięci.

Wdróż stronę Jekyll jednym poleceniem

Uruchom pethost deploy jeszcze raz, teraz z Dockerfile w katalogu. Oto cały ekran:

$ pethost deploy
Name it [my-site]:              it will live at https://my-site.sam.pethost.app
✓ Packed 9 files, 18 KB
✓ Uploaded straight to your machine
✓ Built and started in 34 s
  · wrote compose.yaml for the Dockerfile: the service app, reading .env, port 80
✓ app listens on 80 → https://my-site.sam.pethost.app
  It answers 200.

https://my-site.sam.pethost.app

Wrote .pethost (commit it). Next:   pethost logs -f   ·   pethost open
  1. Pyta o jedno O nazwę projektu, która jest pierwszym słowem jego adresu. Enter bierze nazwę katalogu.
  2. Katalog trafia prosto na twoją maszynę Dziewięć plików: to, co zapisał jekyll new, i Dockerfile. Linia zaczynająca się od · to maszyna, która mówi, co zrobiła sama: znalazła Dockerfile i żadnego pliku Compose, więc go napisała.
  3. Maszyna buduje i uruchamia projekt Te 34 sekundy obejmują pobranie obrazów Ruby i Caddy, których maszyna jeszcze nie miała. Potem pethost sam odpytuje adres i wypisuje, co ten odpowiedział: 200.

Plik .pethost mówi, którym projektem jest ten katalog. Zrób jego commit razem z Dockerfile, a następne wdrożenie o nic nie zapyta.

Czy adresy Jekylla działają?

Jekyll zapisuje about.markdown jako _site/about/index.html, a wpis pod adresem, który daje jego domyślny permalink, /:categories/:year/:month/:day/:title:output_ext. Zapytaliśmy wdrożoną stronę o to, o co pyta odwiedzający:

Co odpowiedziała wdrożona strona Jekyll
AdresOdpowiedź
/200, strona główna z listą wpisów
/about/200, podstrona
/about308, przekierowanie na /about/
/jekyll/update/2026/10/25/welcome-to-jekyll.html200, wpis powitalny
/jekyll/update/2026/10/25/welcome-to-jekyll200, ten sam wpis
/feed.xml200, kanał Atom
/nothing404, strona błędu samej witryny: „Page not found :(”

Podstrony, kanał i arkusz stylów przyszły skompresowane do przeglądarki, która o to poprosiła.

Ustaw url strony, zmień podstronę i wdróż ponownie

jekyll new zostawia url pusty w _config.yml, więc linki w kanale nie miały hosta: /jekyll/update/2026/10/25/welcome-to-jekyll.html. Czytnik kanałów potrzebuje całego adresu. Ustaw go, a razem z nim tytuł strony:

title: My site
url: "https://my-site.sam.pethost.app"

Potem uruchom to samo polecenie. Drugie wdrożenie zajęło 3 sekundy, bo maszyna przechowuje warstwy builda: gemy nie były instalowane ponownie.

$ pethost deploy
my-site (.pethost)
✓ Packed 10 files · uploaded · built and started in 3 s
  · wrote compose.yaml for the Dockerfile: the service app, reading .env, port 80
  · kept the project's x-pethost
  It answers 200.
https://my-site.sam.pethost.app

Linki w kanale zaczynają się teraz od https://my-site.sam.pethost.app/, a tytuły podstron mówią „My site”.

Wdrażaj stronę Jekyll z GitHuba po każdym pushu

Umieść katalog w repozytorium, z Dockerfile i .pethost; _site zostaje poza nim, tak jak mówi .gitignore Jekylla. Potem raz podłącz repozytorium:

pethost github sam/my-site          # from now on, every push deploys itself

Maszyna pobiera każdy commit i buduje go tym samym Dockerfile. Pethost czyta tylko repozytoria udostępnione jego GitHub App. Jeśli wdrożenie pójdzie źle, pethost rollback przywraca wersję sprzed niego, a twoja maszyna trzyma trzy wersje sprzed bieżącej. Agent AI może zrobić to wszystko za ciebie przez serwer MCP Pethost: jak agent wdraża projekt i o niego dba.

Użyj własnej domeny dla strony Jekyll

Każda nazwa pod domeną twojego konta od razu jest adresem, z HTTPS. Domena, którą masz, to jedno polecenie i jeden rekord DNS:

pethost domain add www.example.com

Polecenie wypisuje rekord do utworzenia: CNAME z twojej nazwy na nazwę twojej maszyny. Certyfikat od Let's Encrypt pojawia się sam, gdy tylko nazwa zacznie się rozwiązywać, i sam się odnawia. Potem ustaw url w _config.yml na nowy adres i wdróż ponownie, żeby kanał i linki podstron go podawały. pethost password stawia stronę z hasłem przed całą witryną, gdy ta nie jest jeszcze publiczna.

Co dostajesz za tę cenę

Pethost kosztuje 9,99 € miesięcznie za wszystko, co hostujesz, na 2 vCPU, 3 GB pamięci i 30 GB dysku. Zbudowana strona Jekyll to pliki za Caddy, w 15 MB tej pamięci, więc w planie jest miejsce na backend formularza komentarzy, bazę danych i twoje inne projekty. Nie ma opłaty za projekt ani żadnych liczników: drugi blog nic więcej nie kosztuje, tak samo jak miesiąc, w którym wpis trafi na pierwszą stronę jakiegoś forum.

Co jest już zrobione za ciebie: HTTPS z certyfikatami, które same się odnawiają, wdrożenia z GitHuba, nocne backupy trzymane przez 14 dni, SSH do każdego kontenera i każde żądanie policzone, bez żadnego skryptu na twoich stronach. Panel pokazuje najczęściej odwiedzane ścieżki z ostatnich 30 dni, a w blogu to lista wpisów, które ludzie naprawdę czytają. Nic nie usypia, więc czytelnik nigdy nie czeka na zimny start. Plany są w cenniku na stronie głównej.

Które wpisy ludzie czytają. Dziesięć najczęściej odwiedzanych ścieżek projektu z ich udziałem i czasami odpowiedzi oraz log pojedynczych żądań.
Panel Pethost: dziesięć najczęściej odwiedzanych ścieżek projektu z udziałem, liczbą i czasami odpowiedzi oraz log pojedynczych żądań.

Pethost to najlepszy wybór dla

  • Blogerów, którzy budują więcej niż blog: strona Jekyll, aplikacja i jej baza danych w jednym planie, na jednym rachunku
  • Programistów z kilkoma stronami, z dokumentacją i stroną każdego projektu, za jedną stałą cenę
  • Osób, za które wdraża agent: Claude Code albo Codex wdraża stronę i czyta jej logi
  • Małych zespołów, które do startu trzymają stronę za hasłem

Poszukaj gdzie indziej, jeśli

  • Twoja aplikacja potrzebuje kilku regionów albo autoskalowania

Pytania

Czy strona Jekyll potrzebuje Dockerfile do wdrożenia na Pethost?

Tak. Projekt na Pethost działa z Dockerfile albo z pliku Compose, a pethost deploy nie pisze go dla Jekylla. Cały plik to 38 linii z tej strony: Ruby buduje stronę, a Caddy serwuje _site.

Jakiej wersji Ruby używa Dockerfile dla Jekylla?

Tej, którą podaje jego pierwsza linia: ruby:4.0, czyli Ruby 4.0.9, gdy budowaliśmy stronę. Jekyll wymaga Ruby 2.7.0 lub nowszego, a strona, która przypina wersję w .ruby-version, powinna podać tam tę samą.

Dlaczego linki w kanale mojej strony Jekyll są względne?

Bo url jest pusty w _config.yml, tak jak zostawia go jekyll new. Ustaw go na adres strony, na przykład url: "https://my-site.sam.pethost.app", i wdróż ponownie: linki w kanale będą wtedy miały cały adres.

Czy mogę wdrażać stronę Jekyll z GitHuba po każdym pushu?

Tak. Wdróż katalog raz przez pethost deploy, a potem uruchom pethost github owner/repository. Od tej chwili każdy push buduje stronę tym samym Dockerfile i ją wdraża, a pethost rollback wraca do wcześniejszego commita.

Jak podpiąć własną domenę z HTTPS do strony Jekyll?

Uruchom pethost domain add www.example.com i utwórz jeden rekord DNS, który polecenie wypisze: CNAME na nazwę twojej maszyny. Certyfikat od Let's Encrypt pojawia się sam, gdy tylko nazwa zacznie się rozwiązywać, i sam się odnawia.

Ile kosztuje hosting strony Jekyll na Pethost?

9,99 € miesięcznie za plan Starter, z 2 vCPU, 3 GB i 30 GB, bez opłaty za projekt: twoje inne strony, aplikacje i bazy danych też tam działają. Nie ma darmowego planu. Ceny są bez VAT.

Ekrany to wdrożenia strony zrobionej przez jekyll new, z Jekyllem 4.4.1 i minima 2.5.2, Ruby 4.0.9 i Bundlerem 4.0.23 oraz pethost 0.2.4, na naszej maszynie testowej, która przed pierwszym wdrożeniem nie miała ani obrazu Ruby, ani obrazu Caddy. Konto na nich to przykładowe sam.

  1. Jekyll: szybki start
  2. Jekyll: instalacja i jej wymagania
  3. Jekyll: krok po kroku, wdrożenie
  4. Jekyll: permalinki
  5. pethost, narzędzie wiersza poleceń Pethost

Opublikuj swoje projekty jeszcze dziś

Wdrażaj aplikacje, boty i bazy danych ze swojego agenta, z GitHuba lub w przeglądarce, tyle, ile się zmieści, w jednej stałej cenie. Nic liczonego za zużycie, nic doliczanego.

Hostuj wszystko za 9,99 €/mies.