Compare commits

..

58 commits

Author SHA1 Message Date
LinuxServer-CI
8353859972
Bot Updating Package Versions 2025-08-02 04:00:44 +00:00
LinuxServer-CI
ca399a7fa2
Bot Updating Package Versions 2025-07-26 04:01:49 +00:00
LinuxServer-CI
1905b3c920
Bot Updating Package Versions 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 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 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 2025-06-28 03:48:42 +00:00
LinuxServer-CI
b52e35e494
Bot Updating Package Versions 2025-06-21 03:48:40 +00:00
LinuxServer-CI
ef2a5f2077
Bot Updating Package Versions 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 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
LinuxServer-CI
2ec9bacf0c
Bot Updating Package Versions 2025-05-31 03:44:37 +00:00
LinuxServer-CI
bcbad63147
Bot Updating Package Versions 2025-05-24 03:40:40 +00:00
LinuxServer-CI
962c2322eb
Bot Updating Package Versions 2025-05-17 03:43:00 +00:00
LinuxServer-CI
dd8fd8ad05
Bot Updating Templated Files 2025-05-17 03:39:19 +00:00
LinuxServer-CI
b818ae1f58
Bot Updating Package Versions 2025-05-10 03:39:03 +00:00
LinuxServer-CI
43466fe490
Bot Updating Package Versions 2025-05-08 21:11:05 +00:00
LinuxServer-CI
3781360d72
Bot Updating Templated Files 2025-05-08 21:05:17 +00:00
Eric Nemchik
a01e4aca17
Merge pull request #564 from linuxserver/max-log-backups 2025-05-08 16:03:57 -05:00
Eric Nemchik
b87c9d2886
Update readme-vars.yml 2025-05-05 15:25:41 -05:00
Eric Nemchik
08aa9cc07b
Disable Certbot's built in log rotation 2025-05-05 15:24:38 -05:00
LinuxServer-CI
23e05f1f7a
Bot Updating Package Versions 2025-05-03 03:40:16 +00:00
LinuxServer-CI
f80d14bf8c
Bot Updating Package Versions 2025-04-26 03:36:46 +00:00
LinuxServer-CI
7e7e22753c
Bot Updating Package Versions 2025-04-19 03:33:00 +00:00
LinuxServer-CI
9f76c031fe
Bot Updating Package Versions 2025-04-12 03:34:26 +00:00
LinuxServer-CI
2b2ccf9e9a
Bot Updating Package Versions 2025-04-11 03:24:16 +00:00
Eric Nemchik
54ed99d81a
Merge pull request #554 from linuxserver/remove-old-authelia
chore: ⚰️ remove authelia 4.37 and below comments
2025-04-10 22:18:39 -05:00
LinuxServer-CI
a3f72898ff
Bot Updating Package Versions 2025-04-08 01:29:27 +00:00
Eric Nemchik
8b8d33a81a
Merge branch 'master' into remove-old-authelia 2025-04-05 15:43:54 -05:00
LinuxServer-CI
82ba5dd791
Bot Updating Package Versions 2025-04-05 03:34:00 +00:00
LinuxServer-CI
e7c815c27f
Bot Updating Package Versions 2025-03-29 03:32:47 +00:00
Eric Nemchik
563ae7e9c5
chore: authentik/authelia consistency
Signed-off-by: GitHub <noreply@github.com>
2025-03-25 21:30:10 +00:00
Eric Nemchik
8caf2a1841
feat: 💩 proxy pass the full authelia auth request subpath
Signed-off-by: GitHub <noreply@github.com>
2025-03-25 21:28:54 +00:00
Eric Nemchik
15a3bc9d2c
chore: ⚰️ remove authelia 4.37 and below comments
Signed-off-by: GitHub <noreply@github.com>
2025-03-25 19:50:00 +00:00
LinuxServer-CI
1567416bfb
Bot Updating Package Versions 2025-03-22 03:34:48 +00:00
LinuxServer-CI
f909c85857
Bot Updating Package Versions 2025-03-17 13:53:02 +00:00
LinuxServer-CI
2992a09e32
Bot Updating Package Versions 2025-03-15 03:30:55 +00:00
LinuxServer-CI
5a8b8010ee
Bot Updating Package Versions 2025-03-11 17:20:25 +00:00
28 changed files with 566 additions and 488 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 \

7
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{
@ -780,7 +784,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"
@ -890,6 +894,7 @@ 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}\" \
-e SYFT_IMAGE_TAG=\"${CI_SYFT_IMAGE_TAG:-${SYFT_IMAGE_TAG}}\" \
-t ghcr.io/linuxserver/ci:latest \ -t ghcr.io/linuxserver/ci:latest \
python3 test_build.py''' python3 test_build.py'''
} }

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
* **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.
* **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.
* **21.10.24:** - Fix naming issue with Dynu plugin. If you are using Dynu, please make sure your credentials are set in /config/dns-conf/dynu.ini and your DNSPLUGIN variable is set to dynu (not dynudns). * **21.10.24:** - Fix naming issue with Dynu plugin. If you are using Dynu, please make sure your credentials are set in /config/dns-conf/dynu.ini and your DNSPLUGIN variable is set to dynu (not dynudns).

