Блог · Гайди з деплою
Як задеплоїти сайт на Eleventy у 2026: одна команда, HTTPS і Dockerfile, що лишається у вас
У вас є сайт на Eleventy, який збирається на ноутбуці, і ви хочете, щоб він був онлайн за адресою з HTTPS. У Pethost це одна команда, pethost deploy, у папці, де лежить package.json. Вона сама пише Dockerfile, запускає ваш скрипт збірки та віддає _site. Невеликий сайт, зроблений за першими кроками з документації Eleventy, першого разу зібрався й запустився за 24 секунди.
- Один скрипт:
"build": "npx @11ty/eleventy"уpackage.json, як радить сторінка Eleventy про деплой. - Одна команда:
pethost deployу папці, де лежитьpackage.json. Вона пише Dockerfile, який запускає скрипт і віддає_site. - Чисті адреси працюють:
/about/відповідає 200,/aboutведе на неї, а адреса, за якою немає сторінки, відповідає 404. - Адреса:
https://my-site.yourname.pethost.app, з HTTPS одразу. Ваш власний домен — це один DNS-запис. - Ціна: 9,99 € на місяць за 2 vCPU, 3 GB і 30 GB, для цього сайту й усіх інших ваших проєктів. Безплатного тарифу немає.
Що потрібно, щоб задеплоїти сайт на Eleventy у 2026
Три речі: сайт, команда pethost і акаунт Pethost.
Сайт тут зроблено за першими кроками з документації Eleventy, з двома сторінками в Markdown:
mkdir my-site && cd my-site
npm init -y
npm pkg set type="module"
npm install @11ty/eleventy
echo '# Heading' > index.md
echo '# About' > about.md
Додайте скрипт збірки. Сторінка Eleventy про деплой радить його для кожного хостинг-провайдера, який збирає сайт за вас, і саме з нього pethost дізнається, що це сайт на Eleventy, який збирається командою:
"scripts": {
"build": "npx @11ty/eleventy"
}
Команда — це одна програма, яка встановлюється одним рядком. Усі її команди описано в довіднику CLI.
curl -fsSL https://pethost.dev/install.sh | sh # macOS, Linux
irm https://pethost.dev/install.ps1 | iex # Windows, in PowerShell
Акаунту потрібен тариф. Якщо ви не ввійшли, pethost deploy відкриє браузер і виконає вхід. Якщо тарифу ще немає, команда покаже, де його обрати, і зачекає.
Деплой сайту на Eleventy однією командою
Перейдіть у папку, де лежить package.json, і запустіть pethost deploy. Ось увесь екран для сайту вище:
$ cd my-site
$ pethost deploy
Name it [my-site]: it will live at https://my-site.sam.pethost.app
✓ Packed 5 files, 55 KB (left out node_modules)
✓ Uploaded straight to your machine
✗ /compose.yaml: the project directory has no compose.yaml at its root: add one
✓ Eleventy site detected, wrote Dockerfile.
✓ Packed 6 files, 56 KB (left out node_modules)
✓ Uploaded straight to your machine
✓ Built and started in 24 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 бере назву папки.
- Машина не знаходить, що запускати Папка йде просто на вашу машину, без
node_modules. Рядок із хрестиком — це її відповідь: проєкт запускається з Dockerfile або файлу Compose, а в папці поки немає ні того, ні іншого. - pethost пише Dockerfile Він побачив
@11ty/eleventyуpackage.jsonі скрипт, який його запускає, та завантажує папку ще раз. - Машина збирає й запускає сайт Потім pethost сам відкриває адресу й виводить, що вона відповіла: 200.
Файл .pethost каже, який проєкт відповідає цій папці. Закомітьте його разом із Dockerfile, і наступний деплой нічого не питатиме.
Dockerfile, який pethost пише для Eleventy
Ось файл повністю, таким, яким його записано в папку сайту:
# Written by pethost deploy for this Eleventy site: package.json builds it with "npx
# @11ty/eleventy", which writes _site, Node 24 (no .nvmrc names another), npm installs
# it (package-lock.json).
# It is yours now: change it as you like. pethost does not write it again.
FROM node:24 AS build
WORKDIR /app
COPY . .
# Every dependency: what builds the project, and may start it, is among the ones for
# development.
RUN --mount=type=cache,target=/root/.npm \
npm install
RUN npm run build
# The site is files: Caddy serves them on port 80.
FROM caddy:2
COPY --from=build /app/_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 прочитав у вашій папці. Звідти береться три речі:
- Збірка — це ваш скрипт, запущений через
npm run build. Усе, що скрипт робить, окрім Eleventy, наприклад крок для CSS, виконується разом із ним. - Менеджер пакетів — той, який називає ваш lock-файл: npm, pnpm, Yarn або Bun.
- Версія Node — та, яку називає
.nvmrcабо.node-version, а якщо немає жодного, то Node 24.
Друга половина — це невеликий вебсервер для _site, типової папки виводу Eleventy. Якщо машина не може зібрати чи запустити Dockerfile, який написав pethost, pethost забирає цей файл із вашої папки й каже, що не вдалося.
Чи працюють чисті адреси Eleventy?
Eleventy записує about.md у _site/about/index.html, тож адреса сторінки — /about/. Ми запитали в задеплоєного сайту те, що запитує відвідувач:
| Адреса | Відповідь |
|---|---|
/ | 200, головна сторінка |
/about/ | 200, сторінка |
/about | 308, редирект на /about/ |
/nothing | 404 |
Якщо у вашому сайті є 404.html у корені _site, адреса, за якою немає сторінки, покаже його.
Змініть сторінку й задеплойте знову
Відредагуйте сторінку й запустіть ту саму команду. Другий деплой тривав 4 секунди, бо машина зберігає шари збірки та кеш npm:
$ pethost deploy
my-site (.pethost)
✓ Packed 7 files · uploaded · built and started in 4 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
Щоб натомість збирати й деплоїти на кожен пуш, один раз підключіть репозиторій:
pethost github sam/my-site # from now on, every push deploys itself
Pethost читає лише ті репозиторії, які ви надали його GitHub App. Якщо деплой пішов не так, pethost rollback повертає попередню версію, а ваша машина зберігає три версії перед поточною. ШІ-агент може зробити все це за вас через MCP-сервер Pethost: як агент деплоїть проєкт і доглядає за ним. Та сама команда деплоїть і сайт на VitePress.
Власний домен для сайту
Будь-яке ім’я в домені вашого акаунта одразу стає адресою з HTTPS. Домен, яким ви володієте, потребує однієї команди й одного DNS-запису:
pethost domain add www.example.com
Команда виводить запис, який треба створити: CNAME з вашого імені на ім’я вашої машини. Сертифікат з’являється сам, щойно ім’я почне вказувати на машину, і сам поновлюється. pethost password ставить сторінку з паролем перед усім сайтом, якщо він ще не публічний.
Що ви отримуєте за ці гроші
Pethost коштує 9,99 € на місяць за все, що ви хостите, на 2 vCPU, 3 GB пам’яті та 30 GB диска. Зібраний сайт на Eleventy — це файли за одним невеликим вебсервером, тож на машині лишається місце для бекенду контактної форми, бази даних та інших ваших проєктів. Плати за проєкт немає, і нічого не тарифікується за використанням: другий сайт не коштує нічого більше, як і місяць із великою кількістю читачів.
- 9,99 € на місяць за всі ваші проєкти, без оплати за використання
- 24 с на першу збірку й запуск сайту
- 4 с на наступний деплой
Що вже зроблено за вас: HTTPS із сертифікатами, які поновлюються самі, деплої з GitHub, щонічні бекапи, що зберігаються 14 днів, SSH у будь-який контейнер і облік кожного запиту. Панель показує найпопулярніші шляхи за останні 30 днів, а для блогу це список дописів, які люди справді читають. Машина працює завжди, тож сторінка ніколи не чекає на холодний старт. Тарифи — у розділі ціни на головній сторінці.
Pethost — найкращий вибір для
- Тих, у кого є блог і ще щось: сайт на Eleventy, застосунок і база даних на одній машині, з одним рахунком
- Соло-розробників із кількома сайд-проєктами, кожен зі своїм сайтом
- Тих, за кого деплоїть агент: Claude Code чи Codex викладає сайт онлайн і читає його логи
- Невеликих команд, яким потрібен сайт за сторінкою з паролем до запуску
Шукайте інше, якщо
- Вашому застосунку потрібні кілька регіонів або автомасштабування
Питання
Чи потрібен Dockerfile, щоб задеплоїти сайт на Eleventy?
У Pethost проєкт запускається з Dockerfile або файлу Compose, і писати його самому не треба: у папці, де немає ні того, ні іншого, pethost deploy пише Dockerfile для сайту на Eleventy і деплоїть його. Файл лишається у вашій папці, і ви можете його змінювати.
Яку команду збірки використовує деплой Eleventy?
Ваш власний скрипт build із package.json, наприклад "build": "npx @11ty/eleventy". Dockerfile запускає npm run build і віддає _site, типову папку виводу Eleventy.
Чому pethost deploy не написав Dockerfile для мого сайту на Eleventy?
Він пише його, коли в package.json є @11ty/eleventy і скрипт, який його запускає. Додайте "build": "npx @11ty/eleventy" до скриптів і запустіть команду ще раз.
Чи можна деплоїти сайт на Eleventy з GitHub на кожен пуш?
Так. Один раз задеплойте папку через pethost deploy, потім запустіть pethost github owner/repository. Відтоді кожен пуш у репозиторій сам збирається й деплоїться, а pethost rollback повертає до попереднього коміту.
Як підключити власний домен із HTTPS до сайту на Eleventy?
Запустіть pethost domain add www.example.com і створіть один DNS-запис, який вона виведе: CNAME на ім’я вашої машини. Сертифікат з’являється сам, щойно ім’я почне вказувати на машину, і сам поновлюється.
Скільки коштує хостинг сайту на Eleventy в Pethost?
9,99 € на місяць за Starter, з 2 vCPU, 3 GB і 30 GB і без плати за проєкт: там працюють і ваші інші сайти, застосунки та бази даних. Безплатного тарифу немає. Ціни вказано без ПДВ.
На екранах — деплої сайту з двох сторінок, зробленого за першими кроками з документації Eleventy, з Eleventy 3.1.6 і pethost 0.2.1, на нашій тестовій машині, яка раніше нічого не збирала. Акаунт на них — приклад, sam.
Запустіть свої проєкти вже сьогодні
Деплойте застосунки, ботів і бази даних з агента, з GitHub або в браузері, скільки поміститься, за однією фіксованою ціною. Нічого за лічильником, нічого зверху.