Configura repository locali con ‘apt-mirror’ nei sistemi Ubuntu e Debian

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?

Setup Local Repositories in Ubuntu

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

  1. Minimo 120G di spazio libero
  2. 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.

Ubuntu Archive Mirror

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

Select Mirror Location

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
Install apt-mirror Proftpd
ProFTPD Configuration

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
Configure apt-mirror Server.

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
Create apt-mirror Paths

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.

Verify apt-mirror Paths

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>
Configure ProFTPD

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/
Mount apt-mirror to ProFTP Path

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

$ mount
Verify Paths

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/
Auto Mount Apt Mirrors

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/
Debian Repository Setup

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
Daily apt-mirror Synchronization

Sulla riga finale aggiungere la seguente riga.

0  2  *  *  *  /usr/bin/apt-mirror >> /opt/apt-mirror/mirror/archive.ubuntu.com/ubuntu/apt-mirror.log
Add Cron Entry for Synchronization

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….
Configure Clients

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.

View Local Repositories

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/