Présentation et usages de apt-cacher-ng

Depuis mon déménagement j’ai un débit ridicule de 1M sur ma ligne ADSL… je pleure des larmes de sang. Télécharger 100 Mo devient une épreuve, une attente. Il se trouve qu’actuellement j’ai 1 Debian (server@home), 2 Xubuntu (PC portable et PC fixe) et un autre très vieux portable dont je vais me servir pour des tests (qui finira sur Xubuntu ou Debian je n’ai pas encore décidé). Et puis je suis susceptible de faire des tests avec des VM ou des conteneurs Docker.

Ça fait beaucoup de paquets à mettre à jour et à installer, beaucoup de téléchargements. J’ai décidé d’y apporter une réponse afin de gagner du temps dans la mise à jour des postes et économiser de la bande passante. Il doit bien y avoir une solution pour télécharger une seule fois un paquet puis que ce paquet soit fourni depuis un cache local si il est demandé par un autre poste ?

Je connaissais aptly, j’ai trouvé apt-proxy (So 90’s !), reprepro. Aucune solution ne me convenait, je voulais un truc simple (pas créer un dépôt de paquets et gérer la sécurité dessus…), encore développé (apt-proxy…), gérant les paquets Debian et Ubuntu (ainsi que tous les dérivés comme Mint, Xubuntu, etc. cela va de soi). J’ai trouvé apt-cacher-ng disponible sous Ubuntu (dans universe) et Debian.

Je vais maintenant vous vendre du rêve (pardon des tapis et des aspirateurs) :

  • Le serveur s’installe en 3mn, VRAIMENT. La configuration des postes clients est très simple, 3 mn pour chacun. Ou plus rapidement avec Ansible ;)
  • C’est maintenu/développé par un développeur Debian, apt-cacher-ng gère les distributions Ubuntu et Debian
  • Le fonctionnement est simple, apt-cacher-ng fonctionne comme un proxy. La première fois qu’un paquet va être téléchargé il va être mis dans un cache local sur le serveur. La prochaine fois qu’un poste client voudra ce paquet, il sera fourni par apt-cacher-ng, il ne sera pas retéléchargé sur le net donc économie de bande passante et il sera fourni au poste client à la vitesse du réseau local. Concrètement tes 100 Mo de paquets tu les as en 3 secondes sur ton poste client si ils sont dans le cache de apt-cacher-ng
  • On oublie toutes les bonnes idées super lourdes d’héberger un dépôt local de Debian ou Ubuntu. Le paquet est téléchargé la première fois, mis en cache et servi aux autres postes qui le demandent ensuite. C’est simple et ça évite de télécharger XX Go des dépôts Ubuntu/Debian pour utiliser 2% des paquets

Et c’est quoi le monstre caché sous le tapis ?

  • Quand ton serveur apt-cacher-ng est down, tes postes clients ne peuvent plus télécharger leurs mises à jour et installer des paquets vu qu’ils passent par lui qui fait proxy. Mais on a résolu ce problème dans le billet précédent ;)
  • Évidemment si les paquets sont stockés en local, ça prend de la place sur le serveur apt-cacher-ng mais rien de transcendant et des outils sont fournis pour purger
  • Une certaine rigueur est recommandée dans les sources.list. Plus ils sont semblables entre les postes clients et moins vous aurez de stockage de paquets inutiles sur apt-cacher-ng. En effet si vous avez deb http://httpredir.debian.org/debian jessie main sur un poste et deb http://ftp.fr.debian.org/debian jessie main sur un autre poste et que vous installez le même paquet sur ces deux postes alors il y aura deux téléchargements. En effet apt-cacher-ng va créer un cache pour chaque repository différent. Si vous avez deb http://httpredir.debian.org/debian jessie main sur les deux postes alors vous n’aurez à faire qu’un seul téléchargement

Cas d’usages :

  • Dès que vous avez 2 postes sur la même distribution (Ubuntu ou Debian) et un débit limité, c’est intéressant
  • Normalement dans le cas de serveurs (j’entends par là toujours allumés) c’est pas nécessairement utile car avec cron-apt vous téléchargez vos mises à jour à 3h du mat et ça dérange personne. Ça peut avoir un intérêt pour les installations de paquets par contre
  • Vous gérez une école (coucou Cyrille !) avec 10/20/30 postes qui sont éteints en théorie la majorité du temps. C’est très pertinent pour les mises à jour et éviter de faire tomber le débit internet
  • Vous gérez un parc sous Ubuntu ou Debian avec des pc fixes et des portables, c’est simple, rapide, pertinent
  • Personnellement je m’en sers à la maison comme expliqué. Pour des tests au boulot : Labos (VM, conteneurs), tests de restauration et de mises à jour de version de PHP/MySQL (souvent autour de LAMP), réinstallation et installation de serveurs. On se rend compte avec le recul que le plus long lors d’une (ré)installation d’un serveur c’est le téléchargement des paquets, autant diminuer au maximum ce temps d’attente

Qui veut un beau tapis ?! Un aspirateur gratuit pour toute commande ! Et en bonus le prochain article sur l’Installation et la configuration de apt-cacher-ng !

Les commentaires sont fermés.