> ## Documentation Index
> Fetch the complete documentation index at: https://docs.befailproof.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Настройка GitHub Token

> Документация по настройке GitHub Token для AgentEye.

GitHub Personal Access Token (PAT) — это единственное учетное данные, которое открывает доступ ко всем артефактам AgentEye. С одним токеном вы можете загружать Docker-образы, скачивать релизные бинарники и устанавливать Python-пакеты без отдельных логинов для каждого компонента и без обмена общими секретами. Все артефакты AgentEye распространяются из организации GitHub `agenteye-enterprise`; после предоставления доступа вашей организации каждый разработчик или оператор генерирует и обновляет свой собственный токен, что обеспечивает отслеживаемость и возможность отзыва доступа для каждого пользователя.

Установите токен как переменную окружения и учетные данные Docker один раз на машину:

```bash theme={null}
export AGENTEYE_TOKEN=<your-github-pat>
echo $AGENTEYE_TOKEN | docker login ghcr.io -u x --password-stdin
```

> **Примечание о пользователе:** GHCR игнорирует имя пользователя при `docker login` и выполняет аутентификацию полностью на основе токена, поэтому подойдет любое непустое значение. В этой документации используется `-u x` для краткости; манифесты развертывания, создающие Kubernetes image-pull secret, могут использовать более описательное имя пользователя, такое как `agenteye-enterprise`. Оба варианта приняты.

***

## Вариант A: Классический токен (Рекомендуется)

Классический токен — это наиболее надежный выбор для AgentEye, так как поток `docker login` и загрузки образов GHCR имеет наиболее широкую и стабильную поддержку классических токенов. Двух областей действия достаточно для всего необходимого (загрузка образов и скачивание релизных ресурсов), поэтому вы аутентифицируетесь один раз и движетесь дальше без возни с реестром. Одна из них, `read:packages`, является истинно только для чтения; другая, `repo`, — единственная классическая область действия, предоставляющая доступ к приватным релизным ресурсам, и она намеренно широка — GitHub определяет ее как полный контроль (чтение и запись) приватных репозиториев.

### 1. Создайте токен

Перейдите в **GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token (classic)**.

| Поле           | Значение                                                                                                         |
| -------------- | ---------------------------------------------------------------------------------------------------------------- |
| **Note**       | `agenteye-<machine-or-team-name>` (например `agenteye-prod-server`)                                              |
| **Expiration** | Установите срок действия в соответствии с вашей политикой безопасности; 90 дней — разумное значение по умолчанию |

> **Примечание о метке:** GitHub называет это поле **Note** для классических токенов и **Token name** для детализированных токенов. Они служат одной и той же цели: удобочитаемый идентификатор для последующего аудита и отзыва.

### 2. Выберите области действия

| Область действия | Зачем она нужна                                                                                                                                                                                                                                                                                                                           |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `read:packages`  | Загружать Docker-образы из `ghcr.io/agenteye-enterprise/` и скачивать ресурсы пакетов                                                                                                                                                                                                                                                     |
| `repo`           | Читать содержимое приватных репозиториев, исходные файлы и релизные ресурсы из `agenteye-enterprise/releases`. Это широкая область GitHub — полный контроль приватных репозиториев (чтение и запись), а не область только для чтения — это просто единственная классическая область, предоставляющая доступ к приватным релизным ресурсам |

Никакие другие области действия не требуются.

### 3. Сгенерируйте и скопируйте токен

Нажмите **Generate token** и сразу скопируйте значение; оно отображается только один раз. Сохраните его в вашем менеджере секретов или окружении.

***

## Вариант B: Детализированный токен

Детализированные токены ограничивают доступ к конкретным репозиториям и разрешениям, что делает их наиболее жестким вариантом с принципом наименьших привилегий. Выберите этот путь, если политика безопасности вашей организации требует детализированных токенов.

> **Примечание:** Поддержка детализированных токенов в GHCR менее консистентна, чем для классических токенов. Если `docker login` или `docker pull` не работает после выполнения этих шагов, вернитесь к классическому токену (Вариант A).

### 1. Создайте токен

Перейдите в **GitHub → Settings → Developer settings → Personal access tokens → Fine-grained tokens → Generate new token**.

