Eu tenho um Makefile trivial que eu uso para fazer isso, mas aqui está a mesma coisa no shell:
#!/bin/bash
rm -f Release* Packages* new-release
dpkg-scanpackages . /dev/null > Packages
gzip -c -9 <Packages >Packages.gz
apt-ftparchive release . > new-release
mv new-release Release
gpg -abs -o Release.gpg Release
A etapa de GPG não é necessária se você não quiser assinar seu repositório, mas o esforço para fazer isso é mínimo (e atualmente a alternativa é uma alteração de configuração para desabilitar a verificação de assinatura, então você precisa fazer alguma coisa) .
Você então se refere ao diretório no /etc/apt/sources.list do seu cliente assim:
# Local directory
deb file:///var/local/debs ./
# Via http(s)
deb http://foo.bar.com/debian ./
O HTTPS pode ser uma boa maneira de permitir atualizações de servidores em todo o mundo sem precisar de uma VPN. Eu fiz isso em um trabalho anterior, apoiando a CA dentro de nossa implantação de marionetes, por isso era totalmente automático.