Quando oggi il traffico e le velocità casuali di Internet vengono misurati in decine di Giga in un battito di ciglia anche per i clienti Internet ordinari, potresti chiederti qual è lo scopo di impostare una cache del repository locale sulla LAN?

Una delle ragioni è ridurre la larghezza di banda Internet e l’alta velocità nell’estrazione dei pacchetti dalla cache locale. Ma anche un’altra ragione importante dovrebbe essere la privacy. Immagina che i clienti della tua organizzazione siano limitati su Internet, ma i loro computer Linux abbiano bisogno di aggiornamenti di sistema regolari su software e sicurezza o abbiano solo bisogno di nuovi pacchetti software. Per andare oltre, immagina un server che funziona su una rete privata, contiene e fornisce informazioni sensibili segrete solo per un segmento di rete limitato e non dovrebbe mai essere esposto a Internet pubblico.
Questi sono solo alcuni motivi per cui dovresti creare uno specchio del repository locale sulla tua LAN, delegare un server di bordo per questo lavoro e configurare i client interni per estrarre software dalla sua cache speculare.
Ubuntu fornisce il pacchetto apt-mirror per sincronizzare la cache locale con i repository ufficiali di Ubuntu, uno specchio che può essere configurato tramite un server HTTP o FTP per condividere i suoi pacchetti software con i client di sistema locali.
Per una cache speculare completa il tuo server ha bisogno di almeno 120G di spazio libero riservato per i repository locali.
Requisiti
- Minimo 120G di spazio libero
- Server Proftpd installato e configurato in modalità anonima.
Passaggio 1: Configurare il Server
1. La prima cosa che potresti voler fare è identificare i mirror di Ubuntu più vicini e veloci alla tua posizione visitando la pagina Ubuntu Archive Mirror e selezionare il tuo paese.

Se il tuo paese fornisce più mirror, dovresti identificare l’indirizzo del mirror e fare alcuni test basati sui risultati di ping o traceroute.

2. Il passo successivo è installare il software richiesto per configurare il repository del mirror locale. Installa i pacchetti apt-mirror e proftpd e configura proftpd come demone di sistema autonomo.
$ sudo apt-get install apt-mirror proftpd-basic


3. Ora è il momento di configurare il server apt-mirror. Apri e modifica il file /etc/apt/mirror.list aggiungendo le tue posizioni più vicine (Passo 1) – facoltativo, se i mirror predefiniti sono abbastanza veloci o se non hai fretta – e scegli il percorso di sistema in cui devono essere scaricati i pacchetti. Per impostazione predefinita, apt-mirror utilizza la posizione /var/spool/apt-mirror per la cache locale, ma in questo tutorial cambieremo il percorso di sistema e indicheremo la direttiva set base_path alla posizione /opt/apt-mirror.
$ sudo nano /etc/apt/mirror.list

Puoi anche decommentare o aggiungere altre liste di sorgenti prima della direttiva clean – inclusi i sorgenti Debian – a seconda delle versioni di Ubuntu utilizzate dai tuoi clienti. Puoi aggiungere sorgenti da 12.04, se lo desideri, ma sii consapevole che l’aggiunta di più sorgenti richiede più spazio libero.
Per le liste sorgenti di Debian visita il Debian Wiki o il Generatore di Liste di Sorgenti Debian.
4. Tutto ciò che devi fare ora è creare la directory del percorso e eseguire il comando apt-mirror per sincronizzare i repository ufficiali di Ubuntu con il nostro mirror locale.
$ sudo mkdir -p /opt/apt-mirror $ sudo apt-mirror

Come puoi vedere, apt-mirror procede con l’indicizzazione e il download degli archivi presentando il numero totale di pacchetti scaricati e le loro dimensioni. Come possiamo immaginare, 110-120 GB è abbastanza grande da richiedere del tempo per il download.
Puoi eseguire il comando ls per visualizzare il contenuto della directory.

