Apt-cacher

Veröffentlicht von Martin Gruber am

Zum Entlasten der Internetleitung an unserer Schule setzen wir die Software apt-cacher-ng ein. Diese läuft bei uns in einem LXC-Container am Proxmox.

Apt-cacher-ng bietet eine Zwischenspeicher (Cache) für Debian-basierte Computer im Netzwerk an und sorgt so dafür, dass Updates bzw. neue Pakete nicht von jedem Client einzeln aus dem Internet geladen werden müssen.

Da die Sammlung der Pakete mit der Zeit anwächst haben wir den Speicher auf unser NAS ausgelagert und binden den Zugriff darauf über die fstab ein.

Die Installation von apt-cacher kann einfach als root über die Kommandozeile erledigt werden:

apt install apt-cacher-ng

Die Konfiguration des apt-cachers kann dann in der Konfigurationsdatei /etc/apt-cacher-ng/acng.conf erledigt werden:

nano /etc/apt-cacher-ng/acng.conf

Hier kann dann z.B. angepasst werden, wo die gecachten Files abgelegt werden, auf welchem Port der apt-cacher-ng auf Verbindungen wartet (Standard: 3142), …

Nach der Konfiguration und Neustart des Services über

/etc/init.d/apt-cacher-ng restart

ist der apt-cacher auch schon einsatzbereit. Über http://IP-Adresse-des-Servers:3142/acng-report.html kann im Webbrowser auch eine Infoseite mit Statistiken angezeigt werden.

Die Clients müssen einmalig für die Nutzung des apt-cachers konfiguriert werden.

Für unsere schuleigenen Computer, die unter Ubuntu laufen, nutze ich dazu folgendes Installationsscript:

#!/bin/bash
ip=10.X.X.X
port=3142
proxy_file="/etc/apt/apt.conf.d/01proxy"
echo "Acquire::http { Proxy \"http://$ip:$port\"; };" > $proxy_file
echo 'Acquire::https { Proxy "false"; };' >> $proxy_file

Für die Lernsticks der Schüler ist das ganze ein bisschen angepasst, hier soll der apt-cacher ja nur eingestellt werden, wenn sie sich im Schulnetzwerk befinden und der apt-cacher erreichbar ist. Hier erfolgt die Installation in zwei Schritten:

#!/bin/bash
#Script: 02-proxy.sh
ip=10.X.X.X
port=3142
proxy_file="/etc/apt/apt.conf.d/01proxy"
if nc -zvv $ip $port 2>&1 | grep open; then
    echo "Acquire::http { Proxy \"http://$ip:$port\"; };" > proxy_file
else
    rm -f $proxy_file
fi

Obiges Script wird von folgenden Installationsscript so installiert, dass es im Falle einer Netzwerkverbindung automatisch ausgeführt wird.

#!/bin/bash
sudo mv 02-proxy.sh /etc/NetworkManager/dispatcher.d/
sudo chmod a+x /etc/NetworkManager/dispatcher.d/02-proxy.sh
sudo chown root /etc/NetworkManager/dispatcher.d/02-proxy.sh
sudo chgrp root /etc/NetworkManager/dispatcher.d/02-proxy.sh
echo "Installation abgeschlossen."
Kategorien: HowToSoftware

0 Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.