View file

@ -1,365 +1,373 @@
NAME VERSION TYPE NAME VERSION TYPE
Simple Launcher 1.1.0.14 dotnet (+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 3.2.0 python acme 4.1.1 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.1-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.65-r0 apk
apk-tools 2.14.6-r3 apk apk-tools 2.14.9-r2 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.1.0 python attrs 25.3.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.32.0 python azure-core 1.35.0 python
azure-identity 1.20.0 python azure-identity 1.23.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.3 python beautifulsoup4 4.13.4 python
boto3 1.37.9 python boto3 1.40.1 python
botocore 1.37.9 python botocore 1.40.1 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-r18 apk
busybox-binsh 1.37.0-r12 apk busybox-binsh 1.37.0-r18 apk
c-ares 1.34.3-r0 apk c-ares 1.34.5-r0 apk
c-client 2007f-r15 apk c-client 2007f-r15 apk
ca-certificates 20241121-r1 apk ca-certificates 20250619-r0 apk
ca-certificates-bundle 20241121-r1 apk ca-certificates-bundle 20250619-r0 apk
cachetools 5.5.2 python cachetools 5.5.2 python
catatonit 0.2.0-r0 apk catatonit 0.2.1-r0 apk
certbot 3.2.0 python certbot 4.1.1 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 2.6.1 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 3.2.0 python certbot-dns-cloudflare 4.1.1 python
certbot-dns-cpanel 0.4.0 python certbot-dns-cpanel 0.4.0 python
certbot-dns-desec 1.2.1 python certbot-dns-desec 1.2.1 python
certbot-dns-digitalocean 3.2.0 python certbot-dns-digitalocean 4.1.1 python
certbot-dns-directadmin 1.0.13 python certbot-dns-directadmin 1.0.15 python
certbot-dns-dnsimple 3.2.0 python certbot-dns-dnsimple 4.1.1 python
certbot-dns-dnsmadeeasy 3.2.0 python certbot-dns-dnsmadeeasy 4.1.1 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.5 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 3.2.0 python certbot-dns-gehirn 4.1.1 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 3.2.0 python certbot-dns-google 4.1.1 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.3 python certbot-dns-infomaniak 0.2.3 python
certbot-dns-inwx 3.0.2 python certbot-dns-inwx 3.0.3 python
certbot-dns-ionos 2024.11.9 python certbot-dns-ionos 2024.11.9 python
certbot-dns-linode 3.2.0 python certbot-dns-linode 4.1.1 python
certbot-dns-loopia 1.0.1 python certbot-dns-loopia 1.0.1 python
certbot-dns-luadns 3.2.0 python certbot-dns-luadns 4.1.1 python
certbot-dns-namecheap 1.0.0 python certbot-dns-namecheap 1.0.0 python
certbot-dns-netcup 1.4.4 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 3.2.0 python certbot-dns-nsone 4.1.1 python
certbot-dns-ovh 3.2.0 python certbot-dns-ovh 4.1.1 python
certbot-dns-porkbun 0.9.1 python certbot-dns-porkbun 0.10.1 python
certbot-dns-rfc2136 3.2.0 python certbot-dns-rfc2136 4.1.1 python
certbot-dns-route53 3.2.0 python certbot-dns-route53 4.1.1 python
certbot-dns-sakuracloud 3.2.0 python certbot-dns-sakuracloud 4.1.1 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 2025.1.31 python certifi 2025.7.14 python
cffi 1.17.1 python cffi 1.17.1 python
charset-normalizer 3.4.1 python charset-normalizer 3.4.2 python
cloudflare 2.19.4 python cli UNKNOWN binary
composer 2.8.6 binary cli-32 UNKNOWN binary
configargparse 1.7 python cli-64 UNKNOWN binary
configobj 5.0.9 python cli-arm64 UNKNOWN binary
coreutils 9.5-r2 apk cloudflare 2.19.4 python
coreutils-env 9.5-r2 apk composer 2.8.10 binary
coreutils-fmt 9.5-r2 apk configargparse 1.7.1 python
coreutils-sha512sum 9.5-r2 apk configobj 5.0.9 python
cryptography 44.0.2 python coreutils 9.7-r1 apk
curl 8.12.1-r0 apk coreutils-env 9.7-r1 apk
distro 1.9.0 python coreutils-fmt 9.7-r1 apk
dns-lexicon 3.20.1 python coreutils-sha512sum 9.7-r1 apk
dnslib 0.9.26 python cryptography 45.0.5 python
dnspython 2.7.0 python curl 8.14.1-r1 apk
domeneshop 0.4.4 python distro 1.9.0 python
fail2ban 1.1.0 python dns-lexicon 3.21.1 python
fail2ban 1.1.0-r2 apk dnslib 0.9.26 python
fail2ban-pyc 1.1.0-r2 apk dnspython 2.7.0 python
filelock 3.17.0 python domeneshop 0.4.4 python
findutils 4.10.0-r0 apk fail2ban 1.1.0 python
fontconfig 2.15.0-r1 apk fail2ban 1.1.0-r3 apk
freetype 2.13.3-r0 apk fail2ban-pyc 1.1.0-r3 apk
future 1.0.0 python filelock 3.18.0 python
gdbm 1.24-r0 apk findutils 4.10.0-r0 apk
git 2.47.2-r0 apk fontconfig 2.15.0-r3 apk
git-init-template 2.47.2-r0 apk freetype 2.13.3-r0 apk
git-perl 2.47.2-r0 apk future 1.0.0 python
gmp 6.3.0-r2 apk gdbm 1.24-r0 apk
gnupg 2.4.7-r0 apk git 2.49.1-r0 apk
gnupg-dirmngr 2.4.7-r0 apk git-init-template 2.49.1-r0 apk
gnupg-gpgconf 2.4.7-r0 apk git-perl 2.49.1-r0 apk
gnupg-keyboxd 2.4.7-r0 apk gmp 6.3.0-r3 apk
gnupg-utils 2.4.7-r0 apk gnupg 2.4.7-r0 apk
gnupg-wks-client 2.4.7-r0 apk gnupg-dirmngr 2.4.7-r0 apk
gnutls 3.8.8-r0 apk gnupg-gpgconf 2.4.7-r0 apk
google-api-core 2.24.1 python gnupg-keyboxd 2.4.7-r0 apk
google-api-python-client 2.163.0 python gnupg-utils 2.4.7-r0 apk
google-auth 2.38.0 python gnupg-wks-client 2.4.7-r0 apk
google-auth-httplib2 0.2.0 python gnutls 3.8.8-r0 apk
googleapis-common-protos 1.69.1 python google-api-core 2.25.1 python
gpg 2.4.7-r0 apk google-api-python-client 2.177.0 python
gpg-agent 2.4.7-r0 apk google-auth 2.40.3 python
gpg-wks-server 2.4.7-r0 apk google-auth-httplib2 0.2.0 python
gpgsm 2.4.7-r0 apk googleapis-common-protos 1.70.0 python
gpgv 2.4.7-r0 apk gpg 2.4.7-r0 apk
httplib2 0.22.0 python gpg-agent 2.4.7-r0 apk
icu-data-en 74.2-r0 apk gpg-wks-server 2.4.7-r0 apk
icu-libs 74.2-r0 apk gpgsm 2.4.7-r0 apk
idna 3.10 python gpgv 2.4.7-r0 apk
importlib-metadata 8.0.0 python gui UNKNOWN binary
inflect 7.3.1 python gui-32 UNKNOWN binary
inotify-tools 4.23.9.0-r0 apk gui-64 UNKNOWN binary
inotify-tools-libs 4.23.9.0-r0 apk gui-arm64 UNKNOWN binary
inwx-domrobot 3.2.0 python httplib2 0.22.0 python
iptables 1.8.11-r1 apk icu-data-en 76.1-r1 apk
iptables-legacy 1.8.11-r1 apk icu-libs 76.1-r1 apk
isodate 0.7.2 python idna 3.10 python
jaraco-collections 5.1.0 python importlib-metadata 8.0.0 python
jaraco-context 5.3.0 python inflect 7.3.1 python
jaraco-functools 4.0.1 python inotify-tools 4.23.9.0-r0 apk
jaraco-text 3.12.1 python inotify-tools-libs 4.23.9.0-r0 apk
jmespath 1.0.1 python inwx-domrobot 3.2.0 python
josepy 1.15.0 python iptables 1.8.11-r1 apk
jq 1.7.1-r0 apk iptables-legacy 1.8.11-r1 apk
jsonlines 4.0.0 python isodate 0.7.2 python
jsonpickle 4.0.2 python jaraco-collections 5.1.0 python
libassuan 2.5.7-r0 apk jaraco-context 5.3.0 python
libattr 2.5.2-r2 apk jaraco-functools 4.0.1 python
libavif 1.0.4-r0 apk jaraco-text 3.12.1 python
libbsd 0.12.2-r0 apk jinja2 3.1.6 python
libbz2 1.0.8-r6 apk jmespath 1.0.1 python
libcrypto3 3.3.3-r0 apk josepy 2.1.0 python
libcurl 8.12.1-r0 apk jq 1.8.0-r0 apk
libdav1d 1.5.0-r0 apk jsonlines 4.0.0 python
libedit 20240808.3.1-r0 apk jsonpickle 4.1.1 python
libevent 2.1.12-r7 apk libapk2 2.14.9-r2 apk
libexpat 2.6.4-r0 apk libassuan 2.5.7-r0 apk
libffi 3.4.7-r0 apk libattr 2.5.2-r2 apk
libgcc 14.2.0-r4 apk libavif 1.3.0-r0 apk
libgcrypt 1.10.3-r1 apk libbsd 0.12.2-r0 apk
libgd 2.3.3-r9 apk libbz2 1.0.8-r6 apk
libgpg-error 1.51-r0 apk libcrypto3 3.5.1-r0 apk
libice 1.1.1-r6 apk libcurl 8.14.1-r1 apk
libidn2 2.3.7-r0 apk libdav1d 1.5.1-r0 apk
libintl 0.22.5-r0 apk libedit 20250104.3.1-r1 apk
libip4tc 1.8.11-r1 apk libevent 2.1.12-r8 apk
libip6tc 1.8.11-r1 apk libexpat 2.7.1-r0 apk
libjpeg-turbo 3.0.4-r0 apk libffi 3.4.8-r0 apk
libksba 1.6.7-r0 apk libgcc 14.2.0-r6 apk
libldap 2.6.8-r0 apk libgcrypt 1.10.3-r1 apk
libmaxminddb-libs 1.9.1-r0 apk libgd 2.3.3-r10 apk
libmcrypt 2.5.8-r10 apk libgpg-error 1.55-r0 apk
libmd 1.1.0-r0 apk libice 1.1.2-r0 apk
libmemcached-libs 1.1.4-r1 apk libidn2 2.3.7-r0 apk
libmnl 1.0.5-r2 apk libintl 0.24.1-r0 apk
libncursesw 6.5_p20241006-r3 apk libip4tc 1.8.11-r1 apk
libnftnl 1.2.8-r0 apk libip6tc 1.8.11-r1 apk
libpanelw 6.5_p20241006-r3 apk libjpeg-turbo 3.1.0-r0 apk
libpng 1.6.44-r0 apk libksba 1.6.7-r0 apk
libpq 17.4-r0 apk libldap 2.6.8-r0 apk
libproc2 4.0.4-r2 apk libmaxminddb-libs 1.9.1-r0 apk
libpsl 0.21.5-r3 apk libmd 1.1.0-r0 apk
libsasl 2.1.28-r8 apk libmemcached-libs 1.1.4-r1 apk
libseccomp 2.5.5-r1 apk libmnl 1.0.5-r2 apk
libsharpyuv 1.4.0-r0 apk libncursesw 6.5_p20250503-r0 apk
libsm 1.2.4-r4 apk libnftnl 1.2.9-r0 apk
libsodium 1.0.20-r0 apk libpanelw 6.5_p20250503-r0 apk
libssl3 3.3.3-r0 apk libpng 1.6.47-r0 apk
libstdc++ 14.2.0-r4 apk libpq 17.5-r0 apk
libtasn1 4.20.0-r0 apk libproc2 4.0.4-r3 apk
libunistring 1.2-r0 apk libpsl 0.21.5-r3 apk
libuuid 2.40.4-r0 apk libsasl 2.1.28-r8 apk
libwebp 1.4.0-r0 apk libseccomp 2.6.0-r0 apk
libx11 1.8.10-r0 apk libsharpyuv 1.5.0-r0 apk
libxau 1.0.11-r4 apk libsm 1.2.5-r0 apk
libxcb 1.16.1-r0 apk libsodium 1.0.20-r0 apk
libxdmcp 1.1.5-r1 apk libssl3 3.5.1-r0 apk
libxext 1.3.6-r2 apk libstdc++ 14.2.0-r6 apk
libxml2 2.13.4-r4 apk libtasn1 4.20.0-r0 apk
libxpm 3.5.17-r0 apk libunistring 1.3-r0 apk
libxslt 1.1.42-r1 apk libuuid 2.41-r9 apk
libxt 1.3.1-r0 apk libwebp 1.5.0-r0 apk
libxtables 1.8.11-r1 apk libx11 1.8.11-r0 apk
libzip 1.11.2-r0 apk libxau 1.0.12-r0 apk
linux-pam 1.6.1-r1 apk libxcb 1.17.0-r0 apk
logrotate 3.21.0-r1 apk libxdmcp 1.1.5-r1 apk
loopialib 0.2.0 python libxext 1.3.6-r2 apk
lxml 5.3.1 python libxml2 2.13.8-r0 apk
lz4-libs 1.10.0-r0 apk libxpm 3.5.17-r0 apk
memcached 1.6.32-r0 apk libxslt 1.1.43-r3 apk
mock 5.2.0 python libxt 1.3.1-r0 apk
more-itertools 10.3.0 python libxtables 1.8.11-r1 apk
mpdecimal 4.0.0-r0 apk libyuv 0.0.1887.20251502-r1 apk
msal 1.31.1 python libzip 1.11.4-r0 apk
msal-extensions 1.2.0 python linux-pam 1.7.0-r4 apk
musl 1.2.5-r9 apk logrotate 3.21.0-r1 apk
musl-utils 1.2.5-r9 apk loopialib 0.2.0 python
my-test-package 1.0 python lxml 6.0.0 python
nano 8.2-r0 apk lz4-libs 1.10.0-r0 apk
ncurses-terminfo-base 6.5_p20241006-r3 apk markupsafe 3.0.2 python
netcat-openbsd 1.226.1.1-r0 apk memcached 1.6.32-r0 apk
nettle 3.10-r1 apk mock 5.2.0 python
nghttp2-libs 1.64.0-r0 apk more-itertools 10.3.0 python
nginx 1.26.2-r4 apk mpdecimal 4.0.1-r0 apk
nginx-mod-devel-kit 1.26.2-r4 apk msal 1.33.0 python
nginx-mod-http-brotli 1.26.2-r4 apk msal-extensions 1.3.1 python
nginx-mod-http-dav-ext 1.26.2-r4 apk musl 1.2.5-r10 apk
nginx-mod-http-echo 1.26.2-r4 apk musl-utils 1.2.5-r10 apk
nginx-mod-http-fancyindex 1.26.2-r4 apk my-test-package 1.0 python
nginx-mod-http-geoip2 1.26.2-r4 apk nano 8.4-r0 apk
nginx-mod-http-headers-more 1.26.2-r4 apk ncurses-terminfo-base 6.5_p20250503-r0 apk
nginx-mod-http-image-filter 1.26.2-r4 apk netcat-openbsd 1.229.1-r0 apk
nginx-mod-http-perl 1.26.2-r4 apk nettle 3.10.1-r0 apk
nginx-mod-http-redis2 1.26.2-r4 apk nghttp2-libs 1.65.0-r0 apk
nginx-mod-http-set-misc 1.26.2-r4 apk nginx 1.28.0-r3 apk
nginx-mod-http-upload-progress 1.26.2-r4 apk nginx-mod-devel-kit 1.28.0-r3 apk
nginx-mod-http-xslt-filter 1.26.2-r4 apk nginx-mod-http-brotli 1.28.0-r3 apk
nginx-mod-mail 1.26.2-r4 apk nginx-mod-http-dav-ext 1.28.0-r3 apk
nginx-mod-rtmp 1.26.2-r4 apk nginx-mod-http-echo 1.28.0-r3 apk
nginx-mod-stream 1.26.2-r4 apk nginx-mod-http-fancyindex 1.28.0-r3 apk
nginx-mod-stream-geoip2 1.26.2-r4 apk nginx-mod-http-geoip2 1.28.0-r3 apk
nginx-vim 1.26.2-r4 apk nginx-mod-http-headers-more 1.28.0-r3 apk
npth 1.6-r4 apk nginx-mod-http-image-filter 1.28.0-r3 apk
oniguruma 6.9.9-r0 apk nginx-mod-http-perl 1.28.0-r3 apk
openssl 3.3.3-r0 apk nginx-mod-http-redis2 1.28.0-r3 apk
p11-kit 0.25.5-r2 apk nginx-mod-http-set-misc 1.28.0-r3 apk
packaging 24.2 python nginx-mod-http-upload-progress 1.28.0-r3 apk
parsedatetime 2.6 python nginx-mod-http-xslt-filter 1.28.0-r3 apk
pcre 8.45-r3 apk nginx-mod-mail 1.28.0-r3 apk
pcre2 10.43-r0 apk nginx-mod-rtmp 1.28.0-r3 apk
perl 5.40.1-r0 apk nginx-mod-stream 1.28.0-r3 apk
perl-error 0.17029-r2 apk nginx-mod-stream-geoip2 1.28.0-r3 apk
perl-git 2.47.2-r0 apk nginx-vim 1.28.0-r3 apk
php83 8.3.17-r0 apk npth 1.8-r0 apk
php83-bcmath 8.3.17-r0 apk oniguruma 6.9.10-r0 apk
php83-bz2 8.3.17-r0 apk openssl 3.5.1-r0 apk
php83-common 8.3.17-r0 apk p11-kit 0.25.5-r2 apk
php83-ctype 8.3.17-r0 apk packaging 24.2 python
php83-curl 8.3.17-r0 apk parsedatetime 2.6 python
php83-dom 8.3.17-r0 apk pcre2 10.43-r1 apk
php83-exif 8.3.17-r0 apk perl 5.40.2-r0 apk
php83-fileinfo 8.3.17-r0 apk perl-error 0.17030-r0 apk
php83-fpm 8.3.17-r0 apk perl-git 2.49.1-r0 apk
php83-ftp 8.3.17-r0 apk php84 8.4.10-r0 apk
php83-gd 8.3.17-r0 apk php84-bcmath 8.4.10-r0 apk
php83-gmp 8.3.17-r0 apk php84-bz2 8.4.10-r0 apk
php83-iconv 8.3.17-r0 apk php84-common 8.4.10-r0 apk
php83-imap 8.3.17-r0 apk php84-ctype 8.4.10-r0 apk
php83-intl 8.3.17-r0 apk php84-curl 8.4.10-r0 apk
php83-ldap 8.3.17-r0 apk php84-dom 8.4.10-r0 apk
php83-mbstring 8.3.17-r0 apk php84-exif 8.4.10-r0 apk
php83-mysqli 8.3.17-r0 apk php84-fileinfo 8.4.10-r0 apk
php83-mysqlnd 8.3.17-r0 apk php84-fpm 8.4.10-r0 apk
php83-opcache 8.3.17-r0 apk php84-ftp 8.4.10-r0 apk
php83-openssl 8.3.17-r0 apk php84-gd 8.4.10-r0 apk
php83-pdo 8.3.17-r0 apk php84-gmp 8.4.10-r0 apk
php83-pdo_mysql 8.3.17-r0 apk php84-iconv 8.4.10-r0 apk
php83-pdo_odbc 8.3.17-r0 apk php84-intl 8.4.10-r0 apk
php83-pdo_pgsql 8.3.17-r0 apk php84-ldap 8.4.10-r0 apk
php83-pdo_sqlite 8.3.17-r0 apk php84-mbstring 8.4.10-r0 apk
php83-pear 8.3.17-r0 apk php84-mysqli 8.4.10-r0 apk
php83-pecl-apcu 5.1.24-r0 apk php84-mysqlnd 8.4.10-r0 apk
php83-pecl-igbinary 3.2.16-r0 apk php84-opcache 8.4.10-r0 apk
php83-pecl-mcrypt 1.0.7-r0 apk php84-openssl 8.4.10-r0 apk
php83-pecl-memcached 3.3.0-r0 apk php84-pdo 8.4.10-r0 apk
php83-pecl-msgpack 3.0.0-r0 apk php84-pdo_mysql 8.4.10-r0 apk
php83-pecl-redis 6.1.0-r0 apk php84-pdo_odbc 8.4.10-r0 apk
php83-pgsql 8.3.17-r0 apk php84-pdo_pgsql 8.4.10-r0 apk
php83-phar 8.3.17-r0 apk php84-pdo_sqlite 8.4.10-r0 apk
php83-posix 8.3.17-r0 apk php84-pear 8.4.10-r0 apk
php83-session 8.3.17-r0 apk php84-pecl-apcu 5.1.24-r1 apk
php83-simplexml 8.3.17-r0 apk php84-pecl-igbinary 3.2.16-r1 apk
php83-soap 8.3.17-r0 apk php84-pecl-imap 1.0.3-r0 apk
php83-sockets 8.3.17-r0 apk php84-pecl-memcached 3.3.0-r0 apk
php83-sodium 8.3.17-r0 apk php84-pecl-msgpack 3.0.0-r0 apk
php83-sqlite3 8.3.17-r0 apk php84-pecl-redis 6.2.0-r0 apk
php83-tokenizer 8.3.17-r0 apk php84-pgsql 8.4.10-r0 apk
php83-xml 8.3.17-r0 apk php84-phar 8.4.10-r0 apk
php83-xmlreader 8.3.17-r0 apk php84-posix 8.4.10-r0 apk
php83-xmlwriter 8.3.17-r0 apk php84-session 8.4.10-r0 apk
php83-xsl 8.3.17-r0 apk php84-simplexml 8.4.10-r0 apk
php83-zip 8.3.17-r0 apk php84-soap 8.4.10-r0 apk
pinentry 1.3.1-r0 apk php84-sockets 8.4.10-r0 apk
pip 25.0.1 python php84-sodium 8.4.10-r0 apk
pkb-client 2.0.0 python php84-sqlite3 8.4.10-r0 apk
platformdirs 4.2.2 python php84-tokenizer 8.4.10-r0 apk
popt 1.19-r4 apk php84-xml 8.4.10-r0 apk
portalocker 2.10.1 python php84-xmlreader 8.4.10-r0 apk
procps-ng 4.0.4-r2 apk php84-xmlwriter 8.4.10-r0 apk
proto-plus 1.26.0 python php84-xsl 8.4.10-r0 apk
protobuf 5.29.3 python php84-zip 8.4.10-r0 apk
pyacmedns 0.4 python pinentry 1.3.1-r0 apk
pyasn1 0.6.1 python pip 25.2 python
pyasn1-modules 0.4.1 python pkb-client 2.2.0 python
pyc 3.12.9-r0 apk platformdirs 4.2.2 python
pycparser 2.22 python popt 1.19-r4 apk
pyjwt 2.10.1 python procps-ng 4.0.4-r3 apk
pynamecheap 0.0.3 python proto-plus 1.26.1 python
pyopenssl 25.0.0 python protobuf 6.31.1 python
pyotp 2.9.0 python pyacmedns 0.4 python
pyparsing 3.2.1 python pyasn1 0.6.1 python
pyrfc3339 2.0.1 python pyasn1-modules 0.4.2 python
python-dateutil 2.9.0.post0 python pyc 3.12.11-r0 apk
python-digitalocean 1.17.0 python pycparser 2.22 python
python-transip 0.6.0 python pyjwt 2.10.1 python
python3 3.12.9-r0 apk pynamecheap 0.0.3 python
python3-pyc 3.12.9-r0 apk pyopenssl 25.1.0 python
python3-pycache-pyc0 3.12.9-r0 apk pyotp 2.9.0 python
pytz 2025.1 python pyparsing 3.2.3 python
pyyaml 6.0.2 python pyrfc3339 2.0.1 python
readline 8.2.13-r0 apk python-dateutil 2.9.0.post0 python
requests 2.32.3 python python-digitalocean 1.17.0 python
requests-file 2.1.0 python python-transip 0.6.0 python
requests-mock 1.12.1 python python3 3.12.11-r0 apk
rsa 4.9 python python3-pyc 3.12.11-r0 apk
s3transfer 0.11.4 python python3-pycache-pyc0 3.12.11-r0 apk
scanelf 1.3.8-r1 apk pytz 2025.2 python
setuptools 75.8.2 python pyyaml 6.0.2 python
shadow 4.16.0-r1 apk readline 8.2.13-r1 apk
six 1.17.0 python requests 2.32.4 python
skalibs-libs 2.14.3.0-r0 apk requests-file 2.1.0 python
soupsieve 2.6 python requests-mock 1.12.1 python
sqlite-libs 3.48.0-r0 apk rsa 4.9.1 python
ssl_client 1.37.0-r12 apk s3transfer 0.13.1 python
tiff 4.7.0-r0 apk scanelf 1.3.8-r1 apk
tldextract 5.1.3 python setuptools 80.9.0 python
tomli 2.0.1 python shadow 4.17.3-r0 apk
typeguard 4.3.0 python six 1.17.0 python
typing-extensions 4.12.2 python (+1 duplicate) skalibs-libs 2.14.4.0-r0 apk
tzdata 2025a-r0 apk soupsieve 2.7 python
unixodbc 2.3.12-r0 apk sqlite-libs 3.49.2-r1 apk
uritemplate 4.1.1 python ssl_client 1.37.0-r18 apk
urllib3 2.3.0 python tiff 4.7.0-r0 apk
utmps-libs 0.1.2.3-r2 apk tldextract 5.3.0 python
wheel 0.43.0 python tomli 2.0.1 python
wheel 0.45.1 python typeguard 4.3.0 python
whois 5.5.23-r0 apk typing-extensions 4.12.2 python
xz-libs 5.6.3-r0 apk typing-extensions 4.14.1 python
zipp 3.19.2 python tzdata 2025b-r0 apk
zlib 1.3.1-r2 apk unixodbc 2.3.12-r0 apk
zope-interface 7.2 python uritemplate 4.2.0 python
zstd-libs 1.5.6-r2 apk urllib3 2.5.0 python
utmps-libs 0.1.3.1-r0 apk
wheel 0.45.1 python (+1 duplicate)
whois 5.6.3-r0 apk
xz-libs 5.8.1-r0 apk
zipp 3.19.2 python
zlib 1.3.1-r2 apk
zope-interface 7.2 python
zstd-libs 1.5.7-r0 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).
@ -164,6 +175,7 @@ init_diagram: |
init-outdated-config -> init-config-end init-outdated-config -> init-config-end
init-config -> init-crontab-config init-config -> init-crontab-config
init-mods-end -> init-custom-files init-mods-end -> init-custom-files
init-adduser -> init-device-perms
base -> init-envfile base -> init-envfile
init-swag-samples -> init-fail2ban-config init-swag-samples -> init-fail2ban-config
init-os-end -> init-folders init-os-end -> init-folders
@ -175,6 +187,7 @@ init_diagram: |
init-samples -> init-nginx init-samples -> init-nginx
init-version-checks -> init-nginx-end init-version-checks -> init-nginx-end
init-adduser -> init-os-end init-adduser -> init-os-end
init-device-perms -> init-os-end
init-envfile -> init-os-end init-envfile -> init-os-end
init-renew -> init-outdated-config init-renew -> init-outdated-config
init-keygen -> init-permissions init-keygen -> init-permissions
@ -200,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: "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: "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."}
- {date: "21.10.24:", desc: "Fix naming issue with Dynu plugin. If you are using Dynu, please make sure your credentials are set in /config/dns-conf/dynu.ini and your DNSPLUGIN variable is set to dynu (not dynudns)."} - {date: "21.10.24:", desc: "Fix naming issue with Dynu plugin. If you are using Dynu, please make sure your credentials are set in /config/dns-conf/dynu.ini and your DNSPLUGIN variable is set to dynu (not dynudns)."}

