Quando hoje em dia o tráfego e as velocidades casuais da internet são medidas em dezenas de gigabytes em um piscar de olhos até para clientes comuns da internet, você pode se perguntar qual é o objetivo de configurar um cache de repositório local em LANs?

Uma das razões é reduzir a largura de banda da Internet e aumentar a velocidade ao puxar pacotes do cache local. No entanto, outra razão importante deve ser a privacidade. Vamos imaginar que os clientes de sua organização tenham restrições de internet, mas seus sistemas Linux precisem de atualizações regulares de sistema, software e segurança, ou apenas de novos pacotes de software. Para ir mais longe, imagine um servidor que funcione em uma rede privada, contenha e sirva informações sensíveis secretas apenas para um segmento de rede restrito e nunca deva ser exposto à Internet pública.
Esses são apenas alguns motivos pelos quais você deveria construir um espelho de repositório local em sua LAN, designar um servidor de borda para este trabalho e configurar os clientes internos para retirarem software de seu espelho de cache.
O Ubuntu fornece o pacote apt-mirror para sincronizar o cache local com os repositórios oficiais do Ubuntu, espelho que pode ser configurado por meio de um servidor HTTP ou FTP para compartilhar seus pacotes de software com os clientes de sistema local.
Para um espelho de cache completo, seu servidor precisa ter pelo menos 120G de espaço livre reservado para os repositórios locais.
Requisitos
- Mínimo de 120G de espaço livre
- Servidor Proftpd instalado e configurado em modo anônimo.
Passo 1: Configurar Servidor
1. A primeira coisa que você pode querer fazer é identificar os espelhos do Ubuntu mais próximos e rápidos perto da sua localização visitando a página do Ubuntu Archive Mirror e selecionar o seu país.

Se o seu país disponibilizar mais espelhos, você deve identificar o endereço do espelho e fazer alguns testes baseados nos resultados do ping ou traceroute.

2. O próximo passo é instalar o software necessário para configurar o repositório de espelhamento local. Instale os pacotes apt-mirror e proftpd e configure o proftpd como um daemon do sistema autônomo.
$ sudo apt-get install apt-mirror proftpd-basic


3. Agora é hora de configurar o servidor apt-mirror. Abra e edite o arquivo /etc/apt/mirror.list adicionando suas localizações mais próximas (Passo 1) – opcional, se os espelhos padrão forem suficientemente rápidos ou se você não estiver com pressa – e escolha o caminho do sistema onde os pacotes devem ser baixados. Por padrão, o apt-mirror usa a localização /var/spool/apt-mirror para o cache local, mas neste tutorial vamos alterar o caminho do sistema e apontar a diretiva set base_path para a localização /opt/apt-mirror.
$ sudo nano /etc/apt/mirror.list

Também é possível descomentar ou adicionar outras listas de origem antes da diretiva de limpeza – incluindo fontes do Debian – dependendo das versões do Ubuntu que seus clientes utilizam. Você pode adicionar fontes do 12.04, se desejar, mas esteja ciente de que adicionar mais fontes requer mais espaço livre.
Para listas de origem do Debian, visite a Debian Wiki ou o Gerador de Lista de Fontes do Debian.
4. Tudo que você precisa fazer agora é criar o diretório do caminho e executar o comando apt-mirror para sincronizar os repositórios oficiais do Ubuntu com o nosso espelho local.
$ sudo mkdir -p /opt/apt-mirror $ sudo apt-mirror

Como pode ver, o apt-mirror prossegue com a indexação e o download de arquivos apresentando o número total de pacotes baixados e seus tamanhos. Como podemos imaginar, 110-120 GB é grande o suficiente para levar algum tempo para ser baixado.
Você pode executar o comando ls para visualizar o conteúdo do diretório.

Depois que o download inicial for concluído, os downloads futuros serão pequenos.
5. Enquanto o apt-mirror baixa os pacotes, você pode configurar seu servidor Proftpd. A primeira coisa que você precisa fazer é criar um arquivo de configuração anônima para o proftpd executando o seguinte comando.
$ sudo nano /etc/proftpd/conf.d/anonymous.conf
Em seguida, adicione o seguinte conteúdo ao arquivo anonymous.conf e reinicie o serviço proftpd.
<Anonymous ~ftp> User ftp Group nogroup UserAlias anonymous ftp RequireValidShell off # MaxClients 10 <Directory *> <Limit WRITE> DenyAll </Limit> </Directory> </Anonymous>

6. O próximo passo é vincular o caminho do apt-mirror ao caminho do proftpd executando uma montagem vinculada emitindo o comando.
$ sudo mount --bind /opt/apt-mirror/mirror/archive.ubuntu.com/ /srv/ftp/

Para verificar, execute o comando mount sem parâmetros ou opções.
$ mount

7. A última etapa é garantir que o servidor Proftpd seja iniciado automaticamente após a reinicialização do sistema e que o diretório de mirror-cache também seja montado automaticamente no caminho do servidor FTP. Para ativar automaticamente o proftpd, execute o seguinte comando.
$ sudo update-rc.d proftpd enable
Para montar automaticamente o cache do apt-mirror no proftpd, abra e edite o arquivo /etc/rc.local.
$ sudo nano /etc/rc.local
Adicione a seguinte linha antes da diretiva exit 0. Use também 5 segundos de atraso antes de tentar montar.
sleep 5 sudo mount --bind /opt/apt-mirror/mirror/archive.ubuntu.com/ /srv/ftp/

Se você baixar pacotes dos repositórios Debian, execute os seguintes comandos e certifique-se de que as configurações apropriadas para o arquivo rc.local acima estejam habilitadas.
$ sudo mkdir /srv/ftp/debian $ sudo mount --bind /opt/apt-mirror/mirror/ftp.us.debian.org/debian/ /srv/ftp/debian/

8. Para uma sincronização diária do apt-mirror, você também pode criar um trabalho de agendamento do sistema para rodar às 2h da manhã todos os dias. Execute o comando crontab, selecione seu editor preferido e adicione a seguinte sintaxe de linha.
$ sudo crontab –e

Na última linha, adicione a seguinte linha.
0 2 * * * /usr/bin/apt-mirror >> /opt/apt-mirror/mirror/archive.ubuntu.com/ubuntu/apt-mirror.log

A partir de agora, todos os dias às 2h da manhã, o cache do repositório do seu sistema será sincronizado com os espelhos oficiais do Ubuntu e um arquivo de log será criado.
Passo 2: Configurar clientes
9. Para configurar clientes locais do Ubuntu, edite o arquivo /etc/apt/source.list nos computadores clientes para apontar para o endereço IP ou nome do host do servidor apt-mirror – substitua o protocolo http por ftp e, em seguida, atualize o 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 visualizar os repositórios, você pode abrir um navegador e apontar para o endereço IP do seu servidor ou nome de domínio usando o protocolo FTP.

O mesmo sistema se aplica também aos clientes e servidores Debian, a única mudança necessária são o espelho do Debian e o arquivo de fontes.
Além disso, se você instalar um sistema Ubuntu ou Debian novo, forneça seu espelho local manualmente com protocolo ftp quando o instalador perguntar qual repositório usar.
A grande vantagem de ter seus próprios repositórios locais é que você sempre estará atualizado, e seus clientes locais não precisarão se conectar à Internet para instalar atualizações ou softwares.
Source:
https://www.tecmint.com/setup-local-repositories-in-ubuntu/