Правильный выбор платформы для хостинга статических сайтов может сэкономить тебе сотни долларов в год, при этом сайт будет работать быстро, безопасно и без лишних хлопот. Бесплатные тарифы заметно повзрослели: такие платформы, как GitHub Pages и Cloudflare Pages, предлагают продакшн-инфраструктуру без единого рубля вложений. Но есть одна задача, которую большинство руководств обходят стороной: как добавить контактную форму на статический сайт, если нет сервера для её обработки? В этом руководстве разберём всё по шагам - от выбора платформы до подключения рабочей контактной формы, с конкретными примерами и реальными ограничениями, о которых стоит знать заранее.
Содержание
- Почему бесплатный статический хостинг заслуживает внимания
- Сравнение платформ: GitHub Pages vs Cloudflare Pages
- Пошаговое руководство: деплой на GitHub Pages
- Пошаговое руководство: деплой на Cloudflare Pages
- Как добавить контактную форму на статический сайт
- Частые ошибки и как их избежать
- Заключение
Главное из статьи:
- GitHub Pages и Cloudflare Pages предлагают полностью бесплатный хостинг статических сайтов с поддержкой собственного домена.
- Cloudflare Pages быстрее по всему миру благодаря CDN с граничными узлами; GitHub Pages проще для тех, кто уже работает с GitHub.
- Статические сайты не могут обрабатывать формы самостоятельно - для сбора заявок нужен сторонний сервис, который доставит их тебе на почту.
- Специализированный бэкенд для форм, например Sendform, позволяет добавить полноценную контактную форму без единой строки серверного кода.
Почему бесплатный статический хостинг заслуживает внимания
Статический сайт отдаёт браузеру заранее собранные HTML, CSS и JavaScript файлы напрямую. Никакого PHP, никакого Node.js runtime и никаких запросов к базе данных при каждой загрузке страницы. Именно эта простота делает бесплатный хостинг статических страниц таким надёжным: здесь просто нечему падать, нечего патчить и незачем масштабировать.
Для малого бизнеса, портфолио, лендингов SaaS-продуктов и сайтов с документацией статический хостинг закрывает все потребности:
- Скорость: файлы отдаются с граничного узла CDN, нередко быстрее 100 мс в любой точке мира.
- Безопасность: отсутствие серверного runtime кратно сокращает поверхность атаки.
- Стоимость: GitHub Pages и Cloudflare Pages бесплатны для публичных и многих приватных проектов.
- Простота: запушил код в репозиторий - сайт задеплоился автоматически.
Единственное реальное ограничение - динамическая функциональность. Всё, что требует серверной логики - аутентификация пользователей, корзина или обработка форм - нужно решать через внешние сервисы. Держи это в голове, пока мы разбираем шаги настройки.
Сравнение платформ: GitHub Pages vs Cloudflare Pages
| Характеристика | GitHub Pages | Cloudflare Pages |
|---|---|---|
| Бесплатный тариф | Да (публичные репозитории всегда бесплатны) | Да (неограниченное число сайтов) |
| Собственный домен | Да | Да |
| HTTPS | Автоматически через Let's Encrypt | Автоматически через Cloudflare SSL |
| Сборка и деплой | GitHub Actions (ручная настройка) | Встроенный CI/CD |
| Глобальный CDN | Ограниченный (ориентирован на США) | 300+ граничных локаций |
| Лимит трафика | Мягкий лимит ~100 ГБ/месяц | Без ограничений |
| Приватные репозитории | Требует GitHub Pro | Да, бесплатно |
Итог: если твоя аудитория по всему миру и важна максимальная скорость загрузки - выбирай Cloudflare Pages. Если команда уже работает в GitHub и нужна минимальная настройка - GitHub Pages справится отлично.
Пошаговое руководство: деплой на GitHub Pages
В примере предполагается, что у тебя готов простой HTML/CSS сайт. Если используешь генератор статических сайтов вроде Hugo или Jekyll, процесс практически идентичен.
-
Создай репозиторий на GitHub. Перейди на github.com/new и создай публичный репозиторий. Назови его
your-username.github.io, если хочешь, чтобы сайт открывался по корневому домену, или дай любое другое имя для размещения в поддиректории. -
Запушь файлы сайта. Из папки локального проекта выполни:
git init git remote add origin https://github.com/your-username/your-repo.git git add . git commit -m "Initial deploy" git push -u origin main -
Включи GitHub Pages. В репозитории перейди в Settings > Pages. В разделе «Source» выбери ветку
mainи папку/root(или/docs, если туда идёт вывод сборки). Нажми «Save». -
Дождись деплоя. GitHub соберёт и опубликует сайт за 1-3 минуты. Живой URL (например,
https://your-username.github.io) появится в панели настроек Pages. -
Подключи собственный домен (опционально). Добавь файл
CNAMEв корень репозитория с именем домена (например,www.yoursite.com). Затем в панели управления DNS создай CNAME-запись, указывающую наyour-username.github.io. GitHub автоматически выпустит SSL-сертификат в течение нескольких минут.
Пошаговое руководство: деплой на Cloudflare Pages
- Зарегистрируйся или войди в Cloudflare. Перейди на pages.cloudflare.com и подключи свой аккаунт GitHub или GitLab.
- Создай новый проект. Нажми «Create a project», затем «Connect to Git». Выбери нужный репозиторий из списка.
-
Настрой параметры сборки. Если сайт на чистом HTML, оставь поле команды сборки пустым и укажи выходную директорию
/или ту, где лежитindex.html. Для Hugo: команда сборки -hugo, выходная директория -public. Для Jekyll: команда -jekyll build, выходная директория -_site. -
Задеплой сайт. Нажми «Save and Deploy». Cloudflare клонирует репозиторий, выполнит сборку и опубликует сайт на глобальной граничной сети. Сразу же появится поддомен
*.pages.dev. -
Добавь собственный домен. В панели управления проектом перейди в раздел «Custom domains» и введи свой домен. Если домен уже управляется через Cloudflare DNS - настройка займёт один клик. Если нет - добавь CNAME-запись у своего регистратора, указывающую на адрес
*.pages.dev.
Каждый последующий git push в основную ветку автоматически запускает повторный деплой. Cloudflare также создаёт превью-деплои для пул-реквестов - удобно проверять изменения перед выходом в продакшн.
Как добавить контактную форму на статический сайт
Вот где большинство руководств заканчивается - и где большинство людей застревает. Контактная форма на статическом сайте не может отправлять данные сама себе: нет сервера, который её слушает. Реальных вариантов три:
- Сервис-бэкенд для форм (рекомендуется): ты указываешь атрибут
actionформы на сторонний эндпоинт, который принимает заявку, валидирует её и отправляет тебе на почту. - Serverless-функция: пишешь небольшую функцию (Cloudflare Workers, AWS Lambda), которая обрабатывает форму. Работает, но требует кода и поддержки.
- JavaScript fetch(): используешь браузерный fetch API для отправки данных формы на бэкенд-эндпоинт. Технические подробности - в нашем руководстве как отправить данные HTML-формы через JavaScript fetch().
Самый быстрый путь к рабочей форме - специализированный сервис. Вот конкретный пример с Sendform:
Конкретный пример: рабочая контактная форма за 5 минут
Прежде чем добавлять код на сайт, нужно создать аккаунт в Sendform и настроить эндпоинт формы. Это займёт около двух минут:
- Зарегистрируйся на Sendform.net. Создай бесплатный аккаунт - карта не нужна. После регистрации сразу появится проект по умолчанию.
- Создай форму. В панели управления нажми «New Form». Дай ей название, выбери проект и укажи адрес электронной почты, на который хочешь получать заявки. Sendform проверит этот адрес перед активацией эндпоинта.
- Скопируй URL эндпоинта. После создания формы ты увидишь уникальный URL эндпоинта в формате
https://sendform.net/!your-form-id. Скопируй его - именно его нужно вставить в HTML.
Когда эндпоинт готов, добавь следующий HTML на свой статический сайт:
<form action="https://sendform.net/!your-form-id" method="POST">
<label for="name">Your Name</label>
<input type="text" id="name" name="name" required>
<label for="email">Your Email</label>
<input type="email" id="email" name="email" required>
<label for="message">Message</label>
<textarea id="message" name="message" rows="5" required></textarea>
<button type="submit">Send Message</button>
</form>Замени your-form-id на ID из своей панели управления Sendform. Каждая заявка будет приходить на почту, которую ты подтвердил при настройке. Никакого серверного кода, никакого сервера, никаких ежемесячных расходов на инфраструктуру. Про более продвинутые паттерны UX - редиректы после отправки и письма-подтверждения - читай в нашем руководстве лучшие практики форм для статических сайтов.
Если ты используешь конструктор сайтов вместе со статическим сайтом, подробности интеграции описаны в нашей статье как интегрировать Sendform с конструктором сайтов.
Защита от спама: любая публично доступная форма рано или поздно привлечёт ботов. Sendform включает встроенные honeypot-поля и ограничение частоты запросов. О том, как держать почту в чистоте, читай в нашей статье лучшие практики защиты форм от спама.
Частые ошибки и как их избежать
Вот ошибки, которые чаще всего вызывают головную боль при настройке бесплатного хостинга статических сайтов:
1. Забытая страница 404
Если маршрут не найден, GitHub Pages и Cloudflare Pages покажут стандартную страницу ошибки. Создай собственный файл 404.html в корневой директории. Это удержит пользователей на сайте и сохранит их опыт взаимодействия.
2. Секреты в публичном репозитории
API-ключи, секреты эндпоинтов форм и адреса электронной почты никогда не должны попадать в публичный репозиторий на GitHub. Используй переменные окружения в Cloudflare Pages или ссылайся на приватный конфигурационный файл, добавленный в .gitignore.
3. Форма без плана обработки данных
Это самая распространённая ошибка. Разработчик делает красивую контактную форму, пушит на GitHub Pages - и в день запуска обнаруживает, что форма молча падает. Реши вопрос с бэкендом для формы ещё до того, как напишешь первый тег <input>. Сервисы вроде Sendform позволяют настроить контактную форму с отправкой прямо на почту без единой строки кода - проблема бэкенда исчезает полностью.
4. Проблемы с кэшем CDN
Если сайт не обновляется после пуша, возможно, CDN раздаёт устаревшие файлы. Cloudflare Pages автоматически сбрасывает кэш при деплое. GitHub Pages распространяет изменения медленнее - подожди до 10 минут или добавь query string к URL ассетов во время тестирования.
5. Неправильные относительные пути
Если сайт на GitHub Pages находится по адресу username.github.io/project-name/ (в поддиректории), все пути к ассетам должны учитывать этот префикс. Ссылка на /styles.css сломается. Используй относительные пути (./styles.css) или настрой параметр baseURL в своём генераторе статических сайтов в соответствии с поддиректорией.
6. Игнорирование автоматизации обработки заявок
Когда форма начала собирать заявки, можно сделать гораздо больше, чем просто получать письма. Sendform поддерживает вебхуки и интеграции, которые позволяют автоматически направлять заявки в Slack, CRM или таблицу. Наше руководство автоматизация обработки форм с вебхуками и API покажет, как всё это настроить без серверного кода.
Заключение
Бесплатный хостинг статических сайтов никогда не был таким мощным. GitHub Pages подойдёт командам, которые уже живут в экосистеме GitHub, а Cloudflare Pages даёт лучшую глобальную производительность и более щедрый бесплатный тариф. Настоящая сложность не в самом хостинге - а в динамических функциях, особенно в контактных формах. Подключив к любой из этих платформ специализированный сервис для форм, ты получаешь полноценный профессиональный сайт без единого рубля на инфраструктуру. Начни с одного из руководств по платформам выше, запусти сайт, а затем подключи Sendform для надёжной обработки заявок с первого дня.

Добавь контактную форму на статический сайт за несколько минут
Используй Sendform для сбора заявок с любого статического сайта на GitHub Pages или Cloudflare Pages. Никакого серверного кода, никакой настройки сервера, никаких сложностей. Просто укажи атрибут action формы на свой эндпоинт - и готово.
Начни бесплатно на Sendform.net →
Часто задаваемые вопросы
Для большинства бизнес-задач - вполне. GitHub Pages и Cloudflare Pages обеспечивают аптайм 99,9%+ на корпоративной инфраструктуре. Главное ограничение - отсутствие серверной обработки, а не надёжность. Высоконагруженным сайтам или интернет-магазинам бесплатный тариф со временем может стать тесным, но для лендингов и портфолио - это продакшн-уровень.
Да. Оба сервиса - GitHub Pages и Cloudflare Pages - поддерживают собственные домены на бесплатном тарифе, включая автоматический HTTPS через SSL-сертификаты. Нужно владеть доменом и обновить DNS-записи, чтобы они указывали на хостинг-платформу. Настройка занимает меньше 15 минут, SSL выпускается автоматически в течение нескольких часов.
Статические сайты не могут обрабатывать заявки самостоятельно - сервера нет. Стандартное решение - указать атрибут action формы на сторонний сервис-бэкенд. Этот сервис принимает POST-запрос, валидирует данные и пересылает их тебе на почту. Sendform - один из таких сервисов: регистрируешься, создаёшь форму и получаешь уникальный URL эндпоинта, который вставляешь в атрибут action HTML-формы.
GitHub Pages проще и напрямую интегрируется с репозиториями GitHub - идеально для разработчиков, уже использующих GitHub. Cloudflare Pages предлагает более быстрый глобальный CDN с 300+ граничными локациями, безлимитный трафик на бесплатном тарифе и встроенный CI/CD с превью-деплоями. Для сайтов, где важна производительность, Cloudflare Pages - более сильный выбор.
Базовые знания HTML помогут, но быть разработчиком необязательно. Инструменты вроде Hugo, Jekyll или даже обычные HTML-файлы прекрасно работают на обеих платформах. Для контактных форм Sendform требует только вставки готового HTML-сниппета после двухминутной регистрации - никаких знаний серверного программирования на любом этапе не нужно.