Le temps faisant, je me porte de plus en plus vers des distributions Linux pour ce qui concerne mes ordinateurs et équipements connectés. J'en suis désormais à mon 6e Raspberry Pi en fonctionnement avec un OS Raspberry Pi OS (anciennement Raspbian) , mon portable est sur une variante d'Ubuntu, le portable de ma femme est sur Mint et mon ordinateur de travail est en dual-boot Windows / Pop Os.
Et qu'est ce qui n'a pas changé depuis tout ce temps? Ma connexion Internet! Et forcément, plus d'équipements signifie également plus de mises à jour à faire... et avec un débit toujours identique, des usages plus intensifs de mon internet, la partie "mises à jour" se fait toujours un peu plus dans la douleur (pour ma ligne) et dans la lenteur... Ce qui est bête, c'est qu'un package va être téléchargé 2, 3 ou même 6 fois, alors qu'avec un système de cache, il pourrait être sauvegardé une fois, puis mis à disposition de tous les autres clients qui souhaiteraient les obtenir, sans avoir à user une précieuse bande passante...
Et bien c'est exactement ce qu'est capable de faire apt-cacher-ng ! Et dans cet article, je vais vous parler de comment le mettre en place, et de comment le manager.
Dans mon cas, j'ai sélectionné un de mes raspberry qui contient déjà mon installation de PiHole et la BDD de Zabbix. Il tourne sur Raspberry Pi OS (base Debian, donc) et via une connexion SSH, s'installe via apt.
sudo apt update && sudo apt install apt-cacher-ng
La configuration initiale demande si l'on souhaite créer des tunnel HTTP, je n'ai pas eu besoin de l'activer dans mon cas.
Une fois installé, c'est le moment de configurer!
Déplacez vous dans /etc/apt-cacher-ng et modifiez le fichier acng.conf qui contient une grande partie de la configuration.
cd /etc/apt-cacher-ng/
sudo nano acng.conf
Plusieurs parties nous intéressent. Tout d'abord le répertoire de cache. C'est l'endroit où les paquets téléchargés seront stockés, et où votre serveur de cache ira lire lorsque vous lancerez des mises à jour. Par défaut, c'est du stockage interne, ce qui peut être contraignant pour un Raspberry qui écrit bien souvent sur une SD assez fragile. Nous allons donc modifier ça et renseigner un espace sur un point de montage distant (dans ce cas, mon nas) afin d'économiser encore un peu plus la SD. A noter que le répertoire doit déjà exister ET être accessible pour l'utilisateur apt-cacher-ng qui a été créé à l'installation..
CacheDir: /mnt/nas/apt-cacher-ng
Un port est ensuite à définir (par défaut 3142). À ajuster selon vos besoins, il vous permettra de servir les clients et d'accéder à l'interface web de gestion fournie avec le package.
Port: 3142
Pour minimiser l'impact du logging, j'ai également réduit au maximum la verbosité :
VerboseLog: 0
On valide la configuration avec un petit :
sudo systemctl restart apt-cacher-ng
Et on s'assure que la page web fonctionne bien en mettant dans notre navigateur favori l'adresse IP de notre serveur apt-cacher-ng suivi du port.
Et maintenant? Et bien on s'occupe des clients!
Pour l'ensemble de mes postes clients, j'ai poussé une configuration dans apt. Dans le répertoire qui va bien (normalement /etc/apt/apt.conf.d), créez ou modifiez le fichier d'informations de proxy.
sudo nano 02proxy
Et une fois dedans, on va ajouter cette ligne (en prenant bien le point virgule final... et en remplaçant l'adresse ip par celle de votre serveur de cache... et le port par celui que vous avez mis aussi, hein...)
Acquire::http::Proxy "http://192.168.30.152:3142";
Une fois le fichier enregistré, faites un bon vieux :
sudo apt update && sudo apt dist-upgrade
Et... MIRACLE!!! ... Rien ne se passe de différent!
Bah oui, puisque là, vous venez de télécharger des fichiers qui ne sont pas encore sur le serveur de cache... Donc il les a téléchargé comme d'accoutumée! Mais si vous allez faire la même chose sur un autre client (en incluant la partie de configuration du proxy apt), et que vous faites un apt update & dist-upgrade, vous verrez que les téléchargements des packages mis en cache se fera avec la vitesse de votre LAN.
Et dans la capture d'écran plus haut, issue d'une seule passe de mise à jour sur 3 de mes équipements, j'ai téléchargé 100 Mo, et fourni en local 145. Ce qui fait déjà une bonne économie de bande passante.
Pour les quelques repository qui sont accessibles en HTTPS, j'ai bien un problème... Comme le client va se connecter en https, qu'aucun certificat n'est disponible et / ou que le certificat ne correspondra pas avec le serveur qu'il questionne, il va vous refuser les mises à jour.
Dans mon cas, j'ai ajouté une ligne de configuration dans le acng.conf du serveur de cache pour qu'il laisse circuler les requêtes en https :
PassThroughPattern: ^(.*):443$
Là encore, un petit systemctl restart pour apt-cacher-ng et roulez jeunesse!
En espérant que cet article vous aura été utile.