16.10. Building a Partial Debian Mirror with apt-proxy

While maintaining a local Debian mirror with apt-mirror doesn't sound too bad, you really don't need the whole works. Can't you just cache and share the packages that your local systems actually use?

You can, with apt-proxy. Install it on a server with at least 30 GB of free storage space:

	# aptitude install apt-proxy

Then, configure /etc/apt-proxy/apt-proxy-v2.conf to point to three different Debian mirrors:

	address = 192.168.1.101
	port = 9999
	min_refresh_delay = 1s
	debug = all:4 db:0
	timeout = 15
	cache_dir = /var/cache/apt-proxy
	cleanup_freq = 1d
	max_age = 120d
	max_versions = 3
	;; Backend servers
	backends =
	    http://us.debian.org/debian
	    http://linux.csua.berkeley.edu/debian
	    http://mirrors.geeks.org/debian
	    http://debian.uchicago.edu/debian

Now, configure a client PC to point to your apt-proxy server:

	## /etc/apt/sources.list
	# debian Etch (stable)
	deb http://192.168.1.75/debian etch main contrib non-free
	deb-src http://192.168.1.75/debian etch main contrib non-free

	deb http://security.debian.org/ etch/updates main contrib non-free
	deb-src http://security.debian.org/debian-security etch/updates main \
	contrib non-free

Run aptitude update on the client to initialize the server. If your server already has a good-sized package cache, you can import it into apt-proxy with this command:

	# apt-proxy-import /var/cache/apt/archives

Now, every time a client computer installs new software, apt-proxy will cache it and serve additional requests from the cache. All you have to do in the way of maintenance is keep an eye on how much drive space apt-proxy is using.

apt-proxy replicates the Debian mirror structure, and automatically purges old packages when newer versions become available. Using at least three different Debian mirrors for backend servers builds in failover; if one is not available, it automatically goes to the next one.

Visit the mirror list page (http://www.debian.org/mirror/list) to find available mirrors near you.