Импорт проекта из GitHub

Если код вашего сайта лежит в GitHub-репозитории, его не обязательно загружать по SFTP или через консоль. В панели управления хостингом есть модуль «Импорт из GitHub»: укажите репозиторий — и панель сама склонирует его в каталог сайта. Работает прямо из браузера, SSH-клиент и знание git не нужны.

Что умеет модуль:

  • импорт публичного репозитория — достаточно вставить URL;
  • импорт приватного репозитория — по личному токену GitHub (PAT) или по SSH deploy-ключу;
  • выбор ветки и подкаталога, который станет корнем сайта (для Laravel, Symfony и других фреймворков);
  • импорт выполняется в фоне — можно закрыть вкладку, по завершении придёт уведомление в панели.

Где найти

Откройте панель управления хостингом — адрес, логин и пароль указаны в карточке хостинга в личном кабинете, блок «Доступ к панели управления».

Дальше два равнозначных пути:

  • пункт «Импорт из GitHub» в главном меню панели (внизу списка);
  • раздел «Сайты»: выделите сайт и нажмите кнопку «Импорт из GitHub» в тулбаре — форма откроется с уже выбранным сайтом.

Кнопка «Импорт из GitHub» в тулбаре раздела Сайты

Форма импорта

Форма «Импорт проекта из GitHub»: выбор сайта, способ доступа, ветка и корень сайта

Сайт

Куда копировать файлы. Если вы пришли из раздела «Сайты», нужный сайт уже выбран.

Способ доступа

Режим Когда выбирать Что понадобится
Публичный репозиторий Репозиторий открытый Только URL — без токенов и ключей
Личный токен GitHub (PAT) Свои репозитории, в том числе приватные Токен; после кнопки «Загрузить список репозиториев» репозиторий выбирается из списка (приватные помечены 🔒)
SSH deploy-ключ Доступ только к одному репозиторию (например, ключ выдал заказчик или коллега) Приватный ключ + URL вида git@github.com:owner/repo.git

Как получить токен (PAT). На GitHub откройте Settings → Developer settings → Personal access tokens и создайте токен:

  • Fine-grained token — выберите доступ к нужным репозиториям и обязательно включите Permissions → Repository permissions → Contents: Read-only. Без этого права GitHub не покажет токену приватные репозитории — в списке будут только публичные.
  • Classic token — достаточно области repo.

Как работает deploy-ключ. Сгенерируйте пару ключей (ssh-keygen -t ed25519), публичную часть добавьте в репозитории на GitHub: Settings → Deploy keys → Add deploy key (галочка «Allow write access» не нужна). Приватную часть вставьте в форму. Deploy-ключ по правилам GitHub привязан к одному репозиторию, поэтому список в этом режиме недоступен — URL вводится вручную.

Введённые значения запоминаются для следующего импорта: токен — на вашего пользователя панели, репозиторий, ветка и корень сайта — на каждый сайт отдельно. Хранятся они на сервере в закрытом каталоге, из файлов сайта недоступны. SSH-ключ не сохраняется никогда — он используется один раз и сразу удаляется.

Ветка

Оставьте пустым, чтобы взять ветку репозитория по умолчанию (обычно main).

Корень сайта в репозитории

Поле для проектов на PHP-фреймворках, где корнем сайта должен быть подкаталог репозитория: public у Laravel, web у Symfony и т.п. Если сайт лежит в корне репозитория (обычный сайт, WordPress-тема и т.д.) — оставьте поле пустым.

Как это работает:

  • Если корень сайта в панели уже указывает на такой подкаталог (например, хостинг создан с окружением под фреймворк), репозиторий ляжет прямо в каталог сайта — существующий корень сам окажется нужной папкой из репозитория. Подготовленный файл .env при этом переживёт импорт (если не включена очистка каталога).
  • В остальных случаях репозиторий целиком попадёт в соседний каталог имя-сайта-app, а каталог сайта станет ссылкой на указанный подкаталог. Прежние файлы сайта не пропадут — они сохранятся рядом в каталоге имя-сайта.bak-<дата>.

Защита от случайной публикации кода. Если оставить поле пустым, а в репозитории панель распознает PHP-фреймворк (есть artisan или composer.json с public/index.php), импорт остановится с подсказкой, какой каталог указать. Иначе служебные файлы (.env, composer.json, каталог app/) оказались бы в корне сайта и были бы видны из интернета. Файлы сайта при такой остановке не изменяются.

Очистить каталог сайта перед копированием

Удаляет из каталога сайта всё, что там было, перед копированием файлов из репозитория. Включайте, когда старое содержимое точно не нужно (например, заглушка). Эта галочка сознательно не запоминается между импортами.

Сохранить каталог .git

Оставляет в каталоге проекта служебную папку .git. Полезно, если планируете обновлять сайт командой git pull по SSH — не придётся клонировать заново.

Запуск и результат

Нажмите «Импортировать». Импорт выполняется в фоне: форма сразу ответит баннером «Выполняется…», вкладку можно закрыть. Когда всё закончится, в панели появится уведомление (значок-колокольчик) — об успехе или с текстом ошибки. Тот же статус показывает баннер при повторном открытии формы.

Пока идёт один импорт, второй запустить нельзя — дождитесь уведомления.

уведомление-колокольчик «Импорт … завершён»

Повторный импорт в тот же сайт безопасен: режим раскладки сохраняется, при включённой очистке содержимое просто заменится свежей копией из репозитория.

После импорта

Панель копирует файлы, но не устанавливает зависимости. Что дальше — зависит от проекта:

  • Хостинг с окружением под фреймворк (пресеты Laravel / Composer-приложение): запустите деплой-скрипт ~/laravel-deploy.sh (или ~/app-deploy.sh) — он поставит Composer-зависимости, соберёт фронтенд и подготовит приложение. Подробности — в статье Как создать хостинг под размещение проекта на PHP-фреймворке, шаг 6.
  • Статический сайт или готовый PHP-код — сайт работает сразу после импорта.

Частые вопросы

В списке репозиториев нет моих приватных — только публичные. Вы используете fine-grained токен без права на содержимое. Откройте настройки токена на GitHub и включите Permissions → Repository permissions → Contents: Read-only (сам по себе выбор репозиториев в «Repository access» этого не даёт). Либо создайте classic-токен с областью repo.

Ошибка «Ветка … не найдена в репозитории». Проверьте имя ветки — или оставьте поле пустым, чтобы использовать ветку по умолчанию.

Импорт остановился с просьбой указать «Корень сайта в репозитории». Панель распознала в репозитории PHP-фреймворк и не стала класть его служебные файлы в корень сайта. Впишите подсказанный каталог (обычно public) и повторите импорт.

Куда делись файлы, которые были на сайте раньше? Если включали «Очистить каталог сайта» — они удалены. Если корень сайта переключался на подкаталог репозитория — прежние файлы лежат рядом, в каталоге имя-сайта.bak-<дата>.

Как обновлять сайт при изменениях в репозитории? Либо повторите импорт (значения формы уже заполнены), либо — если при импорте была включена галочка «Сохранить каталог .git» — выполните git pull по SSH или в Shell-клиенте панели.

Насколько безопасно вводить токен? Токен хранится на сервере в закрытом системном каталоге, недоступном ни файлам сайта, ни другим пользователям, и не попадает в адресную строку и журналы. При клонировании он передаётся git'у через служебный механизм, а не в URL. SSH-ключ не сохраняется вовсе.

Поддерживаются ли GitLab / Bitbucket? Пока нет — модуль работает только с github.com.

Обновлено 17 июля 2026