Compare commits

..

74 Commits

Author SHA1 Message Date
LinuxServer-CI
1674ff4509 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
2026-01-10 04:00:48 +00:00
LinuxServer-CI
5491278c13 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2026-01-03 03:59:18 +00:00
LinuxServer-CI
e834e13141 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-12-27 03:59:05 +00:00
LinuxServer-CI
7f080d8564 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-12-20 03:52:51 +00:00
LinuxServer-CI
bb730cbc72 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-12-13 03:53:30 +00:00
LinuxServer-CI
6b609ad159 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-12-10 18:35:07 +00:00
LinuxServer-CI
f7a31bb18e Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
2025-12-06 03:45:58 +00:00
LinuxServer-CI
01a5c0123e Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-12-03 21:23:08 +00:00
LinuxServer-CI
012b4ac68f Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
2025-11-29 03:49:15 +00:00
LinuxServer-CI
8961b7e923 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-11-22 03:43:45 +00:00
LinuxServer-CI
1e3524f927 Bot Updating Templated Files 2025-11-22 03:39:13 +00:00
LinuxServer-CI
a2f969a62e Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-11-15 03:43:31 +00:00
LinuxServer-CI
caaaccb0b3 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-11-08 03:39:30 +00:00
LinuxServer-CI
ae11ca79a0 Bot Updating Templated Files
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-11-05 12:06:21 +00:00
driz
9d7c0d6239 Merge pull request #590 from linuxserver/nemchik-patch-1
Update changelog for Gandi credentials update
2025-11-05 07:04:42 -05:00
Eric Nemchik
eb151ebd19 Update changelog for Gandi credentials update
Updated the changelog to reflect changes in Gandi credentials and Azure DNS propagation.
2025-11-04 21:22:08 -06:00
Eric Nemchik
4076c6b012 Merge pull request #577 from jeanrobertjs/patch-1
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
2025-11-04 21:18:42 -06:00
LinuxServer-CI
8437debed5 Bot Updating Package Versions 2025-11-05 03:16:31 +00:00
Eric Nemchik
0f177af593 Merge branch 'master' into patch-1 2025-11-04 20:43:59 -06:00
Eric Nemchik
23dd0531f1 Merge pull request #562 from neoteq-it/master 2025-11-04 20:41:38 -06:00
LinuxServer-CI
56d0503cb3 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
2025-11-01 03:46:36 +00:00
LinuxServer-CI
9397e9c70f Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-10-25 03:41:22 +00:00
LinuxServer-CI
e87649ffcd Bot Updating Templated Files 2025-10-25 03:37:01 +00:00
LinuxServer-CI
e11a8ded00 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-10-18 03:32:52 +00:00
LinuxServer-CI
576de0400c Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-10-11 03:31:40 +00:00
LinuxServer-CI
ad2d99029a Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-10-07 18:32:33 +00:00
LinuxServer-CI
b8d0c422ab Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
2025-10-04 03:29:29 +00:00
LinuxServer-CI
07c7399089 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-09-27 03:32:32 +00:00
LinuxServer-CI
2d9590691c Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-09-20 03:32:41 +00:00
LinuxServer-CI
72e5347c3b Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-09-13 03:26:16 +00:00
LinuxServer-CI
be7016bcc1 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-09-06 03:31:28 +00:00
LinuxServer-CI
ccd2464a26 Bot Updating Package Versions
Some checks failed
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-09-02 17:20:15 +00:00
LinuxServer-CI
fb4ba0deb0 Bot Updating Package Versions
Some checks failed
Mark stale issues and pull requests / stale (push) Has been cancelled
2025-08-30 03:33:52 +00:00
LinuxServer-CI
7d8332e624 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-08-23 03:39:14 +00:00
Jean-Robert JS
0e19ad9d0f Merge branch 'master' into patch-1 2025-08-19 12:13:04 +02:00
LinuxServer-CI
d9dbcd0756 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-08-16 03:49:49 +00:00
LinuxServer-CI
8381b03a05 Bot Updating Package Versions
Some checks failed
Mark stale issues and pull requests / stale (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-08-09 03:54:46 +00:00
LinuxServer-CI
a1efcf3cd4 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-08-05 19:29:36 +00:00
LinuxServer-CI
834de14952 Bot Updating Package Versions 2025-08-05 19:25:33 +00:00
LinuxServer-CI
8353859972 Bot Updating Package Versions 2025-08-02 04:00:44 +00:00
Jean-Robert JS
f491b59335 Merge branch 'master' into patch-1 2025-07-31 23:30:29 +02:00
LinuxServer-CI
ca399a7fa2 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-07-26 04:01:49 +00:00
Jean-Robert JS
d602e9bccf Update gandi.ini 2025-07-24 10:47:17 +02:00
Jean-Robert JS
284a8c66f9 Reflects the depreciation of the API key in favor of the personal access token (PAT) 2025-07-23 14:03:33 +02:00
LinuxServer-CI
1905b3c920 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-07-22 17:06:33 +00:00
LinuxServer-CI
c9efb531b0 Bot Updating Templated Files 2025-07-22 17:02:00 +00:00
Roxedus
26d05580ef Merge pull request #576 from linuxserver/typo-fix 2025-07-22 18:59:55 +02:00
driz
a2a7292e39 fix typo 2025-07-22 11:43:45 -04:00
LinuxServer-CI
5316c58910 Bot Updating Package Versions 2025-07-20 15:09:08 +00:00
LinuxServer-CI
fa860e1349 Bot Updating Templated Files 2025-07-20 15:04:44 +00:00
LinuxServer-CI
72f60b132b Bot Updating Templated Files 2025-07-20 15:03:11 +00:00
Adam
24cf84fd61 Merge pull request #573 from linuxserver/3.22 2025-07-20 16:01:37 +01:00
LinuxServer-CI
d4ceeb2f67 Bot Updating Package Versions 2025-07-19 03:56:42 +00:00
thespad
1282274a1a Wording 2025-07-18 20:57:53 +01:00
thespad
b05df6cf2a Add UDP buffer note 2025-07-18 20:57:01 +01:00
thespad
b96738cdf2 Add header note in readme 2025-07-18 20:32:49 +01:00
thespad
2d6a54a526 Comment out QUIC listeners and update readme 2025-07-18 20:26:10 +01:00
LinuxServer-CI
bb78c0f50e Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-07-12 03:57:44 +00:00
thespad
56ff1d5e19 Rebase to 3.22 2025-07-09 18:46:39 +01:00
LinuxServer-CI
7f9835b43f Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-07-05 03:53:44 +00:00
LinuxServer-CI
f3ac0dd394 Bot Updating Templated Files 2025-07-05 03:49:27 +00:00
LinuxServer-CI
0168126729 Bot Updating Templated Files 2025-07-05 03:48:01 +00:00
LinuxServer-CI
0e55f7b67e Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-06-28 03:48:42 +00:00
LinuxServer-CI
b52e35e494 Bot Updating Package Versions
Some checks failed
Mark stale issues and pull requests / stale (push) Has been cancelled
External Trigger Scheduler / external-trigger-scheduler (push) Has been cancelled
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-06-21 03:48:40 +00:00
LinuxServer-CI
ef2a5f2077 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-06-16 17:39:01 +00:00
Adam
0c910b9a7b Merge pull request #570 from jlssmt/add-tinyauth 2025-06-16 18:34:21 +01:00
LinuxServer-CI
9ab0f727d0 Bot Updating Package Versions 2025-06-14 03:47:18 +00:00
LinuxServer-CI
adcdf5d748 Bot Updating Package Versions
Some checks failed
Package Trigger Scheduler / package-trigger-scheduler (push) Has been cancelled
2025-06-12 20:30:24 +00:00
LinuxServer-CI
7a38630c0b Bot Updating Package Versions 2025-06-12 20:26:05 +00:00
LinuxServer-CI
6b6e7b74b5 Bot Updating Package Versions 2025-06-11 01:48:03 +00:00
LinuxServer-CI
3b6d0484b9 Bot Updating Templated Files 2025-06-11 01:43:55 +00:00
jlssmt
0d952bcee1 add tinyauth 2025-06-08 17:47:30 +02:00
LinuxServer-CI
35deb8f654 Bot Updating Package Versions 2025-06-07 03:47:21 +00:00
Jean Stickelmann
a5f1da0bcf Update run - Azure Supports propagation 2025-04-24 10:27:16 +02:00
26 changed files with 631 additions and 491 deletions

0
.editorconfig Executable file → Normal file
View File

0
.github/FUNDING.yml vendored Executable file → Normal file
View File

0
.github/ISSUE_TEMPLATE/config.yml vendored Executable file → Normal file
View File

0
.github/ISSUE_TEMPLATE/issue.bug.yml vendored Executable file → Normal file
View File

0
.github/ISSUE_TEMPLATE/issue.feature.yml vendored Executable file → Normal file
View File

3
.github/workflows/call_issue_pr_tracker.yml vendored Executable file → Normal file
View File

@@ -8,6 +8,9 @@ on:
pull_request_review: pull_request_review:
types: [submitted,edited,dismissed] types: [submitted,edited,dismissed]
permissions:
contents: read
jobs: jobs:
manage-project: manage-project:
permissions: permissions:

3
.github/workflows/call_issues_cron.yml vendored Executable file → Normal file
View File

@@ -4,6 +4,9 @@ on:
- cron: '35 15 * * *' - cron: '35 15 * * *'
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
stale: stale:
permissions: permissions:

View File

@@ -3,6 +3,9 @@ name: External Trigger Main
on: on:
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
external-trigger-master: external-trigger-master:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -43,8 +46,8 @@ jobs:
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
exit 1 exit 1
fi fi
EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g') EXT_RELEASE_SANITIZED=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
echo "External version: \`${EXT_RELEASE}\`" >> $GITHUB_STEP_SUMMARY echo "Sanitized external version: \`${EXT_RELEASE_SANITIZED}\`" >> $GITHUB_STEP_SUMMARY
echo "Retrieving last pushed version" >> $GITHUB_STEP_SUMMARY echo "Retrieving last pushed version" >> $GITHUB_STEP_SUMMARY
image="linuxserver/swag" image="linuxserver/swag"
tag="latest" tag="latest"
@@ -100,8 +103,8 @@ jobs:
exit 1 exit 1
fi fi
echo "Last pushed version: \`${IMAGE_VERSION}\`" >> $GITHUB_STEP_SUMMARY echo "Last pushed version: \`${IMAGE_VERSION}\`" >> $GITHUB_STEP_SUMMARY
if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then if [ "${EXT_RELEASE_SANITIZED}" == "${IMAGE_VERSION}" ]; then
echo "Version \`${EXT_RELEASE}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY echo "Sanitized version \`${EXT_RELEASE_SANITIZED}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-swag/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-swag/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "New version \`${EXT_RELEASE}\` found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY echo "New version \`${EXT_RELEASE}\` found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY
@@ -116,7 +119,7 @@ jobs:
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
else else
printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY
echo "New version \`${EXT_RELEASE}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY echo "New sanitized version \`${EXT_RELEASE_SANITIZED}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY
if [[ "${artifacts_found}" == "true" ]]; then if [[ "${artifacts_found}" == "true" ]]; then
echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY
fi fi
@@ -136,7 +139,7 @@ jobs:
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \ --data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit" --data-urlencode "Submit=Submit"
echo "**** Notifying Discord ****" echo "**** Notifying Discord ****"
TRIGGER_REASON="A version change was detected for swag tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}" TRIGGER_REASON="A version change was detected for swag tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE_SANITIZED}"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903, curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}], "description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}

View File

@@ -5,6 +5,9 @@ on:
- cron: '2 * * * *' - cron: '2 * * * *'
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
external-trigger-scheduler: external-trigger-scheduler:
runs-on: ubuntu-latest runs-on: ubuntu-latest

View File

@@ -2,8 +2,14 @@ name: Greetings
on: [pull_request_target, issues] on: [pull_request_target, issues]
permissions:
contents: read
jobs: jobs:
greeting: greeting:
permissions:
issues: write
pull-requests: write
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/first-interaction@v1 - uses: actions/first-interaction@v1

View File

@@ -5,6 +5,9 @@ on:
- cron: '1 3 * * 6' - cron: '1 3 * * 6'
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
package-trigger-scheduler: package-trigger-scheduler:
runs-on: ubuntu-latest runs-on: ubuntu-latest

0
.github/workflows/permissions.yml vendored Executable file → Normal file
View File

1
.gitignore vendored
View File

@@ -1 +1,2 @@
.idea
.jenkins-external .jenkins-external

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.21 FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.22
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -49,37 +49,36 @@ RUN \
nginx-mod-stream \ nginx-mod-stream \
nginx-mod-stream-geoip2 \ nginx-mod-stream-geoip2 \
nginx-vim \ nginx-vim \
php83-bcmath \ php84-bcmath \
php83-bz2 \ php84-bz2 \
php83-dom \ php84-dom \
php83-exif \ php84-exif \
php83-ftp \ php84-ftp \
php83-gd \ php84-gd \
php83-gmp \ php84-gmp \
php83-imap \ php84-imap \
php83-intl \ php84-intl \
php83-ldap \ php84-ldap \
php83-mysqli \ php84-mysqli \
php83-mysqlnd \ php84-mysqlnd \
php83-opcache \ php84-opcache \
php83-pdo_mysql \ php84-pdo_mysql \
php83-pdo_odbc \ php84-pdo_odbc \
php83-pdo_pgsql \ php84-pdo_pgsql \
php83-pdo_sqlite \ php84-pdo_sqlite \
php83-pear \ php84-pear \
php83-pecl-apcu \ php84-pecl-apcu \
php83-pecl-mcrypt \ php84-pecl-memcached \
php83-pecl-memcached \ php84-pecl-redis \
php83-pecl-redis \ php84-pgsql \
php83-pgsql \ php84-posix \
php83-posix \ php84-soap \
php83-soap \ php84-sockets \
php83-sockets \ php84-sodium \
php83-sodium \ php84-sqlite3 \
php83-sqlite3 \ php84-tokenizer \
php83-tokenizer \ php84-xmlreader \
php83-xmlreader \ php84-xsl \
php83-xsl \
whois && \ whois && \
echo "**** install certbot plugins ****" && \ echo "**** install certbot plugins ****" && \
if [ -z ${CERTBOT_VERSION+x} ]; then \ if [ -z ${CERTBOT_VERSION+x} ]; then \
@@ -89,7 +88,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.21/ \ pip install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.22/ \
certbot==${CERTBOT_VERSION} \ certbot==${CERTBOT_VERSION} \
certbot-dns-acmedns \ certbot-dns-acmedns \
certbot-dns-aliyun \ certbot-dns-aliyun \

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.21 FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.22
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -49,37 +49,36 @@ RUN \
nginx-mod-stream \ nginx-mod-stream \
nginx-mod-stream-geoip2 \ nginx-mod-stream-geoip2 \
nginx-vim \ nginx-vim \
php83-bcmath \ php84-bcmath \
php83-bz2 \ php84-bz2 \
php83-dom \ php84-dom \
php83-exif \ php84-exif \
php83-ftp \ php84-ftp \
php83-gd \ php84-gd \
php83-gmp \ php84-gmp \
php83-imap \ php84-imap \
php83-intl \ php84-intl \
php83-ldap \ php84-ldap \
php83-mysqli \ php84-mysqli \
php83-mysqlnd \ php84-mysqlnd \
php83-opcache \ php84-opcache \
php83-pdo_mysql \ php84-pdo_mysql \
php83-pdo_odbc \ php84-pdo_odbc \
php83-pdo_pgsql \ php84-pdo_pgsql \
php83-pdo_sqlite \ php84-pdo_sqlite \
php83-pear \ php84-pear \
php83-pecl-apcu \ php84-pecl-apcu \
php83-pecl-mcrypt \ php84-pecl-memcached \
php83-pecl-memcached \ php84-pecl-redis \
php83-pecl-redis \ php84-pgsql \
php83-pgsql \ php84-posix \
php83-posix \ php84-soap \
php83-soap \ php84-sockets \
php83-sockets \ php84-sodium \
php83-sodium \ php84-sqlite3 \
php83-sqlite3 \ php84-tokenizer \
php83-tokenizer \ php84-xmlreader \
php83-xmlreader \ php84-xsl \
php83-xsl \
whois && \ whois && \
echo "**** install certbot plugins ****" && \ echo "**** install certbot plugins ****" && \
if [ -z ${CERTBOT_VERSION+x} ]; then \ if [ -z ${CERTBOT_VERSION+x} ]; then \
@@ -89,7 +88,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.21/ \ pip install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.22/ \
certbot==${CERTBOT_VERSION} \ certbot==${CERTBOT_VERSION} \
certbot-dns-acmedns \ certbot-dns-acmedns \
certbot-dns-aliyun \ certbot-dns-aliyun \

117
Jenkinsfile vendored
View File

@@ -95,7 +95,11 @@ pipeline {
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 ./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 ./root/donate.txt'
if ( env.SYFT_IMAGE_TAG == null ) {
env.SYFT_IMAGE_TAG = 'latest'
}
} }
echo "Using syft image tag ${SYFT_IMAGE_TAG}"
sh '''#! /bin/bash sh '''#! /bin/bash
echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" ''' echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" '''
script{ script{
@@ -204,6 +208,7 @@ pipeline {
env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache' env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
env.CITEST_IMAGETAG = 'latest'
} }
} }
} }
@@ -229,6 +234,7 @@ pipeline {
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/' env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache' env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
env.CITEST_IMAGETAG = 'develop'
} }
} }
} }
@@ -254,6 +260,7 @@ pipeline {
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST 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/' env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache' env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
env.CITEST_IMAGETAG = 'develop'
} }
} }
} }
@@ -276,7 +283,7 @@ pipeline {
-v ${WORKSPACE}:/mnt \ -v ${WORKSPACE}:/mnt \
-e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \ -e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
-e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \ -e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
ghcr.io/linuxserver/baseimage-alpine:3.20 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\ ghcr.io/linuxserver/baseimage-alpine:3 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
apk add --no-cache python3 && \ apk add --no-cache python3 && \
python3 -m venv /lsiopy && \ python3 -m venv /lsiopy && \
pip install --no-cache-dir -U pip && \ pip install --no-cache-dir -U pip && \
@@ -611,13 +618,16 @@ pipeline {
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE" IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} & docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done done
for p in $(jobs -p); do for p in "${!pids[@]}"; do
wait "$p" || { echo "job $p failed" >&2; exit 1; } wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
done done
fi fi
''' '''
@@ -677,13 +687,16 @@ pipeline {
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE" IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} & docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done done
for p in $(jobs -p); do for p in "${!pids[@]}"; do
wait "$p" || { echo "job $p failed" >&2; exit 1; } wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
done done
fi fi
''' '''
@@ -737,12 +750,14 @@ pipeline {
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE" IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do for i in "${CACHE[@]}"; do
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} & docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done done
for p in $(jobs -p); do for p in "${!pids[@]}"; do
wait "$p" || { echo "job $p failed" >&2; exit 1; } wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
done done
fi fi
''' '''
@@ -780,7 +795,7 @@ pipeline {
docker run --rm \ docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock:ro \ -v /var/run/docker.sock:/var/run/docker.sock:ro \
-v ${TEMPDIR}:/tmp \ -v ${TEMPDIR}:/tmp \
ghcr.io/anchore/syft:latest \ ghcr.io/anchore/syft:${SYFT_IMAGE_TAG} \
${LOCAL_CONTAINER} -o table=/tmp/package_versions.txt ${LOCAL_CONTAINER} -o table=/tmp/package_versions.txt
NEW_PACKAGE_TAG=$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 ) NEW_PACKAGE_TAG=$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 )
echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github" echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github"
@@ -867,7 +882,7 @@ pipeline {
CI_DOCKERENV="LSIO_FIRST_PARTY=true" CI_DOCKERENV="LSIO_FIRST_PARTY=true"
fi fi
fi fi
docker pull ghcr.io/linuxserver/ci:latest docker pull ghcr.io/linuxserver/ci:${CITEST_IMAGETAG}
if [ "${MULTIARCH}" == "true" ]; then if [ "${MULTIARCH}" == "true" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64 docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
@@ -890,7 +905,10 @@ pipeline {
-e WEB_AUTH=\"${CI_AUTH}\" \ -e WEB_AUTH=\"${CI_AUTH}\" \
-e WEB_PATH=\"${CI_WEBPATH}\" \ -e WEB_PATH=\"${CI_WEBPATH}\" \
-e NODE_NAME=\"${NODE_NAME}\" \ -e NODE_NAME=\"${NODE_NAME}\" \
-t ghcr.io/linuxserver/ci:latest \ -e SYFT_IMAGE_TAG=\"${CI_SYFT_IMAGE_TAG:-${SYFT_IMAGE_TAG}}\" \
-e COMMIT_SHA=\"${COMMIT_SHA}\" \
-e BUILD_NUMBER=\"${BUILD_NUMBER}\" \
-t ghcr.io/linuxserver/ci:${CITEST_IMAGETAG} \
python3 test_build.py''' python3 test_build.py'''
} }
} }
@@ -916,9 +934,11 @@ pipeline {
CACHEIMAGE=${i} CACHEIMAGE=${i}
fi fi
done done
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:latest -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:latest -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
fi fi
done done
''' '''
@@ -943,20 +963,27 @@ pipeline {
CACHEIMAGE=${i} CACHEIMAGE=${i}
fi fi
done done
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-latest -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-latest -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-latest -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-latest -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
fi fi
done done
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest || \
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} || \
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
fi fi
done done
''' '''
@@ -974,23 +1001,41 @@ pipeline {
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
echo "Pushing New tag for current commit ${META_TAG}"
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${META_TAG}'",\
"object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\
"type": "commit",\
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
echo "Pushing New release for Tag"
sh '''#! /bin/bash sh '''#! /bin/bash
echo "Auto-generating release notes"
if [ "$(git tag --points-at HEAD)" != "" ]; then
echo "Existing tag points to current commit, suggesting no new LS changes"
AUTO_RELEASE_NOTES="No changes"
else
AUTO_RELEASE_NOTES=$(curl -fsL -H "Authorization: token ${GITHUB_TOKEN}" -H "Accept: application/vnd.github+json" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases/generate-notes \
-d '{"tag_name":"'${META_TAG}'",\
"target_commitish": "master"}' \
| jq -r '.body' | sed 's|## What.s Changed||')
fi
echo "Pushing New tag for current commit ${META_TAG}"
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${META_TAG}'",\
"object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\
"type": "commit",\
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}'
echo "Pushing New release for Tag"
echo "Updating PIP version of ${EXT_PIP} to ${EXT_RELEASE_CLEAN}" > releasebody.json echo "Updating PIP version of ${EXT_PIP} to ${EXT_RELEASE_CLEAN}" > releasebody.json
echo '{"tag_name":"'${META_TAG}'",\ jq -n \
"target_commitish": "master",\ --arg tag_name "$META_TAG" \
"name": "'${META_TAG}'",\ --arg target_commitish "master" \
"body": "**CI Report:**\\n\\n'${CI_URL:-N/A}'\\n\\n**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start --arg ci_url "${CI_URL:-N/A}" \
printf '","draft": false,"prerelease": false}' >> releasebody.json --arg ls_notes "$AUTO_RELEASE_NOTES" \
paste -d'\\0' start releasebody.json > releasebody.json.done --arg remote_notes "$(cat releasebody.json)" \
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done''' '{
"tag_name": $tag_name,
"target_commitish": $target_commitish,
"name": $tag_name,
"body": ("**CI Report:**\\n\\n" + $ci_url + "\\n\\n**LinuxServer Changes:**\\n\\n" + $ls_notes + "\\n\\n**Remote Changes:**\\n\\n" + $remote_notes),
"draft": false,
"prerelease": false }' > releasebody.json.done
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done
'''
} }
} }
// Add protection to the release branch // Add protection to the release branch

0
LICENSE Executable file → Normal file
View File

View File

@@ -5,7 +5,6 @@
[![Blog](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Blog)](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!") [![Blog](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Blog)](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!")
[![Discord](https://img.shields.io/discord/354974912613449730.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Discord&logo=discord)](https://linuxserver.io/discord "realtime support / chat with the community and the team.") [![Discord](https://img.shields.io/discord/354974912613449730.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Discord&logo=discord)](https://linuxserver.io/discord "realtime support / chat with the community and the team.")
[![Discourse](https://img.shields.io/discourse/https/discourse.linuxserver.io/topics.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=discourse)](https://discourse.linuxserver.io "post on our community forum.") [![Discourse](https://img.shields.io/discourse/https/discourse.linuxserver.io/topics.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=discourse)](https://discourse.linuxserver.io "post on our community forum.")
[![Fleet](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Fleet)](https://fleet.linuxserver.io "an online web interface which displays all of our maintained images.")
[![GitHub](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub&logo=github)](https://github.com/linuxserver "view the source for all of our repositories.") [![GitHub](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub&logo=github)](https://github.com/linuxserver "view the source for all of our repositories.")
[![Open Collective](https://img.shields.io/opencollective/all/linuxserver.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Supporters&logo=open%20collective)](https://opencollective.com/linuxserver "please consider helping us by either donating or contributing to our budget") [![Open Collective](https://img.shields.io/opencollective/all/linuxserver.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Supporters&logo=open%20collective)](https://opencollective.com/linuxserver "please consider helping us by either donating or contributing to our budget")
@@ -22,7 +21,6 @@ Find us at:
* [Blog](https://blog.linuxserver.io) - all the things you can do with our containers including How-To guides, opinions and much more! * [Blog](https://blog.linuxserver.io) - all the things you can do with our containers including How-To guides, opinions and much more!
* [Discord](https://linuxserver.io/discord) - realtime support / chat with the community and the team. * [Discord](https://linuxserver.io/discord) - realtime support / chat with the community and the team.
* [Discourse](https://discourse.linuxserver.io) - post on our community forum. * [Discourse](https://discourse.linuxserver.io) - post on our community forum.
* [Fleet](https://fleet.linuxserver.io) - an online web interface which displays all of our maintained images.
* [GitHub](https://github.com/linuxserver) - view the source for all of our repositories. * [GitHub](https://github.com/linuxserver) - view the source for all of our repositories.
* [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget * [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget
@@ -54,7 +52,6 @@ The architectures supported by this image are:
| :----: | :----: | ---- | | :----: | :----: | ---- |
| x86-64 | ✅ | amd64-\<version tag\> | | x86-64 | ✅ | amd64-\<version tag\> |
| arm64 | ✅ | arm64v8-\<version tag\> | | arm64 | ✅ | arm64v8-\<version tag\> |
| armhf | ❌ | |
## Application Setup ## Application Setup
@@ -145,6 +142,16 @@ This will *ask* Google et al not to index and list your site. Be careful with th
* Proxy sample files WILL be updated, however your renamed (enabled) proxy files will not. * Proxy sample files WILL be updated, however your renamed (enabled) proxy files will not.
* You can check the new sample and adjust your active config as needed. * You can check the new sample and adjust your active config as needed.
### QUIC support
This image supports QUIC (also known as HTTP/3) but it must be explicitly enabled in each proxy conf, and the default conf, because if the listener is enabled and you don't expose 443/UDP, it can break connections with some browsers.
To enable QUIC, expose 443/UDP to your clients, then uncomment both QUIC listeners in all of your active proxy confs, as well as the default conf, and restart the container.
You should also uncomment the `Alt-Svc` header in your `ssl.conf` so that browsers are aware that you offer QUIC connectivity.
It is [recommended](https://quic-go.net/docs/quic/optimizations/#udp-buffer-sizes) to increase the UDP send/recieve buffer **on the host** by setting the `net.core.rmem_max` and `net.core.wmem_max` sysctls. Suggested values are 4-16Mb (4194304-16777216 bytes). For persistence between reboots use `/etc/sysctl.d/`.
### Migration from the old `linuxserver/letsencrypt` image ### Migration from the old `linuxserver/letsencrypt` image
Please follow the instructions [on this blog post](https://www.linuxserver.io/blog/2020-08-21-introducing-swag#migrate). Please follow the instructions [on this blog post](https://www.linuxserver.io/blog/2020-08-21-introducing-swag#migrate).
@@ -197,6 +204,7 @@ services:
ports: ports:
- 443:443 - 443:443
- 80:80 #optional - 80:80 #optional
- 443:443/udp #optional
restart: unless-stopped restart: unless-stopped
``` ```
@@ -224,6 +232,7 @@ docker run -d \
-e SWAG_AUTORELOAD_WATCHLIST= `#optional` \ -e SWAG_AUTORELOAD_WATCHLIST= `#optional` \
-p 443:443 \ -p 443:443 \
-p 80:80 `#optional` \ -p 80:80 `#optional` \
-p 443:443/udp `#optional` \
-v /path/to/swag/config:/config \ -v /path/to/swag/config:/config \
--restart unless-stopped \ --restart unless-stopped \
lscr.io/linuxserver/swag:latest lscr.io/linuxserver/swag:latest
@@ -237,6 +246,7 @@ Containers are configured using parameters passed at runtime (such as those abov
| :----: | --- | | :----: | --- |
| `-p 443:443` | HTTPS port | | `-p 443:443` | HTTPS port |
| `-p 80` | HTTP port (required for HTTP validation and HTTP -> HTTPS redirect) | | `-p 80` | HTTP port (required for HTTP validation and HTTP -> HTTPS redirect) |
| `-p 443/udp` | QUIC (HTTP/3) port. Must be enabled in the default and proxy confs. |
| `-e PUID=1000` | for UserID - see below for explanation | | `-e PUID=1000` | for UserID - see below for explanation |
| `-e PGID=1000` | for GroupID - see below for explanation | | `-e PGID=1000` | for GroupID - see below for explanation |
| `-e TZ=Etc/UTC` | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List). | | `-e TZ=Etc/UTC` | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List). |
@@ -423,6 +433,8 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions ## Versions
* **04.11.25:** - Switch default Gandi credentials from API Key to Token, allow DNS propagation time for Azure DNS plugin.
* **18.07.25:** - Rebase to Alpine 3.22 with PHP 8.4. Add QUIC support. Drop PHP bindings for mcrypt as it is no longer maintained.
* **05.05.25:** - Disable Certbot's built in log rotation. * **05.05.25:** - Disable Certbot's built in log rotation.
* **19.01.25:** - Add [Auto Reload](https://github.com/linuxserver/docker-mods/tree/swag-auto-reload) functionality to SWAG. * **19.01.25:** - Add [Auto Reload](https://github.com/linuxserver/docker-mods/tree/swag-auto-reload) functionality to SWAG.
* **17.12.24:** - Rebase to Alpine 3.21. * **17.12.24:** - Rebase to Alpine 3.21.

View File

@@ -1,374 +1,371 @@
NAME VERSION TYPE NAME VERSION TYPE
Simple Launcher 1.1.0.14 binary (+5 duplicates) Simple Launcher 1.1.0.14 binary (+5 duplicates)
acl-libs 2.3.2-r1 apk acl-libs 2.3.2-r1 apk
acme 4.0.0 python acme 5.2.2 python
alpine-baselayout 3.6.8-r1 apk alpine-baselayout 3.7.0-r0 apk
alpine-baselayout-data 3.6.8-r1 apk alpine-baselayout-data 3.7.0-r0 apk
alpine-keys 2.5-r0 apk alpine-keys 2.5-r0 apk
alpine-release 3.21.3-r0 apk alpine-release 3.22.2-r0 apk
aom-libs 3.11.0-r0 apk aom-libs 3.12.1-r0 apk
apache2-utils 2.4.62-r0 apk apache2-utils 2.4.66-r0 apk
apk-tools 2.14.6-r3 apk apk-tools 2.14.9-r3 apk
apr 1.7.5-r0 apk apr 1.7.5-r0 apk
apr-util 1.6.3-r1 apk apr-util 1.6.3-r1 apk
argon2-libs 20190702-r5 apk argon2-libs 20190702-r5 apk
attrs 25.3.0 python attrs 25.4.0 python
autocommand 2.2.2 python autocommand 2.2.2 python
azure-common 1.1.28 python azure-common 1.1.28 python
azure-core 1.34.0 python azure-core 1.37.0 python
azure-identity 1.23.0 python azure-identity 1.25.1 python
azure-mgmt-core 1.5.0 python azure-mgmt-core 1.6.0 python
azure-mgmt-dns 8.2.0 python azure-mgmt-dns 9.0.0 python
backports-tarfile 1.2.0 python backports-tarfile 1.2.0 python
bash 5.2.37-r0 apk bash 5.2.37-r0 apk
beautifulsoup4 4.13.4 python beautifulsoup4 4.14.3 python
boto3 1.38.27 python boto3 1.42.25 python
botocore 1.38.27 python botocore 1.42.25 python
brotli-libs 1.1.0-r2 apk brotli-libs 1.1.0-r2 apk
bs4 0.0.2 python bs4 0.0.2 python
busybox 1.37.0-r12 apk busybox 1.37.0-r20 apk
busybox-binsh 1.37.0-r12 apk busybox-binsh 1.37.0-r20 apk
c-ares 1.34.5-r0 apk c-ares 1.34.6-r0 apk
c-client 2007f-r15 apk c-client 2007f-r15 apk
ca-certificates 20241121-r1 apk ca-certificates 20250911-r0 apk
ca-certificates-bundle 20241121-r1 apk ca-certificates-bundle 20250911-r0 apk
cachetools 5.5.2 python catatonit 0.2.1-r0 apk
catatonit 0.2.0-r0 apk certbot 5.2.2 python
certbot 4.0.0 python certbot-dns-acmedns 0.1.0 python
certbot-dns-acmedns 0.1.0 python certbot-dns-aliyun 2.0.0 python
certbot-dns-aliyun 2.0.0 python certbot-dns-azure 1.5.0 python
certbot-dns-azure 1.5.0 python certbot-dns-bunny 3.0.0 python
certbot-dns-bunny 3.0.0 python certbot-dns-cloudflare 5.2.2 python
certbot-dns-cloudflare 4.0.0 python certbot-dns-cpanel 0.4.0 python
certbot-dns-cpanel 0.4.0 python certbot-dns-desec 1.3.2 python
certbot-dns-desec 1.2.1 python certbot-dns-digitalocean 5.2.2 python
certbot-dns-digitalocean 4.0.0 python certbot-dns-directadmin 1.0.15 python
certbot-dns-directadmin 1.0.15 python certbot-dns-dnsimple 5.2.2 python
certbot-dns-dnsimple 4.0.0 python certbot-dns-dnsmadeeasy 5.2.2 python
certbot-dns-dnsmadeeasy 4.0.0 python certbot-dns-dnspod 0.1.0 python
certbot-dns-dnspod 0.1.0 python certbot-dns-do 0.31.0 python
certbot-dns-do 0.31.0 python certbot-dns-domeneshop 0.2.9 python
certbot-dns-domeneshop 0.2.9 python certbot-dns-dreamhost 1.0 python
certbot-dns-dreamhost 1.0 python certbot-dns-duckdns 1.7.1 python
certbot-dns-duckdns 1.6 python certbot-dns-dynudns 0.0.6 python
certbot-dns-dynudns 0.0.6 python certbot-dns-freedns 0.2.0 python
certbot-dns-freedns 0.2.0 python certbot-dns-gehirn 5.2.2 python
certbot-dns-gehirn 4.0.0 python certbot-dns-glesys 2.1.0 python
certbot-dns-glesys 2.1.0 python certbot-dns-godaddy 2.8.0 python
certbot-dns-godaddy 2.8.0 python certbot-dns-google 5.2.2 python
certbot-dns-google 4.0.0 python certbot-dns-he 1.0.0 python
certbot-dns-he 1.0.0 python certbot-dns-hetzner 2.0.1 python
certbot-dns-hetzner 2.0.1 python certbot-dns-infomaniak 0.2.4 python
certbot-dns-infomaniak 0.2.3 python certbot-dns-inwx 3.0.3 python
certbot-dns-inwx 3.0.2 python certbot-dns-ionos 2024.11.9 python
certbot-dns-ionos 2024.11.9 python certbot-dns-linode 5.2.2 python
certbot-dns-linode 4.0.0 python certbot-dns-loopia 1.0.1 python
certbot-dns-loopia 1.0.1 python certbot-dns-luadns 5.2.2 python
certbot-dns-luadns 4.0.0 python certbot-dns-namecheap 1.0.0 python
certbot-dns-namecheap 1.0.0 python certbot-dns-netcup 2.0.0 python
certbot-dns-netcup 1.4.4 python certbot-dns-njalla 2.0.2 python
certbot-dns-njalla 2.0.2 python certbot-dns-nsone 5.2.2 python
certbot-dns-nsone 4.0.0 python certbot-dns-ovh 5.2.2 python
certbot-dns-ovh 4.0.0 python certbot-dns-porkbun 0.11.0 python
certbot-dns-porkbun 0.10.1 python certbot-dns-rfc2136 5.2.2 python
certbot-dns-rfc2136 4.0.0 python certbot-dns-route53 5.2.2 python
certbot-dns-route53 4.0.0 python certbot-dns-sakuracloud 5.2.2 python
certbot-dns-sakuracloud 4.0.0 python certbot-dns-standalone 1.2.1 python
certbot-dns-standalone 1.2.1 python certbot-dns-transip 0.5.2 python
certbot-dns-transip 0.5.2 python certbot-dns-vultr 1.1.0 python
certbot-dns-vultr 1.1.0 python certbot-plugin-gandi 1.5.0 python
certbot-plugin-gandi 1.5.0 python certifi 2026.1.4 python
certifi 2025.4.26 python cffi 2.0.0 python
cffi 1.17.1 python charset-normalizer 3.4.4 python
charset-normalizer 3.4.2 python cli UNKNOWN binary
cli UNKNOWN binary cli-32 UNKNOWN binary
cli-32 UNKNOWN binary cli-64 UNKNOWN binary
cli-64 UNKNOWN binary cli-arm64 UNKNOWN binary
cli-arm64 UNKNOWN binary cloudflare 2.19.4 python
cloudflare 2.19.4 python composer 2.9.3 binary
composer 2.8.9 binary configargparse 1.7.1 python
configargparse 1.7.1 python configobj 5.0.9 python
configobj 5.0.9 python coreutils 9.7-r1 apk
coreutils 9.5-r2 apk coreutils-env 9.7-r1 apk
coreutils-env 9.5-r2 apk coreutils-fmt 9.7-r1 apk
coreutils-fmt 9.5-r2 apk coreutils-sha512sum 9.7-r1 apk
coreutils-sha512sum 9.5-r2 apk cryptography 46.0.3 python
cryptography 45.0.3 python curl 8.14.1-r2 apk
curl 8.12.1-r1 apk distro 1.9.0 python
distro 1.9.0 python dns-lexicon 3.23.2 python
dns-lexicon 3.21.1 python dnslib 0.9.26 python
dnslib 0.9.26 python dnspython 2.8.0 python
dnspython 2.7.0 python domeneshop 0.4.4 python
domeneshop 0.4.4 python fail2ban 1.1.0 python
fail2ban 1.1.0 python fail2ban 1.1.0-r3 apk
fail2ban 1.1.0-r2 apk fail2ban-pyc 1.1.0-r3 apk
fail2ban-pyc 1.1.0-r2 apk filelock 3.20.3 python
filelock 3.18.0 python findutils 4.10.0-r0 apk
findutils 4.10.0-r0 apk fontconfig 2.15.0-r3 apk
fontconfig 2.15.0-r1 apk freetype 2.13.3-r0 apk
freetype 2.13.3-r0 apk future 1.0.0 python
future 1.0.0 python gdbm 1.24-r0 apk
gdbm 1.24-r0 apk git 2.49.1-r0 apk
git 2.47.2-r0 apk git-init-template 2.49.1-r0 apk
git-init-template 2.47.2-r0 apk git-perl 2.49.1-r0 apk
git-perl 2.47.2-r0 apk gmp 6.3.0-r3 apk
gmp 6.3.0-r2 apk gnupg 2.4.9-r0 apk
gnupg 2.4.7-r0 apk gnupg-dirmngr 2.4.9-r0 apk
gnupg-dirmngr 2.4.7-r0 apk gnupg-gpgconf 2.4.9-r0 apk
gnupg-gpgconf 2.4.7-r0 apk gnupg-keyboxd 2.4.9-r0 apk
gnupg-keyboxd 2.4.7-r0 apk gnupg-utils 2.4.9-r0 apk
gnupg-utils 2.4.7-r0 apk gnupg-wks-client 2.4.9-r0 apk
gnupg-wks-client 2.4.7-r0 apk gnutls 3.8.8-r0 apk
gnutls 3.8.8-r0 apk google-api-core 2.29.0 python
google-api-core 2.24.2 python google-api-python-client 2.187.0 python
google-api-python-client 2.170.0 python google-auth 2.47.0 python
google-auth 2.40.2 python google-auth-httplib2 0.3.0 python
google-auth-httplib2 0.2.0 python googleapis-common-protos 1.72.0 python
googleapis-common-protos 1.70.0 python gpg 2.4.9-r0 apk
gpg 2.4.7-r0 apk gpg-agent 2.4.9-r0 apk
gpg-agent 2.4.7-r0 apk gpg-wks-server 2.4.9-r0 apk
gpg-wks-server 2.4.7-r0 apk gpgsm 2.4.9-r0 apk
gpgsm 2.4.7-r0 apk gpgv 2.4.9-r0 apk
gpgv 2.4.7-r0 apk gui UNKNOWN binary
gui UNKNOWN binary gui-32 UNKNOWN binary
gui-32 UNKNOWN binary gui-64 UNKNOWN binary
gui-64 UNKNOWN binary gui-arm64 UNKNOWN binary
gui-arm64 UNKNOWN binary httplib2 0.31.0 python
httplib2 0.22.0 python icu-data-en 76.1-r1 apk
icu-data-en 74.2-r0 apk icu-libs 76.1-r1 apk
icu-libs 74.2-r0 apk idna 3.11 python
idna 3.10 python importlib-metadata 8.0.0 python
importlib-metadata 8.0.0 python inflect 7.3.1 python
inflect 7.3.1 python inotify-tools 4.23.9.0-r0 apk
inotify-tools 4.23.9.0-r0 apk inotify-tools-libs 4.23.9.0-r0 apk
inotify-tools-libs 4.23.9.0-r0 apk inwx-domrobot 3.2.0 python
inwx-domrobot 3.2.0 python iptables 1.8.11-r1 apk
iptables 1.8.11-r1 apk iptables-legacy 1.8.11-r1 apk
iptables-legacy 1.8.11-r1 apk isodate 0.7.2 python
isodate 0.7.2 python jaraco-collections 5.1.0 python
jaraco-collections 5.1.0 python jaraco-context 5.3.0 python
jaraco-context 5.3.0 python jaraco-functools 4.0.1 python
jaraco-functools 4.0.1 python jaraco-text 3.12.1 python
jaraco-text 3.12.1 python jinja2 3.1.6 python
jinja2 3.1.6 python jmespath 1.0.1 python
jmespath 1.0.1 python josepy 2.2.0 python
josepy 2.0.0 python jq 1.8.1-r0 apk
jq 1.7.1-r0 apk jsonlines 4.0.0 python
jsonlines 4.0.0 python jsonpickle 4.1.1 python
jsonpickle 4.1.0 python libapk2 2.14.9-r3 apk
libassuan 2.5.7-r0 apk libassuan 2.5.7-r0 apk
libattr 2.5.2-r2 apk libattr 2.5.2-r2 apk
libavif 1.0.4-r0 apk libavif 1.3.0-r0 apk
libbsd 0.12.2-r0 apk libbsd 0.12.2-r0 apk
libbz2 1.0.8-r6 apk libbz2 1.0.8-r6 apk
libcrypto3 3.3.3-r0 apk libcrypto3 3.5.4-r0 apk
libcurl 8.12.1-r1 apk libcurl 8.14.1-r2 apk
libdav1d 1.5.0-r0 apk libdav1d 1.5.1-r0 apk
libedit 20240808.3.1-r0 apk libedit 20250104.3.1-r1 apk
libevent 2.1.12-r7 apk libevent 2.1.12-r8 apk
libexpat 2.7.0-r0 apk libexpat 2.7.3-r0 apk
libffi 3.4.7-r0 apk libffi 3.4.8-r0 apk
libgcc 14.2.0-r4 apk libgcc 14.2.0-r6 apk
libgcrypt 1.10.3-r1 apk libgcrypt 1.10.3-r1 apk
libgd 2.3.3-r9 apk libgd 2.3.3-r10 apk
libgpg-error 1.51-r0 apk libgpg-error 1.55-r0 apk
libice 1.1.1-r6 apk libice 1.1.2-r0 apk
libidn2 2.3.7-r0 apk libidn2 2.3.7-r0 apk
libintl 0.22.5-r0 apk libintl 0.24.1-r0 apk
libip4tc 1.8.11-r1 apk libip4tc 1.8.11-r1 apk
libip6tc 1.8.11-r1 apk libip6tc 1.8.11-r1 apk
libjpeg-turbo 3.0.4-r0 apk libjpeg-turbo 3.1.0-r0 apk
libksba 1.6.7-r0 apk libksba 1.6.7-r0 apk
libldap 2.6.8-r0 apk libldap 2.6.8-r0 apk
libmaxminddb-libs 1.9.1-r0 apk libmaxminddb-libs 1.9.1-r0 apk
libmcrypt 2.5.8-r10 apk libmd 1.1.0-r0 apk
libmd 1.1.0-r0 apk libmemcached-libs 1.1.4-r1 apk
libmemcached-libs 1.1.4-r1 apk libmnl 1.0.5-r2 apk
libmnl 1.0.5-r2 apk libncursesw 6.5_p20250503-r0 apk
libncursesw 6.5_p20241006-r3 apk libnftnl 1.2.9-r0 apk
libnftnl 1.2.8-r0 apk libpanelw 6.5_p20250503-r0 apk
libpanelw 6.5_p20241006-r3 apk libpng 1.6.53-r0 apk
libpng 1.6.47-r0 apk libpq 17.7-r0 apk
libpq 17.5-r0 apk libproc2 4.0.4-r3 apk
libproc2 4.0.4-r2 apk libpsl 0.21.5-r3 apk
libpsl 0.21.5-r3 apk libsasl 2.1.28-r8 apk
libsasl 2.1.28-r8 apk libseccomp 2.6.0-r0 apk
libseccomp 2.5.5-r1 apk libsharpyuv 1.5.0-r0 apk
libsharpyuv 1.4.0-r0 apk libsm 1.2.5-r0 apk
libsm 1.2.4-r4 apk libsodium 1.0.20-r1 apk
libsodium 1.0.20-r0 apk libssl3 3.5.4-r0 apk
libssl3 3.3.3-r0 apk libstdc++ 14.2.0-r6 apk
libstdc++ 14.2.0-r4 apk libtasn1 4.20.0-r0 apk
libtasn1 4.20.0-r0 apk libunistring 1.3-r0 apk
libunistring 1.2-r0 apk libuuid 2.41-r9 apk
libuuid 2.40.4-r1 apk libwebp 1.5.0-r0 apk
libwebp 1.4.0-r0 apk libx11 1.8.11-r0 apk
libx11 1.8.10-r0 apk libxau 1.0.12-r0 apk
libxau 1.0.11-r4 apk libxcb 1.17.0-r0 apk
libxcb 1.16.1-r0 apk libxdmcp 1.1.5-r1 apk
libxdmcp 1.1.5-r1 apk libxext 1.3.6-r2 apk
libxext 1.3.6-r2 apk libxml2 2.13.9-r0 apk
libxml2 2.13.4-r6 apk libxpm 3.5.17-r0 apk
libxpm 3.5.17-r0 apk libxslt 1.1.43-r3 apk
libxslt 1.1.42-r2 apk libxt 1.3.1-r0 apk
libxt 1.3.1-r0 apk libxtables 1.8.11-r1 apk
libxtables 1.8.11-r1 apk libyuv 0.0.1887.20251502-r1 apk
libzip 1.11.2-r0 apk libzip 1.11.4-r0 apk
linux-pam 1.6.1-r1 apk linux-pam 1.7.0-r4 apk
logrotate 3.21.0-r1 apk logrotate 3.21.0-r1 apk
loopialib 0.2.0 python loopialib 0.2.0 python
lxml 5.4.0 python lxml 6.0.2 python
lz4-libs 1.10.0-r0 apk lz4-libs 1.10.0-r0 apk
markupsafe 3.0.2 python markupsafe 3.0.3 python
memcached 1.6.32-r0 apk memcached 1.6.32-r0 apk
mock 5.2.0 python mock 5.2.0 python
more-itertools 10.3.0 python more-itertools 10.3.0 python
mpdecimal 4.0.0-r0 apk mpdecimal 4.0.1-r0 apk
msal 1.32.3 python msal 1.34.0 python
msal-extensions 1.3.1 python msal-extensions 1.3.1 python
musl 1.2.5-r9 apk musl 1.2.5-r10 apk
musl-utils 1.2.5-r9 apk musl-utils 1.2.5-r10 apk
my-test-package 1.0 python my-test-package 1.0 python
nano 8.2-r0 apk nano 8.4-r0 apk
ncurses-terminfo-base 6.5_p20241006-r3 apk ncurses-terminfo-base 6.5_p20250503-r0 apk
netcat-openbsd 1.226.1.1-r0 apk netcat-openbsd 1.229.1-r0 apk
nettle 3.10-r1 apk nettle 3.10.1-r0 apk
nghttp2-libs 1.64.0-r0 apk nghttp2-libs 1.65.0-r0 apk
nginx 1.26.3-r0 apk nginx 1.28.0-r3 apk
nginx-mod-devel-kit 1.26.3-r0 apk nginx-mod-devel-kit 1.28.0-r3 apk
nginx-mod-http-brotli 1.26.3-r0 apk nginx-mod-http-brotli 1.28.0-r3 apk
nginx-mod-http-dav-ext 1.26.3-r0 apk nginx-mod-http-dav-ext 1.28.0-r3 apk
nginx-mod-http-echo 1.26.3-r0 apk nginx-mod-http-echo 1.28.0-r3 apk
nginx-mod-http-fancyindex 1.26.3-r0 apk nginx-mod-http-fancyindex 1.28.0-r3 apk
nginx-mod-http-geoip2 1.26.3-r0 apk nginx-mod-http-geoip2 1.28.0-r3 apk
nginx-mod-http-headers-more 1.26.3-r0 apk nginx-mod-http-headers-more 1.28.0-r3 apk
nginx-mod-http-image-filter 1.26.3-r0 apk nginx-mod-http-image-filter 1.28.0-r3 apk
nginx-mod-http-perl 1.26.3-r0 apk nginx-mod-http-perl 1.28.0-r3 apk
nginx-mod-http-redis2 1.26.3-r0 apk nginx-mod-http-redis2 1.28.0-r3 apk
nginx-mod-http-set-misc 1.26.3-r0 apk nginx-mod-http-set-misc 1.28.0-r3 apk
nginx-mod-http-upload-progress 1.26.3-r0 apk nginx-mod-http-upload-progress 1.28.0-r3 apk
nginx-mod-http-xslt-filter 1.26.3-r0 apk nginx-mod-http-xslt-filter 1.28.0-r3 apk
nginx-mod-mail 1.26.3-r0 apk nginx-mod-mail 1.28.0-r3 apk
nginx-mod-rtmp 1.26.3-r0 apk nginx-mod-rtmp 1.28.0-r3 apk
nginx-mod-stream 1.26.3-r0 apk nginx-mod-stream 1.28.0-r3 apk
nginx-mod-stream-geoip2 1.26.3-r0 apk nginx-mod-stream-geoip2 1.28.0-r3 apk
nginx-vim 1.26.3-r0 apk nginx-vim 1.28.0-r3 apk
npth 1.6-r4 apk npth 1.8-r0 apk
oniguruma 6.9.9-r0 apk oniguruma 6.9.10-r0 apk
openssl 3.3.3-r0 apk openssl 3.5.4-r0 apk
p11-kit 0.25.5-r2 apk p11-kit 0.25.5-r2 apk
packaging 24.2 python packaging 24.2 python
parsedatetime 2.6 python parsedatetime 2.6 python
pcre 8.45-r3 apk pcre2 10.46-r0 apk
pcre2 10.43-r0 apk perl 5.40.3-r0 apk
perl 5.40.1-r1 apk perl-error 0.17030-r0 apk
perl-error 0.17029-r2 apk perl-git 2.49.1-r0 apk
perl-git 2.47.2-r0 apk php84 8.4.16-r0 apk
php83 8.3.19-r0 apk php84-bcmath 8.4.16-r0 apk
php83-bcmath 8.3.19-r0 apk php84-bz2 8.4.16-r0 apk
php83-bz2 8.3.19-r0 apk php84-common 8.4.16-r0 apk
php83-common 8.3.19-r0 apk php84-ctype 8.4.16-r0 apk
php83-ctype 8.3.19-r0 apk php84-curl 8.4.16-r0 apk
php83-curl 8.3.19-r0 apk php84-dom 8.4.16-r0 apk
php83-dom 8.3.19-r0 apk php84-exif 8.4.16-r0 apk
php83-exif 8.3.19-r0 apk php84-fileinfo 8.4.16-r0 apk
php83-fileinfo 8.3.19-r0 apk php84-fpm 8.4.16-r0 apk
php83-fpm 8.3.19-r0 apk php84-ftp 8.4.16-r0 apk
php83-ftp 8.3.19-r0 apk php84-gd 8.4.16-r0 apk
php83-gd 8.3.19-r0 apk php84-gmp 8.4.16-r0 apk
php83-gmp 8.3.19-r0 apk php84-iconv 8.4.16-r0 apk
php83-iconv 8.3.19-r0 apk php84-intl 8.4.16-r0 apk
php83-imap 8.3.19-r0 apk php84-ldap 8.4.16-r0 apk
php83-intl 8.3.19-r0 apk php84-mbstring 8.4.16-r0 apk
php83-ldap 8.3.19-r0 apk php84-mysqli 8.4.16-r0 apk
php83-mbstring 8.3.19-r0 apk php84-mysqlnd 8.4.16-r0 apk
php83-mysqli 8.3.19-r0 apk php84-opcache 8.4.16-r0 apk
php83-mysqlnd 8.3.19-r0 apk php84-openssl 8.4.16-r0 apk
php83-opcache 8.3.19-r0 apk php84-pdo 8.4.16-r0 apk
php83-openssl 8.3.19-r0 apk php84-pdo_mysql 8.4.16-r0 apk
php83-pdo 8.3.19-r0 apk php84-pdo_odbc 8.4.16-r0 apk
php83-pdo_mysql 8.3.19-r0 apk php84-pdo_pgsql 8.4.16-r0 apk
php83-pdo_odbc 8.3.19-r0 apk php84-pdo_sqlite 8.4.16-r0 apk
php83-pdo_pgsql 8.3.19-r0 apk php84-pear 8.4.16-r0 apk
php83-pdo_sqlite 8.3.19-r0 apk php84-pecl-apcu 5.1.27-r0 apk
php83-pear 8.3.19-r0 apk php84-pecl-igbinary 3.2.16-r1 apk
php83-pecl-apcu 5.1.24-r0 apk php84-pecl-imap 1.0.3-r0 apk
php83-pecl-igbinary 3.2.16-r0 apk php84-pecl-memcached 3.3.0-r0 apk
php83-pecl-mcrypt 1.0.7-r0 apk php84-pecl-msgpack 3.0.0-r0 apk
php83-pecl-memcached 3.3.0-r0 apk php84-pecl-redis 6.3.0-r0 apk
php83-pecl-msgpack 3.0.0-r0 apk php84-pgsql 8.4.16-r0 apk
php83-pecl-redis 6.2.0-r0 apk php84-phar 8.4.16-r0 apk
php83-pgsql 8.3.19-r0 apk php84-posix 8.4.16-r0 apk
php83-phar 8.3.19-r0 apk php84-session 8.4.16-r0 apk
php83-posix 8.3.19-r0 apk php84-simplexml 8.4.16-r0 apk
php83-session 8.3.19-r0 apk php84-soap 8.4.16-r0 apk
php83-simplexml 8.3.19-r0 apk php84-sockets 8.4.16-r0 apk
php83-soap 8.3.19-r0 apk php84-sodium 8.4.16-r0 apk
php83-sockets 8.3.19-r0 apk php84-sqlite3 8.4.16-r0 apk
php83-sodium 8.3.19-r0 apk php84-tokenizer 8.4.16-r0 apk
php83-sqlite3 8.3.19-r0 apk php84-xml 8.4.16-r0 apk
php83-tokenizer 8.3.19-r0 apk php84-xmlreader 8.4.16-r0 apk
php83-xml 8.3.19-r0 apk php84-xmlwriter 8.4.16-r0 apk
php83-xmlreader 8.3.19-r0 apk php84-xsl 8.4.16-r0 apk
php83-xmlwriter 8.3.19-r0 apk php84-zip 8.4.16-r0 apk
php83-xsl 8.3.19-r0 apk pinentry 1.3.1-r0 apk
php83-zip 8.3.19-r0 apk pip 25.3 python
pinentry 1.3.1-r0 apk pkb-client 2.2.0 python
pip 25.1.1 python platformdirs 4.2.2 python
pkb-client 2.1.1 python popt 1.19-r4 apk
platformdirs 4.2.2 python procps-ng 4.0.4-r3 apk
popt 1.19-r4 apk proto-plus 1.27.0 python
procps-ng 4.0.4-r2 apk protobuf 6.33.3 python
proto-plus 1.26.1 python pyacmedns 0.4 python
protobuf 6.31.1 python pyasn1 0.6.1 python
pyacmedns 0.4 python pyasn1-modules 0.4.2 python
pyasn1 0.6.1 python pyc 3.12.12-r0 apk
pyasn1-modules 0.4.2 python pycparser 2.23 python
pyc 3.12.10-r1 apk pyjwt 2.10.1 python
pycparser 2.22 python pynamecheap 0.0.3 python
pyjwt 2.10.1 python pyopenssl 25.3.0 python
pynamecheap 0.0.3 python pyotp 2.9.0 python
pyopenssl 25.1.0 python pyparsing 3.3.1 python
pyotp 2.9.0 python pyrfc3339 2.1.0 python
pyparsing 3.2.3 python python-dateutil 2.9.0.post0 python
pyrfc3339 2.0.1 python python-digitalocean 1.17.0 python
python-dateutil 2.9.0.post0 python python-transip 0.6.0 python
python-digitalocean 1.17.0 python python3 3.12.12-r0 apk
python-transip 0.6.0 python python3-pyc 3.12.12-r0 apk
python3 3.12.10-r1 apk python3-pycache-pyc0 3.12.12-r0 apk
python3-pyc 3.12.10-r1 apk pyyaml 6.0.3 python
python3-pycache-pyc0 3.12.10-r1 apk readline 8.2.13-r1 apk
pytz 2025.2 python requests 2.32.5 python
pyyaml 6.0.2 python requests-file 3.0.1 python
readline 8.2.13-r0 apk requests-mock 1.12.1 python
requests 2.32.3 python rsa 4.9.1 python
requests-file 2.1.0 python s3transfer 0.16.0 python
requests-mock 1.12.1 python scanelf 1.3.8-r1 apk
rsa 4.9.1 python setuptools 80.9.0 python
s3transfer 0.13.0 python shadow 4.17.3-r0 apk
scanelf 1.3.8-r1 apk six 1.17.0 python
setuptools 80.9.0 python skalibs-libs 2.14.4.0-r0 apk
shadow 4.16.0-r1 apk soupsieve 2.8.1 python
six 1.17.0 python sqlite-libs 3.49.2-r1 apk
skalibs-libs 2.14.3.0-r0 apk ssl_client 1.37.0-r20 apk
soupsieve 2.7 python tiff 4.7.1-r0 apk
sqlite-libs 3.48.0-r2 apk tldextract 5.3.1 python
ssl_client 1.37.0-r12 apk tomli 2.0.1 python
tiff 4.7.0-r0 apk typeguard 4.3.0 python
tldextract 5.3.0 python typing-extensions 4.12.2 python
tomli 2.0.1 python typing-extensions 4.15.0 python
typeguard 4.3.0 python tzdata 2025c-r0 apk
typing-extensions 4.12.2 python unixodbc 2.3.12-r0 apk
typing-extensions 4.13.2 python uritemplate 4.2.0 python
tzdata 2025b-r0 apk urllib3 2.6.3 python
unixodbc 2.3.12-r0 apk utmps-libs 0.1.3.1-r0 apk
uritemplate 4.1.1 python wheel 0.45.1 python (+1 duplicate)
urllib3 2.4.0 python whois 5.6.3-r0 apk
utmps-libs 0.1.2.3-r2 apk xz-libs 5.8.1-r0 apk
wheel 0.45.1 python (+1 duplicate) zipp 3.19.2 python
whois 5.5.23-r0 apk zlib 1.3.1-r2 apk
xz-libs 5.6.3-r1 apk zope-interface 8.2 python
zipp 3.19.2 python zstd-libs 1.5.7-r0 apk
zlib 1.3.1-r2 apk
zope-interface 7.2 python
zstd-libs 1.5.6-r2 apk

View File

@@ -44,6 +44,7 @@ opt_param_env_vars:
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)"}
- {external_port: "443", internal_port: "443/udp", port_desc: "QUIC (HTTP/3) port. Must be enabled in the default and proxy confs."}
readonly_supported: true readonly_supported: true
readonly_message: | readonly_message: |
* `/tmp` must be mounted to tmpfs * `/tmp` must be mounted to tmpfs
@@ -138,6 +139,16 @@ app_setup_block: |
* Proxy sample files WILL be updated, however your renamed (enabled) proxy files will not. * Proxy sample files WILL be updated, however your renamed (enabled) proxy files will not.
* You can check the new sample and adjust your active config as needed. * You can check the new sample and adjust your active config as needed.
### QUIC support
This image supports QUIC (also known as HTTP/3) but it must be explicitly enabled in each proxy conf, and the default conf, because if the listener is enabled and you don't expose 443/UDP, it can break connections with some browsers.
To enable QUIC, expose 443/UDP to your clients, then uncomment both QUIC listeners in all of your active proxy confs, as well as the default conf, and restart the container.
You should also uncomment the `Alt-Svc` header in your `ssl.conf` so that browsers are aware that you offer QUIC connectivity.
It is [recommended](https://quic-go.net/docs/quic/optimizations/#udp-buffer-sizes) to increase the UDP send/recieve buffer **on the host** by setting the `net.core.rmem_max` and `net.core.wmem_max` sysctls. Suggested values are 4-16Mb (4194304-16777216 bytes). For persistence between reboots use `/etc/sysctl.d/`.
### Migration from the old `linuxserver/letsencrypt` image ### Migration from the old `linuxserver/letsencrypt` image
Please follow the instructions [on this blog post](https://www.linuxserver.io/blog/2020-08-21-introducing-swag#migrate). Please follow the instructions [on this blog post](https://www.linuxserver.io/blog/2020-08-21-introducing-swag#migrate).
@@ -202,11 +213,13 @@ init_diagram: |
svc-swag-auto-reload -> legacy-services svc-swag-auto-reload -> legacy-services
} }
Base Images: { Base Images: {
"baseimage-alpine-nginx:3.21" <- "baseimage-alpine:3.21" "baseimage-alpine-nginx:3.22" <- "baseimage-alpine:3.22"
} }
"swag:latest" <- Base Images "swag:latest" <- Base Images
# changelog # changelog
changelogs: changelogs:
- {date: "04.11.25:", desc: "Switch default Gandi credentials from API Key to Token, allow DNS propagation time for Azure DNS plugin."}
- {date: "18.07.25:", desc: "Rebase to Alpine 3.22 with PHP 8.4. Add QUIC support. Drop PHP bindings for mcrypt as it is no longer maintained."}
- {date: "05.05.25:", desc: "Disable Certbot's built in log rotation."} - {date: "05.05.25:", desc: "Disable Certbot's built in log rotation."}
- {date: "19.01.25:", desc: "Add [Auto Reload](https://github.com/linuxserver/docker-mods/tree/swag-auto-reload) functionality to SWAG."} - {date: "19.01.25:", desc: "Add [Auto Reload](https://github.com/linuxserver/docker-mods/tree/swag-auto-reload) functionality to SWAG."}
- {date: "17.12.24:", desc: "Rebase to Alpine 3.21."} - {date: "17.12.24:", desc: "Rebase to Alpine 3.21."}

