It is possible to set up a local server to keep a synchronized copy of all the Ubuntu packages, allowing later installs of packages for any local machine even in the absence of an internet connection.
To do this a script called apt-mirror can be run on the server.
0 1 * * * /usr/local/bin/apt-mirror
The location of the mirror is specified in apt-mirror.conf
set mirror_path /disk/ftp/Mirror
set cleanup_freq daily
set mirror_verbose yes
The origin servers are specified in mirror.list
. It is possible to choose which architectures and Ubuntu releases to fetch as well as whether to fetch just the binary packages or also the sources.
...
deb http://archive.ubuntu.com/ubuntu noble main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu noble-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu noble-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu noble-backports main restricted universe multiverse
deb-i386 http://archive.ubuntu.com/ubuntu noble main restricted universe multiverse
deb-i386 http://security.ubuntu.com/ubuntu noble-security main restricted universe multiverse
deb-i386 http://archive.ubuntu.com/ubuntu noble-updates main restricted universe multiverse
deb-i386 http://archive.ubuntu.com/ubuntu noble-backports main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu noble main restricted universe multiverse
#deb-src http://security.ubuntu.com/ubuntu noble-security main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu noble-updates main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu noble-backports main restricted universe multiverse
clean http://archive.ubuntu.com/ubuntu
The mirrored packages could be served up to local machines in a number of ways, I am using vsftpd to serve the files via FTP.
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
listen=YES
pam_service_name=vsftpd
seccomp_sandbox=NO
isolate_network=NO
anon_root=/disk/ftp/
no_anon_password=YES
hide_ids=YES
pasv_min_port=40000
pasv_max_port=50000
write_enable=YES
On local machines, the mirror on the server can then be specified as the source for apt
to use to retrieve packages.
...
Types: deb
URIs: ftp://server/Mirror/mirror/archive.ubuntu.com/ubuntu
Suites: noble noble-updates noble-backports
Components: main universe restricted multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
## Ubuntu security updates. Aside from URIs and Suites,
## this should mirror your choices in the previous section.
Types: deb
URIs: ftp://server/Mirror/mirror/security.ubuntu.com/ubuntu
Suites: noble-security
Components: main universe restricted multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
This file was updated at 2025-03-01 19:15:47