Размещение своего сайта с GitHub Pages
Данное руководство описывает процесс публикации статического веб-сайта с использованием GitHub Pages, включая настройку пользовательского домена. Рассматриваются технические аспекты DNS, ограничения платформы и рекомендации по развертыванию.
Проверил на практике, и если вы читаете это с моего сайта spirzen.ru - значит работоспособность подтверждена)))
Что такое GitHub Pages
GitHub Pages — это сервис хостинга статических сайтов, интегрированный в экосистему GitHub. Он позволяет размещать личные, организационные или проектные страницы непосредственно из репозитория. Сайт может быть построен из HTML, CSS, JavaScript или генерироваться с помощью статических генераторов (например, Jekyll, Docusaurus, Hugo).
Сайты доступны по адресу username.github.io (для пользовательских или организационных страниц) или username.github.io/repository-name (для проектных страниц). Поддерживается настройка пользовательского домена и автоматическое шифрование через HTTPS.
Ограничения и условия использования
GitHub Pages предназначен для размещения статического контента. Ниже приведены ключевые технические и политические ограничения:
- Объем хранилища: до 1 ГБ на репозиторий (рекомендуется не превышать 100 МБ для оптимальной производительности).
- Трафик: мягкий лимит в 100 ГБ трафика в месяц и до 2000 запросов в час. Превышение не приводит к блокировке, но может вызвать временные ограничения.
- Выполнение кода: запрещено выполнение серверного кода (PHP, Node.js и др.). Только статический контент.
- Автоматизация: сборка выполняется через GitHub Actions. Допускаются кастомные workflow, но с ограничением по времени выполнения (6 часов на задание).
- Политика добросовестного использования: контент должен соответствовать GitHub Community Guidelines. Запрещены вредоносные, нарушающие авторские права или мошеннические материалы.
Размещение разрешено в публичных репозиториях при использовании GitHub Free, а также в приватных — при наличии подписки Pro, Team или Enterprise.
Пошаговая инструкция по развертыванию
Шаг 1: Настройка репозитория
- Создайте новый репозиторий на GitHub с именем
ваше-имя-пользователя.github.io.
Для проектного сайта имя может быть любым. - Загрузите исходный код сайта в репозиторий. Это может быть:
- Простые HTML-файлы;
- Проект на основе Docusaurus, VuePress, Jekyll и других статических генераторов.
- Перейдите в раздел Settings → Pages.
- В секции Build and deployment выберите источник публикации:
- Deploy from a branch — если сайт развертывается напрямую из ветки (например,
main,gh-pagesили/docs). - GitHub Actions — если используется кастомный workflow для сборки (рекомендуется при сложной сборке или отсутствии необходимости в выделенной ветке).
- Deploy from a branch — если сайт развертывается напрямую из ветки (например,
- Укажите ветку и, при необходимости, папку (например, корень
/или/docs). - Нажмите Save.
После этого сайт будет доступен по адресу https://ваше-имя-пользователя.github.io.
Шаг 2: Покупка и настройка домена
- Приобретите домен у регистратора (например, reg.ru, nic.ru, GoDaddy).
- Войдите в панель управления доменом.
- Перейдите в раздел управления DNS-зоной («Управление зоной» на reg.ru).
- Удалите все пользовательские A-, AAAA- или CNAME-записи, если они есть.
- Добавьте четыре A-записи, указывающие на IP-адреса серверов GitHub:
| Тип | Имя | Значение |
|---|---|---|
| A | @ | 185.199.108.153 |
| A | @ | 185.199.109.153 |
| A | @ | 185.199.110.153 |
| A | @ | 185.199.111.153 |
Адреса могут меняться. Актуальные значения указаны в официальной документации GitHub.
- При необходимости добавьте IPv6-адреса (AAAA-записи):
| Тип | Имя | Значение |
|---|---|---|
| AAAA | @ | 2606:50c0:8000::153 |
| AAAA | @ | 2606:50c0:8001::153 |
| AAAA | @ | 2606:50c0:8002::153 |
| AAAA | @ | 2606:50c0:8003::153 |
- Сохраните изменения. Распространение DNS может занять от нескольких минут до 48 часов.
Шаг 3: Подключение пользовательского домена
- Вернитесь в настройки репозитория на GitHub: Settings → Pages.
- В поле Custom domain введите ваш домен (например,
example.comдля основного домена илиsub.example.comдля поддомена). - Нажмите Save.
GitHub автоматически создаст файл CNAME в корне репозитория с указанным доменом. Этот файл необходим для идентификации домена при сборке.
- После сохранения начнется проверка DNS (DNS Check in Progress). Состояние можно отслеживать в интерфейсе.
- Через некоторое время (обычно 1–2 часа после обновления DNS) станет доступна опция Enforce HTTPS. Включите ее для принудительного перенаправления на зашифрованное соединение.
Важно: Не удаляйте файл
CNAMEпри локальных коммитах. Он необходим для поддержания связи домена с GitHub Pages.
Объяснение ключевых терминов
A-запись и AAAA-запись
A-запись (Address Record) связывает домен с IPv4-адресом. AAAA-запись выполняет ту же функцию для IPv6. При использовании GitHub Pages необходимо указать четыре A-записи, так как GitHub использует несколько IP-адресов для балансировки нагрузки.
CNAME
Canonical Name Record — DNS-запись, которая сопоставляет один домен (или поддомен) с другим. Используется для поддоменов (например, www.example.com). При настройке поддомена в GitHub Pages указывается CNAME-запись, указывающая на ваше-имя-пользователя.github.io.
Enforce HTTPS
Функция, обеспечивающая принудительное шифрование трафика через протокол HTTPS. GitHub автоматически предоставляет SSL-сертификат через Let's Encrypt. Опция становится активной только после успешной проверки DNS.
GitHub Actions
Платформа непрерывной интеграции и доставки (CI/CD), встроенная в GitHub. Позволяет автоматизировать сборку, тестирование и развертывание проектов. При использовании GitHub Pages workflow может включать шаги:
- Клонирование репозитория (
actions/checkout); - Сборку проекта (например,
npm run build); - Загрузку артефактов (
actions/upload-pages-artifact); - Деплой на серверы GitHub Pages (
actions/deploy-pages).
DNS Check
Процесс проверки корректности DNS-записей, выполненный GitHub. Убеждается, что домен действительно указывает на серверы GitHub. Проверка может занять время из-за кэширования DNS.
Pages Build and Deployment
Процесс, при котором GitHub собирает статический контент (при необходимости) и размещает его на серверах. Если используется ветка, сборка происходит автоматически. При использовании GitHub Actions процесс управляется конфигурационным файлом в .github/workflows/.
Заключение
GitHub Pages — эффективное решение для размещения документации, портфолио, блогов и образовательных ресурсов. Благодаря интеграции с Git и поддержке CI/CD, процесс публикации становится полностью автоматизированным. Настройка пользовательского домена требует понимания основ DNS, но реализуется стандартными средствами большинства регистраторов.
Для масштабируемых или динамических проектов рекомендуется рассмотреть альтернативные платформы (Vercel, Netlify, Cloudflare Pages), однако для большинства статических сайтов GitHub Pages остается надежным и бесплатным решением.