Apt Mirror¶
Siehe auch
- Verwandte Artikel
- Offizielle Dokumentation
man apt-mirror
apt-mirror spiegelt Debian- und Ubuntu-Paketquellen vollständig auf einen lokalen Server. Clients beziehen ihre Pakete anschliessend über einen Webserver vom Spiegel statt direkt aus dem Internet. Das spart Bandbreite und funktioniert auch in abgeschotteten Netzen ohne direkten Internetzugang.
Vorbereitung¶
apt-mirror zieht die konfigurierten Paketquellen komplett, das braucht entsprechend Platz. Je nach Suites und Architekturen kommen schnell mehrere zehn Gigabyte zusammen, grob 80 GiB für i386 und amd64 ohne Quellcode-Pakete. Darum gehört der Spiegel auf eine eigene Partition, gemountet auf den base_path.
Installation und Konfiguration¶
apt install apt-mirror
In /etc/apt/mirror.list stehen die zu spiegelnden Paketquellen, hier Debian 11 (bullseye), 12 (bookworm) und 13 (trixie). Ubuntu-Quellen funktionieren genauso.
Der base_path bestimmt, wo die Spiegel landen (Default /var/spool/apt-mirror). Auf diesen Pfad gehört die separate Partition gemountet. Achtung: Die von apt-mirror erstellten Verzeichnisse und Dateien müssen nach dem Mounten vorhanden sein.
############# config ##################
#
set base_path /data/nfs/mirror
#
# set mirror_path $base_path/mirror
# set skel_path $base_path/skel
# set var_path $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch <running host architecture>
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0
set nthreads 20
set _tilde 0
#
############# end config ##############
# --- Debian 11 (bullseye) ---
deb https://deb.debian.org/debian bullseye main
deb-src https://deb.debian.org/debian bullseye main
deb https://security.debian.org/debian-security bullseye-security main
deb-src https://security.debian.org/debian-security bullseye-security main
deb https://deb.debian.org/debian bullseye-updates main
deb-src https://deb.debian.org/debian bullseye-updates main
# Icinga Packages
deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/debian icinga-bullseye main
deb-src [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/debian icinga-bullseye main
# Linuxfabrik Monitoring-Plugins
deb [signed-by=/etc/apt/keyrings/linuxfabrik.asc] https://repo.linuxfabrik.ch/monitoring-plugins/debian/ bullseye-release main
# MongoDB (bullseye: max. 7.0)
deb http://repo.mongodb.org/apt/debian bullseye/mongodb-org/7.0 main
# PHP Packages
deb https://packages.sury.org/php/ bullseye main
# --- Debian 12 (bookworm) ---
deb https://deb.debian.org/debian bookworm main
deb-src https://deb.debian.org/debian bookworm main
deb https://security.debian.org/debian-security bookworm-security main
deb-src https://security.debian.org/debian-security bookworm-security main
deb https://deb.debian.org/debian bookworm-updates main
deb-src https://deb.debian.org/debian bookworm-updates main
deb https://deb.debian.org/debian bookworm-backports main
deb-src https://deb.debian.org/debian bookworm-backports main
# Icinga Packages
deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/debian icinga-bookworm main
deb-src [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/debian icinga-bookworm main
# Linuxfabrik Monitoring-Plugins
deb [signed-by=/etc/apt/keyrings/linuxfabrik.asc] https://repo.linuxfabrik.ch/monitoring-plugins/debian/ bookworm-release main
# MongoDB
deb http://repo.mongodb.org/apt/debian bookworm/mongodb-org/8.0 main
# PHP Packages
deb https://packages.sury.org/php/ bookworm main
# --- Debian 13 (trixie) ---
deb https://deb.debian.org/debian trixie main
deb-src https://deb.debian.org/debian trixie main
deb https://security.debian.org/debian-security trixie-security main
deb-src https://security.debian.org/debian-security trixie-security main
deb https://deb.debian.org/debian trixie-updates main
deb-src https://deb.debian.org/debian trixie-updates main
deb https://deb.debian.org/debian trixie-backports main
deb-src https://deb.debian.org/debian trixie-backports main
# Icinga Packages
deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/debian icinga-trixie main
deb-src [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/debian icinga-trixie main
# Linuxfabrik Monitoring-Plugins
deb [signed-by=/etc/apt/keyrings/linuxfabrik.asc] https://repo.linuxfabrik.ch/monitoring-plugins/debian/ trixie-release main
# MongoDB
deb http://repo.mongodb.org/apt/debian trixie/mongodb-org/8.0 main
# PHP Packages
deb https://packages.sury.org/php/ trixie main
# --- Generic ---
# Graylog
deb https://packages.graylog2.org/repo/debian/ stable 7.1
# InfluxDB
deb [signed-by=/etc/apt/keyrings/influxdata-archive.asc] https://repos.influxdata.com/debian stable main
# OpenSearch
deb https://artifacts.opensearch.org/releases/bundle/opensearch/3.x/apt stable main
# --- Clean instructions ---
# These remove all the files that were not newly downloaded, thereby cleaning up old files
# Note that you either have to call the cleanscript manually, or add run it via the postmirror_script
clean http://deb.debian.org/debian
clean http://repo.mongodb.org/apt/debian
clean https://artifacts.opensearch.org/releases/bundle/opensearch/3.x/apt
clean https://deb.debian.org/debian
clean https://deb.debian.org/debian/
clean https://packages.graylog2.org/repo/debian/
clean https://packages.icinga.com/debian
clean https://packages.sury.org/php/
clean https://repo.linuxfabrik.ch/monitoring-plugins/debian/
clean https://repos.influxdata.com/debian
clean https://security.debian.org/debian-security
Berechtigungen einmalig anpassen:
chgrp -R www-data /data/nfs/mirror
Und im postmirror.sh eintragen:
chgrp -R www-data /data/nfs/mirror
Synchronisieren¶
apt-mirror
Ein einzelnes Repo lässt sich nicht gezielt synchronisieren. Workaround: alle anderen Repos in der Config deaktivieren.
Das automatische Synchronisieren übernimmt ein Cronjob. Das Paket liefert dafür ein deaktiviertes /etc/cron.d/apt-mirror mit. Beispiel für einen Lauf jeden Sonntag um 1 Uhr:
0 1 * * sun root /usr/bin/apt-mirror > /data/nfs/mirror/var/cron.log
Paketquellen verfügbar machen¶
Um die Paketquellen im Netz verfügbar zu machen, wird ein Webserver benötigt, zum Beispiel Apache (siehe Apache httpd). Anschliessend wird ein Link zu den Paketquellen ins DocumentRoot des Webservers erstellt:
ln -s /data/nfs/mirror/mirror/deb.debian.org/debian /var/www/html/debian
Mit einer RewriteRule lassen sich die URLs kürzen:
RewriteRule ^/debian/(.*) /mirror/deb.debian.org/debian/$1 [passthrough]
RewriteRule ^/debian-security/(.*) /mirror/security.debian.org/debian-security/$1 [passthrough]
Auf dem Client¶
Zuletzt wird der Mirror-Server auf dem Client eingetragen:
deb http://<IP des Servers>/debian bookworm main