View File

@@ -1,7 +1,6 @@
# Instructions: https://github.com/obynio/certbot-plugin-gandi#usage # Instructions: https://github.com/obynio/certbot-plugin-gandi#usage
# Replace with your value # Replace with your Gandi Live DNS v5 Personal Access Token
# live dns v5 api key dns_gandi_token=TOKEN
dns_gandi_api_key=APIKEY
# optional organization id, remove it if not used # optional organization id, remove it if not used
#dns_gandi_sharing_id=SHARINGID #dns_gandi_sharing_id=SHARINGID

View File

@@ -1,4 +1,4 @@
## Version 2024/12/17 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/site-confs/default.conf.sample ## Version 2025/07/18 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/site-confs/default.conf.sample
# redirect all traffic to https # redirect all traffic to https
server { server {
@@ -13,7 +13,9 @@ server {
# main server block # main server block
server { server {
listen 443 ssl default_server; listen 443 ssl default_server;
# listen 443 quic reuseport default_server;
listen [::]:443 ssl default_server; listen [::]:443 ssl default_server;
# listen [::]:443 quic reuseport default_server;
server_name _; server_name _;

View File

@@ -0,0 +1,9 @@
## Version 2025/06/08 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/tinyauth-location.conf.sample
# Make sure that your tinyauth container is in the same user defined bridge network and is named tinyauth
# Rename /config/nginx/proxy-confs/tinyauth.subdomain.conf.sample to /config/nginx/proxy-confs/tinyauth.subdomain.conf
## Send a subrequest to tinyauth to verify if the user is authenticated and has permission to access the resource
auth_request /tinyauth;
## If the subreqest returns 200 pass to the backend, if the subrequest returns 401 redirect to the portal
error_page 401 = @tinyauth_login;

View File

@@ -0,0 +1,35 @@
## Version 2025/06/08 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/tinyauth-server.conf.sample
# Make sure that your tinyauth container is in the same user defined bridge network and is named tinyauth
# Rename /config/nginx/proxy-confs/tinyauth.subdomain.conf.sample to /config/nginx/proxy-confs/tinyauth.subdomain.conf
# location for tinyauth auth requests
location /tinyauth {
internal;
include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf;
set $upstream_tinyauth tinyauth;
proxy_pass http://$upstream_tinyauth:3000/api/auth/nginx;
proxy_set_header x-forwarded-proto $scheme;
proxy_set_header x-forwarded-host $http_host;
proxy_set_header x-forwarded-uri $request_uri;
}
# virtual location for tinyauth 401 redirects
location @tinyauth_login {
internal;
## Set the $target_url variable based on the original request
set_escape_uri $target_url $scheme://$http_host$request_uri;
## Set the $signin_url variable
set $domain $host;
if ($host ~* "^[^.]+\.([^.]+\..+)$") {
set $domain $1;
}
set $signin_url https://tinyauth.$domain/login?redirect_uri=$target_url;
## Redirect to login
return 302 $signin_url;
}

View File

@@ -303,7 +303,7 @@ if [[ "${VALIDATION}" = "dns" ]]; then
sed -i "/^dns-${DNSPLUGIN}-credentials\b/d" /config/etc/letsencrypt/cli.ini sed -i "/^dns-${DNSPLUGIN}-credentials\b/d" /config/etc/letsencrypt/cli.ini
fi fi
# plugins that don't support setting propagation # plugins that don't support setting propagation
if [[ "${DNSPLUGIN}" =~ ^(azure|gandi|route53|standalone)$ ]]; then if [[ "${DNSPLUGIN}" =~ ^(gandi|route53|standalone)$ ]]; then
if [[ -n "${PROPAGATION}" ]]; then echo "${DNSPLUGIN} dns plugin does not support setting propagation time"; fi if [[ -n "${PROPAGATION}" ]]; then echo "${DNSPLUGIN} dns plugin does not support setting propagation time"; fi
sed -i "/^dns-${DNSPLUGIN}-propagation-seconds\b/d" /config/etc/letsencrypt/cli.ini sed -i "/^dns-${DNSPLUGIN}-propagation-seconds\b/d" /config/etc/letsencrypt/cli.ini
fi fi

View File

@@ -22,6 +22,14 @@ if [[ ! -f /config/nginx/authentik-server.conf ]]; then
cp /defaults/nginx/authentik-server.conf.sample /config/nginx/authentik-server.conf cp /defaults/nginx/authentik-server.conf.sample /config/nginx/authentik-server.conf
fi fi
# copy tinyauth config files if they don't exist
if [[ ! -f /config/nginx/tinyauth-location.conf ]]; then
cp /defaults/nginx/tinyauth-location.conf.sample /config/nginx/tinyauth-location.conf
fi
if [[ ! -f /config/nginx/tinyauth-server.conf ]]; then
cp /defaults/nginx/tinyauth-server.conf.sample /config/nginx/tinyauth-server.conf
fi
# copy old ldap config file to new location # copy old ldap config file to new location
if [[ -f /config/nginx/ldap.conf ]] && [[ ! -f /config/nginx/ldap-server.conf ]]; then if [[ -f /config/nginx/ldap.conf ]] && [[ ! -f /config/nginx/ldap-server.conf ]]; then
cp /config/nginx/ldap.conf /config/nginx/ldap-server.conf cp /config/nginx/ldap.conf /config/nginx/ldap-server.conf