Українська

Блог · Гайди з деплою

Як задеплоїти сайт на Jekyll у 2026: Dockerfile, одна команда і HTTPS

Команда Pethost · · 9 хв читання

У вас є сайт на Jekyll, який збирається на ноутбуці командою bundle exec jekyll build, і ви хочете, щоб він був онлайн за адресою з HTTPS. У Pethost для цього потрібен Dockerfile на 38 рядків, який ви скопіюєте з цієї сторінки, і одна команда, pethost deploy. Сайт, який створює jekyll new, першого разу був онлайн за 34 секунди, а після зміни — за 3 секунди.

Коротко
  • Один файл: Dockerfile на два етапи. Ruby 4.0 запускає bundle install і JEKYLL_ENV=production bundle exec jekyll build, потім Caddy віддає _site.
  • Одна команда: pethost deploy у папці, де лежить _config.yml. 34 с першого разу, 3 с на наступний деплой.
  • Адреси Jekyll працюють: /about/ відповідає 200, /about веде на неї, допис відкривається і з .html, і без нього, а за адресою без сторінки показується власний 404.html сайту.
  • Адреса: https://my-site.yourname.pethost.app, з HTTPS одразу. Ваш власний домен — це один DNS-запис.
  • Ціна: 9,99 € на місяць за 2 vCPU, 3 GB і 30 GB, для цього сайту й усіх інших ваших проєктів. Безплатного тарифу немає.

Що потрібно, щоб задеплоїти сайт на Jekyll у 2026

Три речі: сайт, команда pethost і акаунт Pethost.

Сайт тут той, який створює швидкий старт Jekyll. Jekyll потребує Ruby 2.7.0 або новішої; ми створили сайт із Ruby 4.0.9:

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

jekyll new пише Gemfile з Jekyll 4.4.1, темою minima і плагіном jekyll-feed, запускає bundle install, який пише Gemfile.lock, і додає головну сторінку, сторінку про сайт, вітальний допис, 404.html і .gitignore, який виключає _site. Не видаляйте Gemfile.lock: збірка встановлює саме ті геми, які в ньому названо.

Команда — це одна програма, яка встановлюється одним рядком. Усі її команди описано в довіднику CLI.

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

Акаунту потрібен тариф. Якщо ви не ввійшли, pethost deploy відкриє браузер і виконає вхід. Якщо тарифу ще немає, команда покаже, де його обрати, і зачекає.

Навіщо сайту на Jekyll Dockerfile у Pethost

Проєкт у Pethost запускається з Dockerfile або файлу Compose. Для відомих йому типів проєктів, як-от сайт на Eleventy, pethost deploy пише Dockerfile сам. Jekyll серед них немає, тож у папці, яку створив jekyll new, деплой зупиняється на відповіді машини. Ось увесь екран:

$ 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

Нічого не створено: ні проєкту, ні адреси. Додайте файл нижче й запустіть ту саму команду.

Dockerfile для сайту на Jekyll

Збережіть це як Dockerfile у папці, де лежить _config.yml. Це файл повністю:

# 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

Перший етап збирає сайт так само, як ви це робите на ноутбуці:

Другий етап — це невеликий вебсервер, який pethost пише для кожного сайту з файлів. Він віддає _site, папку виводу Jekyll, і нічого з образу Ruby туди не потрапляє: сайт працював у 15 MB пам’яті.

Деплой сайту на Jekyll однією командою

Запустіть pethost deploy ще раз, тепер із Dockerfile у папці. Ось увесь екран:

$ 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. Вона питає одне Назву проєкту, яка стає першим словом його адреси. Enter бере назву папки.
  2. Папка йде просто на вашу машину Дев’ять файлів: те, що написав jekyll new, і Dockerfile. Рядок, що починається з ·, повідомляє, що машина зробила сама: вона знайшла Dockerfile без файлу Compose, тож написала його.
  3. Машина збирає й запускає сайт У 34 секунди входить стягування образів Ruby і Caddy, яких на машині ще не було. Потім pethost сам відкриває адресу й виводить, що вона відповіла: 200.