View file

@ -1,13 +1,8 @@
## Version 2024/03/14 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/authelia-location.conf.sample ## Version 2025/03/25 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/authelia-location.conf.sample
# Make sure that your authelia container is in the same user defined bridge network and is named authelia # Make sure that your authelia container is in the same user defined bridge network and is named authelia
# Rename /config/nginx/proxy-confs/authelia.subdomain.conf.sample to /config/nginx/proxy-confs/authelia.subdomain.conf # Rename /config/nginx/proxy-confs/authelia.subdomain.conf.sample to /config/nginx/proxy-confs/authelia.subdomain.conf
# For authelia 4.37 and below, make sure that the authelia configuration.yml has 'path: "authelia"' defined
# For authelia 4.38 and above, make sure that the authelia configuration.yml has 'address: "tcp://:9091/authelia"' defined
## Send a subrequest to Authelia to verify if the user is authenticated and has permission to access the resource ## Send a subrequest to Authelia to verify if the user is authenticated and has permission to access the resource
## For authelia 4.37 and below, use the following line
# auth_request /authelia/api/verify;
## For authelia 4.38 and above, use the following line
auth_request /authelia/api/authz/auth-request; auth_request /authelia/api/authz/auth-request;
## If the subreqest returns 200 pass to the backend, if the subrequest returns 401 redirect to the portal ## If the subreqest returns 200 pass to the backend, if the subrequest returns 401 redirect to the portal