Una volta completato il download iniziale, i download futuri saranno di dimensioni ridotte.
5. Mentre apt-mirror scarica i pacchetti, puoi configurare il tuo server Proftpd. La prima cosa da fare è creare un file di configurazione anonimo per proftpd eseguendo il seguente comando.
$ sudo nano /etc/proftpd/conf.d/anonymous.conf
Poi aggiungi il seguente contenuto al file anonymous.conf e riavvia il servizio proftpd.
<Anonymous ~ftp> User ftp Group nogroup UserAlias anonymous ftp RequireValidShell off # MaxClients 10 <Directory *> <Limit WRITE> DenyAll </Limit> </Directory> </Anonymous>

6. Il passo successivo è collegare il percorso di apt-mirror al percorso di proftpd eseguendo un bind mount emettendo il comando.
$ sudo mount --bind /opt/apt-mirror/mirror/archive.ubuntu.com/ /srv/ftp/

Per verificarlo, esegui il comando mount senza parametri o opzioni.
$ mount

7. L’ultimo passo è assicurarsi che il server Proftpd venga avviato automaticamente dopo il riavvio del sistema e che la directory mirror-cache venga montata automaticamente sul percorso del server ftp. Per abilitare automaticamente proftpd, eseguire il seguente comando.
$ sudo update-rc.d proftpd enable
Per montare automaticamente la cache di apt-mirror su proftpd, aprire e modificare il file /etc/rc.local.
$ sudo nano /etc/rc.local
Aggiungere la seguente riga prima della direttiva exit 0. Utilizzare anche un ritardo di 5 secondi prima di tentare il montaggio.
sleep 5 sudo mount --bind /opt/apt-mirror/mirror/archive.ubuntu.com/ /srv/ftp/

Se si scaricano pacchetti dai repository Debian, eseguire i seguenti comandi e assicurarsi che le impostazioni appropriate per il file rc.local siano abilitate.
$ sudo mkdir /srv/ftp/debian $ sudo mount --bind /opt/apt-mirror/mirror/ftp.us.debian.org/debian/ /srv/ftp/debian/

8. Per una sincronizzazione giornaliera di apt-mirror, è possibile creare un lavoro di pianificazione di sistema per eseguire alle 2 del mattino ogni giorno. Eseguire il comando crontab, selezionare l’editor preferito e aggiungere la seguente sintassi.
$ sudo crontab –e

Sulla riga finale aggiungere la seguente riga.
0 2 * * * /usr/bin/apt-mirror >> /opt/apt-mirror/mirror/archive.ubuntu.com/ubuntu/apt-mirror.log

Ora ogni giorno alle 2 del mattino la cache del repository del sistema si sincronizzerà con i mirror ufficiali di Ubuntu e creerà un file di log.
Passo 2: Configurare i client
9. Per configurare i client locali di Ubuntu, modificare il file /etc/apt/source.list sui computer client per puntare all’indirizzo IP o all’hostname del server apt-mirror – sostituire il protocollo http con ftp, quindi aggiornare il sistema.
deb ftp://192.168.1.13/ubuntu trusty universe deb ftp://192.168.1.13/ubuntu trusty main restricted deb ftp://192.168.1.13/ubuntu trusty-updates main restricted ## Ad so on….

10. Per visualizzare i repository è possibile aprire effettivamente un browser e puntare all’indirizzo IP del server o al nome di dominio utilizzando il protocollo FTP.

Lo stesso sistema si applica anche ai client e server Debian, l’unica modifica necessaria sono il mirror di Debian e il file di configurazione delle sorgenti.
Inoltre, se installi un sistema Ubuntu o Debian da zero, fornisci manualmente il tuo mirror locale con il protocollo ftp quando l’installatore chiede quale repository utilizzare.
La cosa fantastica di avere i tuoi repository locali è che sei sempre aggiornato e i tuoi client locali non devono connettersi a Internet per installare aggiornamenti o software.
Source:
https://www.tecmint.com/setup-local-repositories-in-ubuntu/