Публичные репозитории в разделе «Git репозитории» добавлять не нужно: для них достаточно указать обычный HTTPS- или SSH-URL при создании бота, без токена и без этой формы. Ниже описано подключение только приватных репозиториев (токен, deploy key и т.п.). Источники иллюстраций

  • Скриншоты дашборда Bothost и формы admin-repos — материалы bothost.ru (см. разделы ниже).
  • Скриншоты интерфейса GitHub (настройки, Developer settings, токены) взяты из ответов в теме Stack Overflow git — Clone a private repository (GitHub); изображения с хостинга Stack Exchange (i.sstatic.net). Пользовательский контент на Stack Overflow распространяется по лицензии CC BY-SA 4.0 с указанием источника.

Дашборд Bothost: куда нажать

В личном кабинете откройте раздел Git репозитории — фиолетовая кнопка с иконкой ветки в верхней панели (рядом с «Создать бота» и «Тикеты поддержки»). Оттуда настраивается привязка репозитория к боту.
Дашборд Bothost: кнопка «Git репозитории» в верхнем меню

Форма «Подключение приватного репозитория»

Откроется страница Подключение приватного репозитория: выберите способ доступа — SSH (deploy key) или HTTPS (логин/пароль или токен). В блоке «Подключить репозиторий» заполните поля:
ПолеЧто указать
URL репозиторияSSH или HTTPS, например git@github.com:org/repo.git или https://github.com/org/repo.git
ВеткаОбычно main или master
Способ доступаДля токена GitHub — HTTPS (логин/пароль или токен)
Username (для HTTPS)Для GitHub с PAT часто x-access-token, для GitLab — oauth2, либо ваш логин
Пароль/ТокенPersonal Access Token или пароль (если допускает хостинг)
Нажмите Сохранить.
Подсказки на странице: для GitHub при использовании токена рекомендуется username x-access-token, для GitLab — oauth2. Если в конце URL нет суффикса .git, он может быть добавлен автоматически при сохранении. Страница подключения приватного репозитория (admin-repos)

🎯 Минимальные права для деплоя

Для деплоя бота из приватного репозитория клиенту нужно дать только права на чтение (Read).

GitHub

Минимальные права:
  • Read (чтение кода) - достаточно для клонирования
Заметка: для приватного репозитория нельзя полагаться на URL вида git://github.com/... (только чтение по этому протоколу). Нужен HTTPS с токеном или SSH. Если у аккаунта включена 2FA, при git clone по HTTPS вместо пароля используйте Personal Access Token. Как дать доступ:

Вариант 1: Personal Access Token (рекомендуется)

Создание classic-токена (Tokens (classic)) — пошагово:
    • Откройте Settings профиля на GitHub:
Settings — меню профиля GitHub
    • Внизу списка слева выберите Developer settings:
Developer settings
    • Personal access tokensTokens (classic)Generate new token (classic):
Personal access tokens — Generate new token
    • Укажите название, срок действия и отметьте repo (для приватных репозиториев без этой области клонирование не получится). Для только публичных репозиториев достаточно public_repo:
Выбор scope repo
    • Нажмите Generate token:
Generate token
    • Сразу скопируйте токен — полный текст потом может быть недоступен:
Сгенерированный PAT Кратко (тот же путь текстом): Settings → Developer settings → Personal access tokens → Tokens (classic) → Scopes: repo (приватные) или public_repo (публичные). Опционально — Fine-grained token (узкие права, в том числе на один репозиторий): Settings → Developer settings → Fine-grained tokens → Generate new token. Для сценария «только чтение кода для деплоя» задайте Repository access и для выбранного репозитория право Contents: Read-only. Settings — вход в настройки Developer settings Fine-grained tokens Generate new token Только выбранные репозитории Contents — Read-only
    • В Bothost при добавлении репозитория:
- Тип: HTTPS - Username: x-access-token (автоматически) - Token: вставляется токен клиента Права токена:
✅ repo (для приватных репозиториев)
   - repo:status
   - repo_deployment
   - public_repo
   - repo:invite
   - security_events

Вариант 2: Deploy Key (для одного репозитория)

    • На manager ноде сгенерировать SSH ключ:
         ssh-keygen -t ed25519 -C "bothost-deploy" -f ~/.ssh/bothost_deploy_key
    • Добавить публичный ключ в репозиторий:
- Settings → Deploy keys → Add deploy key - Title: Bothost Deploy - Key: содержимое ~/.ssh/bothost_deploy_key.pub - ✅ Allow write access: НЕ включать (только чтение) Права Deploy Key:
  • ✅ Read-only доступ к репозиторию
  • ❌ Не может изменять код
  • ❌ Не может создавать issues/pull requests

Вариант 3: GitHub App (для организации)

