> ## 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.

# Thiết Lập Token GitHub

> Tài liệu thiết lập Token GitHub cho AgentEye.

Token Truy Cập Cá Nhân (PAT) của GitHub là thông tin xác thực duy nhất mở khóa mọi artifact của AgentEye. Với một token, bạn có thể kéo các Docker image, tải xuống các nhị phân bản phát hành và cài đặt các wheel Python mà không cần đăng nhập từng thành phần và không cần chia sẻ bí mật. Tất cả các artifact của AgentEye được phân phối từ tổ chức `agenteye-enterprise` trên GitHub; sau khi tổ chức của bạn được cấp quyền truy cập, mỗi nhà phát triển hoặc người vận hành tạo và xoay token của riêng họ, do đó quyền truy cập vẫn có thể kiểm toán và thu hồi được cho từng người.

Đặt token dưới dạng biến môi trường và thông tin xác thực Docker một lần trên mỗi máy:

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

> **Lưu ý về tên người dùng:** GHCR bỏ qua tên người dùng trong `docker login` và xác thực hoàn toàn từ token, do đó bất kỳ giá trị nào khác rỗng đều hoạt động. Tài liệu này sử dụng `-u x` để gọn gàng; các manifest triển khai tạo secret kéo image Kubernetes có thể sử dụng tên người dùng mô tả hơn như `agenteye-enterprise`. Cả hai đều được chấp nhận.

***

## Tùy Chọn A: Token Cổ Điển (Được Khuyến Nghị)

Token cổ điển là lựa chọn đáng tin cậy nhất cho AgentEye, vì luồng `docker login` và kéo image của GHCR có sự hỗ trợ rộng nhất và nhất quán nhất cho token cổ điển. Hai phạm vi bao gồm mọi thứ bạn cần (kéo image và tải xuống asset bản phát hành), do đó bạn xác thực một lần và tiếp tục mà không cần khắc phục sự cố registry. Một trong số đó, `read:packages`, là thực sự chỉ đọc; phạm vi kia, `repo`, là phạm vi cổ điển duy nhất cấp quyền truy cập vào asset bản phát hành riêng tư, và nó được thiết kế để rộng - GitHub định nghĩa nó là kiểm soát đầy đủ (đọc và ghi) của các kho riêng tư.

### 1. Tạo token

Đi tới **GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token (classic)**.

| Trường         | Giá Trị                                                                                  |
| -------------- | ---------------------------------------------------------------------------------------- |
| **Note**       | `agenteye-<machine-or-team-name>` (ví dụ: `agenteye-prod-server`)                        |
| **Expiration** | Đặt thời gian hết hạn phù hợp với chính sách bảo mật của bạn; 90 ngày là mặc định hợp lý |

> **Lưu ý về nhãn:** GitHub gọi trường này là **Note** cho token cổ điển và **Token name** cho token chi tiết. Chúng phục vụ cùng mục đích: một định danh có thể đọc được của con người để kiểm toán và thu hồi sau này.

### 2. Chọn phạm vi

| Phạm Vi         | Lý Do Cần Thiết                                                                                                                                                                                                                                                                                 |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `read:packages` | Kéo Docker image từ `ghcr.io/agenteye-enterprise/` và tải xuống asset gói                                                                                                                                                                                                                       |
| `repo`          | Đọc nội dung kho riêng tư, tệp thô và asset bản phát hành từ `agenteye-enterprise/releases`. Đây là phạm vi rộng Kiểm soát đầy đủ của kho riêng tư của GitHub (đọc và ghi), không phải phạm vi chỉ đọc — nó chỉ là phạm vi cổ điển duy nhất cấp quyền truy cập vào asset bản phát hành riêng tư |

Không cần phạm vi nào khác.

### 3. Tạo và sao chép token

Nhấp vào **Generate token** và sao chép giá trị ngay lập tức; nó chỉ được hiển thị một lần. Lưu trữ nó trong trình quản lý bí mật hoặc môi trường của bạn.

***

## Tùy Chọn B: Token Chi Tiết

Token chi tiết giới hạn quyền truy cập vào các kho cụ thể và quyền, khiến chúng trở thành tùy chọn ít quyền hạn nhất chặt chẽ nhất. Chọn con đường này khi chính sách bảo mật của tổ chức bạn yêu cầu token chi tiết.

> **Lưu ý:** Hỗ trợ GHCR cho token chi tiết ít nhất quán hơn cho token cổ điển. Nếu `docker login` hoặc `docker pull` không thành công sau khi làm theo các bước này, quay lại token cổ điển (Tùy Chọn A).

### 1. Tạo token

Đi tới **GitHub → Settings → Developer settings → Personal access tokens → Fine-grained tokens → Generate new token**.

