[TIPP für Fortgeschrittene] Pakete übers Internet installieren, ohne Internet -> Apt-Cacher NG

  • Keine Robbis gehören nicht ins Internet!


    Mein Robbi ist sowohl über iptables, als auch über pi-hole und meiner Fritzbox von Internet gekappt (call me Mr. Paranoia).

    Ich experimentiere trotzdem gerne mit verschiedenen Paketen, die ich übers Internet auf den Robbi installiere. Wie mache ich das?


    Antwort ist Apt-Cacher NG

    https://www.unix-ag.uni-kl.de/~bloch/acng/


    Das Prinzip ist so einfach wie genial. Eine zentrale Instanz im Lokalen Netzwerk (Server / Raspberry Pi / you name it...) fängt Apt-Anfragen eines Linux-Systems ab, holt stellvertretend die Pakete aus dem Internet und stellt sie dann dem Client zur Verfügung (apt-proxy).


    Vorteil:

    Alle apt-basierende Linuxsysteme im gesamten Netzwerk können mit wenig Aufwand darauf zugreifen und neue Pakete installieren, selbst dann, wenn sie nicht ins Internet dürfen.

    Hat man Pakete einmal aus dem Internet geladen, müssen sie nicht erneut geladen werden, außer sie wurden aktualisiert. Das passiert aber völlig automatisch auf dem Server.

    Diese Lösung nutze ich sowohl für den Robbi, als auch für meine Debian/Ubuntu Clients im lokalen Netzwerk.


    Installation des Servers mit Docker:

    Falls Ihr eine NAS Euer Eigen nennt (z.B. Qnap, Synology), gibt es seit Längerem auch die Möglichkeit Docker-Images zu installieren.

    Die Systeme bieten eine GUI-gesteuerte Installation, in dem man lediglich das Paket suchen muss und dann installieren lässt.

    Z.B. sameersbn/apt-cacher-ng

    Die Installation ist wirklich easy. Selbst ich als DAU habe es hinbekommen.

    Details:

    https://hub.docker.com/r/sameersbn/apt-cacher-ng/


    Installation des Servers ohne Docker:

    Selbst ein Rapsberry Pi hat genug Leistung um diese Arbeit zu erledigen.

    Natürlich NICHT auf dem Roboter installieren, ist klar, oder? ;)

    Der Weg ist weit komplexer, aber der Vollständigkeitshalber

    Einfach mal googlen, hier ein Beispiel:

    https://www.tecmint.com/apt-cache-server-in-ubuntu/


    Konfiguration auf dem Client (z.B. unseren Robbi):

    1. Wir erstellen eine Datei namen 02proxy in dem wir eine neue Datei mit vi editieren

    Code
    1. vi /etc/apt/apt.conf.d/02proxy


    2. Dort tragen wir folgende Zeile ein:

    Code
    1. Acquire::http { Proxy "http://IP_ODER_HOSTNAME_DES_SERVERS:3142"; };


    Nun die Datei speichern und das war es auch schon.

    Wenn unser lokaler Server bereits läuft, werden ab sofort alle Paketinstallation darüber angefragt und nicht mehr direkt übers Internet.


    Et voilà, nun können wir uns austoben, ohne dass klein Robbi ins Internet darf.



    Viel Spaß damit

    MD






  • Klingt gut.


    Man kann Docker auch auf Raspberry installieren:

    https://maker-tutorials.com/do…an-debian-stretch-jessie/


    Hier wäre ein passendes Paket (apt-cacher ng) für armfh (Raspberry). Sieht Mega simple aus, habe ich aber selbst nicht getestet:

    https://hub.docker.com/r/reverie/armhf-apt-cacher-ng


    Problem ist leider, dass die meisten Docker-Images für x86 Plattformen gemacht sind und dann nicht auf Raspi laufen, aber das System erkennt eine Inkompatibilität. Die Anzahl der ARM-Packages steigt aber stetig.


    Code
    1. FATA[0000] The Docker runtime currently only supports amd64 (not arm). This will change in the future. Aborting.



    Viel Erfolg. Bin gespannt auf Deinen Bericht.

    Gruß

    MD

  • Konfiguration auf dem Client (z.B. unseren Robbi):

    1. Wir erstellen eine Datei namen 02proxy in dem wir eine neue Datei mit vi editieren

    Code
    1. vi /etc/apt/apt.conf.d/02proxy


    2. Dort tragen wir folgende Zeile ein:

    Code
    1. Acquire::http { Proxy "http://IP_ODER_HOSTNAME_DES_SERVERS:3142"; };


    Das geht auch ohne vi:


    Code
    1. echo 'Acquire::http { Proxy "http://IP_ODER_HOSTNAME_DES_SERVERS:3142"; };' > /etc/apt/apt.conf.d/02proxy


    Ansonsten tolle Idee und Beschreibung, das habe ich bei mir nun auch im Einsatz.

  • Hi,

    auf Anhieb würde ich sagen, dass es noch nicht läuft und der Robbi versucht an Deinen Server vorbei zu fragen und bekommt keine Meldung.

    Den Schritt hast Du ausgeführt? Tipp von atomphil , dann musst Du nicht mit vi herumbasteln. Neustart ist nicht nötig, müsste sofort gehen.

    Code
    1. echo 'Acquire::http { Proxy "http://IP_ODER_HOSTNAME_DES_SERVERS:3142"; };' > /etc/apt/apt.conf.d/02proxy

    Teste mal in dem Du folgendes tust

    Code
    1. root@rockrobo:~# nc DEINSERVER 3142
    2. root@rockrobo:~#                     <- Keine Verbindung, bekommst sofort den Prompt wieder
    3. root@rockrobo:~# nc DEINSERVER 3142
    4. *leer*                                <- Verbindung steht, nc wartet auf eine Meldung des Servers. Konfig passt, Server läuft, müsste gehen, musst mit strg+c abbrechen


    Die unteren Fehlermeldungen sind übrigens normal, wenns mal läuft