diff --git a/Dockerfile b/Dockerfile index 16fb924..c320b4f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,25 +2,27 @@ FROM ubuntu:18.04 RUN \ apt update && \ - apt install -y apt-mirror apache2 && \ + apt install -y apt-mirror apache2 rsync && \ apt autoremove -y && apt clean ENV DEBIAN_FRONTEND noninteractive ENV TIMEOUT 12h +ENV WEB_ROOT / ENV MIRROR_URL http://archive.ubuntu.com/ubuntu ENV DIST1 bionic -ENV DIST2 focal +ENV DIST2 "" ENV DIST3 "" ENV NTHREADS 10 +ENV ARCH deb ENV PUID 1000 ENV PGID 1000 -RUN mkdir -p /var/www/html/ubuntu - RUN rm -f /var/run/apache2/apache2.pid + EXPOSE 80 COPY setup.sh /setup.sh VOLUME ["/var/www/html/"] + CMD ["/bin/bash", "setup.sh"] diff --git a/setup.sh b/setup.sh index 1b41737..5870159 100755 --- a/setup.sh +++ b/setup.sh @@ -3,39 +3,39 @@ TARGETFILE="/etc/apt/mirror.list" echo "configuring [$TARGETFILE] MIRROR_URL=[$MIRROR_URL]" -echo " DIST1=[$DIST1] DIST2=[$DIST2]" +echo " DIST1=[$DIST1] DIST2=[$DIST2] DIST3=[$DIST3]" echo "#### config #### -set base_path /var/www/html/ubuntu +set base_path /var/www/html/ set nthreads $NTHREADS set _tilde 0" \ > "$TARGETFILE" if [[ ! -z "$DIST1" ]]; then echo "# for release $DIST1 -deb $MIRROR_URL $DIST1 main restricted universe multiverse -deb $MIRROR_URL $DIST1-updates main restricted universe multiverse -deb $MIRROR_URL $DIST1-backports main restricted universe multiverse -deb $MIRROR_URL $DIST1-security main restricted universe multiverse -deb $MIRROR_URL $DIST1-proposed main restricted universe multiverse" >> "$TARGETFILE" +$ARCH $MIRROR_URL $DIST1 main restricted universe multiverse +$ARCH $MIRROR_URL $DIST1-updates main restricted universe multiverse +$ARCH $MIRROR_URL $DIST1-backports main restricted universe multiverse +$ARCH $MIRROR_URL $DIST1-security main restricted universe multiverse +$ARCH $MIRROR_URL $DIST1-proposed main restricted universe multiverse" >> "$TARGETFILE" fi if [[ ! -z "$DIST2" ]]; then echo "# for release $DIST2 -deb $MIRROR_URL $DIST2 main restricted universe multiverse -deb $MIRROR_URL $DIST2-updates main restricted universe multiverse -deb $MIRROR_URL $DIST2-backports main restricted universe multiverse -deb $MIRROR_URL $DIST2-security main restricted universe multiverse -deb $MIRROR_URL $DIST2-proposed main restricted universe multiverse" >> "$TARGETFILE" +$ARCH $MIRROR_URL $DIST2 main restricted universe multiverse +$ARCH $MIRROR_URL $DIST2-updates main restricted universe multiverse +$ARCH $MIRROR_URL $DIST2-backports main restricted universe multiverse +$ARCH $MIRROR_URL $DIST2-security main restricted universe multiverse +$ARCH $MIRROR_URL $DIST2-proposed main restricted universe multiverse" >> "$TARGETFILE" fi if [[ ! -z "$DIST3" ]]; then echo "# for release $DIST3 -deb $MIRROR_URL $DIST3 main restricted universe multiverse -deb $MIRROR_URL $DIST3-updates main restricted universe multiverse -deb $MIRROR_URL $DIST3-backports main restricted universe multiverse -deb $MIRROR_URL $DIST3-security main restricted universe multiverse -deb $MIRROR_URL $DIST3-proposed main restricted universe multiverse" >> "$TARGETFILE" +$ARCH $MIRROR_URL $DIST3 main restricted universe multiverse +$ARCH $MIRROR_URL $DIST3-updates main restricted universe multiverse +$ARCH $MIRROR_URL $DIST3-backports main restricted universe multiverse +$ARCH $MIRROR_URL $DIST3-security main restricted universe multiverse +$ARCH $MIRROR_URL $DIST3-proposed main restricted universe multiverse" >> "$TARGETFILE" fi echo "# for EXTRAS @@ -45,22 +45,59 @@ $EXTRA3 $EXTRA4 $EXTRA5 -#clean http://archive.ubuntu.com/ubuntu" >> "$TARGETFILE" +clean $MIRROR_URL" >> "$TARGETFILE" echo "content of [$TARGETFILE] is..." echo "-------------------------------------" -cat "$TARGETFILE" +cat "$TARGETFILE" |sed -E "s~^(.*)$~>>> \1~g" echo "-------------------------------------" +echo + rm -f /var/run/apache2/apache2.pid -echo "hacking www-data to become PUID=$PUID PGID=$PGID" -SEDEX="s/www-data:x:[0-9]+:[0-9]+:/www-data:x:${PUID}:${PGID}:/g" -echo "sed /etc/passwd with [$SEDEX]" -cat /etc/passwd | \ -sed -E $SEDEX > /tmp/passy -cp /tmp/passy /etc/passwd -rm /tmp/passy +echo "hacking www-data and apt-mirror to become PUID=$PUID PGID=$PGID" +SEDEX="s~(www-data|apt-mirror):x:[0-9]+:[0-9]+:~\1:x:${PUID}:${PGID}:~g" +sed -ri "$SEDEX" /etc/passwd +echo "regex: $SEDEX" +echo "-------------------------------------" +grep -E '(www-data|apt-mirror)' /etc/passwd |sed -E "s~^(.*)$~>>> \1~g" +echo "-------------------------------------" + +echo + +echo "adding server name" +echo $'\nServerName apt-mirror' >> /etc/apache2/apache2.conf +echo "-------------------------------------" +grep -E 'ServerName' /etc/apache2/apache2.conf |sed -E "s~^(.*)$~>>> \1~g" +echo "-------------------------------------" + +echo + +echo "changing default site document root to $WEB_ROOT" +SEDEX="s~DocumentRoot\s+\/var\/www\/html\s*$~DocumentRoot \/var\/www\/html${WEB_ROOT}~" +sed -Ei "$SEDEX" /etc/apache2/sites-available/000-default.conf +echo "regex: $SEDEX" +echo "-------------------------------------" +grep -E 'DocumentRoot' /etc/apache2/sites-available/000-default.conf |sed -E "s~^(.*)$~>>> \1~g" +echo "-------------------------------------" + +echo + +echo "if no postmirror.sh then create and set to call clean.sh" +mkdir -p /var/www/html/var; +if [[ ! -f /var/www/html/var/postmirror.sh ]]; then + echo $'#!/bin/bash\ncd "${0%/*}"\necho "$(pwd)/clean.sh"\nsleep 5\n$(pwd)/clean.sh\n' > /var/www/html/var/postmirror.sh; fi +echo "-------------------------------------" +cat /var/www/html/var/postmirror.sh |sed -E "s~^(.*)$~>>> \1~g" +echo "-------------------------------------" + +echo + +echo "Changing ownership of all files on /var/www/html to apt-mirror" +chown -R apt-mirror:apt-mirror /var/www/html + +echo echo "starting apache server" service apache2 start @@ -70,6 +107,7 @@ echo "TIMEOUT is ${TIMEOUT}" while true; do echo "[$(date)] Starting apt-mirror" apt-mirror + #sleep 60 echo "[$(date)] Completed" echo "[$(date)] Sleeping $TIMEOUT to execute apt-mirror again ======" sleep "$TIMEOUT"