| Поле                  | Значение                                                                                                         |
| --------------------- | ---------------------------------------------------------------------------------------------------------------- |
| **Token name**        | `agenteye-<machine-or-team-name>` (например `agenteye-prod-server`)                                              |
| **Expiration**        | Установите срок действия в соответствии с вашей политикой безопасности; 90 дней — разумное значение по умолчанию |
| **Resource owner**    | `agenteye-enterprise`                                                                                            |
| **Repository access** | **Only select repositories** → `agenteye-enterprise/releases`                                                    |

### 2. Установите разрешения репозитория

В разделе **Permissions → Repository permissions** установите:

| Разрешение   | Доступ    |
| ------------ | --------- |
| **Contents** | Read-only |
| **Packages** | Read-only |

Все остальные разрешения могут оставаться **No access**.

> **Примечание:** Если образы контейнеров (`ghcr.io/agenteye-enterprise/...`) опубликованы как пакеты на уровне организации, а не как пакеты, связанные с репозиторием, `docker login` может завершиться ошибкой с разрешениями только на уровне репозитория. В этом случае добавьте разрешение на уровне организации: **Permissions → Organization permissions → Packages: Read-only**.

### 3. Что дает каждое разрешение

| Разрешение          | Используется для                                                                                        |
| ------------------- | ------------------------------------------------------------------------------------------------------- |
| Contents: Read-only | Скачивания `docker-compose.yml`, релизных бинарников и Python-пакетов из `agenteye-enterprise/releases` |
| Packages: Read-only | Загрузки Docker-образов из `ghcr.io/agenteye-enterprise/`                                               |

### 4. Сгенерируйте и скопируйте токен

Нажмите **Generate token** и сразу скопируйте значение; оно отображается только один раз. Сохраните его в вашем менеджере секретов или окружении.

***

## Обновление токена

Плановое обновление токенов поддерживает отслеживаемость доступа и ограничивает радиус действия если учетные данные когда-либо утекут. Токены также могут истечь или быть отозваны в любой момент, поэтому обновление — это стандартный способ оставаться аутентифицированным. Чтобы обновить токен:

1. Сгенерируйте новый токен, используя описанные выше шаги.
2. Обновите `AGENTEYE_TOKEN` в вашем окружении или менеджере секретов.
3. Заново аутентифицируйте Docker: `echo $AGENTEYE_TOKEN | docker login ghcr.io -u x --password-stdin`
4. Отзовите старый токен в GitHub → Settings → Developer settings → Personal access tokens, затем откройте подраздел **Tokens (classic)** или **Fine-grained tokens**, соответствующий типу токена, и удалите его.

***

## Проверьте ваш токен

Убедитесь, что токен работает перед интеграцией в развертывание, чтобы ошибки аутентификации обнаружились здесь, а не во время развертывания. Каждая команда проверяет одну из областей действия выше:

```bash theme={null}
# Packages scope - аутентифицируйте Docker в GHCR
echo $AGENTEYE_TOKEN | docker login ghcr.io -u x --password-stdin

# Contents scope - загрузите исходный файл релиза
curl -fsSL \
  -H "Authorization: token $AGENTEYE_TOKEN" \
  https://raw.githubusercontent.com/agenteye-enterprise/releases/main/docker-compose.yml \
  -o /tmp/agenteye-compose-check.yml
```

Успешный `docker login` подтверждает область действия пакетов; загруженный файл подтверждает область действия содержимого.

***

## Устранение неполадок

| Симптом                                      | Вероятная причина                                                                             | Решение                                                                                                                                         |
| -------------------------------------------- | --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `docker login` возвращает 401                | Токену не хватает `Packages: Read-only` (детализированный) или `read:packages` (классический) | Добавьте область действия пакетов и заново сгенерируйте                                                                                         |
| `curl` возвращает 404 на исходные URL GitHub | Токену не хватает области действия `Contents: Read-only` или `repo`                           | Добавьте область действия содержимого и заново сгенерируйте                                                                                     |
| `gh release download` возвращает 403         | Токен не авторизован для `agenteye-enterprise/releases`                                       | Проверьте, что репозиторий включен в доступ репозитория детализированного токена, или используйте классический токен с областью действия `repo` |
| Токен принят, но образы не найдены           | На детализированном токене отсутствует разрешение пакета на уровне организации                | Добавьте разрешение на уровне организации `Packages: Read-only`                                                                                 |

По вопросам доступа обратитесь в `support@exosphere.host`.
