Configurar repositórios locais com ‘apt-mirror’ em sistemas Ubuntu e Debian

Quando hoje o tráfego e as velocidades de Internet casuais são medidas em dezenas de Gigabytes em um piscar de olhos mesmo para clientes comuns de Internet, você pode perguntar qual é o propósito de configurar um cache de repositório local em LANs?

Setup Local Repositories in Ubuntu

Uma das razões é reduzir a largura de banda da Internet e aumentar a velocidade ao puxar pacotes do cache local. Mas, também, outra razão importante deveria ser a privacidade. Vamos imaginar que os clientes da sua organização são restritos na Internet, mas suas caixas Linux precisam de atualizações regulares do sistema em software e segurança ou apenas necessitam de novos pacotes de software. Para ir mais além, imagine um servidor que opera em uma rede privada, contém e serve informações secretas sensíveis apenas para um segmento de rede restrito e nunca deve ser exposto à Internet pública.

Estas são apenas algumas razões pelas quais você deve construir um espelho de repositório local em sua LAN, delegar um servidor de borda para essa tarefa e configurar os clientes internos para pegar software do seu espelho de cache.

O Ubuntu fornece o pacote apt-mirror para sincronizar o cache local com os repositórios oficiais do Ubuntu, um espelho que pode ser configurado através de um servidor HTTP ou FTP para compartilhar seus pacotes de software com clientes do sistema local.

Para um cache de espelho completo, o seu servidor precisa ter pelo menos 120G de espaço livre reservado para os repositórios locais.

Requisitos

  1. No mínimo 120G de espaço livre
  2. Servidor Proftpd instalado e configurado em modo anônimo.

Passo 1: Configurar o Servidor

1. A primeira coisa que você pode querer fazer é identificar os espelhos do Ubuntu mais próximos e mais rápidos perto de sua localização visitando a página do Ubuntu Archive Mirror e selecionando seu país.

Ubuntu Archive Mirror

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

Select Mirror Location

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

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 usar a alteração do caminho do sistema e apontar a diretiva set base_path para a localização /opt/apt-mirror.

$ sudo nano /etc/apt/mirror.list
Configure apt-mirror Server.

Também é possível descomentar ou adicionar outras listas de origem antes da diretiva clean – inclusive fontes Debian – dependendo das versões de Ubuntu que seus clientes usam. 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 Wiki do Debian ou o Gerador de Lista de Fontes do Debian.

4. Tudo o que você precisa fazer agora é criar o diretório de caminho e executar o comando apt-mirror para sincronizar os repositórios oficiais do Ubuntu com nosso espelho local.

$ sudo mkdir -p /opt/apt-mirror
$ sudo apt-mirror
Create apt-mirror Paths

Como você pode ver, o apt-mirror prossegue com a indexação e o download de arquivos apresentando o número total de pacotes baixados e seu tamanho. Como podemos imaginar, 110-120 GB é grande o suficiente para levar algum tempo para baixar.

Você pode executar o comando ls para visualizar o conteúdo do diretório.

Verify apt-mirror Paths

Uma vez que o download inicial estiver 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>
Configure ProFTPD

6. O próximo passo é vincular o caminho do apt-mirror ao caminho do proftpd executando um bind mount com o seguinte comando.

$ sudo mount --bind /opt/apt-mirror/mirror/archive.ubuntu.com/  /srv/ftp/
Mount apt-mirror to ProFTP Path

Para verificar, execute o comando mount sem parâmetro ou opção.

$ mount
Verify Paths

7. O último passo é garantir que o servidor Proftpd seja iniciado automaticamente após o reinício do sistema e que o diretório de mirror-cache seja montado automaticamente no caminho do servidor ftp. Para habilitar automaticamente o proftpd, execute o seguinte comando.

$ sudo update-rc.d proftpd enable

Para montar automaticamente o cache 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. Utilize 5 segundos de atraso antes de tentar montar.

sleep 5
sudo mount --bind  /opt/apt-mirror/mirror/archive.ubuntu.com/ /srv/ftp/
Auto Mount Apt Mirrors

Se você baixa pacotes dos repositórios Debian, execute os seguintes comandos e verifique se as configurações apropriadas para o arquivo rc.local são habilitadas.

$ sudo mkdir /srv/ftp/debian
$ sudo mount --bind /opt/apt-mirror/mirror/ftp.us.debian.org/debian/ /srv/ftp/debian/
Debian Repository Setup

8. Para uma sincronização diária do apt-mirror, você também pode criar um trabalho agendado para ser executado às 2h todos os dias. Execute o comando crontab, selecione seu editor preferido e adicione a seguinte sintaxe na linha.

$ sudo crontab –e
Daily apt-mirror Synchronization

Na última linha, adicione a seguinte linha.

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

Agora, todos os dias às 2h, o cache do repositório do seu sistema será sincronizado com os espelhos oficiais do Ubuntu e um arquivo de registro será criado.

Passo 2: Configurar clientes

9. Para configurar os 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….
Configure Clients

10. Para visualizar os repositórios, você pode realmente abrir um navegador e apontar para o endereço IP do servidor ou nome de domínio usando o protocolo FTP.

View Local Repositories

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 a lista de fontes.

Também, se você instalar um sistema Ubuntu ou Debian do zero, forneça seu próprio espelho local manualmente com o protocolo ftp quando o instalador solicitar qual repositório usar.

A grande vantagem de ter seus próprios repositórios locais é que você está sempre atualizado e seus clientes locais não precisam se conectar à Internet para instalar atualizações ou software.

Source:
https://www.tecmint.com/setup-local-repositories-in-ubuntu/