Для организаций можно создать GitHub App с минимальными правами:
  • ✅ Contents: Read (чтение кода)
  • ✅ Metadata: Read (метаданные)

GitLab

Минимальные права:
  • Guest или Reporter роль
Как дать доступ:

Вариант 1: Personal Access Token

Создайте Personal Access Token в GitLab:
  • User SettingsAccess Tokens
  • Scopes: только read_repository
В Bothost при подключении репозитория укажите:
  • Тип: HTTPS
  • Username: oauth2
  • Token: ваш токен
Права токена: достаточно scope read_repository (чтение репозитория, клонирование для деплоя).

Вариант 2: Deploy Token

    • В репозитории:
- Settings → Repository → Deploy tokens - Name: Bothost Deploy - Scopes: только read_repository - Expires: по желанию
    • Использовать:
- Username: из GitLab - Token: из GitLab

Bitbucket

Минимальные права:
  • Read доступ
Как дать доступ:

Personal Access Token

    • Клиент создает App Password:
- Personal settings → App passwords - Permissions: только Repositories: Read
    • В Bothost:
- Тип: HTTPS - Username: username клиента - Token: app password

🔒 Безопасность

✅ Что безопасно:

    • Deploy Key (SSH) - самый безопасный вариант
- Привязан к одному репозиторию - Не может изменять код - Можно отозвать в любой момент
    • Personal Access Token с минимальными правами
- Только чтение - Можно ограничить по времени - Можно отозвать
    • Deploy Token (GitLab)
- Только для деплоя - Ограничен по времени - Минимальные права

❌ Что НЕ безопасно:

    • Полный доступ к аккаунту
- Никогда не просите пароль от аккаунта - Не используйте токены с правами на запись
    • Токены с правами на изменение кода
- Не нужны для деплоя - Риск компрометации

📝 Инструкция для клиента

GitHub

Скриншоты интерфейса GitHub см. в разделе «Вариант 1: Personal Access Token» выше.
    • Перейти в Settings → Developer settings → Personal access tokens → Tokens (classic)
    • Нажать "Generate new token (classic)"
    • Название: Bothost Deploy
    • Expiration: выбрать срок (рекомендуется 1 год)
    • Scopes: выбрать только repo (для приватных) или public_repo (для публичных)
    • Нажать "Generate token"
    • Скопировать токен (показывается только один раз!)
    • В Bothost при добавлении репозитория:
- Вставить URL репозитория - Выбрать "Приватный репозиторий" - Вставить токен в поле "Token"

GitLab

    • Перейти в User Settings → Access Tokens
    • Token name: Bothost Deploy
    • Expiration date: выбрать срок
    • Scopes: выбрать только read_repository
    • Нажать "Create personal access token"
    • Скопировать токен
    • В Bothost:
- URL репозитория - Выбрать "Приватный репозиторий" - Вставить токен

🔄 Обновление токенов

Если токен истек или был скомпрометирован:
    • Клиент создает новый токен
    • В Bothost обновляет репозиторий:
- Перейти в настройки репозитория - Обновить токен - Сохранить
    • Старый токен можно отозвать в настройках GitHub/GitLab

✅ Рекомендации

Для клиента:

    • Использовать отдельный токен для Bothost
- Не использовать основной токен аккаунта - Легче отозвать при необходимости
    • Установить срок действия
- Не создавать токены без срока - Рекомендуется 1 год
    • Минимальные права
- Только чтение кода - Не давать права на запись

Для Bothost:

    • Хранить токены в зашифрованном виде
- Использовать base64 кодирование (как сейчас) - Не логировать токены
    • Использовать HTTPS вместо SSH
- Проще для клиентов - Не нужны SSH ключи на сервере
    • Проверять доступность репозитория
- Валидировать токен перед сохранением - Показывать ошибки если токен неверный

🆘 Решение проблем

Ошибка: "Repository not found" или "Authentication failed"

Причины:
    • Токен неверный или истек
    • Токен не имеет прав на репозиторий
    • Репозиторий удален или переименован
Решение:
    • Проверить токен в настройках GitHub/GitLab
    • Создать новый токен с правильными правами
    • Обновить токен в Bothost

Ошибка: "Permission denied"

Причины:
    • Токен не имеет прав на чтение
    • Репозиторий приватный, но токен для публичных
Решение:
    • Создать токен с правами repo (для приватных)
    • Проверить что репозиторий доступен с этим токеном

📋 Чеклист для клиента

  • [ ] Создан Personal Access Token
  • [ ] Токен имеет только права на чтение (repo или read_repository)
  • [ ] Установлен срок действия токена
  • [ ] Токен скопирован и вставлен в Bothost
  • [ ] Репозиторий успешно добавлен в Bothost
  • [ ] Тестовый деплой прошел успешно