agenteye-enterprise ; une fois l’accès accordé à votre organisation, chaque développeur ou opérateur génère et renouvelle son propre token, ce qui garantit un accès traçable et révocable par personne.
Définissez le token comme variable d’environnement et identifiant Docker une fois par machine :
Remarque sur le nom d’utilisateur : GHCR ignore le nom d’utilisateur fourni àdocker loginet s’authentifie entièrement depuis le token, donc n’importe quelle valeur non vide fonctionne. Cette documentation utilise-u xpar souci de concision ; les manifestes de déploiement qui créent un secret d’extraction d’image Kubernetes peuvent utiliser un nom d’utilisateur plus descriptif commeagenteye-enterprise. Les deux sont acceptés.
Option A : Token classique (recommandée)
Un token classique est le choix le plus fiable pour AgentEye, car le fluxdocker login et d’extraction d’image de GHCR offre le support le plus large et le plus cohérent pour les tokens classiques. Deux portées couvrent tout ce dont vous avez besoin (extraction d’images et téléchargement d’assets de version), vous vous authentifiez une seule fois et pouvez avancer sans avoir à résoudre des problèmes de registre. L’une d’elles, read:packages, est véritablement en lecture seule ; l’autre, repo, est la seule portée classique qui accorde l’accès aux assets de version privés, et elle est délibérément large — GitHub la définit comme le contrôle total (lecture et écriture) des dépôts privés.
1. Créer le token
Accédez à GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token (classic).| Champ | Valeur |
|---|---|
| Note | agenteye-<nom-machine-ou-équipe> (ex. : agenteye-prod-server) |
| Expiration | Définissez une expiration adaptée à votre politique de sécurité ; 90 jours est une valeur par défaut raisonnable |
Remarque sur l’étiquette : GitHub nomme ce champ Note pour les tokens classiques et Token name pour les tokens à portée fine. Ils ont le même objectif : un identifiant lisible par l’humain pour faciliter les audits et les révocations ultérieurs.
2. Sélectionner les portées
| Portée | Raison |
|---|---|
read:packages | Extraction des images Docker depuis ghcr.io/agenteye-enterprise/ et téléchargement des assets de packages |
repo | Lecture du contenu des dépôts privés, des fichiers bruts et des assets de version depuis agenteye-enterprise/releases. Il s’agit de la portée GitHub large intitulée « Full control of private repositories » (lecture et écriture), et non d’une portée en lecture seule — c’est simplement la seule portée classique qui accorde l’accès aux assets de version privés |
3. Générer et copier le token
Cliquez sur Generate token et copiez la valeur immédiatement ; elle n’est affichée qu’une seule fois. Stockez-la dans votre gestionnaire de secrets ou dans votre environnement.Option B : Token à portée fine
Les tokens à portée fine limitent l’accès à des dépôts et des permissions spécifiques, ce qui en fait l’option la plus stricte selon le principe du moindre privilège. Choisissez cette voie lorsque la politique de sécurité de votre organisation impose l’utilisation de tokens à portée fine.Remarque : Le support de GHCR pour les tokens à portée fine est moins cohérent que pour les tokens classiques. Sidocker loginoudocker pulléchoue après avoir suivi ces étapes, revenez à un token classique (Option A).
1. Créer le token
Accédez à GitHub → Settings → Developer settings → Personal access tokens → Fine-grained tokens → Generate new token.| Champ | Valeur |
|---|---|
| Token name | agenteye-<nom-machine-ou-équipe> (ex. : agenteye-prod-server) |
| Expiration | Définissez une expiration adaptée à votre politique de sécurité ; 90 jours est une valeur par défaut raisonnable |
| Resource owner | agenteye-enterprise |
| Repository access | Only select repositories → agenteye-enterprise/releases |
2. Définir les permissions du dépôt
Sous Permissions → Repository permissions, configurez :| Permission | Accès |
|---|---|
| Contents | Read-only |
| Packages | Read-only |
Remarque : Si les images de conteneur (ghcr.io/agenteye-enterprise/...) sont publiées en tant que packages au niveau de l’organisation plutôt que liés à un dépôt, la connexion Docker peut échouer avec des permissions limitées au dépôt. Dans ce cas, ajoutez une permission au niveau de l’organisation : Permissions → Organization permissions → Packages: Read-only.
3. Ce que chaque permission accorde
| Permission | Utilisée pour |
|---|---|
| Contents: Read-only | Téléchargement de docker-compose.yml, des binaires de version et des wheels Python depuis agenteye-enterprise/releases |
| Packages: Read-only | Extraction des images Docker depuis ghcr.io/agenteye-enterprise/ |
4. Générer et copier le token
Cliquez sur Generate token et copiez la valeur immédiatement ; elle n’est affichée qu’une seule fois. Stockez-la dans votre gestionnaire de secrets ou dans votre environnement.Renouvellement d’un token
Le renouvellement régulier des tokens maintient l’accès traçable et limite l’impact en cas de fuite d’un identifiant. Les tokens peuvent également expirer ou être révoqués à tout moment, ce qui fait du renouvellement la méthode courante pour rester authentifié. Pour renouveler :- Générez un nouveau token en suivant les étapes ci-dessus.
- Mettez à jour
AGENTEYE_TOKENdans votre environnement ou gestionnaire de secrets. - Ré-authentifiez Docker :
echo $AGENTEYE_TOKEN | docker login ghcr.io -u x --password-stdin - Révoquez l’ancien token dans GitHub → Settings → Developer settings → Personal access tokens, puis ouvrez la sous-page Tokens (classic) ou Fine-grained tokens correspondant au type du token et supprimez-le.
Vérifier votre token
Confirmez que le token fonctionne avant de l’intégrer dans un déploiement, afin que les échecs d’authentification apparaissent ici plutôt qu’en cours de déploiement. Chaque commande teste l’une des portées mentionnées ci-dessus :docker login réussi confirme la portée packages ; un fichier téléchargé confirme la portée contents.
Résolution des problèmes
| Symptôme | Cause probable | Correction |
|---|---|---|
docker login retourne 401 | Token sans Packages: Read-only (portée fine) ou read:packages (classique) | Ajoutez la portée packages et régénérez |
curl retourne 404 sur les URL GitHub brutes | Token sans Contents: Read-only ou portée repo | Ajoutez la portée contents et régénérez |
gh release download retourne 403 | Token non autorisé pour agenteye-enterprise/releases | Vérifiez que le dépôt est inclus dans l’accès aux dépôts du token à portée fine, ou utilisez un token classique avec la portée repo |
| Token accepté mais images introuvables | Permission de package au niveau de l’organisation manquante sur le token à portée fine | Ajoutez la permission Packages: Read-only au niveau de l’organisation |
support@exosphere.host.
