Cuando el tráfico de hoy y las velocidades casuales de Internet se miden en decenas de gigabytes en un parpadeo de ojos incluso para los clientes de Internet ordinarios, ¿cuál es el propósito de configurar una caché de repositorio local en las redes LAN, podrías preguntar?

Una de las razones es reducir el ancho de banda de Internet y la alta velocidad al extraer paquetes de la caché local. Pero, además, otra razón importante debería ser la privacidad. Imaginemos que los clientes de tu organización tienen restricciones de Internet, pero sus equipos Linux necesitan actualizaciones regulares del sistema en software y seguridad, o simplemente necesitan nuevos paquetes de software. Yendo más allá, imagina un servidor que se ejecuta en una red privada, que contiene y sirve información sensible secreta solo para un segmento de red restringido, y nunca debería estar expuesto a Internet público.
Estas son solo algunas razones por las que deberías construir un espejo de repositorio local en tu LAN, delegar un servidor perimetral para este trabajo y configurar clientes internos para extraer software de su espejo de caché.
Ubuntu proporciona el paquete apt-mirror para sincronizar la caché local con los repositorios oficiales de Ubuntu, un espejo que puede configurarse a través de un servidor HTTP o FTP para compartir sus paquetes de software con los clientes del sistema local.
Para un espejo de caché completo, tu servidor necesita al menos 120G de espacio libre reservado para los repositorios locales.
Requisitos
- Mínimo 120G de espacio libre
- Servidor Proftpd instalado y configurado en modo anónimo.
Paso 1: Configurar el Servidor
1. Lo primero que debes hacer es identificar los espejos de Ubuntu más cercanos y rápidos a tu ubicación visitando la página de Espejo de Archivos de Ubuntu y seleccionando tu país.

Si tu país ofrece más espejos, debes identificar la dirección del espejo y realizar algunas pruebas basadas en los resultados de ping o traceroute.

2. El siguiente paso es instalar el software necesario para configurar un repositorio de espejo local. Instala los paquetes apt-mirror y proftpd y configura proftpd como un demonio de sistema independiente.
$ sudo apt-get install apt-mirror proftpd-basic


3. Ahora es el momento de configurar el servidor apt-mirror. Abre y edita el archivo /etc/apt/mirror.list añadiendo tus ubicaciones más cercanas (Paso 1) – opcional, si los espejos predeterminados son lo suficientemente rápidos o no tienes prisa – y elige la ruta del sistema donde se deben descargar los paquetes. Por defecto, apt-mirror utiliza la ubicación /var/spool/apt-mirror para la caché local, pero en este tutorial vamos a cambiar la ruta del sistema y apuntar la directiva set base_path a la ubicación /opt/apt-mirror.
$ sudo nano /etc/apt/mirror.list

También puedes descomentar o añadir otras listas de fuentes antes de la directiva clean, incluyendo fuentes de Debian, dependiendo de las versiones de Ubuntu que utilicen tus clientes. Puedes añadir fuentes desde 12.04, si lo deseas, pero ten en cuenta que añadir más fuentes requiere más espacio libre.
Para listas de origen de Debian visita Debian Wiki o Generador de Lista de Orígenes de Debian.
4. Todo lo que necesitas hacer ahora es crear el directorio de ruta y ejecutar el comando apt-mirror para sincronizar los repositorios oficiales de Ubuntu con nuestro espejo local.
$ sudo mkdir -p /opt/apt-mirror $ sudo apt-mirror

Como puedes ver, apt-mirror procede con la indexación y descarga de archivos, mostrando el número total de paquetes descargados y su tamaño. Como podemos imaginar, 110-120 GB es lo suficientemente grande como para tomar algo de tiempo en descargar.
Puedes ejecutar el comando ls para ver el contenido del directorio.

Una vez que se complete la descarga inicial, las descargas futuras serán pequeñas.
5. Mientras apt-mirror descarga paquetes, puedes configurar tu servidor Proftpd. Lo primero que necesitas hacer es crear un archivo de configuración anónimo para proftpd ejecutando el siguiente comando.
$ sudo nano /etc/proftpd/conf.d/anonymous.conf
Luego agrega el siguiente contenido al archivo anonymous.conf y reinicia el servicio de proftpd.
<Anonymous ~ftp> User ftp Group nogroup UserAlias anonymous ftp RequireValidShell off # MaxClients 10 <Directory *> <Limit WRITE> DenyAll </Limit> </Directory> </Anonymous>

6. El siguiente paso es enlazar la ruta de apt-mirror a la ruta de proftpd mediante un montaje de enlace ejecutando el siguiente comando.
$ sudo mount --bind /opt/apt-mirror/mirror/archive.ubuntu.com/ /srv/ftp/

Para verificarlo, ejecuta el comando mount sin parámetros u opciones.
$ mount

7. El último paso es asegurarse de que el servidor Proftpd se inicie automáticamente después de reiniciar el sistema y que el directorio mirror-cache también se monte automáticamente en la ruta del servidor ftp. Para habilitar automáticamente proftpd, ejecute el siguiente comando.
$ sudo update-rc.d proftpd enable
Para montar automáticamente la caché de apt-mirror en proftpd, abra y edite el archivo /etc/rc.local.
$ sudo nano /etc/rc.local
Agregue la siguiente línea antes de la directiva exit 0. También use un retraso de 5 segundos antes de intentar montar.
sleep 5 sudo mount --bind /opt/apt-mirror/mirror/archive.ubuntu.com/ /srv/ftp/

Si extrae paquetes de los repositorios de Debian, ejecute los siguientes comandos y asegúrese de que la configuración apropiada para el archivo rc.local anterior esté habilitada.
$ sudo mkdir /srv/ftp/debian $ sudo mount --bind /opt/apt-mirror/mirror/ftp.us.debian.org/debian/ /srv/ftp/debian/

8. Para una sincronización diaria de apt-mirror, también puede crear una tarea programada del sistema para ejecutarse a las 2 AM todos los días. Ejecute el comando crontab, seleccione su editor preferido y luego agregue la siguiente sintaxis de línea.
$ sudo crontab –e

En la última línea, agregue la siguiente línea.
0 2 * * * /usr/bin/apt-mirror >> /opt/apt-mirror/mirror/archive.ubuntu.com/ubuntu/apt-mirror.log

Ahora, todos los días a las 2 AM, la caché del repositorio de su sistema se sincronizará con los espejos oficiales de Ubuntu y se creará un archivo de registro.
Paso 2: Configurar clientes
9. Para configurar clientes locales de Ubuntu, edite /etc/apt/source.list en las computadoras cliente para que apunten a la dirección IP o al nombre de host del servidor apt-mirror – reemplace el protocolo http con ftp, luego actualice el 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. Para ver los repositorios, en realidad puede abrir un navegador y apuntar a la dirección IP del servidor o al nombre de dominio utilizando el protocolo FTP.

Para los clientes y servidores Debian, el único cambio necesario son el espejo de Debian y la lista de fuentes.
Además, si instalas un sistema Ubuntu o Debian desde cero, proporciona manualmente tu espejo local con el protocolo ftp cuando el instalador pregunte qué repositorio utilizar.
Lo grandioso de tener tus propios repositorios locales es que siempre estás actualizado y tus clientes locales no necesitan conectarse a Internet para instalar actualizaciones o software.
Source:
https://www.tecmint.com/setup-local-repositories-in-ubuntu/