Блог · Гайды по деплою
Как задеплоить сайт на 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 |
Если в корне _site есть 404.html, адрес, по которому нет страницы, покажет его.
Изменить страницу и задеплоить снова
Отредактируйте страницу и запустите ту же команду. Второй деплой занял 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" в scripts и запустите команду снова.
Можно ли деплоить сайт на 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 или в браузере, сколько поместится, по одной фиксированной цене. Ничего по счётчику, ничего сверху.