diff --git a/blog/2025/2025-04-03-explose-les-limites-du-docker-hub-TUTO-GitLab-CI.md b/blog/2025/2025-04-03-explose-les-limites-du-docker-hub-TUTO-GitLab-CI.md
new file mode 100644
index 0000000000000000000000000000000000000000..c8ba0918895a948868087e69af32f1d5fa448792
--- /dev/null
+++ b/blog/2025/2025-04-03-explose-les-limites-du-docker-hub-TUTO-GitLab-CI.md
@@ -0,0 +1,205 @@
+---
+title: "💥 Explose les limites du Docker Hub | TUTO GitLab CI"
+description: "Découvre comment contourner les limites du Docker Hub grâce à GitLab CI. Tuto vidéo complet, astuces runners, proxy et registry GitLab."
+date: "2025-04-03"
+authors: "cchaudier"
+slug: "explose-les-limites-du-docker-hub-TUTO-GitLab-CI"
+image: "2025/YT-explose-les-limites-du-docker-hub-TUTO-GitLab-CI-740.png"
+tags: 
+  - "Devops"
+  - "Tutotutoriels"
+  - "videos"
+  - "gitlab"
+  - "gitlab ci"
+  - "docker"
+sites: ["lydra.fr","compagnons-devops.fr","froggit.fr"]
+---
+
+Tu galères avec des jobs GitLab CI qui échouent à cause des limitations du Docker Hub ? Respire. Ce tuto vidéo + mon article t’expliquent 4 techniques concrètes pour optimiser tes pipelines GitLab CI et contourner les limites de pull Docker. Une ressource à garder sous le coude.
+
+<!-- truncate -->
+
+✋ Mais avant, si tu veux en savoir plus sur ces limitations, [j'ai fais un article et un podcast qui expliquent tout ici](/blog/les-limites-du-docker-hub-en-solo).
+
+## Ce que tu vas apprendre dans cet article
+
+Tu utilises GitLab CI et Docker pour ton intégration continue ? Alors tu as sûrement déjà vu ce message de rate limit du Docker Hub… Et c’est frustrant. Très frustrant même.
+
+Mais bonne nouvelle : il existe des solutions simples, propres, et efficaces pour **contourner ces limites**.
+
+Dans cet article, basé sur ma vidéo tuto, je te partage **4 techniques puissantes** pour que tes pipelines GitLab CI tournent comme une horloge.
+
+Tu trouveras [mon dépôt de code ici 🐸](https://lab.frogg.it/compagnons-devops/tutos/repousser-les-limites-du-docker-hub).
+
+Avant de lire l’article complet, je t’invite à **regarder la vidéo** si ce n’est pas encore fait. Ça rend tout bien plus clair, crois-moi.
+
+<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/dobmI-9uHDo?si=MiHuEkCqj3yQ8mxM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
+
+<FrgCommu/>
+
+## Authentifie tes jobs GitLab CI avec le Docker Hub
+
+### Pourquoi faire ?
+
+Le Docker Hub impose une limite pour les utilisateurs anonymes. Une fois cette limite atteinte, tes jobs échouent.  
+En authentifiant tes jobs CI avec un compte Docker, tu augmentes ta limite. C’est la première étape pour souffler un peu.
+
+### Comment faire ?
+
+1. Crée un token d’accès personnel sur le Docker Hub.
+2. Génère une chaîne d’authentification en base64 :
+   ```bash
+   echo -n "utilisateur:docker_personal_access_token" | openssl base64 -A
+   ```
+3. Formate cette chaîne dans une variable GitLab CI nommée `DOCKER_AUTH_CONFIG` :
+   ```json
+   {
+     "auths": {
+       "https://index.docker.io/v1/": {
+         "auth": "TOKEN_EN_BASE64"
+       }
+     }
+   }
+   ```
+4. Ajoute-la dans ton projet GitLab : `Settings > CI/CD > Variables`.
+
+Et voilà, ton pipeline est maintenant authentifié. Les pulls sont plus nombreux, et tes jobs ne plantent plus.
+
+[📙 Documentation de GitLab : utiliser une autentification sur un registre de conteneurs](https://docs.gitlab.com/ci/docker/using_docker_images/#use-statically-defined-credentials)
+
+## Authentifie tes runners GitLab
+
+Deuxième solution : tu ajoutes l’authentification **au niveau des runners**. C’est utile si tu auto-héberges tes runners.
+
+### Étapes à suivre
+
+1. Modifie le fichier `/etc/gitlab-runner/config.toml`.
+2. Ajoute la variable d’environnement `DOCKER_AUTH_CONFIG` dans la section `[[runners]]` :
+  ```toml
+  [[runners]]
+    name = "runner_name"
+    environment = ["DOCKER_AUTH_CONFIG={\"auths\":{\"https://index.docker.io/v1/\":{\"auth\":\"<TOKEN_EN_BASE64>\"}}}"]
+  ```
+3. Redémarre le runner pour prendre en compte la config.
+
+Cette méthode te donne plus de contrôle, surtout si tu veux éviter de dupliquer des tokens dans tous tes projets.
+
+[📙 Documentation de GitLab : utiliser une autentification sur un runner](https://docs.gitlab.com/ci/docker/using_docker_images/#configuring-a-runner)
+
+:::info
+[👕 DevOps addict ? 🔥 Montre-le avec swag !](https://bref.lydra.fr/cddgoodies)
+:::
+
+## Utilise le proxy de dépendance GitLab
+
+Troisième astuce : le **proxy de dépendance** intégré à GitLab.
+Il permet de mettre en cache les images Docker directement sur ta forge. Résultat ? Moins de pulls sur le Docker Hub, et un pipeline **plus rapide**.
+
+### Configuration simple
+
+1. Active le proxy au niveau du _namespace_ (groupe de premier niveau) dans GitLab : `Settings > Packages and registries > Dependency Proxy`.
+2. Dans ton `.gitlab-ci.yml`, change l’image en ajoutant `${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/`, comme ceci :
+  ```yaml
+  image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/alpine:3.21
+  ```
+
+Dès le premier pull, l’image est mise en cache.  
+Et les suivants utiliseront directement le proxy GitLab. Bluffant, non ?
+
+[🐸 Ma branche avec le code.](https://lab.frogg.it/compagnons-devops/tutos/repousser-les-limites-du-docker-hub/-/merge_requests/2)
+
+[📙 Documentation de GitLab : le proxy de dépendance de conteneurs](https://docs.gitlab.com/user/packages/dependency_proxy/)
+
+## Héberge tes images dans le registre de conteneur de GitLab
+
+Quatrième et dernière méthode : héberges **toi-même** tes images dans le registre de conteneurs GitLab.
+C’est la solution la plus robuste et la plus souveraine.
+
+### Comment ça marche ?
+
+1. Utilise l’outil `crane` pour copier les images depuis Docker Hub vers GitLab :
+  ```yaml
+    script:
+    - |
+      crane auth login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
+      while IFS= read -r image; do
+        if [ ! -z "${image}" ]; then
+          echo "📥 Download image: $image"
+          crane copy "${image}" "${CI_REGISTRY_IMAGE}/${image}"
+        fi
+      done < .gitlab/ci/images.txt
+  ```
+2. Gère tes images dans un fichier `.gitlab/ci/images.txt` pour automatiser la récupération.
+3. Utilise les pipelines planifiés pour les mettre à jour régulièrement.
+
+Plus de surprises, plus de dépendance externe.  
+Et tes pipelines tournent même quand Docker Hub tousse.
+
+[🐸 Ma branche avec le code.](https://lab.frogg.it/compagnons-devops/tutos/repousser-les-limites-du-docker-hub/-/merge_requests/1)
+
+[📙 Crane l'outil pour manipuler les images](https://github.com/google/go-containerregistry/blob/main/cmd/crane/doc/crane.md)
+
+:::tip
+Besoin d'aide pour gérer ta forge GitLab ou pour tout ce qui touche à GitLab-CI ?  
+[Contacte-nous](/contacts), nous avons forcément une prestation adaptée.
+:::
+
+## En résumé : 4 solutions pour repousser les limites
+
+Voici un petit récap rapide :
+- **Authentifier les jobs CI** : rapide à mettre en place, idéal pour commencer.
+- **Configurer les runners** : plus durable, surtout pour les infrastructures internes.
+- **Activer le proxy de dépendance** : gain de performance et réduction des pulls.
+- **Héberger les images dans GitLab** : solution souveraine et full GitLab.
+
+Tu peux même **combiner ces méthodes** pour optimiser au maximum tes pipelines.
+
+## FAQ : les questions qu’on me pose souvent
+
+**Est-ce que ça fonctionne avec [Froggit.fr](https://froggit.fr) ou GitLab.com ?**
+Oui, à condition d’avoir les droits pour ajouter des variables et activer les options.
+
+**Le proxy de dépendance est-il disponible dans toutes les éditions de GitLab ?**
+Oui, il est disponible dans toutes les versions, ainsi que sur les instances _self-hosted_ à partir de GitLab 14.0.
+
+**Est-ce que je peux utiliser une autre forge que Docker Hub ?**
+Absolument. Tu peux adapter ces méthodes pour n’importe quel registre de conteneurs (Quay.io, Harbor, etc.)
+
+## Et maintenant ?
+
+Si tu veux aller plus loin, pense à :
+- T’inscrire à ma **[newsletter Git & GitLab](https://bref.lydra.fr/frg-cdd-commu)**.
+- Rejoindre cette nouvelle **communauté** pour accéder à des astuces, anti-sèches et tutoriels exclusifs
+- [Me soutenir via un petit don 💙](https://soutenir.compagnons-devops.fr) pour continuer à produire ce contenu.
+
+Et surtout : **regarde la vidéo**, elle t’explique tout en détail et avec démos à la clé.  
+Tu vas voir, ça va tout changer pour ton GitLab CI.
+
+À très vite dans un prochain tuto !
+
+<CddSoutenir/>
+
+<Contenus/>
+
+<RdoEmissions/> 
+
+---  
+## Crédits
+
+- Christophe Chaudier : consultant indépendant au sein du collectif Lydra. Animateur du podcast de la communauté des Compagnons du DevOps. professeur vacataire à Télécom Saint-Étienne et au CFAI Loire. Découvre le : https://lydra.fr/ea-3-le-podcasteur-christophe | LinkedIn : https://www.linkedin.com/in/cchaudier | Froggit : https://froggit.fr/
+
+### Habillage sonore
+
+- L’intro et la fin sont de Baptiste Gaillet : FullStack développeur avec une tendance DevOps au Centre Scientifique et Technique du Bâtiment, Fondateur et développeur de l’application BedFoodCoffee pour aider les personnes en difficultés. Après des études dans le son et différents métiers, il a effectué une reconversion professionnelle en 2015 pour devenir développeur (Formation diplômante dans le cadre d’un CIF). LinkedIn : https://www.linkedin.com/in/baptiste-gaillet-223832b4 | Twitter : https://twitter.com/bat79a
+- La musique d’intro est “Tupac Lives” de John Bartmann : https://pixabay.com/fr/music
+- La musique de fin est “Passport” de Purple planet : https://www.purple-planet.com/passport
+
+### Habillage graphique
+
+[Image de Tali Despins](https://unsplash.com/fr/photos/un-homme-tenant-une-arme-a-feu-et-debout-devant-un-feu-DuwtKmVjG28)
+
+<Licence/>
+
+--- 
+
+<ProdLydra/>
diff --git a/blog/images/2025/YT-explose-les-limites-du-docker-hub-TUTO-GitLab-CI-740.png b/blog/images/2025/YT-explose-les-limites-du-docker-hub-TUTO-GitLab-CI-740.png
new file mode 100644
index 0000000000000000000000000000000000000000..5703f713f49a0b391ef611f38b5b5b72d370186f
Binary files /dev/null and b/blog/images/2025/YT-explose-les-limites-du-docker-hub-TUTO-GitLab-CI-740.png differ