| Trường                | Giá Trị                                                                                  |
| --------------------- | ---------------------------------------------------------------------------------------- |
| **Token name**        | `agenteye-<machine-or-team-name>` (ví dụ: `agenteye-prod-server`)                        |
| **Expiration**        | Đặt thời gian hết hạn phù hợp với chính sách bảo mật của bạn; 90 ngày là mặc định hợp lý |
| **Resource owner**    | `agenteye-enterprise`                                                                    |
| **Repository access** | **Only select repositories** → `agenteye-enterprise/releases`                            |

### 2. Đặt quyền kho

Dưới **Permissions → Repository permissions**, đặt:

| Quyền        | Truy Cập  |
| ------------ | --------- |
| **Contents** | Read-only |
| **Packages** | Read-only |

Tất cả các quyền khác có thể vẫn ở **No access**.

> **Lưu ý:** Nếu các container image (`ghcr.io/agenteye-enterprise/...`) được xuất bản dưới dạng gói cấp tổ chức thay vì gói được liên kết kho, đăng nhập Docker có thể không thành công chỉ với quyền được giới hạn kho. Trong trường hợp đó, hãy thêm quyền cấp tổ chức: **Permissions → Organization permissions → Packages: Read-only**.

### 3. Mỗi quyền cấp những gì

| Quyền               | Dùng Cho                                                                                                 |
| ------------------- | -------------------------------------------------------------------------------------------------------- |
| Contents: Read-only | Tải xuống `docker-compose.yml`, nhị phân bản phát hành và wheel Python từ `agenteye-enterprise/releases` |
| Packages: Read-only | Kéo Docker image từ `ghcr.io/agenteye-enterprise/`                                                       |

### 4. Tạo và sao chép token

Nhấp vào **Generate token** và sao chép giá trị ngay lập tức; nó chỉ được hiển thị một lần. Lưu trữ nó trong trình quản lý bí mật hoặc môi trường của bạn.

***

## Xoay Token

Xoay token theo lịch giữ cho quyền truy cập có thể kiểm toán và giới hạn bán kính tác động nếu thông tin xác thực bao giờ bị rò rỉ. Token cũng có thể hết hạn hoặc bị thu hồi bất kỳ lúc nào, do đó xoay là cách thông thường để vẫn được xác thực. Để xoay:

1. Tạo token mới bằng các bước ở trên.
2. Cập nhật `AGENTEYE_TOKEN` trong môi trường hoặc trình quản lý bí mật của bạn.
3. Xác thực lại Docker: `echo $AGENTEYE_TOKEN | docker login ghcr.io -u x --password-stdin`
4. Thu hồi token cũ trong GitHub → Settings → Developer settings → Personal access tokens, sau đó mở trang con **Tokens (classic)** hoặc **Fine-grained tokens** khớp với loại token của bạn và xóa nó.

***

## Xác Minh Token Của Bạn

Xác nhận token hoạt động trước khi kết nối nó vào triển khai, do đó những lỗi xác thực xuất hiện ở đây thay vì giữa cuộc triển khai. Mỗi lệnh sử dụng một trong các phạm vi ở trên:

```bash theme={null}
# Packages scope - authenticate Docker against GHCR
echo $AGENTEYE_TOKEN | docker login ghcr.io -u x --password-stdin

# Contents scope - fetch a raw release file
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` thành công xác nhận phạm vi gói; tệp đã tải xuống xác nhận phạm vi nội dung.

***

## Khắc Phục Sự Cố

| Triệu Chứng                                     | Nguyên Nhân Có Thể                                                          | Sửa Chữa                                                                                                             |
| ----------------------------------------------- | --------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| `docker login` trả về 401                       | Token thiếu `Packages: Read-only` (chi tiết) hoặc `read:packages` (cổ điển) | Thêm phạm vi gói và tạo lại                                                                                          |
| `curl` trả về 404 trên URL GitHub thô           | Token thiếu phạm vi `Contents: Read-only` hoặc `repo`                       | Thêm phạm vi nội dung và tạo lại                                                                                     |
| `gh release download` trả về 403                | Token không được phép cho `agenteye-enterprise/releases`                    | Xác minh kho được bao gồm trong quyền truy cập kho của token chi tiết, hoặc sử dụng token cổ điển với phạm vi `repo` |
| Token được chấp nhận nhưng không tìm thấy image | Quyền gói cấp tổ chức thiếu trên token chi tiết                             | Thêm quyền `Packages: Read-only` cấp tổ chức                                                                         |

Để khắc phục các vấn đề về quyền truy cập, hãy liên hệ với `support@exosphere.host`.
