Installation eines lokalen Raspberry Pi Spiegelservers

Einen lokalen Spiegelserver aufzusetzen, der die eigenen Maschinen mit Updates versorgt, macht für die wenigsten User (speziell im privaten Bereich) wirklich Sinn. Da manche Raspberry Pi freudige Haushalte jedoch gerne mal mit 2, 3, 4 oder noch mehr dieser Geräte ausgestattet sind, kann es da schon durchaus Sinn machen. Dieser Beitrag soll als kleiner Leitfaden dienen, um sich einen solchen Update-Server selber zu basteln.

Vorbereitung des Servers

Beginnen wir mit der Einrichtung eines Servers. In diesem Beispiel wird ein Ubuntu-Server Pate stehen. Ein bereits vorhandener kann natürlich genauso gut verwendet werden. Wichtig ist jedenfalls, dass die Festplatte über genügend Kapazitäten verfügt, da die heruntergeladenen Updates sehr groß sind. Plant pro Raspberry Version einen Speicherbedarf von etwa 170 GB aufwärts ein und das nur für die Updates.
Ferner ist es wichtig, dem Server eine statische IP-Adresse zu verpassen, da diese als Zieladresse für die Raspberrys definiert wird. Macht das mit der Netzwerkkonfigurations-Dienst oder dem Router (Stichwort: ‘always assign the same ip-address’) eures Vertrauens aus.
Die Schritte der Serverinstallation erspare ich mir an dieser Stelle. Dazu gibt es genügend und bestens dokumentierte How-Tos überall im Internet verstreut.

Installation der erforderlichen Dienste

Bevor die gewünschten Updates vom Internet auf unsere heimische Maschine wandern, sollten wir ihnen vorab ein gemütliches Plätzchen bereiten. In einem Apache2 Webserver fühlen sie sich am wohlsten, ein lighttpd oder auch ein nginx würden aber ebenso ihren Dienst verrichten. Falls noch nicht vorhanden, installiert den Apache mit …

sudo apt install -y apache2

Damit der Webserver auch mit jedem Systemstart zur Verfügung steht, binden wir ihn in den Autostart ein:

sudo systemctl enable apache2

Das Standard Dokumenten-Root Verzeichnis von Apache2, also der Ordner, in dem sich die zur Verfügung stehenden HTML-Seiten befinden, liegt unter /var/www/html/. In diesen erstellen wir uns einen weiteren Ordner, nämlich’ apt-mirror’:

mkdir -p /var/www/html/apt-mirror

Anschließend geben wir dem neu angelegten Benutzer ‘apt-mirror’ (seines zeichens Chef der Spiegelserver Downloads) noch die Hoheit über diesen Ordner.

sudo chown -R apt-mirror:apt-mirror /var/www/html/apt-mirror

Nun wird der entscheidende Dienst installiert, der sich die gewünschten Updates krallt und lokal ablegt, nämlich ‘apt-mirror’:

sudo apt install apt-mirror

So gewissenhaft wie wir sind, speichern wir uns nach erfolgter Installation erst einmal die Hauptkonfigurationsdatei weg und werfen anschließend einen Blick hinein in das Original:

sudo cp /etc/apt/mirror.list /etc/apt/mirror.list_BACKUP
sudo nano /etc/apt/mirror.list

Dort in einer der ersten Zeilen kommentieren wir folgende Zeile ein und ändern zudem den Download-Ordner:

set base_path   /var/www/html/apt-mirror
set nthreads    5

set base_path = Wirft euch die heruntergeladenen Dateien in den angegebenen Pfad
set nthreads = Limitiert die Anzahl paralleler Download auf 5

Bei Bedarf kann zudem die maximale Bandbreiten-Auslastung durch über den Parameter ‘set limit_rate’ gesteuert werden. Würdet ihr dort beispielsweise die Zahl ‘1000’ eintragen, ergäbe sich höchstens eine Download-Geschwindigkeit von 5 (Threads) * 1000 (Kb/s) = 5000Kb/s. Variiert diesen Wert einfach nach belieben, sodass er euch nicht das gesamte Netz belegt. Möchtet ihr noch einen Proxy definieren, könnt ihr dies ebenfalls tun. ‘set use_proxy’, ‘set http_proxy’, ‘set https_proxy’, ‘set proxy_user’ und ‘set proxy_password’ wären die Zauberwörter.
Zum Schluß geben wir noch die Pakete an, die wir uns herunterladen möchten. Als Download-Ziel dienen hier die offiziellen Raspberry OS Quellen für die neueste Version bullseye an. Außerdem lassen wir das Verzeichnis nach jedem Download-Vorgang von obsoleten Paketen bereinigen, indem wir das ‘clean’-Kommando auf das Verzeichnis ansetzen:

deb-armhf http://archive.raspbian.org/raspbian bullseye main contrib non-free rpi
deb-src http://archive.raspbian.org/raspbian bullseye main contrib non-free rpi

clean http://archive.raspbian.org/raspbian

Dieses postmirror.sh-Skript kopieren wir auch direkt an Ort und Stelle:

cp /var/spool/apt-mirror/var/postmirror.sh /var/www/html/apt-mirror/var/

Kommentiert gleichzeitig alle anderen vorhandenen Quellen aus. Das ganze sollte schlußendlich in etwa so aussehen:

Speichert die Datei ab und schließt sie.
Nun können wir mit dem Download der Pakete beginnen. Also melden wir uns als ‘apt-mirror’-Benutzer an und starten den Prozess:

sudo su - apt-mirror
/bin/bash -l
apt-mirror

Macht es euch schonmal gemütlich, um die 160GB wollen heruntergeladen werden.
Bis der Download abgeschlossen ist (und das kann je nach Bandbreite echt lange dauern) bereiten wir unseren Raspberry Pi schonmal für den neuen Update-Server vor.

Vorbereitung des Clients

Loggen wir uns nun also auf den Pi ein und leiten sämtliche Anfragen der Paketquellen auf unseren neuen Server um:

sudo cp /etc/apt/sources.list /etc/apt/sources.list_BACKUP
sudo nano /etc/apt/sources.list

In der Datei kommentieren wir sämtliche Einträge aus und fügen folgende neue Zeile ein:

deb [arch=armhf] http://192.168.1.13/apt-mirror/mirror/archive.raspbian.org/raspbian/ bullseye main contrib non-free rpi

Hinweis: Mein Server hat hier die IP-Adresse ‘192.168.1.13’. Ändert diese bitte entsprechend der IP eures Servers mit dem ihr die Updates herunterladet!

Ist der Download auf unserem Server abgeschlossen, können wir in der Kommandozeile die Kontaktierung zum neuen Server überprüfen:

sudo apt update

Im Idealfall sollten die neuen Paketquellen direkt korrekt aufgelöst werden:

Automatische Paketaktualisierung

Wir haben nun also einen funktionierenden Repository-Server, mit einer schwindelerregend hohen Anzahl an Paketen, Anwendungen und Libraries aufgesetzt. Doch unser heruntergeladenes Sammelsurium hat leider die Angewohnheit, ständig aktualisiert zu werden. Darum sollten wir uns nun noch um den regelmäßigen Download der neuesten Paketversionen kümmern. Welches Mittel böte sich da besser an als ein Cronjob?!
Richten wir also einen solchen ein. Startet den Cronjob-Editor …

crontab -e

… und fügt folgenden Eintrag hinzu:

0 3 * * * apt-mirror /usr/bin/apt-mirror

Dieser Cronjob startet täglich 3 Uhr morgens die ‘apt-mirror’-Anwendung, ausgeführt durch den ‘apt-mirror’ User. Möglicherweise befindet sich eure apt-mirror-Anwendung in einem anderen Verzeichnis. Überprüft dies einfach mit folgendem Befehl …

which apt-mirror

… und ändert bei Bedarf den Pfad entsprechend.
Damit hätten wir sämtliche Installationen und Einrichtungen für einen eigenen Raspberry Pi Spiegelserver abgeschlossen, inklusive regelmäßiger Aktualisierung der Paketquellen. Zumindest für die Version ‘bullseye’. Solltet ihr auf den Geschmack kommen, können noch weitere Versionen hinzugefügt oder ersetzt werden. Auch können andere Distributionen hinzugefügt und verfügbar gemacht werden.

Kommentar verfassen

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

Nach oben scrollen