Файл .pethost каже, який проєкт відповідає цій папці. Закомітьте його разом із Dockerfile, і наступний деплой нічого не питатиме.

Чи працюють адреси Jekyll?

Jekyll записує about.markdown у _site/about/index.html, а допис — за адресою, яку дає його типовий пермалінк, /:categories/:year/:month/:day/:title:output_ext. Ми запитали в задеплоєного сайту те, що запитує відвідувач:

Що відповів задеплоєний сайт на Jekyll
АдресаВідповідь
/200, головна сторінка зі списком дописів
/about/200, сторінка
/about308, редирект на /about/
/jekyll/update/2026/10/25/welcome-to-jekyll.html200, вітальний допис
/jekyll/update/2026/10/25/welcome-to-jekyll200, той самий допис
/feed.xml200, стрічка Atom
/nothing404, власна сторінка сайту: «Page not found :(»

Сторінки, стрічка й таблиця стилів приходили стиснутими до браузера, який про це просив.

Вкажіть url сайту, змініть сторінку й задеплойте знову

jekyll new лишає url порожнім у _config.yml, тож посилання в стрічці були без імені хоста: /jekyll/update/2026/10/25/welcome-to-jekyll.html. Програмі для читання стрічок потрібна повна адреса. Вкажіть її, а разом із нею й назву сайту:

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

Потім запустіть ту саму команду. Другий деплой тривав 3 секунди, бо машина зберігає шари збірки: геми не встановлювалися знову.

$ 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

Посилання в стрічці тепер починаються з https://my-site.sam.pethost.app/, а в заголовках сторінок стоїть «My site».

Деплой сайту на Jekyll з GitHub на кожен пуш

Покладіть папку в репозиторій разом із Dockerfile і .pethost; _site лишається поза ним, як велить .gitignore від Jekyll. Потім один раз підключіть репозиторій:

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

Машина сама отримує кожен коміт і збирає його з тим самим Dockerfile. Pethost читає лише ті репозиторії, які ви надали його GitHub App. Якщо деплой пішов не так, pethost rollback повертає попередню версію, а ваша машина зберігає три версії перед поточною. ШІ-агент може зробити все це за вас через MCP-сервер Pethost: як агент деплоїть проєкт і доглядає за ним.

Власний домен для сайту на Jekyll

Будь-яке ім’я в домені вашого акаунта одразу стає адресою з HTTPS. Домен, яким ви володієте, потребує однієї команди й одного DNS-запису:

pethost domain add www.example.com

Команда виводить запис, який треба створити: CNAME з вашого імені на ім’я вашої машини. Сертифікат від Let's Encrypt з’являється сам, щойно ім’я почне вказувати на машину, і сам поновлюється. Потім змініть url у _config.yml на нову адресу й задеплойте знову, щоб посилання стрічки й сторінок вели на неї. pethost password ставить сторінку з паролем перед усім сайтом, якщо він ще не публічний.

Що ви отримуєте за ці гроші

Pethost коштує 9,99 € на місяць за все, що ви хостите, на 2 vCPU, 3 GB пам’яті та 30 GB диска. Зібраний сайт на Jekyll — це файли за Caddy, у 15 MB цієї пам’яті, тож у тарифі лишається місце для бекенду форми коментарів, бази даних та інших ваших проєктів. Плати за проєкт немає, і нічого не тарифікується за використанням: другий блог не коштує нічого більше, як і місяць, коли допис потрапляє на головну сторінку форуму.

Що вже зроблено за вас: HTTPS із сертифікатами, які поновлюються самі, деплої з GitHub, щонічні бекапи, що зберігаються 14 днів, SSH у будь-який контейнер і облік кожного запиту без жодного скрипта на ваших сторінках. Панель показує найпопулярніші шляхи за останні 30 днів, а для блогу це список дописів, які люди справді читають. Ніщо не засинає, тож читач ніколи не чекає на холодний старт. Тарифи — у розділі ціни на головній сторінці.

Які дописи читають люди. Десять найпопулярніших шляхів проєкту з їхньою часткою та часом відповіді, а також лог окремих запитів.
Панель Pethost: десять найпопулярніших шляхів проєкту з часткою, кількістю й часом відповіді та лог окремих запитів.

Pethost — найкращий вибір для

  • Блогерів, які будують більше, ніж блог: сайт на Jekyll, застосунок і його база даних на одному тарифі, з одним рахунком
  • Розробників із кількома сайтами, як-от документація і сторінка для кожного проєкту, за однією фіксованою ціною
  • Тих, за кого деплоїть агент: Claude Code чи Codex деплоїть сайт і читає його логи
  • Невеликих команд, які тримають сайт за сторінкою з паролем до запуску

Шукайте інше, якщо

  • Вашому застосунку потрібні кілька регіонів або автомасштабування

Питання

Чи потрібен Dockerfile, щоб задеплоїти сайт на Jekyll у Pethost?

Так. Проєкт у Pethost запускається з Dockerfile або файлу Compose, а pethost deploy не пише його для Jekyll. 38 рядків на цій сторінці — це файл повністю: Ruby збирає сайт, а Caddy віддає _site.

Яку версію Ruby використовує Dockerfile для Jekyll?

Ту, яку називає його перший рядок: ruby:4.0, тобто Ruby 4.0.9 на момент нашої збірки. Jekyll потребує Ruby 2.7.0 або новішої, а сайт, що закріплює версію в .ruby-version, має вказати там ту саму.

Чому посилання в стрічці Jekyll відносні?

Тому що url порожній у _config.yml: таким його лишає jekyll new. Вкажіть там адресу сайту, наприклад url: "https://my-site.sam.pethost.app", і задеплойте знову: тоді посилання в стрічці міститимуть повну адресу.

Чи можна деплоїти сайт на Jekyll з GitHub на кожен пуш?

Так. Один раз задеплойте папку через pethost deploy, потім запустіть pethost github owner/repository. Відтоді кожен пуш збирає сайт із тим самим Dockerfile і деплоїть його, а pethost rollback повертає до попереднього коміту.

Як підключити власний домен із HTTPS до сайту на Jekyll?

Запустіть pethost domain add www.example.com і створіть один DNS-запис, який вона виведе: CNAME на ім’я вашої машини. Сертифікат від Let's Encrypt з’являється сам, щойно ім’я почне вказувати на машину, і сам поновлюється.

Скільки коштує хостинг сайту на Jekyll у Pethost?

9,99 € на місяць за Starter, з 2 vCPU, 3 GB і 30 GB і без плати за проєкт: там працюють і ваші інші сайти, застосунки та бази даних. Безплатного тарифу немає. Ціни вказано без ПДВ.

На екранах — деплої сайту, який створив jekyll new, з Jekyll 4.4.1 і minima 2.5.2, Ruby 4.0.9 і Bundler 4.0.23, а також pethost 0.2.4, на нашій тестовій машині, де до першого деплою не було ні образу Ruby, ні образу Caddy. Акаунт на них — приклад, sam.

  1. Jekyll: швидкий старт
  2. Jekyll: встановлення та вимоги
  3. Jekyll: крок за кроком, деплой
  4. Jekyll: пермалінки
  5. pethost, командний рядок Pethost

Запустіть свої проєкти вже сьогодні

Деплойте застосунки, ботів і бази даних з агента, з GitHub або в браузері, скільки поміститься, за однією фіксованою ціною. Нічого за лічильником, нічого зверху.

Хостити всі проєкти за 9,99 €/міс