5.2 KiB
5.2 KiB
apt-mirror-apache2
Using Docker to construct your APT(Advanced Packaging Tools) mirror HTTP server.
Usage
Basic command:
docker run -d --restart always \
-e TIMEOUT=4h -e PUID=1000 -e PGID=100 \
-e MIRROR_URL=http://archive.ubuntu.com/ubuntu \
-e EXTRA1="deb http://ppa.launchpad.net/jonathonf/zfs/ubuntu bionic main" \
-e EXTRA2="deb http://ppa.launchpad.net/wireguard/wireguard/ubuntu bionic main" \
-v /path/data:/var/www/html/ \
--name apt-mirror \
-p 81:80 kongkrit/apt-mirror-apache2
-v /path/data: the path which you want to store data
More options with docker command
-e MIRROR_URL=url: to replace default URL (http://archive.ubuntu.com/ubuntu) - See Ubuntu Mirrors-e DIST1=bionic: the release you want to mirror. Default forDIST1isbionic(Ubuntu 18.04)-e DIST2=focal: additional release you want to mirror. Set to blank ("") to skip. Default forDIST2isfocal(Ubuntu 20.04)-e DIST3="": additional release you want to mirror. Set to blank ("") to skip.-e EXTRA1=text: to add more repo to mirror - for example:
-e EXTRA1="deb http://ppa.launchpad.net/jonathonf/zfs/ubuntu bionic main"
will add this extra line to the mirror.list file
-e EXTRA2, EXTRA3, EXTRA4, EXTRA5: same as EXTRA1-e TIMEOUT=timeout-value: to set the resync period, default is 12 hours. See the TIMEOUT format description-e NTHREADS=10: number of wget threads to use to pull from MIRROR_URL - default to 10-e PUID=userid: set to a userid that can access the mounted volume (see note below)-e PGID=groupid: set to a groupid that can access the mounted volume (see note below)
More on PUID and PGID from linuxserver.io
When using volumes (-v flags), permissions issues can arise between the host OS and the container. We avoid this issue by allowing you to specify the user PUID and group PGID.
Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.
In this instance PUID=1000 and PGID=1000. To find yours use id user as below:
$ id username
uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
You only need to set the PUID and PGID variables if you are mounting the /var/www/html folder
How to use the repos one you "mirrored" them (following "docker run" example above):
- I use X86_64 (amd64) architecture here, you may need to adjust your architecture, if you use a different CPU architecture.
- surf to
http://repo-server:81(port is 81 in the docker run example above) and you'll see Index of /, click onubuntuand clickmirror, you will seemirror.math.princeton.eduandppa.launchpad.net - The idea is to add the URL that points all the way down to
ubuntuwhere the contents will bedistsandpoolsfolders. And then, follow that with release_name repo_lists So, if the current/etc/apt/sources.listread like this:
deb http://mirror.math.princeton.edu/pub/ubuntu bionic main restricted universe multiverse
deb http://mirror.math.princeton.edu/pub/ubuntu bionic-updates main restricted universe multiverse
deb http://mirror.math.princeton.edu/pub/ubuntu bionic-backports main restricted universe multiverse
deb http://mirror.math.princeton.edu/pub/ubuntu bionic-security main restricted universe multiverse
- Then the lines to add at the top of
/etc/apt/sources.listare:
deb [arch=amd64] http://repo-server:81/ubuntu/mirror/mirror.math.princeton.edu/pub/ubuntu bionic main restricted universe multiverse
deb [arch=amd64] http://repo-server:81/ubuntu/mirror/mirror.math.princeton.edu/pub/ubuntu bionic-updates main restricted universe multiverse
deb [arch=amd64] http://repo-server:81/ubuntu/mirror/mirror.math.princeton.edu/pub/ubuntu bionic-backports main restricted universe multiverse
deb [arch=amd64] http://repo-server:81/ubuntu/mirror/mirror.math.princeton.edu/pub/ubuntu bionic-security main restricted universe multiverse
- The current content of
/etc/apt/sources.list.d/jonathonf-ubuntu-zfs-bionic.listis
deb http://ppa.launchpad.net/jonathonf/zfs/ubuntu bionic main
- Then line to add at the top of
/etc/apt/sources.list.d/jonathonf-ubuntu-zfs-bionic.listis:
deb [arch=amd64] http://repo-server:81/ubuntu/mirror/ppa.launchpad.net/jonathonf/zfs/ubuntu bionic main
- repeat this for all the repos in EXTRA1..5
Changelog
-
2020-01-31
- support DIST1...3 for different releases
-
2020-01-29
- support EXTRA1...5 parameters
-
2020-01-04
- support PUID, PGID, and NTHREADS
-
2020-01-01
- updated ubuntu to 18.04 LTS
-
2017-07-27: version 0.1.2
- Fix the container started twice: "httpd (pid 13) already running"
-
2017-04-28: version 0.1.1
- Fix http server doesn't start after the container restarted
-
2017-04-27: version 0.1
- Update base image to Ubuntu 16.04
- remove option
MIRROR_URL - rename
TIMEOUTenvironment value toRESYNC_PERIOD - fix issue #1 https isn't handle correctly in setup.sh