apt-mirror-apache2/README.md

4.8 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 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 on ubuntu and click mirror, you will see mirror.math.princeton.edu and ppa.launchpad.net
  • The idea is to add the URL that points all the way down to ubuntu where the contents will be dists and pools folders. And then, follow that with release_name repo_lists So, if the current /etc/apt/sources.list read 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.list are:
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.list is
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.list is:
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-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