Compare commits

...

52 Commits

Author SHA1 Message Date
LinuxServer-CI
ec6fca9418 Bot Updating Package Versions 2024-01-27 18:57:53 +00:00
Eric Nemchik
25a2832056 Merge pull request #441 from linuxserver/3.19
Rebase to Alpine 3.19 with php 8.3, add root periodic crontabs for logrotate
2024-01-27 12:52:12 -06:00
LinuxServer-CI
3eabd75388 Bot Updating Package Versions 2024-01-27 03:17:21 +00:00
Eric Nemchik
6ed17c1d52 Merge branch 'master' into 3.19 2024-01-23 20:27:06 -06:00
LinuxServer-CI
e568785908 Bot Updating Package Versions 2024-01-20 03:20:49 +00:00
LinuxServer-CI
bcee5182e6 Bot Updating Package Versions 2024-01-13 03:22:08 +00:00
LinuxServer-CI
514cf42606 Bot Updating Templated Files 2024-01-13 03:17:41 +00:00
LinuxServer-CI
270a0d57c9 Bot Updating Package Versions 2024-01-09 20:00:59 +00:00
LinuxServer-CI
6f51d8be26 Bot Updating Templated Files 2024-01-09 19:54:13 +00:00
LinuxServer-CI
d915d516cd Bot Updating Templated Files 2024-01-09 19:47:00 +00:00
Eric Nemchik
ffb03a03f5 Merge pull request #425 from Peglah/dns_glesys
Add GleSYS DNS plugin
2024-01-09 13:43:24 -06:00
Eric Nemchik
9693b5884f Merge branch 'master' into dns_glesys 2024-01-09 13:28:15 -06:00
LinuxServer-CI
87ca95c8c2 Bot Updating Package Versions 2024-01-06 03:21:45 +00:00
Peglah
1a376a6975 rebased 2024-01-01 09:49:44 +01:00
Peglah
8e74593f2c Rebase, Add GleSYS DNS plugin 2024-01-01 09:40:00 +01:00
LinuxServer-CI
00d1bce24d Bot Updating Package Versions 2024-01-01 09:39:14 +01:00
LinuxServer-CI
be853fcb4b Bot Updating Package Versions 2024-01-01 09:39:14 +01:00
LinuxServer-CI
2fb6c1f51f Bot Updating Package Versions 2024-01-01 09:39:14 +01:00
LinuxServer-CI
9339d287d2 Bot Updating Package Versions 2024-01-01 09:39:14 +01:00
LinuxServer-CI
6b62a27bf0 Bot Updating Templated Files 2024-01-01 09:39:14 +01:00
Eric Nemchik
c50ca83ef9 Deprecate certbot-dns-dynu
Signed-off-by: GitHub <noreply@github.com>
2024-01-01 09:39:10 +01:00
LinuxServer-CI
bd94a67024 Bot Updating Package Versions 2024-01-01 09:38:33 +01:00
LinuxServer-CI
11e060174b Bot Updating Package Versions 2024-01-01 09:38:33 +01:00
driz
5f8a531a93 Update nginx-deny.conf 2024-01-01 09:38:33 +01:00
LinuxServer-CI
d2f843c4d1 Bot Updating Package Versions 2024-01-01 09:38:33 +01:00
LinuxServer-CI
ad6bb30bfc Bot Updating Package Versions 2024-01-01 09:38:33 +01:00
LinuxServer-CI
11991aa0b3 Bot Updating Package Versions 2024-01-01 09:38:33 +01:00
LinuxServer-CI
c76e664965 Bot Updating Templated Files 2024-01-01 09:38:33 +01:00
Eric Nemchik
ccbd19fe62 Update readme-vars.yml 2024-01-01 09:38:29 +01:00
LinuxServer-CI
2573b79bad Bot Updating Package Versions 2024-01-01 09:37:47 +01:00
LinuxServer-CI
0e5ba91588 Bot Updating Templated Files 2024-01-01 09:37:47 +01:00
Eric Nemchik
4f92460b29 Run certbot as root to allow fix http validation
Fixes regression from https://github.com/linuxserver/docker-swag/pull/399

