Como configurar um repositório APT offline no Debian 12

Como de costume, vamos atualizar os pacotes usando apt update && apt upgrade.

# apt update && apt upgrade

Vamos proceder com a instalação dos pacotes necessários

# apt install apt-mirror apache2 vim screen -y

Criar uma cópia com o sufixo .original

# cp /etc/apt/mirror.list{,.original}
# vim /etc/apt/mirror.list

Substitua pelo conteúdo abaixo

# Define o número de threads para paralelizar o processo de atualização e instalação de pacotes.
set nthreads     20

# Desativa o uso do caractere til (~) para substituição no shell. Pode ser útil em alguns scripts.
set _tilde 0

# Repositório principal para Debian Bookworm (versão estável)
deb https://ftp.debian.org/debian/ bookworm contrib main non-free non-free-firmware
deb https://ftp.debian.org/debian/ bookworm-updates contrib main non-free non-free-firmware
deb https://ftp.debian.org/debian/ bookworm-proposed-updates contrib main non-free non-free-firmware
deb https://ftp.debian.org/debian/ bookworm-backports contrib main non-free non-free-firmware
deb https://security.debian.org/debian-security/ bookworm-security contrib main non-free non-free-firmware

# Limpa o cache dos pacotes baixados do repositório Debian (mirror global).
clean https://ftp.debian.org/debian

# Limpa o cache dos pacotes baixados do repositório de segurança do Debian.
clean https://security.debian.org/debian-security

O comando apt-mirror é usado para criar uma cópia local (mirror) dos repositórios do Debian. Ele baixa todos os pacotes de software, atualizações e arquivos necessários para que você possa configurar um repositório interno, evitando a necessidade de acesso à internet para instalar ou atualizar pacotes nas máquinas da sua rede.

# screen -S mirror
# apt-mirror

Deixe a sessão rodando em segundo plano: Para desconectar temporariamente da sessão e deixar o apt-mirror rodando, pressione: Ctrl + a, depois d Isso faz o “detach” da sessão, mantendo o processo ativo.

Alterações no Apache

# vim /etc/apache2/sites-enabled/000-default.conf

Adicione o conteúdo abaixo após a linha “DocumentRoot /var/www/html”

         <Directory /var/www/html/>
                Options Indexes FollowSymLinks
                AllowOverride All
                Require all granted
        </Directory>

Crie os links simbólicos para tornar o mirror acessível via web server (Apache no nosso exemplo):

Link simbólico para o repositório principal

ln -s /var/spool/apt-mirror/mirror/ftp.debian.org/debian /var/www/html/debian

Link simbólico para o repositório de segurança

ln -s /var/spool/apt-mirror/mirror/security.debian.org/debian-security /var/www/html/debian-security

Esconder a versão do Apache

# sed -i '$ a ServerSignature Off' /etc/apache2/apache2.conf

Reiniciar o servidor web

# systemctl restart apache2

Configuração de Redirecionamento Automático de Página Web

echo '<meta http-equiv="Refresh" content="0; url=http://www.joserodriguesfilho.com"/>' > /var/www/html/index.html

Crontab

Para atualizar o mirror regularmente, adicione o seguinte cron job para rodar o apt-mirror diariamente:

# vim /etc/crontab
# Atualizar espelho local 
0 3	* * *	root	/usr/bin/apt-mirror > /var/log/apt-mirror.log 2>&1
# systemctl restart cron

Para verificar ou voltar à sessão: Use o comando:

# screen -r mirror

Clientes

Nos clientes que usarão o mirror local, adicione estas linhas ao arquivo /etc/apt/sources.list

deb http://<IP_DO_SERVIDOR>/debian bookworm main non-free-firmware
deb http://<IP_DO_SERVIDOR>/debian-security bookworm-security main contrib non-free
# apt update