Eu acho que talvez você possa usar algo como apt-cacher-ng este é um proxy de cache em vez de um espelho, o que significa que ele oferecerá ao repositório completo não apenas aqueles pacotes que ele tem localmente, mas que requisitou pacotes somente ser recuperado uma vez e, em seguida, armazenado em cache, o mesmo vale para as listas de pacotes, etc., que são armazenadas em cache, desde que ainda sejam atuais.
Também inclui opções de configuração para armazenar em cache determinados pacotes individuais ou até mesmo ramos da árvore de pacotes usando curingas antes mesmo de serem solicitados pelos clientes. Isso pode oferecer o melhor dos dois mundos, permitindo que os recursos locais sejam usados sempre que possível. ainda fornecendo fallback para o repositório remoto, se necessário.
Este é o manual, pois vale a pena dar uma olhada para ver se ele pode atender às suas necessidades ou não. link
Editar: Ocorreu-me depois de escrever isto que mesmo se você fosse realmente criar um repositório personalizado e mantê-lo você mesmo os clientes ainda procurariam baixar pacotes não encontrados naquele repositório a partir dos repositórios principais do Ubuntu se eles tivessem uma cópia de uma lista recente de pacotes para eles, a menos que eles tenham sido desativados completamente, portanto, pode ser simplesmente mais fácil usar o apt-cacher-ng se você tiver o cuidado de incluir tudo o que seus clientes precisarem que ele funcione bem.