Signed-off-by: Eric Nemchik <eric@nemchik.com>
2024-01-01 09:37:39 +01:00
Eric Nemchik
ad1884e5b4 Fix index.php being downloaded on 404
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2024-01-01 09:36:59 +01:00
LinuxServer-CI
70bea0a816 Bot Updating Package Versions 2024-01-01 09:23:16 +01:00
Eric Nemchik
85e44eb399 fix chown for group
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2024-01-01 09:23:16 +01:00
Eric Nemchik
4d3f30b67c Move crontabs to etc
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2024-01-01 09:23:16 +01:00
Eric Nemchik
9da97969f8 Crontabs folder created in base
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2024-01-01 09:23:16 +01:00
Eric Nemchik
2cd84ad12b cron in base
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2024-01-01 09:23:16 +01:00
Eric Nemchik
757ef31216 set owner of certbot folders to abc
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2024-01-01 09:23:16 +01:00
Eric Nemchik
767aad2286 Fix perms
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2024-01-01 09:23:16 +01:00
Eric Nemchik
4cb18bc106 standard cron
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2024-01-01 09:23:16 +01:00
LinuxServer-CI
b1cf98d214 Bot Updating Package Versions 2024-01-01 09:23:16 +01:00
LinuxServer-CI
48dfde26c7 Bot Updating Templated Files 2024-01-01 09:23:16 +01:00
LinuxServer-CI
320404d358 Bot Updating Package Versions 2024-01-01 09:23:16 +01:00
aptalca
52ae487bea install mcrypt from community repo on alpine edge 2024-01-01 09:23:16 +01:00
LinuxServer-CI
65f62d14a6 Bot Updating Package Versions 2024-01-01 09:23:16 +01:00
LinuxServer-CI
accd20cc7a Bot Updating Package Versions 2023-12-30 03:18:23 +00:00
Eric Nemchik
24b3540da5 Fix php83-pecl-mcrypt
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-12-23 16:18:56 -06:00
Eric Nemchik
bc31b51afb Rebase to Alpine 3.19 with php 8.3, add root periodic crontabs for logrotate
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-12-23 16:12:03 -06:00
LinuxServer-CI
bf6ab14281 Bot Updating Package Versions 2023-12-23 03:17:49 +00:00
LinuxServer-CI
7c5d1d886c Bot Updating Package Versions 2023-12-16 03:18:17 +00:00
Peglah
278b57fb47 Add GleSYS DNS plugin 2023-11-08 12:42:43 +01:00
8 changed files with 591 additions and 573 deletions

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.18 FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.19
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -45,39 +45,39 @@ RUN \
nginx-mod-stream \ nginx-mod-stream \
nginx-mod-stream-geoip2 \ nginx-mod-stream-geoip2 \
nginx-vim \ nginx-vim \
php82-bcmath \ php83-bcmath \
php82-bz2 \ php83-bz2 \
php82-dom \ php83-dom \
php82-exif \ php83-exif \
php82-ftp \ php83-ftp \
php82-gd \ php83-gd \
php82-gmp \ php83-gmp \
php82-imap \ php83-imap \
php82-intl \ php83-intl \
php82-ldap \ php83-ldap \
php82-mysqli \ php83-mysqli \
php82-mysqlnd \ php83-mysqlnd \
php82-opcache \ php83-opcache \
php82-pdo_mysql \ php83-pdo_mysql \
php82-pdo_odbc \ php83-pdo_odbc \
php82-pdo_pgsql \ php83-pdo_pgsql \
php82-pdo_sqlite \ php83-pdo_sqlite \
php82-pear \ php83-pear \
php82-pecl-apcu \ php83-pecl-apcu \
php82-pecl-memcached \ php83-pecl-memcached \
php82-pecl-redis \ php83-pecl-redis \
php82-pgsql \ php83-pgsql \
php82-posix \ php83-posix \
php82-soap \ php83-soap \
php82-sockets \ php83-sockets \
php82-sodium \ php83-sodium \
php82-sqlite3 \ php83-sqlite3 \
php82-tokenizer \ php83-tokenizer \
php82-xmlreader \ php83-xmlreader \
php82-xsl \ php83-xsl \
whois && \ whois && \
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community \ apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing \
php82-pecl-mcrypt && \ php83-pecl-mcrypt && \
echo "**** install certbot plugins ****" && \ echo "**** install certbot plugins ****" && \
if [ -z ${CERTBOT_VERSION+x} ]; then \ if [ -z ${CERTBOT_VERSION+x} ]; then \
CERTBOT_VERSION=$(curl -sL https://pypi.python.org/pypi/certbot/json |jq -r '. | .info.version'); \ CERTBOT_VERSION=$(curl -sL https://pypi.python.org/pypi/certbot/json |jq -r '. | .info.version'); \
@@ -86,7 +86,7 @@ RUN \
pip install -U --no-cache-dir \ pip install -U --no-cache-dir \
pip \ pip \
wheel && \ wheel && \
pip install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.18/ \ pip install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.19/ \
certbot==${CERTBOT_VERSION} \ certbot==${CERTBOT_VERSION} \
certbot-dns-acmedns \ certbot-dns-acmedns \
certbot-dns-aliyun \ certbot-dns-aliyun \
@@ -106,6 +106,7 @@ RUN \
certbot-dns-duckdns \ certbot-dns-duckdns \
certbot-dns-freedns \ certbot-dns-freedns \
certbot-dns-gehirn \ certbot-dns-gehirn \
certbot-dns-glesys \
certbot-dns-godaddy \ certbot-dns-godaddy \
certbot-dns-google \ certbot-dns-google \
certbot-dns-google-domains \ certbot-dns-google-domains \

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.18 FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.19
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -45,39 +45,39 @@ RUN \
nginx-mod-stream \ nginx-mod-stream \
nginx-mod-stream-geoip2 \ nginx-mod-stream-geoip2 \
nginx-vim \ nginx-vim \
php82-bcmath \ php83-bcmath \
php82-bz2 \ php83-bz2 \
php82-dom \ php83-dom \
php82-exif \ php83-exif \
php82-ftp \ php83-ftp \
php82-gd \ php83-gd \
php82-gmp \ php83-gmp \
php82-imap \ php83-imap \
php82-intl \ php83-intl \
php82-ldap \ php83-ldap \
php82-mysqli \ php83-mysqli \
php82-mysqlnd \ php83-mysqlnd \
php82-opcache \ php83-opcache \
php82-pdo_mysql \ php83-pdo_mysql \
php82-pdo_odbc \ php83-pdo_odbc \
php82-pdo_pgsql \ php83-pdo_pgsql \
php82-pdo_sqlite \ php83-pdo_sqlite \
php82-pear \ php83-pear \
php82-pecl-apcu \ php83-pecl-apcu \
php82-pecl-memcached \ php83-pecl-memcached \
php82-pecl-redis \ php83-pecl-redis \
php82-pgsql \ php83-pgsql \
php82-posix \ php83-posix \
php82-soap \ php83-soap \
php82-sockets \ php83-sockets \
php82-sodium \ php83-sodium \
php82-sqlite3 \ php83-sqlite3 \
php82-tokenizer \ php83-tokenizer \
php82-xmlreader \ php83-xmlreader \
php82-xsl \ php83-xsl \
whois && \ whois && \
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community \ apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing \
php82-pecl-mcrypt && \ php83-pecl-mcrypt && \
echo "**** install certbot plugins ****" && \ echo "**** install certbot plugins ****" && \
if [ -z ${CERTBOT_VERSION+x} ]; then \ if [ -z ${CERTBOT_VERSION+x} ]; then \
CERTBOT_VERSION=$(curl -sL https://pypi.python.org/pypi/certbot/json |jq -r '. | .info.version'); \ CERTBOT_VERSION=$(curl -sL https://pypi.python.org/pypi/certbot/json |jq -r '. | .info.version'); \
@@ -86,7 +86,7 @@ RUN \
pip install -U --no-cache-dir \ pip install -U --no-cache-dir \
pip \ pip \
wheel && \ wheel && \
pip install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.18/ \ pip install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.19/ \
certbot==${CERTBOT_VERSION} \ certbot==${CERTBOT_VERSION} \
certbot-dns-acmedns \ certbot-dns-acmedns \
certbot-dns-aliyun \ certbot-dns-aliyun \
@@ -106,6 +106,7 @@ RUN \
certbot-dns-duckdns \ certbot-dns-duckdns \
certbot-dns-freedns \ certbot-dns-freedns \
certbot-dns-gehirn \ certbot-dns-gehirn \
certbot-dns-glesys \
certbot-dns-godaddy \ certbot-dns-godaddy \
certbot-dns-google \ certbot-dns-google \
certbot-dns-google-domains \ certbot-dns-google-domains \

295
Jenkinsfile vendored
View File

@@ -16,6 +16,7 @@ pipeline {
GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab') GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0') GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0')
GITLAB_NAMESPACE=credentials('gitlab-namespace-id') GITLAB_NAMESPACE=credentials('gitlab-namespace-id')
DOCKERHUB_TOKEN=credentials('docker-hub-ci-pat')
EXT_PIP = 'certbot' EXT_PIP = 'certbot'
BUILD_VERSION_ARG = 'CERTBOT_VERSION' BUILD_VERSION_ARG = 'CERTBOT_VERSION'
LS_USER = 'linuxserver' LS_USER = 'linuxserver'
@@ -59,11 +60,16 @@ pipeline {
env.COMMIT_SHA = sh( env.COMMIT_SHA = sh(
script: '''git rev-parse HEAD''', script: '''git rev-parse HEAD''',
returnStdout: true).trim() returnStdout: true).trim()
env.GH_DEFAULT_BRANCH = sh(
script: '''git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||' ''',
returnStdout: true).trim()
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/' env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/'
env.PULL_REQUEST = env.CHANGE_ID env.PULL_REQUEST = env.CHANGE_ID
env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml ./.github/workflows/package_trigger.yml ./root/donate.txt' env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml ./.github/workflows/package_trigger.yml ./root/donate.txt'
} }
sh '''#! /bin/bash
echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" '''
script{ script{
env.LS_RELEASE_NUMBER = sh( env.LS_RELEASE_NUMBER = sh(
script: '''echo ${LS_RELEASE} |sed 's/^.*-ls//g' ''', script: '''echo ${LS_RELEASE} |sed 's/^.*-ls//g' ''',
@@ -120,7 +126,7 @@ pipeline {
steps{ steps{
script{ script{
env.EXT_RELEASE_CLEAN = sh( env.EXT_RELEASE_CLEAN = sh(
script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''', script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/ ]//g' ''',
returnStdout: true).trim() returnStdout: true).trim()
def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)/ def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)/
@@ -138,7 +144,7 @@ pipeline {
} }
if (env.SEMVER != null) { if (env.SEMVER != null) {
if (BRANCH_NAME != "master" && BRANCH_NAME != "main") { if (BRANCH_NAME != "${env.GH_DEFAULT_BRANCH}") {
env.SEMVER = "${env.SEMVER}-${BRANCH_NAME}" env.SEMVER = "${env.SEMVER}-${BRANCH_NAME}"
} }
println("SEMVER: ${env.SEMVER}") println("SEMVER: ${env.SEMVER}")
@@ -256,115 +262,150 @@ pipeline {
} }
} }
steps { steps {
sh '''#! /bin/bash withCredentials([
set -e [
TEMPDIR=$(mktemp -d) $class: 'UsernamePasswordMultiBinding',
docker pull ghcr.io/linuxserver/jenkins-builder:latest credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest usernameVariable: 'DOCKERUSER',
# Stage 1 - Jenkinsfile update passwordVariable: 'DOCKERPASS'
if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then ]
mkdir -p ${TEMPDIR}/repo ]) {
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} sh '''#! /bin/bash
cd ${TEMPDIR}/repo/${LS_REPO} set -e
git checkout -f master TEMPDIR=$(mktemp -d)
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/ docker pull ghcr.io/linuxserver/jenkins-builder:latest
git add Jenkinsfile docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest
git commit -m 'Bot Updating Templated Files' # Stage 1 - Jenkinsfile update
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} mkdir -p ${TEMPDIR}/repo
echo "Updating Jenkinsfile" git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
rm -Rf ${TEMPDIR} cd ${TEMPDIR}/repo/${LS_REPO}
exit 0 git checkout -f master
else cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
echo "Jenkinsfile is up to date." git add Jenkinsfile
fi git commit -m 'Bot Updating Templated Files'
# Stage 2 - Delete old templates git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml Dockerfile.armhf" git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
for i in ${OLD_TEMPLATES}; do echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
if [[ -f "${i}" ]]; then echo "Updating Jenkinsfile"
TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}" rm -Rf ${TEMPDIR}
fi exit 0
done
if [[ -n "${TEMPLATES_TO_DELETE}" ]]; then
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master
for i in ${TEMPLATES_TO_DELETE}; do
git rm "${i}"
done
git commit -m 'Bot Updating Templated Files'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Deleting old and deprecated templates"
rm -Rf ${TEMPDIR}
exit 0
else
echo "No templates to delete"
fi
# Stage 3 - Update templates
CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
if [[ "${CURRENTHASH}" != "${NEWHASH}" ]] || ! grep -q '.jenkins-external' "${WORKSPACE}/.gitignore" 2>/dev/null; then
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || :
cp --parents readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/ || :
cd ${TEMPDIR}/repo/${LS_REPO}/
if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then
echo ".jenkins-external" >> .gitignore
git add .gitignore
fi
git add readme-vars.yml ${TEMPLATED_FILES}
git commit -m 'Bot Updating Templated Files'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
else
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
fi
mkdir -p ${TEMPDIR}/docs
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/docs/docker-documentation
if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md ${TEMPDIR}/docs/docker-documentation/docs/images/
cd ${TEMPDIR}/docs/docker-documentation
git add docs/images/docker-${CONTAINER_NAME}.md
git commit -m 'Bot Updating Documentation'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git --all
fi
mkdir -p ${TEMPDIR}/unraid
git clone https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates
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/
if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then
echo "Image is on the ignore list, marking Unraid template as deprecated"
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
git add -u unraid/${CONTAINER_NAME}.xml
git mv unraid/${CONTAINER_NAME}.xml unraid/deprecated/${CONTAINER_NAME}.xml || :
git commit -m 'Bot Moving Deprecated Unraid Template' || :
else else
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/ echo "Jenkinsfile is up to date."
git add unraid/${CONTAINER_NAME}.xml
git commit -m 'Bot Updating Unraid Template'
fi fi
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git --all # Stage 2 - Delete old templates
fi OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml Dockerfile.armhf"
rm -Rf ${TEMPDIR}''' for i in ${OLD_TEMPLATES}; do
script{ if [[ -f "${i}" ]]; then
env.FILES_UPDATED = sh( TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}"
script: '''cat /tmp/${COMMIT_SHA}-${BUILD_NUMBER}''', fi
returnStdout: true).trim() done
if [[ -n "${TEMPLATES_TO_DELETE}" ]]; then
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master
for i in ${TEMPLATES_TO_DELETE}; do
git rm "${i}"
done
git commit -m 'Bot Updating Templated Files'
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Deleting old and deprecated templates"
rm -Rf ${TEMPDIR}
exit 0
else
echo "No templates to delete"
fi
# Stage 3 - Update templates
CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
if [[ "${CURRENTHASH}" != "${NEWHASH}" ]] || ! grep -q '.jenkins-external' "${WORKSPACE}/.gitignore" 2>/dev/null; then
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || :
cp --parents readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/ || :
cd ${TEMPDIR}/repo/${LS_REPO}/
if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then
echo ".jenkins-external" >> .gitignore
git add .gitignore
fi
git add readme-vars.yml ${TEMPLATED_FILES}
git commit -m 'Bot Updating Templated Files'
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
else
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
fi
mkdir -p ${TEMPDIR}/docs
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/docs/docker-documentation
if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]] && [[ (! -f ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md ${TEMPDIR}/docs/docker-documentation/docs/images/
cd ${TEMPDIR}/docs/docker-documentation
GH_DOCS_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||')
git add docs/images/docker-${CONTAINER_NAME}.md
git commit -m 'Bot Updating Documentation'
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH}
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH}
fi
mkdir -p ${TEMPDIR}/unraid
git clone https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates
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}" == "${GH_DEFAULT_BRANCH}" ]] && [[ (! -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/
GH_TEMPLATES_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||')
if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then
echo "Image is on the ignore list, marking Unraid template as deprecated"
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
git add -u unraid/${CONTAINER_NAME}.xml
git mv unraid/${CONTAINER_NAME}.xml unraid/deprecated/${CONTAINER_NAME}.xml || :
git commit -m 'Bot Moving Deprecated Unraid Template' || :
else
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
git add unraid/${CONTAINER_NAME}.xml
git commit -m 'Bot Updating Unraid Template'
fi
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH}
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH}
fi
# Stage 4 - Sync Readme to Docker Hub
if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]]; then
if [[ $(cat ${TEMPDIR}/docker-${CONTAINER_NAME}/README.md | wc -m) > 25000 ]]; then
echo "Readme is longer than 25,000 characters. Syncing the lite version to Docker Hub"
DH_README_SYNC_PATH="${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/README.lite"
else
echo "Syncing readme to Docker Hub"
DH_README_SYNC_PATH="${TEMPDIR}/docker-${CONTAINER_NAME}/README.md"
fi
DH_TOKEN=$(curl -d '{"username":"'${DOCKERUSER}'", "password":"'${DOCKERHUB_TOKEN}'"}' -H "Content-Type: application/json" -X POST https://hub.docker.com/v2/users/login | jq -r '.token')
curl -s \
-H "Authorization: JWT ${DH_TOKEN}" \
-H "Content-Type: application/json" \
-X PATCH \
-d "{\\"full_description\\":$(jq -Rsa . ${DH_README_SYNC_PATH})}" \
https://hub.docker.com/v2/repositories/${DOCKERHUB_IMAGE} || :
else
echo "Not the default Github branch. Skipping readme sync to Docker Hub."
fi
rm -Rf ${TEMPDIR}'''
script{
env.FILES_UPDATED = sh(
script: '''cat /tmp/${COMMIT_SHA}-${BUILD_NUMBER}''',
returnStdout: true).trim()
}
} }
} }
} }
@@ -558,7 +599,8 @@ pipeline {
wait wait
git add package_versions.txt git add package_versions.txt
git commit -m 'Bot Updating Package Versions' git commit -m 'Bot Updating Package Versions'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
echo "true" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER}
echo "Package tag updated, stopping build process" echo "Package tag updated, stopping build process"
else else
@@ -854,39 +896,6 @@ EOF
) ''' ) '''
} }
} }
// Use helper container to sync the current README on master to the dockerhub endpoint
stage('Sync-README') {
when {
environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: ''
}
steps {
withCredentials([
[
$class: 'UsernamePasswordMultiBinding',
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
usernameVariable: 'DOCKERUSER',
passwordVariable: 'DOCKERPASS'
]
]) {
sh '''#! /bin/bash
set -e
TEMPDIR=$(mktemp -d)
docker pull ghcr.io/linuxserver/jenkins-builder:latest
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH="${BRANCH_NAME}" -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest
docker pull ghcr.io/linuxserver/readme-sync
docker run --rm=true \
-e DOCKERHUB_USERNAME=$DOCKERUSER \
-e DOCKERHUB_PASSWORD=$DOCKERPASS \
-e GIT_REPOSITORY=${LS_USER}/${LS_REPO} \
-e DOCKER_REPOSITORY=${IMAGE} \
-e GIT_BRANCH=master \
-v ${TEMPDIR}/docker-${CONTAINER_NAME}:/mnt \
ghcr.io/linuxserver/readme-sync bash -c 'node sync'
rm -Rf ${TEMPDIR} '''
}
}
}
// If this is a Pull request send the CI link as a comment on it // If this is a Pull request send the CI link as a comment on it
stage('Pull Request Comment') { stage('Pull Request Comment') {
when { when {

View File

@@ -158,7 +158,6 @@ To help you get started creating a container from this image you can either use
```yaml ```yaml
--- ---
version: "2.1"
services: services:
swag: swag:
image: lscr.io/linuxserver/swag:latest image: lscr.io/linuxserver/swag:latest
@@ -180,7 +179,7 @@ services:
- EXTRA_DOMAINS= #optional - EXTRA_DOMAINS= #optional
- STAGING=false #optional - STAGING=false #optional
volumes: volumes:
- /path/to/appdata/config:/config - /path/to/swag/config:/config
ports: ports:
- 443:443 - 443:443
- 80:80 #optional - 80:80 #optional
@@ -208,7 +207,7 @@ docker run -d \
-e STAGING=false `#optional` \ -e STAGING=false `#optional` \
-p 443:443 \ -p 443:443 \
-p 80:80 `#optional` \ -p 80:80 `#optional` \
-v /path/to/appdata/config:/config \ -v /path/to/swag/config:/config \
--restart unless-stopped \ --restart unless-stopped \
lscr.io/linuxserver/swag:latest lscr.io/linuxserver/swag:latest
``` ```
@@ -228,13 +227,13 @@ Containers are configured using parameters passed at runtime (such as those abov
| `-e VALIDATION=http` | Certbot validation method to use, options are `http` or `dns` (`dns` method also requires `DNSPLUGIN` variable set). | | `-e VALIDATION=http` | Certbot validation method to use, options are `http` or `dns` (`dns` method also requires `DNSPLUGIN` variable set). |
| `-e SUBDOMAINS=www,` | Subdomains you'd like the cert to cover (comma separated, no spaces) ie. `www,ftp,cloud`. For a wildcard cert, set this *exactly* to `wildcard` (wildcard cert is available via `dns` validation only) | | `-e SUBDOMAINS=www,` | Subdomains you'd like the cert to cover (comma separated, no spaces) ie. `www,ftp,cloud`. For a wildcard cert, set this *exactly* to `wildcard` (wildcard cert is available via `dns` validation only) |
| `-e CERTPROVIDER=` | Optionally define the cert provider. Set to `zerossl` for ZeroSSL certs (requires existing [ZeroSSL account](https://app.zerossl.com/signup) and the e-mail address entered in `EMAIL` env var). Otherwise defaults to Let's Encrypt. | | `-e CERTPROVIDER=` | Optionally define the cert provider. Set to `zerossl` for ZeroSSL certs (requires existing [ZeroSSL account](https://app.zerossl.com/signup) and the e-mail address entered in `EMAIL` env var). Otherwise defaults to Let's Encrypt. |
| `-e DNSPLUGIN=cloudflare` | Required if `VALIDATION` is set to `dns`. Options are `acmedns`, `aliyun`, `azure`, `bunny`, `cloudflare`, `cpanel`, `desec`, `digitalocean`, `directadmin`, `dnsimple`, `dnsmadeeasy`, `dnspod`, `do`, `domeneshop`, `dreamhost`, `duckdns`, `freedns`, `gandi`, `gehirn`, `godaddy`, `google`, `google-domains`, `he`, `hetzner`, `infomaniak`, `inwx`, `ionos`, `linode`, `loopia`, `luadns`, `namecheap`, `netcup`, `njalla`, `nsone`, `ovh`, `porkbun`, `rfc2136`, `route53`, `sakuracloud`, `standalone`, `transip`, and `vultr`. Also need to enter the credentials into the corresponding ini (or json for some plugins) file under `/config/dns-conf`. | | `-e DNSPLUGIN=cloudflare` | Required if `VALIDATION` is set to `dns`. Options are `acmedns`, `aliyun`, `azure`, `bunny`, `cloudflare`, `cpanel`, `desec`, `digitalocean`, `directadmin`, `dnsimple`, `dnsmadeeasy`, `dnspod`, `do`, `domeneshop`, `dreamhost`, `duckdns`, `freedns`, `gandi`, `gehirn`, `glesys`, `godaddy`, `google`, `google-domains`, `he`, `hetzner`, `infomaniak`, `inwx`, `ionos`, `linode`, `loopia`, `luadns`, `namecheap`, `netcup`, `njalla`, `nsone`, `ovh`, `porkbun`, `rfc2136`, `route53`, `sakuracloud`, `standalone`, `transip`, and `vultr`. Also need to enter the credentials into the corresponding ini (or json for some plugins) file under `/config/dns-conf`. |
| `-e PROPAGATION=` | Optionally override (in seconds) the default propagation time for the dns plugins. | | `-e PROPAGATION=` | Optionally override (in seconds) the default propagation time for the dns plugins. |
| `-e EMAIL=` | Optional e-mail address used for cert expiration notifications (Required for ZeroSSL). | | `-e EMAIL=` | Optional e-mail address used for cert expiration notifications (Required for ZeroSSL). |
| `-e ONLY_SUBDOMAINS=false` | If you wish to get certs only for certain subdomains, but not the main domain (main domain may be hosted on another machine and cannot be validated), set this to `true` | | `-e ONLY_SUBDOMAINS=false` | If you wish to get certs only for certain subdomains, but not the main domain (main domain may be hosted on another machine and cannot be validated), set this to `true` |
| `-e EXTRA_DOMAINS=` | Additional fully qualified domain names (comma separated, no spaces) ie. `extradomain.com,subdomain.anotherdomain.org,*.anotherdomain.org` | | `-e EXTRA_DOMAINS=` | Additional fully qualified domain names (comma separated, no spaces) ie. `extradomain.com,subdomain.anotherdomain.org,*.anotherdomain.org` |
| `-e STAGING=false` | Set to `true` to retrieve certs in staging mode. Rate limits will be much higher, but the resulting cert will not pass the browser's security test. Only to be used for testing purposes. | | `-e STAGING=false` | Set to `true` to retrieve certs in staging mode. Rate limits will be much higher, but the resulting cert will not pass the browser's security test. Only to be used for testing purposes. |
| `-v /config` | All the config files including the webroot reside here. | | `-v /config` | Persistent config files |
### Portainer notice ### Portainer notice
@@ -309,7 +308,7 @@ We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to
## Updating Info ## Updating Info
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image. Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image.
Below are the instructions for updating containers: Below are the instructions for updating containers:
@@ -374,21 +373,6 @@ Below are the instructions for updating containers:
docker image prune docker image prune
``` ```
### Via Watchtower auto-updater (only use if you don't remember the original parameters)
* Pull the latest image at its tag and replace it with the same env variables in one run:
```bash
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--run-once swag
```
* You can also remove the old dangling images: `docker image prune`
**warning**: We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using [Docker Compose](https://docs.linuxserver.io/general/docker-compose).
### Image Update Notifications - Diun (Docker Image Update Notifier) ### Image Update Notifications - Diun (Docker Image Update Notifier)
**tip**: We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported. **tip**: We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
@@ -416,6 +400,8 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions ## Versions
* **23.01.24:** - Rebase to Alpine 3.19 with php 8.3, add root periodic crontabs for logrotate.
* **01.01.24:** - Add GleSYS DNS plugin.
* **11.12.23:** - Deprecate certbot-dns-dynu to resolve dependency conflicts with other plugins. * **11.12.23:** - Deprecate certbot-dns-dynu to resolve dependency conflicts with other plugins.
* **30.11.23:** - [Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) site-confs/default.conf - Fix index.php being downloaded on 404. * **30.11.23:** - [Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) site-confs/default.conf - Fix index.php being downloaded on 404.
* **23.11.23:** - Run certbot as root to allow fix http validation. * **23.11.23:** - Run certbot as root to allow fix http validation.

View File

@@ -1,338 +1,346 @@
NAME VERSION TYPE NAME VERSION TYPE
ConfigArgParse 1.7 python ConfigArgParse 1.7 python
PyJWT 2.8.0 python PyJWT 2.8.0 python
PyNamecheap 0.0.3 python PyNamecheap 0.0.3 python
PyYAML 6.0.1 python PyYAML 6.0.1 python
SimpleLauncherExecutable 1.1.0.14 dotnet Simple Launcher 1.1.0.14 dotnet
acme 2.8.0 python acme 2.8.0 python
alpine-baselayout 3.4.3-r1 apk alpine-baselayout 3.4.3-r2 apk
alpine-baselayout-data 3.4.3-r1 apk alpine-baselayout-data 3.4.3-r2 apk
alpine-keys 2.4-r1 apk alpine-keys 2.4-r1 apk
alpine-release 3.18.5-r0 apk alpine-release 3.19.0-r0 apk
aom-libs 3.6.1-r0 apk aom-libs 3.7.1-r0 apk
apache2-utils 2.4.58-r0 apk apache2-utils 2.4.58-r1 apk
apk-tools 2.14.0-r2 apk apk-tools 2.14.0-r5 apk
apr 1.7.4-r0 apk apr 1.7.4-r0 apk
apr-util 1.6.3-r1 apk apr-util 1.6.3-r1 apk
argon2-libs 20190702-r4 apk argon2-libs 20190702-r5 apk
attrs 23.1.0 python attrs 23.2.0 python
azure-common 1.1.28 python azure-common 1.1.28 python
azure-core 1.29.5 python azure-core 1.29.7 python
azure-identity 1.15.0 python azure-identity 1.15.0 python
azure-mgmt-core 1.4.0 python azure-mgmt-core 1.4.0 python
azure-mgmt-dns 8.1.0 python azure-mgmt-dns 8.1.0 python
bash 5.2.15-r5 apk bash 5.2.21-r0 apk
beautifulsoup4 4.12.2 python beautifulsoup4 4.12.3 python
boto3 1.33.12 python boto3 1.34.29 python
botocore 1.33.12 python botocore 1.34.29 python
brotli-libs 1.0.9-r14 apk brotli-libs 1.1.0-r1 apk
bs4 0.0.1 python bs4 0.0.2 python
busybox 1.36.1-r5 apk busybox 1.36.1-r15 apk
busybox-binsh 1.36.1-r5 apk busybox-binsh 1.36.1-r15 apk
c-client 2007f-r15 apk c-ares 1.24.0-r0 apk
ca-certificates 20230506-r0 apk c-client 2007f-r15 apk
ca-certificates-bundle 20230506-r0 apk ca-certificates 20230506-r0 apk
cachetools 5.3.2 python ca-certificates-bundle 20230506-r0 apk
certbot 2.8.0 python cachetools 5.3.2 python
certbot-dns-acmedns 0.1.0 python certbot 2.8.0 python
certbot-dns-aliyun 2.0.0 python certbot-dns-acmedns 0.1.0 python
certbot-dns-azure 2.4.0 python certbot-dns-aliyun 2.0.0 python
certbot-dns-bunny 0.0.9 python certbot-dns-azure 2.4.0 python
certbot-dns-cloudflare 2.8.0 python certbot-dns-bunny 0.0.9 python
certbot-dns-cpanel 0.4.0 python certbot-dns-cloudflare 2.8.0 python
certbot-dns-desec 1.2.1 python certbot-dns-cpanel 0.4.0 python
certbot-dns-digitalocean 2.8.0 python certbot-dns-desec 1.2.1 python
certbot-dns-directadmin 1.0.3 python certbot-dns-digitalocean 2.8.0 python
certbot-dns-dnsimple 2.8.0 python certbot-dns-directadmin 1.0.3 python
certbot-dns-dnsmadeeasy 2.8.0 python certbot-dns-dnsimple 2.8.0 python
certbot-dns-dnspod 0.1.0 python certbot-dns-dnsmadeeasy 2.8.0 python
certbot-dns-do 0.31.0 python certbot-dns-dnspod 0.1.0 python
certbot-dns-domeneshop 0.2.9 python certbot-dns-do 0.31.0 python
certbot-dns-dreamhost 1.0 python certbot-dns-domeneshop 0.2.9 python
certbot-dns-duckdns 1.3 python certbot-dns-dreamhost 1.0 python
certbot-dns-freedns 0.1.0 python certbot-dns-duckdns 1.3 python
certbot-dns-gehirn 2.8.0 python certbot-dns-freedns 0.1.0 python
certbot-dns-godaddy 2.7.4 python certbot-dns-gehirn 2.8.0 python
certbot-dns-google 2.8.0 python certbot-dns-glesys 2.1.0 python
certbot-dns-google-domains 0.1.11 python certbot-dns-godaddy 2.8.0 python
certbot-dns-he 1.0.0 python certbot-dns-google 2.8.0 python
certbot-dns-hetzner 2.0.0 python certbot-dns-google-domains 0.1.11 python
certbot-dns-infomaniak 0.2.1 python certbot-dns-he 1.0.0 python
certbot-dns-inwx 2.2.0 python certbot-dns-hetzner 2.0.0 python
certbot-dns-ionos 2023.11.13.post1 python certbot-dns-infomaniak 0.2.2 python
certbot-dns-linode 2.8.0 python certbot-dns-inwx 2.2.0 python
certbot-dns-loopia 1.0.1 python certbot-dns-ionos 2024.1.8 python
certbot-dns-luadns 2.8.0 python certbot-dns-linode 2.8.0 python
certbot-dns-namecheap 1.0.0 python certbot-dns-loopia 1.0.1 python
certbot-dns-netcup 1.4.3 python certbot-dns-luadns 2.8.0 python
certbot-dns-njalla 1.0.0 python certbot-dns-namecheap 1.0.0 python
certbot-dns-nsone 2.8.0 python certbot-dns-netcup 1.4.3 python
certbot-dns-ovh 2.8.0 python certbot-dns-njalla 1.0.0 python
certbot-dns-porkbun 0.8 python certbot-dns-nsone 2.8.0 python
certbot-dns-rfc2136 2.8.0 python certbot-dns-ovh 2.8.0 python
certbot-dns-route53 2.8.0 python certbot-dns-porkbun 0.8 python
certbot-dns-sakuracloud 2.8.0 python certbot-dns-rfc2136 2.8.0 python
certbot-dns-standalone 1.1 python certbot-dns-route53 2.8.0 python
certbot-dns-transip 0.5.2 python certbot-dns-sakuracloud 2.8.0 python
certbot-dns-vultr 1.1.0 python certbot-dns-standalone 1.1 python
certbot-plugin-gandi 1.5.0 python certbot-dns-transip 0.5.2 python
certifi 2023.11.17 python certbot-dns-vultr 1.1.0 python
cffi 1.16.0 python certbot-plugin-gandi 1.5.0 python
charset-normalizer 3.3.2 python certifi 2023.11.17 python
cloudflare 2.14.2 python cffi 1.16.0 python
configobj 5.0.8 python charset-normalizer 3.3.2 python
coreutils 9.3-r1 apk cloudflare 2.17.0 python
cryptography 41.0.7 python composer 2.6.6 binary
curl 8.5.0-r0 apk configobj 5.0.8 python
dataclasses-json 0.5.14 python coreutils 9.4-r1 apk
distro 1.8.0 python coreutils-env 9.4-r1 apk
dns-lexicon 3.17.0 python coreutils-fmt 9.4-r1 apk
dnslib 0.9.23 python coreutils-sha512sum 9.4-r1 apk
dnspython 2.4.2 python cryptography 42.0.1 python
domeneshop 0.4.3 python curl 8.5.0-r0 apk
fail2ban 1.0.2 python dataclasses-json 0.5.14 python
fail2ban 1.0.2-r2 apk distro 1.9.0 python
fail2ban-pyc 1.0.2-r2 apk dns-lexicon 3.17.0 python
filelock 3.13.1 python dnslib 0.9.24 python
fontconfig 2.14.2-r3 apk dnspython 2.5.0 python
freetype 2.13.0-r5 apk domeneshop 0.4.3 python
future 0.18.3 python fail2ban 1.0.2 python
gdbm 1.23-r1 apk fail2ban 1.0.2-r3 apk
git 2.40.1-r0 apk fail2ban-pyc 1.0.2-r3 apk
git-perl 2.40.1-r0 apk filelock 3.13.1 python
gmp 6.2.1-r3 apk fontconfig 2.14.2-r4 apk
gnupg 2.4.3-r0 apk freetype 2.13.2-r0 apk
gnupg-dirmngr 2.4.3-r0 apk future 0.18.3 python
gnupg-gpgconf 2.4.3-r0 apk gdbm 1.23-r1 apk
gnupg-keyboxd 2.4.3-r0 apk git 2.43.0-r0 apk
gnupg-utils 2.4.3-r0 apk git-perl 2.43.0-r0 apk
gnupg-wks-client 2.4.3-r0 apk gmp 6.3.0-r0 apk
gnutls 3.8.0-r2 apk gnupg 2.4.4-r0 apk
google-api-core 2.15.0 python gnupg-dirmngr 2.4.4-r0 apk
google-api-python-client 2.110.0 python gnupg-gpgconf 2.4.4-r0 apk
google-auth 2.25.2 python gnupg-keyboxd 2.4.4-r0 apk
google-auth-httplib2 0.1.1 python gnupg-utils 2.4.4-r0 apk
googleapis-common-protos 1.62.0 python gnupg-wks-client 2.4.4-r0 apk
gpg 2.4.3-r0 apk gnutls 3.8.3-r0 apk
gpg-agent 2.4.3-r0 apk google-api-core 2.15.0 python
gpg-wks-server 2.4.3-r0 apk google-api-python-client 2.115.0 python
gpgsm 2.4.3-r0 apk google-auth 2.27.0 python
gpgv 2.4.3-r0 apk google-auth-httplib2 0.2.0 python
httplib2 0.22.0 python googleapis-common-protos 1.62.0 python
icu-data-en 73.2-r2 apk gpg 2.4.4-r0 apk
icu-libs 73.2-r2 apk gpg-agent 2.4.4-r0 apk
idna 3.6 python gpg-wks-server 2.4.4-r0 apk
ip6tables 1.8.9-r2 apk gpgsm 2.4.4-r0 apk
iptables 1.8.9-r2 apk gpgv 2.4.4-r0 apk
isodate 0.6.1 python hiredis 1.2.0-r0 apk
jmespath 1.0.1 python httplib2 0.22.0 python
josepy 1.14.0 python icu-data-en 74.1-r0 apk
jq 1.6-r4 apk icu-libs 74.1-r0 apk
jsonlines 4.0.0 python idna 3.6 python
jsonpickle 3.0.2 python iptables 1.8.10-r3 apk
libacl 2.3.1-r3 apk isodate 0.6.1 python
libassuan 2.5.6-r0 apk jmespath 1.0.1 python
libattr 2.5.1-r4 apk josepy 1.14.0 python
libavif 0.11.1-r2 apk jq 1.7.1-r0 apk
libbsd 0.11.7-r1 apk jsonlines 4.0.0 python
libbz2 1.0.8-r5 apk jsonpickle 3.0.2 python
libc-utils 0.7.2-r5 apk libacl 2.3.1-r4 apk
libcrypto3 3.1.4-r1 apk libassuan 2.5.6-r1 apk
libcurl 8.5.0-r0 apk libattr 2.5.1-r5 apk
libdav1d 1.2.1-r0 apk libavif 1.0.3-r0 apk
libedit 20221030.3.1-r1 apk libbsd 0.11.7-r3 apk
libevent 2.1.12-r6 apk libbz2 1.0.8-r6 apk
libexpat 2.5.0-r1 apk libc-utils 0.7.2-r5 apk
libffi 3.4.4-r2 apk libcrypto3 3.1.4-r5 apk
libgcc 12.2.1_git20220924-r10 apk libcurl 8.5.0-r0 apk
libgcrypt 1.10.2-r1 apk libdav1d 1.3.0-r0 apk
libgd 2.3.3-r7 apk libedit 20230828.3.1-r3 apk
libgpg-error 1.47-r1 apk libevent 2.1.12-r7 apk
libice 1.1.1-r2 apk libexpat 2.5.0-r2 apk
libidn2 2.3.4-r1 apk libffi 3.4.4-r3 apk
libintl 0.21.1-r7 apk libgcc 13.2.1_git20231014-r0 apk
libjpeg-turbo 2.1.5.1-r3 apk libgcrypt 1.10.3-r0 apk
libksba 1.6.4-r0 apk libgd 2.3.3-r8 apk
libldap 2.6.5-r0 apk libgpg-error 1.47-r2 apk
libmaxminddb-libs 1.7.1-r1 apk libice 1.1.1-r5 apk
libmcrypt 2.5.8-r10 apk libidn2 2.3.4-r4 apk
libmd 1.0.4-r2 apk libintl 0.22.3-r0 apk
libmemcached-libs 1.1.4-r1 apk libjpeg-turbo 3.0.1-r0 apk
libmnl 1.0.5-r1 apk libksba 1.6.5-r0 apk
libncursesw 6.4_p20230506-r0 apk libldap 2.6.6-r1 apk
libnftnl 1.2.5-r1 apk libmaxminddb-libs 1.7.1-r2 apk
libpanelw 6.4_p20230506-r0 apk libmcrypt 2.5.8-r10 apk
libpng 1.6.39-r3 apk libmd 1.1.0-r0 apk
libpq 15.5-r0 apk libmemcached-libs 1.1.4-r1 apk
libproc2 4.0.4-r0 apk libmnl 1.0.5-r2 apk
libsasl 2.1.28-r4 apk libncursesw 6.4_p20231125-r0 apk
libseccomp 2.5.4-r2 apk libnftnl 1.2.6-r0 apk
libsm 1.2.4-r1 apk libpanelw 6.4_p20231125-r0 apk
libsodium 1.0.18-r3 apk libpng 1.6.40-r0 apk
libssl3 3.1.4-r1 apk libpq 16.1-r0 apk
libstdc++ 12.2.1_git20220924-r10 apk libproc2 4.0.4-r0 apk
libtasn1 4.19.0-r1 apk libsasl 2.1.28-r5 apk
libunistring 1.1-r1 apk libseccomp 2.5.5-r0 apk
libuuid 2.38.1-r8 apk libsharpyuv 1.3.2-r0 apk
libwebp 1.3.2-r0 apk libsm 1.2.4-r3 apk
libx11 1.8.7-r0 apk libsodium 1.0.19-r0 apk
libxau 1.0.11-r2 apk libssl3 3.1.4-r5 apk
libxcb 1.15-r1 apk libstdc++ 13.2.1_git20231014-r0 apk
libxdmcp 1.1.4-r2 apk libtasn1 4.19.0-r2 apk
libxext 1.3.5-r2 apk libunistring 1.1-r2 apk
libxml2 2.11.6-r0 apk libuuid 2.39.3-r0 apk
libxpm 3.5.16-r1 apk libwebp 1.3.2-r0 apk
libxslt 1.1.38-r0 apk libx11 1.8.7-r0 apk
libxt 1.3.0-r2 apk libxau 1.0.11-r3 apk
libzip 1.9.2-r2 apk libxcb 1.16-r0 apk
linux-pam 1.5.2-r10 apk libxdmcp 1.1.4-r3 apk
logrotate 3.21.0-r1 apk libxext 1.3.5-r3 apk
loopialib 0.2.0 python libxml2 2.11.6-r0 apk
lxml 4.9.3 python libxpm 3.5.17-r0 apk
lz4-libs 1.9.4-r4 apk libxslt 1.1.39-r0 apk
marshmallow 3.20.1 python libxt 1.3.0-r4 apk
memcached 1.6.21-r0 apk libxtables 1.8.10-r3 apk
mock 5.1.0 python libzip 1.10.1-r0 apk
mpdecimal 2.5.1-r2 apk linux-pam 1.5.3-r7 apk
msal 1.26.0 python logrotate 3.21.0-r1 apk
msal-extensions 1.1.0 python loopialib 0.2.0 python
musl 1.2.4-r2 apk lxml 5.1.0 python
musl-utils 1.2.4-r2 apk lz4-libs 1.9.4-r5 apk
mypy-extensions 1.0.0 python marshmallow 3.20.2 python
nano 7.2-r1 apk memcached 1.6.22-r0 apk
ncurses-terminfo-base 6.4_p20230506-r0 apk mock 5.1.0 python
netcat-openbsd 1.219-r1 apk mpdecimal 2.5.1-r2 apk
nettle 3.8.1-r2 apk msal 1.26.0 python
nghttp2-libs 1.57.0-r0 apk msal-extensions 1.1.0 python
nginx 1.24.0-r7 apk musl 1.2.4_git20230717-r4 apk
nginx-mod-devel-kit 1.24.0-r7 apk musl-utils 1.2.4_git20230717-r4 apk
nginx-mod-http-brotli 1.24.0-r7 apk mypy-extensions 1.0.0 python
nginx-mod-http-dav-ext 1.24.0-r7 apk nano 7.2-r1 apk
nginx-mod-http-echo 1.24.0-r7 apk ncurses-terminfo-base 6.4_p20231125-r0 apk
nginx-mod-http-fancyindex 1.24.0-r7 apk netcat-openbsd 1.226-r0 apk
nginx-mod-http-geoip2 1.24.0-r7 apk nettle 3.9.1-r0 apk
nginx-mod-http-headers-more 1.24.0-r7 apk nghttp2-libs 1.58.0-r0 apk
nginx-mod-http-image-filter 1.24.0-r7 apk nginx 1.24.0-r14 apk
nginx-mod-http-perl 1.24.0-r7 apk nginx-mod-devel-kit 1.24.0-r14 apk
nginx-mod-http-redis2 1.24.0-r7 apk nginx-mod-http-brotli 1.24.0-r14 apk
nginx-mod-http-set-misc 1.24.0-r7 apk nginx-mod-http-dav-ext 1.24.0-r14 apk
nginx-mod-http-upload-progress 1.24.0-r7 apk nginx-mod-http-echo 1.24.0-r14 apk
nginx-mod-http-xslt-filter 1.24.0-r7 apk nginx-mod-http-fancyindex 1.24.0-r14 apk
nginx-mod-mail 1.24.0-r7 apk nginx-mod-http-geoip2 1.24.0-r14 apk
nginx-mod-rtmp 1.24.0-r7 apk nginx-mod-http-headers-more 1.24.0-r14 apk
nginx-mod-stream 1.24.0-r7 apk nginx-mod-http-image-filter 1.24.0-r14 apk
nginx-mod-stream-geoip2 1.24.0-r7 apk nginx-mod-http-perl 1.24.0-r14 apk
nginx-vim 1.24.0-r7 apk nginx-mod-http-redis2 1.24.0-r14 apk
npth 1.6-r4 apk nginx-mod-http-set-misc 1.24.0-r14 apk
oniguruma 6.9.8-r1 apk nginx-mod-http-upload-progress 1.24.0-r14 apk
openssl 3.1.4-r1 apk nginx-mod-http-xslt-filter 1.24.0-r14 apk
p11-kit 0.24.1-r2 apk nginx-mod-mail 1.24.0-r14 apk
packaging 23.2 python nginx-mod-rtmp 1.24.0-r14 apk
parsedatetime 2.6 python nginx-mod-stream 1.24.0-r14 apk
pcre 8.45-r3 apk nginx-mod-stream-geoip2 1.24.0-r14 apk
pcre2 10.42-r1 apk nginx-vim 1.24.0-r14 apk
perl 5.36.2-r0 apk npth 1.6-r4 apk
perl-error 0.17029-r1 apk oniguruma 6.9.9-r0 apk
perl-git 2.40.1-r0 apk openssl 3.1.4-r5 apk
php82 8.2.13-r0 apk p11-kit 0.25.3-r0 apk
php82-bcmath 8.2.13-r0 apk packaging 23.2 python
php82-bz2 8.2.13-r0 apk parsedatetime 2.6 python
php82-common 8.2.13-r0 apk pcre 8.45-r3 apk
php82-ctype 8.2.13-r0 apk pcre2 10.42-r2 apk
php82-curl 8.2.13-r0 apk perl 5.38.2-r0 apk
php82-dom 8.2.13-r0 apk perl-error 0.17029-r2 apk
php82-exif 8.2.13-r0 apk perl-git 2.43.0-r0 apk
php82-fileinfo 8.2.13-r0 apk php83 8.3.2-r0 apk
php82-fpm 8.2.13-r0 apk php83-bcmath 8.3.2-r0 apk
php82-ftp 8.2.13-r0 apk php83-bz2 8.3.2-r0 apk
php82-gd 8.2.13-r0 apk php83-common 8.3.2-r0 apk
php82-gmp 8.2.13-r0 apk php83-ctype 8.3.2-r0 apk
php82-iconv 8.2.13-r0 apk php83-curl 8.3.2-r0 apk
php82-imap 8.2.13-r0 apk php83-dom 8.3.2-r0 apk
php82-intl 8.2.13-r0 apk php83-exif 8.3.2-r0 apk
php82-ldap 8.2.13-r0 apk php83-fileinfo 8.3.2-r0 apk
php82-mbstring 8.2.13-r0 apk php83-fpm 8.3.2-r0 apk
php82-mysqli 8.2.13-r0 apk php83-ftp 8.3.2-r0 apk
php82-mysqlnd 8.2.13-r0 apk php83-gd 8.3.2-r0 apk
php82-opcache 8.2.13-r0 apk php83-gmp 8.3.2-r0 apk
php82-openssl 8.2.13-r0 apk php83-iconv 8.3.2-r0 apk
php82-pdo 8.2.13-r0 apk php83-imap 8.3.2-r0 apk
php82-pdo_mysql 8.2.13-r0 apk php83-intl 8.3.2-r0 apk
php82-pdo_odbc 8.2.13-r0 apk php83-ldap 8.3.2-r0 apk
php82-pdo_pgsql 8.2.13-r0 apk php83-mbstring 8.3.2-r0 apk
php82-pdo_sqlite 8.2.13-r0 apk php83-mysqli 8.3.2-r0 apk
php82-pear 8.2.13-r0 apk php83-mysqlnd 8.3.2-r0 apk
php82-pecl-apcu 5.1.22-r0 apk php83-opcache 8.3.2-r0 apk
php82-pecl-igbinary 3.2.14-r0 apk php83-openssl 8.3.2-r0 apk
php82-pecl-mcrypt 1.0.6-r0 apk php83-pdo 8.3.2-r0 apk
php82-pecl-memcached 3.2.0-r1 apk php83-pdo_mysql 8.3.2-r0 apk
php82-pecl-msgpack 2.2.0-r0 apk php83-pdo_odbc 8.3.2-r0 apk
php82-pecl-redis 6.0.2-r0 apk php83-pdo_pgsql 8.3.2-r0 apk
php82-pgsql 8.2.13-r0 apk php83-pdo_sqlite 8.3.2-r0 apk
php82-phar 8.2.13-r0 apk php83-pear 8.3.2-r0 apk
php82-posix 8.2.13-r0 apk php83-pecl-apcu 5.1.23-r0 apk
php82-session 8.2.13-r0 apk php83-pecl-igbinary 3.2.15-r0 apk
php82-simplexml 8.2.13-r0 apk php83-pecl-mcrypt 1.0.7-r0 apk
php82-soap 8.2.13-r0 apk php83-pecl-memcached 3.2.0-r0 apk
php82-sockets 8.2.13-r0 apk php83-pecl-msgpack 2.2.0-r1 apk
php82-sodium 8.2.13-r0 apk php83-pecl-redis 6.0.2-r0 apk
php82-sqlite3 8.2.13-r0 apk php83-pgsql 8.3.2-r0 apk
php82-tokenizer 8.2.13-r0 apk php83-phar 8.3.2-r0 apk
php82-xml 8.2.13-r0 apk php83-posix 8.3.2-r0 apk
php82-xmlreader 8.2.13-r0 apk php83-session 8.3.2-r0 apk
php82-xmlwriter 8.2.13-r0 apk php83-simplexml 8.3.2-r0 apk
php82-xsl 8.2.13-r0 apk php83-soap 8.3.2-r0 apk
php82-zip 8.2.13-r0 apk php83-sockets 8.3.2-r0 apk
pinentry 1.2.1-r1 apk php83-sodium 8.3.2-r0 apk
pip 23.3.1 python php83-sqlite3 8.3.2-r0 apk
pkb-client 1.2 python php83-tokenizer 8.3.2-r0 apk
popt 1.19-r2 apk php83-xml 8.3.2-r0 apk
portalocker 2.8.2 python php83-xmlreader 8.3.2-r0 apk
procps-ng 4.0.4-r0 apk php83-xmlwriter 8.3.2-r0 apk
protobuf 4.25.1 python php83-xsl 8.3.2-r0 apk
publicsuffixlist 0.9.4 python php83-zip 8.3.2-r0 apk
pyOpenSSL 23.3.0 python pinentry 1.2.1-r1 apk
pyRFC3339 1.1 python pip 23.3.2 python
pyacmedns 0.4 python pkb-client 1.2 python
pyasn1 0.5.1 python popt 1.19-r3 apk
pyasn1-modules 0.3.0 python portalocker 2.8.2 python
pyc 0.1-r0 apk procps-ng 4.0.4-r0 apk
pycparser 2.21 python protobuf 4.25.2 python
pyotp 2.9.0 python publicsuffixlist 0.9.4 python
pyparsing 3.1.1 python pyOpenSSL 24.0.0 python
python-dateutil 2.8.2 python pyRFC3339 1.1 python
python-digitalocean 1.17.0 python pyacmedns 0.4 python
python-transip 0.6.0 python pyasn1 0.5.1 python
python3 3.11.6-r0 apk pyasn1-modules 0.3.0 python
python3-pyc 3.11.6-r0 apk pyc 3.11.6-r1 apk
python3-pycache-pyc0 3.11.6-r0 apk pycparser 2.21 python
pytz 2023.3.post1 python pyotp 2.9.0 python
readline 8.2.1-r1 apk pyparsing 3.1.1 python
requests 2.31.0 python python-dateutil 2.8.2 python
requests-file 1.5.1 python python-digitalocean 1.17.0 python
requests-mock 1.11.0 python python-transip 0.6.0 python
rsa 4.9 python python3 3.11.6-r1 apk
s3transfer 0.8.2 python python3-pyc 3.11.6-r1 apk
scanelf 1.3.7-r1 apk python3-pycache-pyc0 3.11.6-r1 apk
setuptools 65.5.0 python pytz 2023.3.post1 python
shadow 4.13-r4 apk readline 8.2.1-r2 apk
six 1.16.0 python requests 2.31.0 python
skalibs 2.13.1.1-r1 apk requests-file 1.5.1 python
soupsieve 2.5 python requests-mock 1.11.0 python
sqlite-libs 3.41.2-r2 apk rsa 4.9 python
ssl_client 1.36.1-r5 apk s3transfer 0.10.0 python
tiff 4.5.1-r0 apk scanelf 1.3.7-r2 apk
tldextract 5.1.1 python setuptools 65.5.0 python
typing-inspect 0.9.0 python shadow 4.14.2-r0 apk
typing_extensions 4.9.0 python six 1.16.0 python
tzdata 2023c-r1 apk skalibs 2.14.0.1-r0 apk
unixodbc 2.3.11-r2 apk soupsieve 2.5 python
uritemplate 4.1.1 python sqlite-libs 3.44.2-r0 apk
urllib3 2.0.7 python ssl_client 1.36.1-r15 apk
utmps-libs 0.1.2.1-r1 apk tiff 4.6.0-r0 apk
wheel 0.42.0 python tldextract 5.1.1 python
whois 5.5.17-r0 apk typing-inspect 0.9.0 python
xz-libs 5.4.3-r0 apk typing_extensions 4.9.0 python
zlib 1.2.13-r1 apk tzdata 2023d-r0 apk
zope.interface 6.1 python unixodbc 2.3.12-r0 apk
zstd-libs 1.5.5-r4 apk uritemplate 4.1.1 python
urllib3 2.0.7 python
utmps-libs 0.1.2.2-r0 apk
wheel 0.42.0 python
whois 5.5.20-r0 apk
xz-libs 5.4.5-r0 apk
zlib 1.3.1-r0 apk
zope.interface 6.1 python
zstd-libs 1.5.5-r8 apk

View File

@@ -34,7 +34,7 @@ param_env_vars:
- { env_var: "VALIDATION", env_value: "http", desc: "Certbot validation method to use, options are `http` or `dns` (`dns` method also requires `DNSPLUGIN` variable set)." } - { env_var: "VALIDATION", env_value: "http", desc: "Certbot validation method to use, options are `http` or `dns` (`dns` method also requires `DNSPLUGIN` variable set)." }
param_usage_include_vols: true param_usage_include_vols: true
param_volumes: param_volumes:
- { vol_path: "/config", vol_host_path: "/path/to/appdata/config", desc: "All the config files including the webroot reside here." } - { vol_path: "/config", vol_host_path: "/path/to/{{ project_name }}/config", desc: "Persistent config files" }
param_usage_include_ports: true param_usage_include_ports: true
param_ports: param_ports:
- { external_port: "443", internal_port: "443", port_desc: "Https port" } - { external_port: "443", internal_port: "443", port_desc: "Https port" }
@@ -50,7 +50,7 @@ opt_param_usage_include_env: true
opt_param_env_vars: opt_param_env_vars:
- { env_var: "SUBDOMAINS", env_value: "www,", desc: "Subdomains you'd like the cert to cover (comma separated, no spaces) ie. `www,ftp,cloud`. For a wildcard cert, set this *exactly* to `wildcard` (wildcard cert is available via `dns` validation only)" } - { env_var: "SUBDOMAINS", env_value: "www,", desc: "Subdomains you'd like the cert to cover (comma separated, no spaces) ie. `www,ftp,cloud`. For a wildcard cert, set this *exactly* to `wildcard` (wildcard cert is available via `dns` validation only)" }
- { env_var: "CERTPROVIDER", env_value: "", desc: "Optionally define the cert provider. Set to `zerossl` for ZeroSSL certs (requires existing [ZeroSSL account](https://app.zerossl.com/signup) and the e-mail address entered in `EMAIL` env var). Otherwise defaults to Let's Encrypt." } - { env_var: "CERTPROVIDER", env_value: "", desc: "Optionally define the cert provider. Set to `zerossl` for ZeroSSL certs (requires existing [ZeroSSL account](https://app.zerossl.com/signup) and the e-mail address entered in `EMAIL` env var). Otherwise defaults to Let's Encrypt." }
- { env_var: "DNSPLUGIN", env_value: "cloudflare", desc: "Required if `VALIDATION` is set to `dns`. Options are `acmedns`, `aliyun`, `azure`, `bunny`, `cloudflare`, `cpanel`, `desec`, `digitalocean`, `directadmin`, `dnsimple`, `dnsmadeeasy`, `dnspod`, `do`, `domeneshop`, `dreamhost`, `duckdns`, `freedns`, `gandi`, `gehirn`, `godaddy`, `google`, `google-domains`, `he`, `hetzner`, `infomaniak`, `inwx`, `ionos`, `linode`, `loopia`, `luadns`, `namecheap`, `netcup`, `njalla`, `nsone`, `ovh`, `porkbun`, `rfc2136`, `route53`, `sakuracloud`, `standalone`, `transip`, and `vultr`. Also need to enter the credentials into the corresponding ini (or json for some plugins) file under `/config/dns-conf`." } - { env_var: "DNSPLUGIN", env_value: "cloudflare", desc: "Required if `VALIDATION` is set to `dns`. Options are `acmedns`, `aliyun`, `azure`, `bunny`, `cloudflare`, `cpanel`, `desec`, `digitalocean`, `directadmin`, `dnsimple`, `dnsmadeeasy`, `dnspod`, `do`, `domeneshop`, `dreamhost`, `duckdns`, `freedns`, `gandi`, `gehirn`, `glesys`, `godaddy`, `google`, `google-domains`, `he`, `hetzner`, `infomaniak`, `inwx`, `ionos`, `linode`, `loopia`, `luadns`, `namecheap`, `netcup`, `njalla`, `nsone`, `ovh`, `porkbun`, `rfc2136`, `route53`, `sakuracloud`, `standalone`, `transip`, and `vultr`. Also need to enter the credentials into the corresponding ini (or json for some plugins) file under `/config/dns-conf`." }
- { env_var: "PROPAGATION", env_value: "", desc: "Optionally override (in seconds) the default propagation time for the dns plugins." } - { env_var: "PROPAGATION", env_value: "", desc: "Optionally override (in seconds) the default propagation time for the dns plugins." }
- { env_var: "EMAIL", env_value: "", desc: "Optional e-mail address used for cert expiration notifications (Required for ZeroSSL)." } - { env_var: "EMAIL", env_value: "", desc: "Optional e-mail address used for cert expiration notifications (Required for ZeroSSL)." }
- { env_var: "ONLY_SUBDOMAINS", env_value: "false", desc: "If you wish to get certs only for certain subdomains, but not the main domain (main domain may be hosted on another machine and cannot be validated), set this to `true`" } - { env_var: "ONLY_SUBDOMAINS", env_value: "false", desc: "If you wish to get certs only for certain subdomains, but not the main domain (main domain may be hosted on another machine and cannot be validated), set this to `true`" }
@@ -58,7 +58,7 @@ opt_param_env_vars:
- { env_var: "STAGING", env_value: "false", desc: "Set to `true` to retrieve certs in staging mode. Rate limits will be much higher, but the resulting cert will not pass the browser's security test. Only to be used for testing purposes." } - { env_var: "STAGING", env_value: "false", desc: "Set to `true` to retrieve certs in staging mode. Rate limits will be much higher, but the resulting cert will not pass the browser's security test. Only to be used for testing purposes." }
opt_param_usage_include_vols: false opt_param_usage_include_vols: false
opt_param_volumes: opt_param_volumes:
- { vol_path: "/config", vol_host_path: "/path/to/appdata/config", desc: "Configuration files." } - { vol_path: "/config", vol_host_path: "/path/to/{{ project_name }}/config", desc: "Persistent config files" }
opt_param_usage_include_ports: true opt_param_usage_include_ports: true
opt_param_ports: opt_param_ports:
- { external_port: "80", internal_port: "80", port_desc: "Http port (required for http validation and http -> https redirect)" } - { external_port: "80", internal_port: "80", port_desc: "Http port (required for http validation and http -> https redirect)" }
@@ -168,6 +168,8 @@ app_setup_block: |
# changelog # changelog
changelogs: changelogs:
- { date: "23.01.24:", desc: "Rebase to Alpine 3.19 with php 8.3, add root periodic crontabs for logrotate." }
- { date: "01.01.24:", desc: "Add GleSYS DNS plugin." }
- { date: "11.12.23:", desc: "Deprecate certbot-dns-dynu to resolve dependency conflicts with other plugins." } - { date: "11.12.23:", desc: "Deprecate certbot-dns-dynu to resolve dependency conflicts with other plugins." }
- { date: "30.11.23:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) site-confs/default.conf - Fix index.php being downloaded on 404." } - { date: "30.11.23:", desc: "[Existing users should update:](https://github.com/linuxserver/docker-swag/blob/master/README.md#updating-configs) site-confs/default.conf - Fix index.php being downloaded on 404." }
- { date: "23.11.23:", desc: "Run certbot as root to allow fix http validation." } - { date: "23.11.23:", desc: "Run certbot as root to allow fix http validation." }

View File

@@ -0,0 +1,5 @@
# Instructions: https://github.com/runfalk/certbot-dns-glesys#usage
# GleSYS API credentials used by Certbot
dns_glesys_user = CL00000
dns_glesys_password = apikeygoeshere

View File

@@ -1,2 +1,8 @@
# min hour day month weekday command # min hour day month weekday command
*/15 * * * * run-parts /etc/periodic/15min
0 * * * * run-parts /etc/periodic/hourly
0 2 * * * run-parts /etc/periodic/daily
0 3 * * 6 run-parts /etc/periodic/weekly
0 5 1 * * run-parts /etc/periodic/monthly
8 2 * * * /app/le-renew.sh >> /config/log/letsencrypt/letsencrypt.log 2>&1 8 2 * * * /app/le-renew.sh >> /config/log/letsencrypt/letsencrypt.log 2>&1