Блог · Гайди з деплою
Як задеплоїти сайт на Jekyll у 2026: Dockerfile, одна команда і HTTPS
У вас є сайт на 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
Перший етап збирає сайт так само, як ви це робите на ноутбуці:
ruby:4.0— це повний образ Ruby, із компілятором C. Деякі геми Jekyll, як-от eventmachine і bigdecimal, компілюються під час встановлення: наruby:4.0-slim, де компілятора немає,bundle installне вдався. Якщо ваш сайт закріплює версію Ruby в.ruby-version, вкажіть тут ту саму.- Спершу геми.
GemfileіGemfile.lockкопіюються окремо, тож після зміни сторінки чи допису збірка бере геми, які машина вже встановила. Lock-файл, записаний на Mac, теж працює: ми зібрали сайт із lock-файлом, де була названа лише macOS, іbundle installсам вибрав геми для Linux. JEKYLL_ENV=production— це збірка, яку дає крок про деплой у власній документації Jekyll. Те, що ваші шаблони показують лише в production, наприклад аналітика, буде на сторінках.
Другий етап — це невеликий вебсервер, який 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
- Вона питає одне Назву проєкту, яка стає першим словом його адреси. Enter бере назву папки.
- Папка йде просто на вашу машину Дев’ять файлів: те, що написав
jekyll new, і Dockerfile. Рядок, що починається з·, повідомляє, що машина зробила сама: вона знайшла Dockerfile без файлу Compose, тож написала його. - Машина збирає й запускає сайт У 34 секунди входить стягування образів Ruby і Caddy, яких на машині ще не було. Потім
pethostсам відкриває адресу й виводить, що вона відповіла: 200.
Файл .pethost каже, який проєкт відповідає цій папці. Закомітьте його разом із Dockerfile, і наступний деплой нічого не питатиме.
Чи працюють адреси Jekyll?
Jekyll записує about.markdown у _site/about/index.html, а допис — за адресою, яку дає його типовий пермалінк, /:categories/:year/:month/:day/:title:output_ext. Ми запитали в задеплоєного сайту те, що запитує відвідувач:
| Адреса | Відповідь |
|---|---|
/ | 200, головна сторінка зі списком дописів |
/about/ | 200, сторінка |
/about | 308, редирект на /about/ |
/jekyll/update/2026/10/25/welcome-to-jekyll.html | 200, вітальний допис |
/jekyll/update/2026/10/25/welcome-to-jekyll | 200, той самий допис |
/feed.xml | 200, стрічка Atom |
/nothing | 404, власна сторінка сайту: «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 цієї пам’яті, тож у тарифі лишається місце для бекенду форми коментарів, бази даних та інших ваших проєктів. Плати за проєкт немає, і нічого не тарифікується за використанням: другий блог не коштує нічого більше, як і місяць, коли допис потрапляє на головну сторінку форуму.
- 9,99 € на місяць за всі ваші проєкти, без оплати за використання
- 34 с на збірку й запуск сайту, разом зі стягуванням образів
- 3 с на деплой після зміни
Що вже зроблено за вас: HTTPS із сертифікатами, які поновлюються самі, деплої з GitHub, щонічні бекапи, що зберігаються 14 днів, SSH у будь-який контейнер і облік кожного запиту без жодного скрипта на ваших сторінках. Панель показує найпопулярніші шляхи за останні 30 днів, а для блогу це список дописів, які люди справді читають. Ніщо не засинає, тож читач ніколи не чекає на холодний старт. Тарифи — у розділі ціни на головній сторінці.
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.
- Jekyll: швидкий старт
- Jekyll: встановлення та вимоги
- Jekyll: крок за кроком, деплой
- Jekyll: пермалінки
- pethost, командний рядок Pethost
Запустіть свої проєкти вже сьогодні
Деплойте застосунки, ботів і бази даних з агента, з GitHub або в браузері, скільки поміститься, за однією фіксованою ціною. Нічого за лічильником, нічого зверху.