diff --git a/.github/ISSUE_TEMPLATE/issue.bug.yml b/.github/ISSUE_TEMPLATE/issue.bug.yml index 59a10f5..ce3d19a 100755 --- a/.github/ISSUE_TEMPLATE/issue.bug.yml +++ b/.github/ISSUE_TEMPLATE/issue.bug.yml @@ -53,7 +53,6 @@ body: options: - x86-64 - arm64 - - armhf validations: required: true - type: textarea diff --git a/Dockerfile b/Dockerfile index 609208d..085c146 100755 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 -FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.17 +FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.18 # set version label ARG BUILD_DATE @@ -24,7 +24,7 @@ RUN \ openssl-dev \ python3-dev && \ echo "**** install runtime packages ****" && \ - apk add --no-cache --upgrade \ + apk add --no-cache \ fail2ban \ gnupg \ memcached \ @@ -45,55 +45,48 @@ RUN \ nginx-mod-stream \ nginx-mod-stream-geoip2 \ nginx-vim \ - php81-bcmath \ - php81-bz2 \ - php81-ctype \ - php81-curl \ - php81-dom \ - php81-exif \ - php81-ftp \ - php81-gd \ - php81-gmp \ - php81-iconv \ - php81-imap \ - php81-intl \ - php81-ldap \ - php81-mysqli \ - php81-mysqlnd \ - php81-opcache \ - php81-pdo_mysql \ - php81-pdo_odbc \ - php81-pdo_pgsql \ - php81-pdo_sqlite \ - php81-pear \ - php81-pecl-apcu \ - php81-pecl-mailparse \ - php81-pecl-memcached \ - php81-pecl-redis \ - php81-pgsql \ - php81-phar \ - php81-posix \ - php81-soap \ - php81-sockets \ - php81-sodium \ - php81-sqlite3 \ - php81-tokenizer \ - php81-xmlreader \ - php81-xsl \ - php81-zip \ + php82-bcmath \ + php82-bz2 \ + php82-dom \ + php82-exif \ + php82-ftp \ + php82-gd \ + php82-gmp \ + php82-imap \ + php82-intl \ + php82-ldap \ + php82-mysqli \ + php82-mysqlnd \ + php82-opcache \ + php82-pdo_mysql \ + php82-pdo_odbc \ + php82-pdo_pgsql \ + php82-pdo_sqlite \ + php82-pear \ + php82-pecl-apcu \ + php82-pecl-memcached \ + php82-pecl-redis \ + php82-pgsql \ + php82-posix \ + php82-soap \ + php82-sockets \ + php82-sodium \ + php82-sqlite3 \ + php82-tokenizer \ + php82-xmlreader \ + php82-xsl \ whois && \ apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing \ - php81-pecl-mcrypt \ - php81-pecl-xmlrpc && \ + php82-pecl-mcrypt && \ echo "**** install certbot plugins ****" && \ if [ -z ${CERTBOT_VERSION+x} ]; then \ CERTBOT_VERSION=$(curl -sL https://pypi.python.org/pypi/certbot/json |jq -r '. | .info.version'); \ fi && \ - python3 -m ensurepip && \ - pip3 install -U --no-cache-dir \ + python3 -m venv /lsiopy && \ + pip install -U --no-cache-dir \ pip \ wheel && \ - pip3 install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.17/ \ + pip install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.18/ \ certbot==${CERTBOT_VERSION} \ certbot-dns-acmedns \ certbot-dns-aliyun \ diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index 4546b5f..aca81c2 100755 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 -FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.17 +FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.18 # set version label ARG BUILD_DATE @@ -24,7 +24,7 @@ RUN \ openssl-dev \ python3-dev && \ echo "**** install runtime packages ****" && \ - apk add --no-cache --upgrade \ + apk add --no-cache \ fail2ban \ gnupg \ memcached \ @@ -45,55 +45,48 @@ RUN \ nginx-mod-stream \ nginx-mod-stream-geoip2 \ nginx-vim \ - php81-bcmath \ - php81-bz2 \ - php81-ctype \ - php81-curl \ - php81-dom \ - php81-exif \ - php81-ftp \ - php81-gd \ - php81-gmp \ - php81-iconv \ - php81-imap \ - php81-intl \ - php81-ldap \ - php81-mysqli \ - php81-mysqlnd \ - php81-opcache \ - php81-pdo_mysql \ - php81-pdo_odbc \ - php81-pdo_pgsql \ - php81-pdo_sqlite \ - php81-pear \ - php81-pecl-apcu \ - php81-pecl-mailparse \ - php81-pecl-memcached \ - php81-pecl-redis \ - php81-pgsql \ - php81-phar \ - php81-posix \ - php81-soap \ - php81-sockets \ - php81-sodium \ - php81-sqlite3 \ - php81-tokenizer \ - php81-xmlreader \ - php81-xsl \ - php81-zip \ + php82-bcmath \ + php82-bz2 \ + php82-dom \ + php82-exif \ + php82-ftp \ + php82-gd \ + php82-gmp \ + php82-imap \ + php82-intl \ + php82-ldap \ + php82-mysqli \ + php82-mysqlnd \ + php82-opcache \ + php82-pdo_mysql \ + php82-pdo_odbc \ + php82-pdo_pgsql \ + php82-pdo_sqlite \ + php82-pear \ + php82-pecl-apcu \ + php82-pecl-memcached \ + php82-pecl-redis \ + php82-pgsql \ + php82-posix \ + php82-soap \ + php82-sockets \ + php82-sodium \ + php82-sqlite3 \ + php82-tokenizer \ + php82-xmlreader \ + php82-xsl \ whois && \ apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing \ - php81-pecl-mcrypt \ - php81-pecl-xmlrpc && \ + php82-pecl-mcrypt && \ echo "**** install certbot plugins ****" && \ if [ -z ${CERTBOT_VERSION+x} ]; then \ CERTBOT_VERSION=$(curl -sL https://pypi.python.org/pypi/certbot/json |jq -r '. | .info.version'); \ fi && \ - python3 -m ensurepip && \ - pip3 install -U --no-cache-dir \ + python3 -m venv /lsiopy && \ + pip install -U --no-cache-dir \ pip \ wheel && \ - pip3 install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.17/ \ + pip install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.18/ \ certbot==${CERTBOT_VERSION} \ certbot-dns-acmedns \ certbot-dns-aliyun \ diff --git a/Dockerfile.armhf b/Dockerfile.armhf deleted file mode 100755 index 1efd3f5..0000000 --- a/Dockerfile.armhf +++ /dev/null @@ -1,186 +0,0 @@ -# syntax=docker/dockerfile:1 - -FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm32v7-3.17 - -# set version label -ARG BUILD_DATE -ARG VERSION -ARG CERTBOT_VERSION -LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" -LABEL maintainer="nemchik" - -# environment settings -ENV DHLEVEL=2048 ONLY_SUBDOMAINS=false AWS_CONFIG_FILE=/config/dns-conf/route53.ini -ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2 - -RUN \ - echo "**** install build packages ****" && \ - apk add --no-cache --virtual=build-dependencies \ - build-base \ - cargo \ - libffi-dev \ - libxml2-dev \ - libxslt-dev \ - openssl-dev \ - python3-dev && \ - echo "**** install runtime packages ****" && \ - apk add --no-cache --upgrade \ - fail2ban \ - gnupg \ - memcached \ - nginx-mod-http-brotli \ - nginx-mod-http-dav-ext \ - nginx-mod-http-echo \ - nginx-mod-http-fancyindex \ - nginx-mod-http-geoip2 \ - nginx-mod-http-headers-more \ - nginx-mod-http-image-filter \ - nginx-mod-http-perl \ - nginx-mod-http-redis2 \ - nginx-mod-http-set-misc \ - nginx-mod-http-upload-progress \ - nginx-mod-http-xslt-filter \ - nginx-mod-mail \ - nginx-mod-rtmp \ - nginx-mod-stream \ - nginx-mod-stream-geoip2 \ - nginx-vim \ - php81-bcmath \ - php81-bz2 \ - php81-ctype \ - php81-curl \ - php81-dom \ - php81-exif \ - php81-ftp \ - php81-gd \ - php81-gmp \ - php81-iconv \ - php81-imap \ - php81-intl \ - php81-ldap \ - php81-mysqli \ - php81-mysqlnd \ - php81-opcache \ - php81-pdo_mysql \ - php81-pdo_odbc \ - php81-pdo_pgsql \ - php81-pdo_sqlite \ - php81-pear \ - php81-pecl-apcu \ - php81-pecl-mailparse \ - php81-pecl-memcached \ - php81-pecl-redis \ - php81-pgsql \ - php81-phar \ - php81-posix \ - php81-soap \ - php81-sockets \ - php81-sodium \ - php81-sqlite3 \ - php81-tokenizer \ - php81-xmlreader \ - php81-xsl \ - php81-zip \ - whois && \ - apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing \ - php81-pecl-mcrypt \ - php81-pecl-xmlrpc && \ - echo "**** install certbot plugins ****" && \ - if [ -z ${CERTBOT_VERSION+x} ]; then \ - CERTBOT_VERSION=$(curl -sL https://pypi.python.org/pypi/certbot/json |jq -r '. | .info.version'); \ - fi && \ - python3 -m ensurepip && \ - pip3 install -U --no-cache-dir \ - pip \ - wheel && \ - pip3 install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.17/ \ - certbot==${CERTBOT_VERSION} \ - certbot-dns-acmedns \ - certbot-dns-aliyun \ - certbot-dns-azure \ - certbot-dns-cloudflare \ - certbot-dns-cpanel \ - certbot-dns-desec \ - certbot-dns-digitalocean \ - certbot-dns-directadmin \ - certbot-dns-dnsimple \ - certbot-dns-dnsmadeeasy \ - certbot-dns-dnspod \ - certbot-dns-do \ - certbot-dns-domeneshop \ - certbot-dns-duckdns \ - certbot-dns-dynu \ - certbot-dns-gehirn \ - certbot-dns-godaddy \ - certbot-dns-google \ - certbot-dns-google-domains \ - certbot-dns-he \ - certbot-dns-hetzner \ - certbot-dns-infomaniak \ - certbot-dns-inwx \ - certbot-dns-ionos \ - certbot-dns-linode \ - certbot-dns-loopia \ - certbot-dns-luadns \ - certbot-dns-netcup \ - certbot-dns-njalla \ - certbot-dns-nsone \ - certbot-dns-ovh \ - certbot-dns-porkbun \ - certbot-dns-rfc2136 \ - certbot-dns-route53 \ - certbot-dns-sakuracloud \ - certbot-dns-standalone \ - certbot-dns-transip \ - certbot-dns-vultr \ - certbot-plugin-gandi \ - cryptography \ - future \ - requests && \ - echo "**** enable OCSP stapling from base ****" && \ - sed -i \ - 's|#ssl_stapling on;|ssl_stapling on;|' \ - /defaults/nginx/ssl.conf.sample && \ - sed -i \ - 's|#ssl_stapling_verify on;|ssl_stapling_verify on;|' \ - /defaults/nginx/ssl.conf.sample && \ - sed -i \ - 's|#ssl_trusted_certificate /config/keys/cert.crt;|ssl_trusted_certificate /config/keys/cert.crt;|' \ - /defaults/nginx/ssl.conf.sample && \ - echo "**** correct ip6tables legacy issue ****" && \ - rm \ - /sbin/ip6tables && \ - ln -s \ - /sbin/ip6tables-nft /sbin/ip6tables && \ - echo "**** remove unnecessary fail2ban filters ****" && \ - rm \ - /etc/fail2ban/jail.d/alpine-ssh.conf && \ - echo "**** copy fail2ban default action and filter to /defaults ****" && \ - mkdir -p /defaults/fail2ban && \ - mv /etc/fail2ban/action.d /defaults/fail2ban/ && \ - mv /etc/fail2ban/filter.d /defaults/fail2ban/ && \ - echo "**** define allowipv6 to silence warning ****" && \ - sed -i 's/#allowipv6 = auto/allowipv6 = auto/g' /etc/fail2ban/fail2ban.conf && \ - echo "**** copy proxy confs to /defaults ****" && \ - mkdir -p \ - /defaults/nginx/proxy-confs && \ - curl -o \ - /tmp/proxy-confs.tar.gz -L \ - "https://github.com/linuxserver/reverse-proxy-confs/tarball/master" && \ - tar xf \ - /tmp/proxy-confs.tar.gz -C \ - /defaults/nginx/proxy-confs --strip-components=1 --exclude=linux*/.editorconfig --exclude=linux*/.gitattributes --exclude=linux*/.github --exclude=linux*/.gitignore --exclude=linux*/LICENSE && \ - echo "**** cleanup ****" && \ - apk del --purge \ - build-dependencies && \ - rm -rf \ - /tmp/* \ - $HOME/.cache \ - $HOME/.cargo - -# copy local files -COPY root/ / - -# ports and volumes -EXPOSE 80 443 -VOLUME /config diff --git a/Jenkinsfile b/Jenkinsfile index 86696fe..1278654 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -40,7 +40,12 @@ pipeline { // Setup all the basic environment variables needed for the build stage("Set ENV Variables base"){ steps{ - sh '''docker pull quay.io/skopeo/stable:v1 || : ''' + sh '''#! /bin/bash + containers=$(docker ps -aq) + if [[ -n "${containers}" ]]; then + docker stop ${containers} + fi + docker system prune -af --volumes || : ''' script{ env.EXIT_STATUS = '' env.LS_RELEASE = sh( @@ -158,7 +163,7 @@ pipeline { env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME if (env.MULTIARCH == 'true') { - env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER } else { env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER } @@ -181,7 +186,7 @@ pipeline { env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME if (env.MULTIARCH == 'true') { - env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA } else { env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA } @@ -204,12 +209,12 @@ pipeline { env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME if (env.MULTIARCH == 'true') { - env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST } else { - env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST } - env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST - env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/' @@ -337,6 +342,8 @@ pipeline { git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-logo.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml + elif [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-icon.png ]]; then + sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-icon.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml fi if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then cd ${TEMPDIR}/unraid/templates/ @@ -428,8 +435,7 @@ pipeline { } steps{ sh '''#! /bin/bash - set -e - PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/organizations/linuxserver-ci/packages | jq -r '.[] | select(.name=="linuxserver/swag") | .uuid') + PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/organizations/linuxserver-ci/packages | jq -r '.[] | select(.name=="linuxserver/swag") | .uuid' || :) if [ -z "${PACKAGE_UUID}" ]; then echo "Adding package to Scarf.sh" curl -sX POST https://scarf.sh/api/v1/organizations/linuxserver-ci/packages \ @@ -509,41 +515,6 @@ pipeline { --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." } } - stage('Build ARMHF') { - agent { - label 'ARMHF' - } - steps { - echo "Running on node: ${NODE_NAME}" - echo 'Logging into Github' - sh '''#! /bin/bash - echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin - ''' - sh "sed -r -i 's|(^FROM .*)|\\1\\n\\nENV LSIO_FIRST_PARTY=true|g' Dockerfile.armhf" - sh "docker buildx build \ - --label \"org.opencontainers.image.created=${GITHUB_DATE}\" \ - --label \"org.opencontainers.image.authors=linuxserver.io\" \ - --label \"org.opencontainers.image.url=https://github.com/linuxserver/docker-swag/packages\" \ - --label \"org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-swag\" \ - --label \"org.opencontainers.image.source=https://github.com/linuxserver/docker-swag\" \ - --label \"org.opencontainers.image.version=${EXT_RELEASE_CLEAN}-ls${LS_TAG_NUMBER}\" \ - --label \"org.opencontainers.image.revision=${COMMIT_SHA}\" \ - --label \"org.opencontainers.image.vendor=linuxserver.io\" \ - --label \"org.opencontainers.image.licenses=GPL-3.0-only\" \ - --label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \ - --label \"org.opencontainers.image.title=Swag\" \ - --label \"org.opencontainers.image.description=SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let's Encrypt™) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let's Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention.\" \ - --no-cache --pull -f Dockerfile.armhf -t ${IMAGE}:arm32v7-${META_TAG} --platform=linux/arm/v7 \ - --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." - sh "docker tag ${IMAGE}:arm32v7-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}" - retry(5) { - sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}" - } - sh '''docker rmi \ - ${IMAGE}:arm32v7-${META_TAG} \ - ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} || :''' - } - } stage('Build ARM64') { agent { label 'ARM64' @@ -574,9 +545,12 @@ pipeline { retry(5) { sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}" } - sh '''docker rmi \ - ${IMAGE}:arm64v8-${META_TAG} \ - ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :''' + sh '''#! /bin/bash + containers=$(docker ps -aq) + if [[ -n "${containers}" ]]; then + docker stop ${containers} + fi + docker system prune -af --volumes || : ''' } } } @@ -637,13 +611,6 @@ pipeline { environment name: 'EXIT_STATUS', value: '' } steps { - sh '''#! /bin/bash - echo "Packages were updated. Cleaning up the image and exiting." - if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then - docker rmi ${IMAGE}:amd64-${META_TAG} - else - docker rmi ${IMAGE}:${META_TAG} - fi''' script{ env.EXIT_STATUS = 'ABORTED' } @@ -661,13 +628,6 @@ pipeline { } } steps { - sh '''#! /bin/bash - echo "There are no package updates. Cleaning up the image and exiting." - if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then - docker rmi ${IMAGE}:amd64-${META_TAG} - else - docker rmi ${IMAGE}:${META_TAG} - fi''' script{ env.EXIT_STATUS = 'ABORTED' } @@ -695,9 +655,7 @@ pipeline { set -e docker pull ghcr.io/linuxserver/ci:latest if [ "${MULTIARCH}" == "true" ]; then - docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} - docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG} docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} fi docker run --rm \ @@ -768,17 +726,6 @@ pipeline { done ''' } - sh '''#! /bin/bash - for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do - docker rmi \ - ${DELETEIMAGE}:${META_TAG} \ - ${DELETEIMAGE}:${EXT_RELEASE_TAG} \ - ${DELETEIMAGE}:latest || : - if [ -n "${SEMVER}" ]; then - docker rmi ${DELETEIMAGE}:${SEMVER} || : - fi - done - ''' } } } @@ -811,8 +758,6 @@ pipeline { echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin if [ "${CI}" == "false" ]; then - docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} - docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG} docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} fi @@ -820,49 +765,47 @@ pipeline { docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-latest docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} - docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} - docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-latest - docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-latest docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} if [ -n "${SEMVER}" ]; then docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER} - docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER} docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER} fi docker push ${MANIFESTIMAGE}:amd64-${META_TAG} docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} docker push ${MANIFESTIMAGE}:amd64-latest - docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG} - docker push ${MANIFESTIMAGE}:arm32v7-latest - docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker push ${MANIFESTIMAGE}:arm64v8-latest docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} if [ -n "${SEMVER}" ]; then docker push ${MANIFESTIMAGE}:amd64-${SEMVER} - docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER} docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER} fi docker manifest push --purge ${MANIFESTIMAGE}:latest || : - docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest - docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm + docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8 docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || : - docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} - docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} --os linux --arch arm + docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8 docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} || : - docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} - docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm + docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8 if [ -n "${SEMVER}" ]; then docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || : - docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} - docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm + docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8 fi + token=$(curl -sX GET "https://ghcr.io/token?scope=repository%3Alinuxserver%2F${CONTAINER_NAME}%3Apull" | jq -r '.token') + digest=$(curl -s \ + --header "Accept: application/vnd.docker.distribution.manifest.v2+json" \ + --header "Authorization: Bearer ${token}" \ + "https://ghcr.io/v2/linuxserver/${CONTAINER_NAME}/manifests/arm32v7-latest") + if [[ $(echo "$digest" | jq -r '.layers') != "null" ]]; then + docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest || : + docker manifest create ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:amd64-latest + docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest + fi docker manifest push --purge ${MANIFESTIMAGE}:latest docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} @@ -872,29 +815,6 @@ pipeline { done ''' } - sh '''#! /bin/bash - for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do - docker rmi \ - ${DELETEIMAGE}:amd64-${META_TAG} \ - ${DELETEIMAGE}:amd64-latest \ - ${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \ - ${DELETEIMAGE}:arm32v7-${META_TAG} \ - ${DELETEIMAGE}:arm32v7-latest \ - ${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \ - ${DELETEIMAGE}:arm64v8-${META_TAG} \ - ${DELETEIMAGE}:arm64v8-latest \ - ${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || : - if [ -n "${SEMVER}" ]; then - docker rmi \ - ${DELETEIMAGE}:amd64-${SEMVER} \ - ${DELETEIMAGE}:arm32v7-${SEMVER} \ - ${DELETEIMAGE}:arm64v8-${SEMVER} || : - fi - done - docker rmi \ - ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \ - ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || : - ''' } } } @@ -965,7 +885,6 @@ pipeline { stage('Pull Request Comment') { when { not {environment name: 'CHANGE_ID', value: ''} - environment name: 'CI', value: 'true' environment name: 'EXIT_STATUS', value: '' } steps { @@ -1019,16 +938,24 @@ pipeline { echo "$escaped_table" } - # Retrieve JSON data from URL - data=$(get_json "$CI_JSON_URL") - # Create table from JSON data - table=$(build_table "$data") - echo -e "$table" + if [[ "${CI}" = "true" ]]; then + # Retrieve JSON data from URL + data=$(get_json "$CI_JSON_URL") + # Create table from JSON data + table=$(build_table "$data") + echo -e "$table" - curl -X POST -H "Authorization: token $GITHUB_TOKEN" \ - -H "Accept: application/vnd.github.v3+json" \ - "https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \ - -d "{\\"body\\": \\"I am a bot, here are the test results for this PR: \\n${CI_URL}\\n${SHELLCHECK_URL}\\n${table}\\"}"''' + curl -X POST -H "Authorization: token $GITHUB_TOKEN" \ + -H "Accept: application/vnd.github.v3+json" \ + "https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \ + -d "{\\"body\\": \\"I am a bot, here are the test results for this PR: \\n${CI_URL}\\n${SHELLCHECK_URL}\\n${table}\\"}" + else + curl -X POST -H "Authorization: token $GITHUB_TOKEN" \ + -H "Accept: application/vnd.github.v3+json" \ + "https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \ + -d "{\\"body\\": \\"I am a bot, here is the pushed image/manifest for this PR: \\n\\n\\`${GITHUBIMAGE}:${META_TAG}\\`\\"}" + fi + ''' } } @@ -1055,6 +982,14 @@ pipeline { } } cleanup { + sh '''#! /bin/bash + echo "Performing docker system prune!!" + containers=$(docker ps -aq) + if [[ -n "${containers}" ]]; then + docker stop ${containers} + fi + docker system prune -af --volumes || : + ''' cleanWs() } } diff --git a/README.md b/README.md index 4543e8a..6933657 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ The architectures supported by this image are: | :----: | :----: | ---- | | x86-64 | ✅ | amd64-\ | | arm64 | ✅ | arm64v8-\ | -| armhf | ✅ | arm32v7-\ | +| armhf | ❌ | | ## Application Setup @@ -336,6 +336,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64 ## Versions +* **25.05.23:** - Rebase to Alpine 3.18, deprecate armhf. * **27.04.23:** - [Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) authelia-location.conf, authelia-server.conf, authentik-location.conf, authentik-server.conf - Simplify auth configs and fix Set-Cookie header bug. * **13.04.23:** - [Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) nginx.conf, authelia-location.conf, authentik-location.conf, and site-confs/default.conf - Move ssl.conf include to default.conf. Remove Authorization headers in authelia. Sort proxy_set_header in authelia and authentik. * **25.03.23:** - Fix renewal post hook. diff --git a/jenkins-vars.yml b/jenkins-vars.yml index 989b638..fe053cb 100644 --- a/jenkins-vars.yml +++ b/jenkins-vars.yml @@ -6,6 +6,7 @@ external_type: pip_version release_type: stable release_tag: latest ls_branch: master +build_armhf: false repo_vars: - EXT_PIP = 'certbot' - BUILD_VERSION_ARG = 'CERTBOT_VERSION' diff --git a/package_versions.txt b/package_versions.txt index feaa327..8873fd1 100755 --- a/package_versions.txt +++ b/package_versions.txt @@ -1,339 +1,343 @@ -NAME VERSION TYPE -ConfigArgParse 1.5.3 python -PyJWT 2.7.0 python -PyYAML 6.0 python -acme 2.6.0 python -alpine-baselayout 3.4.0-r0 apk -alpine-baselayout-data 3.4.0-r0 apk -alpine-keys 2.4-r1 apk -alpine-release 3.17.3-r0 apk -aom-libs 3.5.0-r0 apk -apache2-utils 2.4.57-r0 apk -apk-tools 2.12.10-r1 apk -apr 1.7.2-r0 apk -apr-util 1.6.3-r0 apk -argon2-libs 20190702-r2 apk -attrs 23.1.0 python -azure-common 1.1.28 python -azure-core 1.26.4 python -azure-identity 1.12.0 python -azure-mgmt-core 1.4.0 python -azure-mgmt-dns 8.0.0 python -bash 5.2.15-r0 apk -beautifulsoup4 4.12.2 python -boto3 1.26.131 python -botocore 1.29.131 python -brotli-libs 1.0.9-r9 apk -bs4 0.0.1 python -busybox 1.35.0 binary -busybox 1.35.0-r29 apk -busybox-binsh 1.35.0-r29 apk -c-client 2007f-r14 apk -ca-certificates 20230506-r0 apk -ca-certificates-bundle 20220614-r4 apk -cachetools 5.3.0 python -certbot 2.6.0 python -certbot-dns-acmedns 0.1.0 python -certbot-dns-aliyun 2.0.0 python -certbot-dns-azure 2.1.0 python -certbot-dns-cloudflare 2.6.0 python -certbot-dns-cpanel 0.4.0 python -certbot-dns-desec 1.2.1 python -certbot-dns-digitalocean 2.6.0 python -certbot-dns-directadmin 1.0.3 python -certbot-dns-dnsimple 2.6.0 python -certbot-dns-dnsmadeeasy 2.6.0 python -certbot-dns-dnspod 0.1.0 python -certbot-dns-do 0.31.0 python -certbot-dns-domeneshop 0.2.9 python -certbot-dns-duckdns 1.3 python -certbot-dns-dynu 0.0.4 python -certbot-dns-gehirn 2.6.0 python -certbot-dns-godaddy 0.2.2 python -certbot-dns-google 2.6.0 python -certbot-dns-google-domains 0.1.11 python -certbot-dns-he 1.0.0 python -certbot-dns-hetzner 2.0.0 python -certbot-dns-infomaniak 0.2.1 python -certbot-dns-inwx 2.2.0 python -certbot-dns-ionos 2022.11.24 python -certbot-dns-linode 2.6.0 python -certbot-dns-loopia 1.0.1 python -certbot-dns-luadns 2.6.0 python -certbot-dns-netcup 1.2.0 python -certbot-dns-njalla 1.0.0 python -certbot-dns-nsone 2.6.0 python -certbot-dns-ovh 2.6.0 python -certbot-dns-porkbun 0.8 python -certbot-dns-rfc2136 2.6.0 python -certbot-dns-route53 2.6.0 python -certbot-dns-sakuracloud 2.6.0 python -certbot-dns-standalone 1.1 python -certbot-dns-transip 0.5.2 python -certbot-dns-vultr 1.0.3 python -certbot-plugin-gandi 1.4.3 python -certifi 2023.5.7 python -cffi 1.15.1 python -charset-normalizer 3.1.0 python -cloudflare 2.11.1 python -configobj 5.0.8 python -coreutils 9.1-r0 apk -cryptography 40.0.2 python -curl 8.0.1-r0 apk -dataclasses-json 0.5.7 python -distro 1.8.0 python -dns-lexicon 3.11.7 python -dnslib 0.9.23 python -dnspython 2.3.0 python -domeneshop 0.4.3 python -fail2ban 1.0.2 python -fail2ban 1.0.2-r0 apk -filelock 3.12.0 python -fontconfig 2.14.1-r0 apk -freetype 2.12.1-r0 apk -future 0.18.3 python -gdbm 1.23-r0 apk -git 2.38.5-r0 apk -git-perl 2.38.5-r0 apk -gmp 6.2.1-r2 apk -gnupg 2.2.40-r0 apk -gnupg-dirmngr 2.2.40-r0 apk -gnupg-gpgconf 2.2.40-r0 apk -gnupg-utils 2.2.40-r0 apk -gnupg-wks-client 2.2.40-r0 apk -gnutls 3.7.8-r3 apk -google-api-core 2.11.0 python -google-api-python-client 2.86.0 python -google-auth 2.17.3 python -google-auth-httplib2 0.1.0 python -googleapis-common-protos 1.59.0 python -gpg 2.2.40-r0 apk -gpg-agent 2.2.40-r0 apk -gpg-wks-server 2.2.40-r0 apk -gpgsm 2.2.40-r0 apk -gpgv 2.2.40-r0 apk -httplib2 0.22.0 python -icu-data-en 72.1-r1 apk -icu-libs 72.1-r1 apk -idna 3.4 python -importlib-metadata 6.6.0 python -ip6tables 1.8.8-r2 apk -iptables 1.8.8-r2 apk -isodate 0.6.1 python -jmespath 1.0.1 python -josepy 1.13.0 python -jq 1.6-r2 apk -jsonlines 3.1.0 python -jsonpickle 3.0.1 python -libacl 2.3.1-r1 apk -libassuan 2.5.5-r1 apk -libattr 2.5.1-r2 apk -libavif 0.11.1-r0 apk -libbsd 0.11.7-r0 apk -libbz2 1.0.8-r4 apk -libc-utils 0.7.2-r3 apk -libcrypto3 3.0.8-r4 apk -libcurl 8.0.1-r0 apk -libdav1d 1.0.0-r2 apk -libedit 20221030.3.1-r0 apk -libevent 2.1.12-r5 apk -libexpat 2.5.0-r0 apk -libffi 3.4.4-r0 apk -libgcc 12.2.1_git20220924-r4 apk -libgcrypt 1.10.1-r0 apk -libgd 2.3.3-r3 apk -libgpg-error 1.46-r1 apk -libice 1.0.10-r1 apk -libidn 1.41-r0 apk -libintl 0.21.1-r1 apk -libjpeg-turbo 2.1.4-r0 apk -libksba 1.6.3-r0 apk -libldap 2.6.3-r6 apk -libmaxminddb-libs 1.7.1-r0 apk -libmcrypt 2.5.8-r10 apk -libmd 1.0.4-r0 apk -libmemcached-libs 1.0.18-r5 apk -libmnl 1.0.5-r0 apk -libnftnl 1.2.4-r0 apk -libpng 1.6.38-r0 apk -libpq 15.2-r0 apk -libproc 3.3.17-r2 apk -libsasl 2.1.28-r3 apk -libseccomp 2.5.4-r0 apk -libsm 1.2.3-r1 apk -libsodium 1.0.18-r2 apk -libssl3 3.0.8-r4 apk -libstdc++ 12.2.1_git20220924-r4 apk -libtasn1 4.19.0-r0 apk -libunistring 1.1-r0 apk -libuuid 2.38.1-r1 apk -libwebp 1.2.4-r1 apk -libx11 1.8.4-r0 apk -libxau 1.0.10-r0 apk -libxcb 1.15-r0 apk -libxdmcp 1.1.4-r0 apk -libxext 1.3.5-r0 apk -libxml2 2.10.4-r0 apk -libxpm 3.5.15-r0 apk -libxslt 1.1.37-r1 apk -libxt 1.2.1-r0 apk -libzip 1.9.2-r2 apk -linux-pam 1.5.2-r1 apk -logrotate 3.20.1-r3 apk -loopialib 0.2.0 python -lxml 4.9.2 python -lz4-libs 1.9.4-r1 apk -marshmallow 3.19.0 python -marshmallow-enum 1.5.1 python -memcached 1.6.17 binary -memcached 1.6.17-r0 apk -mock 5.0.2 python -mpdecimal 2.5.1-r1 apk -msal 1.22.0 python -msal-extensions 1.0.0 python -msrest 0.7.1 python -musl 1.2.3-r4 apk -musl-utils 1.2.3-r4 apk -mypy-extensions 1.0.0 python -nano 7.0-r0 apk -ncurses-libs 6.3_p20221119-r0 apk -ncurses-terminfo-base 6.3_p20221119-r0 apk -netcat-openbsd 1.130-r4 apk -nettle 3.8.1-r0 apk -nghttp2-libs 1.51.0-r0 apk -nginx 1.22.1-r0 apk -nginx-mod-devel-kit 1.22.1-r0 apk -nginx-mod-http-brotli 1.22.1-r0 apk -nginx-mod-http-dav-ext 1.22.1-r0 apk -nginx-mod-http-echo 1.22.1-r0 apk -nginx-mod-http-fancyindex 1.22.1-r0 apk -nginx-mod-http-geoip2 1.22.1-r0 apk -nginx-mod-http-headers-more 1.22.1-r0 apk -nginx-mod-http-image-filter 1.22.1-r0 apk -nginx-mod-http-perl 1.22.1-r0 apk -nginx-mod-http-redis2 1.22.1-r0 apk -nginx-mod-http-set-misc 1.22.1-r0 apk -nginx-mod-http-upload-progress 1.22.1-r0 apk -nginx-mod-http-xslt-filter 1.22.1-r0 apk -nginx-mod-mail 1.22.1-r0 apk -nginx-mod-rtmp 1.22.1-r0 apk -nginx-mod-stream 1.22.1-r0 apk -nginx-mod-stream-geoip2 1.22.1-r0 apk -nginx-vim 1.22.1-r0 apk -npth 1.6-r2 apk -oauthlib 3.2.2 python -oniguruma 6.9.8-r0 apk -openssl 3.0.8-r4 apk -p11-kit 0.24.1-r1 apk -packaging 23.1 python -parsedatetime 2.6 python -pcre 8.45-r2 apk -pcre2 10.42-r0 apk -perl 5.36.0-r1 apk -perl-error 0.17029-r1 apk -perl-git 2.38.5-r0 apk -php-cli 8.1.18 binary -php-fpm 8.1.18 binary -php81 8.1.18-r0 apk -php81-bcmath 8.1.18-r0 apk -php81-bz2 8.1.18-r0 apk -php81-common 8.1.18-r0 apk -php81-ctype 8.1.18-r0 apk -php81-curl 8.1.18-r0 apk -php81-dom 8.1.18-r0 apk -php81-exif 8.1.18-r0 apk -php81-fileinfo 8.1.18-r0 apk -php81-fpm 8.1.18-r0 apk -php81-ftp 8.1.18-r0 apk -php81-gd 8.1.18-r0 apk -php81-gmp 8.1.18-r0 apk -php81-iconv 8.1.18-r0 apk -php81-imap 8.1.18-r0 apk -php81-intl 8.1.18-r0 apk -php81-ldap 8.1.18-r0 apk -php81-mbstring 8.1.18-r0 apk -php81-mysqli 8.1.18-r0 apk -php81-mysqlnd 8.1.18-r0 apk -php81-opcache 8.1.18-r0 apk -php81-openssl 8.1.18-r0 apk -php81-pdo 8.1.18-r0 apk -php81-pdo_mysql 8.1.18-r0 apk -php81-pdo_odbc 8.1.18-r0 apk -php81-pdo_pgsql 8.1.18-r0 apk -php81-pdo_sqlite 8.1.18-r0 apk -php81-pear 8.1.18-r0 apk -php81-pecl-apcu 5.1.22-r0 apk -php81-pecl-igbinary 3.2.12-r0 apk -php81-pecl-mailparse 3.1.4-r0 apk -php81-pecl-mcrypt 1.0.6-r0 apk -php81-pecl-memcached 3.2.0-r0 apk -php81-pecl-redis 5.3.7-r0 apk -php81-pecl-xmlrpc 1.0.0_rc3-r1 apk -php81-pgsql 8.1.18-r0 apk -php81-phar 8.1.18-r0 apk -php81-posix 8.1.18-r0 apk -php81-session 8.1.18-r0 apk -php81-simplexml 8.1.18-r0 apk -php81-soap 8.1.18-r0 apk -php81-sockets 8.1.18-r0 apk -php81-sodium 8.1.18-r0 apk -php81-sqlite3 8.1.18-r0 apk -php81-tokenizer 8.1.18-r0 apk -php81-xml 8.1.18-r0 apk -php81-xmlreader 8.1.18-r0 apk -php81-xmlwriter 8.1.18-r0 apk -php81-xsl 8.1.18-r0 apk -php81-zip 8.1.18-r0 apk -pinentry 1.2.1-r0 apk -pip 23.1.2 python -pkb-client 1.2 python -popt 1.19-r0 apk -portalocker 2.7.0 python -procps 3.3.17-r2 apk -protobuf 4.23.0 python -publicsuffixlist 0.9.4 python -pyOpenSSL 23.1.1 python -pyRFC3339 1.1 python -pyacmedns 0.4 python -pyasn1 0.5.0 python -pyasn1-modules 0.3.0 python -pycparser 2.21 python -pyparsing 3.0.9 python -python 3.10.11 binary -python-dateutil 2.8.2 python -python-digitalocean 1.17.0 python -python-transip 0.6.0 python -python3 3.10.11-r0 apk -pytz 2023.3 python -readline 8.2.0-r0 apk -requests 2.30.0 python -requests-file 1.5.1 python -requests-mock 1.10.0 python -requests-oauthlib 1.3.1 python -rsa 4.9 python -s3transfer 0.6.1 python -scanelf 1.3.5-r1 apk -setuptools 65.5.0 python -shadow 4.13-r0 apk -six 1.16.0 python -skalibs 2.12.0.1-r0 apk -soupsieve 2.4.1 python -sqlite-libs 3.40.1-r0 apk -ssl_client 1.35.0-r29 apk -tiff 4.4.0-r3 apk -tldextract 3.4.1 python -typing-inspect 0.8.0 python -typing_extensions 4.5.0 python -tzdata 2023c-r0 apk -unixodbc 2.3.11-r0 apk -uritemplate 4.1.1 python -urllib3 1.26.15 python -utmps-libs 0.1.2.0-r1 apk -wheel 0.40.0 python -whois 5.5.14-r0 apk -xz 5.2.9-r0 apk -xz-libs 5.2.9-r0 apk -zipp 3.15.0 python -zlib 1.2.13-r0 apk -zope.interface 6.0 python -zstd-libs 1.5.5-r0 apk +NAME VERSION TYPE +ConfigArgParse 1.5.3 python +PyJWT 2.7.0 python +PyYAML 6.0 python +acme 2.6.0 python +alpine-baselayout 3.4.3-r1 apk +alpine-baselayout-data 3.4.3-r1 apk +alpine-keys 2.4-r1 apk +alpine-release 3.18.0-r0 apk +aom-libs 3.6.1-r0 apk +apache2-utils 2.4.57-r2 apk +apk-tools 2.14.0-r2 apk +apr 1.7.4-r0 apk +apr-util 1.6.3-r1 apk +argon2-libs 20190702-r4 apk +attrs 23.1.0 python +azure-common 1.1.28 python +azure-core 1.26.4 python +azure-identity 1.13.0 python +azure-mgmt-core 1.4.0 python +azure-mgmt-dns 8.0.0 python +bash 5.2.15-r5 apk +beautifulsoup4 4.12.2 python +boto3 1.26.143 python +botocore 1.29.143 python +brotli-libs 1.0.9-r14 apk +bs4 0.0.1 python +busybox 1.36.0 binary +busybox 1.36.0-r9 apk +busybox-binsh 1.36.0-r9 apk +c-client 2007f-r15 apk +ca-certificates 20230506-r0 apk +ca-certificates-bundle 20230506-r0 apk +cachetools 5.3.1 python +certbot 2.6.0 python +certbot-dns-acmedns 0.1.0 python +certbot-dns-aliyun 2.0.0 python +certbot-dns-azure 2.1.0 python +certbot-dns-cloudflare 2.6.0 python +certbot-dns-cpanel 0.4.0 python +certbot-dns-desec 1.2.1 python +certbot-dns-digitalocean 2.6.0 python +certbot-dns-directadmin 1.0.3 python +certbot-dns-dnsimple 2.6.0 python +certbot-dns-dnsmadeeasy 2.6.0 python +certbot-dns-dnspod 0.1.0 python +certbot-dns-do 0.31.0 python +certbot-dns-domeneshop 0.2.9 python +certbot-dns-duckdns 1.3 python +certbot-dns-dynu 0.0.4 python +certbot-dns-gehirn 2.6.0 python +certbot-dns-godaddy 0.2.2 python +certbot-dns-google 2.6.0 python +certbot-dns-google-domains 0.1.11 python +certbot-dns-he 1.0.0 python +certbot-dns-hetzner 2.0.0 python +certbot-dns-infomaniak 0.2.1 python +certbot-dns-inwx 2.2.0 python +certbot-dns-ionos 2022.11.24 python +certbot-dns-linode 2.6.0 python +certbot-dns-loopia 1.0.1 python +certbot-dns-luadns 2.6.0 python +certbot-dns-netcup 1.3.0 python +certbot-dns-njalla 1.0.0 python +certbot-dns-nsone 2.6.0 python +certbot-dns-ovh 2.6.0 python +certbot-dns-porkbun 0.8 python +certbot-dns-rfc2136 2.6.0 python +certbot-dns-route53 2.6.0 python +certbot-dns-sakuracloud 2.6.0 python +certbot-dns-standalone 1.1 python +certbot-dns-transip 0.5.2 python +certbot-dns-vultr 1.1.0 python +certbot-plugin-gandi 1.4.3 python +certifi 2023.5.7 python +cffi 1.15.1 python +charset-normalizer 3.1.0 python +cloudflare 2.11.6 python +configobj 5.0.8 python +coreutils 9.3-r1 apk +cryptography 41.0.0 python +curl 8.1.1-r1 apk +dataclasses-json 0.5.7 python +distro 1.8.0 python +dns-lexicon 3.11.7 python +dnslib 0.9.23 python +dnspython 2.3.0 python +domeneshop 0.4.3 python +fail2ban 1.0.2 python +fail2ban 1.0.2-r2 apk +fail2ban-pyc 1.0.2-r2 apk +filelock 3.12.0 python +fontconfig 2.14.2-r3 apk +freetype 2.13.0-r5 apk +future 0.18.3 python +gdbm 1.23-r1 apk +git 2.40.1-r0 apk +git-perl 2.40.1-r0 apk +gmp 6.2.1-r3 apk +gnupg 2.4.1-r1 apk +gnupg-dirmngr 2.4.1-r1 apk +gnupg-gpgconf 2.4.1-r1 apk +gnupg-keyboxd 2.4.1-r1 apk +gnupg-utils 2.4.1-r1 apk +gnupg-wks-client 2.4.1-r1 apk +gnutls 3.8.0-r2 apk +google-api-core 2.11.0 python +google-api-python-client 2.88.0 python +google-auth 2.19.0 python +google-auth-httplib2 0.1.0 python +googleapis-common-protos 1.59.0 python +gpg 2.4.1-r1 apk +gpg-agent 2.4.1-r1 apk +gpg-wks-server 2.4.1-r1 apk +gpgsm 2.4.1-r1 apk +gpgv 2.4.1-r1 apk +httplib2 0.22.0 python +icu-data-en 73.1-r1 apk +icu-libs 73.1-r1 apk +idna 3.4 python +importlib-metadata 6.6.0 python +ip6tables 1.8.9-r2 apk +iptables 1.8.9-r2 apk +isodate 0.6.1 python +jmespath 1.0.1 python +josepy 1.13.0 python +jq 1.6-r3 apk +jsonlines 3.1.0 python +jsonpickle 3.0.1 python +libacl 2.3.1-r3 apk +libassuan 2.5.5-r2 apk +libattr 2.5.1-r4 apk +libavif 0.11.1-r2 apk +libbsd 0.11.7-r1 apk +libbz2 1.0.8-r5 apk +libc-utils 0.7.2-r5 apk +libcrypto3 3.1.1-r1 apk +libcurl 8.1.1-r1 apk +libdav1d 1.2.0-r0 apk +libedit 20221030.3.1-r1 apk +libevent 2.1.12-r6 apk +libexpat 2.5.0-r1 apk +libffi 3.4.4-r2 apk +libgcc 12.2.1_git20220924-r10 apk +libgcrypt 1.10.2-r1 apk +libgd 2.3.3-r7 apk +libgpg-error 1.47-r1 apk +libice 1.1.1-r2 apk +libidn2 2.3.4-r1 apk +libintl 0.21.1-r7 apk +libjpeg-turbo 2.1.5.1-r2 apk +libksba 1.6.3-r2 apk +libldap 2.6.4-r3 apk +libmaxminddb-libs 1.7.1-r1 apk +libmcrypt 2.5.8-r10 apk +libmd 1.0.4-r2 apk +libmemcached-libs 1.1.4-r1 apk +libmnl 1.0.5-r1 apk +libncursesw 6.4_p20230506-r0 apk +libnftnl 1.2.5-r1 apk +libpanelw 6.4_p20230506-r0 apk +libpng 1.6.39-r3 apk +libpq 15.3-r0 apk +libproc2 4.0.3-r1 apk +libsasl 2.1.28-r4 apk +libseccomp 2.5.4-r2 apk +libsm 1.2.4-r1 apk +libsodium 1.0.18-r3 apk +libssl3 3.1.1-r1 apk +libstdc++ 12.2.1_git20220924-r10 apk +libtasn1 4.19.0-r1 apk +libunistring 1.1-r1 apk +libuuid 2.38.1-r7 apk +libwebp 1.3.0-r2 apk +libx11 1.8.4-r3 apk +libxau 1.0.11-r2 apk +libxcb 1.15-r1 apk +libxdmcp 1.1.4-r2 apk +libxext 1.3.5-r2 apk +libxml2 2.11.4-r0 apk +libxpm 3.5.16-r1 apk +libxslt 1.1.38-r0 apk +libxt 1.3.0-r2 apk +libzip 1.9.2-r2 apk +linux-pam 1.5.2-r10 apk +logrotate 3.21.0-r1 apk +loopialib 0.2.0 python +lxml 4.9.2 python +lz4-libs 1.9.4-r4 apk +marshmallow 3.19.0 python +marshmallow-enum 1.5.1 python +memcached 1.6.20 binary +memcached 1.6.20-r0 apk +mock 5.0.2 python +mpdecimal 2.5.1-r2 apk +msal 1.22.0 python +msal-extensions 1.0.0 python +msrest 0.7.1 python +musl 1.2.4-r0 apk +musl-utils 1.2.4-r0 apk +mypy-extensions 1.0.0 python +nano 7.2-r1 apk +ncurses-terminfo-base 6.4_p20230506-r0 apk +netcat-openbsd 1.219-r1 apk +nettle 3.8.1-r2 apk +nghttp2-libs 1.53.0-r0 apk +nginx 1.24.0-r6 apk +nginx-mod-devel-kit 1.24.0-r6 apk +nginx-mod-http-brotli 1.24.0-r6 apk +nginx-mod-http-dav-ext 1.24.0-r6 apk +nginx-mod-http-echo 1.24.0-r6 apk +nginx-mod-http-fancyindex 1.24.0-r6 apk +nginx-mod-http-geoip2 1.24.0-r6 apk +nginx-mod-http-headers-more 1.24.0-r6 apk +nginx-mod-http-image-filter 1.24.0-r6 apk +nginx-mod-http-perl 1.24.0-r6 apk +nginx-mod-http-redis2 1.24.0-r6 apk +nginx-mod-http-set-misc 1.24.0-r6 apk +nginx-mod-http-upload-progress 1.24.0-r6 apk +nginx-mod-http-xslt-filter 1.24.0-r6 apk +nginx-mod-mail 1.24.0-r6 apk +nginx-mod-rtmp 1.24.0-r6 apk +nginx-mod-stream 1.24.0-r6 apk +nginx-mod-stream-geoip2 1.24.0-r6 apk +nginx-vim 1.24.0-r6 apk +npth 1.6-r4 apk +oauthlib 3.2.2 python +oniguruma 6.9.8-r1 apk +openssl 3.1.0-r4 apk +p11-kit 0.24.1-r2 apk +packaging 23.1 python +parsedatetime 2.6 python +pcre 8.45-r3 apk +pcre2 10.42-r1 apk +perl 5.36.1-r2 apk +perl-error 0.17029-r1 apk +perl-git 2.40.1-r0 apk +php-cli 8.2.6 binary +php-fpm 8.2.6 binary +php82 8.2.6-r1 apk +php82-bcmath 8.2.6-r1 apk +php82-bz2 8.2.6-r1 apk +php82-common 8.2.6-r1 apk +php82-ctype 8.2.6-r1 apk +php82-curl 8.2.6-r1 apk +php82-dom 8.2.6-r1 apk +php82-exif 8.2.6-r1 apk +php82-fileinfo 8.2.6-r1 apk +php82-fpm 8.2.6-r1 apk +php82-ftp 8.2.6-r1 apk +php82-gd 8.2.6-r1 apk +php82-gmp 8.2.6-r1 apk +php82-iconv 8.2.6-r1 apk +php82-imap 8.2.6-r1 apk +php82-intl 8.2.6-r1 apk +php82-ldap 8.2.6-r1 apk +php82-mbstring 8.2.6-r1 apk +php82-mysqli 8.2.6-r1 apk +php82-mysqlnd 8.2.6-r1 apk +php82-opcache 8.2.6-r1 apk +php82-openssl 8.2.6-r1 apk +php82-pdo 8.2.6-r1 apk +php82-pdo_mysql 8.2.6-r1 apk +php82-pdo_odbc 8.2.6-r1 apk +php82-pdo_pgsql 8.2.6-r1 apk +php82-pdo_sqlite 8.2.6-r1 apk +php82-pear 8.2.6-r1 apk +php82-pecl-apcu 5.1.22-r0 apk +php82-pecl-igbinary 3.2.14-r0 apk +php82-pecl-mcrypt 1.0.6-r0 apk +php82-pecl-memcached 3.2.0-r1 apk +php82-pecl-msgpack 2.2.0_rc2-r1 apk +php82-pecl-redis 5.3.7-r2 apk +php82-pgsql 8.2.6-r1 apk +php82-phar 8.2.6-r1 apk +php82-posix 8.2.6-r1 apk +php82-session 8.2.6-r1 apk +php82-simplexml 8.2.6-r1 apk +php82-soap 8.2.6-r1 apk +php82-sockets 8.2.6-r1 apk +php82-sodium 8.2.6-r1 apk +php82-sqlite3 8.2.6-r1 apk +php82-tokenizer 8.2.6-r1 apk +php82-xml 8.2.6-r1 apk +php82-xmlreader 8.2.6-r1 apk +php82-xmlwriter 8.2.6-r1 apk +php82-xsl 8.2.6-r1 apk +php82-zip 8.2.6-r1 apk +pinentry 1.2.1-r1 apk +pip 23.1.2 python +pkb-client 1.2 python +popt 1.19-r2 apk +portalocker 2.7.0 python +procps-ng 4.0.3-r1 apk +protobuf 4.23.2 python +publicsuffixlist 0.9.4 python +pyOpenSSL 23.2.0 python +pyRFC3339 1.1 python +pyacmedns 0.4 python +pyasn1 0.5.0 python +pyasn1-modules 0.3.0 python +pyc 0.1-r0 apk +pycparser 2.21 python +pyparsing 3.0.9 python +python 3.11.3 binary +python-dateutil 2.8.2 python +python-digitalocean 1.17.0 python +python-transip 0.6.0 python +python3 3.11.3-r11 apk +python3-pyc 3.11.3-r11 apk +python3-pycache-pyc0 3.11.3-r11 apk +pytz 2023.3 python +readline 8.2.1-r1 apk +requests 2.31.0 python +requests-file 1.5.1 python +requests-mock 1.10.0 python +requests-oauthlib 1.3.1 python +rsa 4.9 python +s3transfer 0.6.1 python +scanelf 1.3.7-r1 apk +setuptools 65.5.0 python +shadow 4.13-r2 apk +six 1.16.0 python +skalibs 2.13.1.1-r1 apk +soupsieve 2.4.1 python +sqlite-libs 3.41.2-r2 apk +ssl_client 1.36.0-r9 apk +tiff 4.5.0-r6 apk +tldextract 3.4.4 python +typing-inspect 0.9.0 python +typing_extensions 4.6.2 python +tzdata 2023c-r1 apk +unixodbc 2.3.11-r2 apk +uritemplate 4.1.1 python +urllib3 1.26.16 python +utmps-libs 0.1.2.1-r1 apk +wheel 0.40.0 python +whois 5.5.17-r0 apk +xz-libs 5.4.3-r0 apk +zipp 3.15.0 python +zlib 1.2.13-r1 apk +zope.interface 6.0 python +zstd-libs 1.5.5-r4 apk diff --git a/readme-vars.yml b/readme-vars.yml index f36b368..a903adc 100644 --- a/readme-vars.yml +++ b/readme-vars.yml @@ -14,7 +14,6 @@ project_blurb_optional_extras: [] available_architectures: - { arch: "{{ arch_x86_64 }}", tag: "amd64-latest"} - { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"} - - { arch: "{{ arch_armhf }}", tag: "arm32v7-latest"} # development version development_versions: false @@ -154,6 +153,7 @@ app_setup_block: | # changelog changelogs: + - { date: "25.05.23:", desc: "Rebase to Alpine 3.18, deprecate armhf." } - { date: "27.04.23:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) authelia-location.conf, authelia-server.conf, authentik-location.conf, authentik-server.conf - Simplify auth configs and fix Set-Cookie header bug." } - { date: "13.04.23:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) nginx.conf, authelia-location.conf, authentik-location.conf, and site-confs/default.conf - Move ssl.conf include to default.conf. Remove Authorization headers in authelia. Sort proxy_set_header in authelia and authentik." } - { date: "25.03.23:", desc: "Fix renewal post hook." } diff --git a/root/defaults/fail2ban/filter.d/nginx-unauthorized.conf b/root/defaults/fail2ban/filter.d/nginx-unauthorized.conf index fbd3385..3009f33 100644 --- a/root/defaults/fail2ban/filter.d/nginx-unauthorized.conf +++ b/root/defaults/fail2ban/filter.d/nginx-unauthorized.conf @@ -3,5 +3,3 @@ [Definition] failregex = ^.*"(GET|POST|HEAD).*" (401) .*$ - -ignoreregex = .*(?i)plex.*