View file

@ -1,44 +1,15 @@
## Version 2024/03/16 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/authelia-server.conf.sample ## Version 2025/03/25 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/authelia-server.conf.sample
# Make sure that your authelia container is in the same user defined bridge network and is named authelia # Make sure that your authelia container is in the same user defined bridge network and is named authelia
# Rename /config/nginx/proxy-confs/authelia.subdomain.conf.sample to /config/nginx/proxy-confs/authelia.subdomain.conf # Rename /config/nginx/proxy-confs/authelia.subdomain.conf.sample to /config/nginx/proxy-confs/authelia.subdomain.conf
# For authelia 4.37 and below, make sure that the authelia configuration.yml has 'path: "authelia"' defined
# For authelia 4.38 and above, make sure that the authelia configuration.yml has 'address: "tcp://:9091/authelia"' defined
# location for authelia subfolder requests # location for authelia auth requests
location ^~ /authelia {
auth_request off; # requests to this subfolder must be accessible without authentication
include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf;
set $upstream_authelia authelia;
proxy_pass http://$upstream_authelia:9091;
}
# location for authelia 4.37 and below auth requests
location = /authelia/api/verify {
internal;
include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf;
set $upstream_authelia authelia;
proxy_pass http://$upstream_authelia:9091;
## Include the Set-Cookie header if present
auth_request_set $set_cookie $upstream_http_set_cookie;
add_header Set-Cookie $set_cookie;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
}
# location for authelia 4.38 and above auth requests
location = /authelia/api/authz/auth-request { location = /authelia/api/authz/auth-request {
internal; internal;
include /config/nginx/proxy.conf; include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf; include /config/nginx/resolver.conf;
set $upstream_authelia authelia; set $upstream_authelia authelia;
proxy_pass http://$upstream_authelia:9091; proxy_pass http://$upstream_authelia:9091/api/authz/auth-request;
## Include the Set-Cookie header if present ## Include the Set-Cookie header if present
auth_request_set $set_cookie $upstream_http_set_cookie; auth_request_set $set_cookie $upstream_http_set_cookie;
@ -62,11 +33,6 @@ location @authelia_proxy_signin {
## Translate the Location response header from the auth subrequest into a variable ## Translate the Location response header from the auth subrequest into a variable
auth_request_set $signin_url $upstream_http_location; auth_request_set $signin_url $upstream_http_location;
if ($signin_url = '') {
## Set the $signin_url variable
set $signin_url https://$http_host/authelia/?rd=$target_url;
}
## Redirect to login ## Redirect to login
return 302 $signin_url; return 302 $signin_url;
} }

View file

@ -1,4 +1,4 @@
## Version 2023/04/27 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/authentik-server.conf.sample ## Version 2025/03/25 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/authentik-server.conf.sample
# Make sure that your authentik container is in the same user defined bridge network and is named authentik-server # Make sure that your authentik container is in the same user defined bridge network and is named authentik-server
# Rename /config/nginx/proxy-confs/authentik.subdomain.conf.sample to /config/nginx/proxy-confs/authentik.subdomain.conf # Rename /config/nginx/proxy-confs/authentik.subdomain.conf.sample to /config/nginx/proxy-confs/authentik.subdomain.conf
@ -19,7 +19,7 @@ location = /outpost.goauthentik.io/auth/nginx {
include /config/nginx/proxy.conf; include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf; include /config/nginx/resolver.conf;
set $upstream_authentik authentik-server; set $upstream_authentik authentik-server;
proxy_pass http://$upstream_authentik:9000; proxy_pass http://$upstream_authentik:9000/outpost.goauthentik.io/auth/nginx;
## Include the Set-Cookie header if present ## Include the Set-Cookie header if present
auth_request_set $set_cookie $upstream_http_set_cookie; auth_request_set $set_cookie $upstream_http_set_cookie;

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

@ -59,6 +59,9 @@ grep -qF 'agree-tos' /config/etc/letsencrypt/cli.ini || echo 'agree-tos=true' >>
# Check for broken dns credentials value in cli.ini and remove # Check for broken dns credentials value in cli.ini and remove
sed -i '/dns--credentials/d' /config/etc/letsencrypt/cli.ini sed -i '/dns--credentials/d' /config/etc/letsencrypt/cli.ini
# Disable Certbot's built in log rotation
set_ini_value "max-log-backups" "0" /config/etc/letsencrypt/cli.ini
# copy dns default configs # copy dns default configs
cp -n /defaults/dns-conf/* /config/dns-conf/ 2> >(grep -v 'cp: not replacing') cp -n /defaults/dns-conf/* /config/dns-conf/ 2> >(grep -v 'cp: not replacing')
lsiown -R abc:abc /config/dns-conf lsiown -R abc:abc /config/dns-conf

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