Compare commits

...
17 Commits
Author SHA1 Message Date
LinuxServer-CI cf3344e0bd Bot Updating Package Versions 2026-09-19 07:57:02 +00:00
LinuxServer-CI d00190cefc Bot Updating Templated Files 2026-09-14 18:21:57 +00:00
LinuxServer-CI 8d1fefb9a4 Bot Updating Templated Files 2026-09-14 18:20:17 +00:00
quietsy c29a049eea Merge pull request #621 from steveiliop56/refactor/x-tinyauth-location
refactor: use x-tinyauth-location header and remove dupe auth modules in tinyauth auth request
2026-09-14 21:18:35 +03:00
Stavros d2533208c6 fix: use correct x-forwarded-for header value 2026-09-13 21:50:56 +03:00
LinuxServer-CI 6559a9b1b6 Bot Updating Package Versions 2026-09-12 07:55:45 +00:00
LinuxServer-CI c367f03cbc Bot Updating Templated Files 2026-09-12 07:48:13 +00:00
LinuxServer-CI 32f4947db5 Bot Updating Templated Files 2026-09-12 07:46:28 +00:00
Stavros 1898dc3ede fix: include the x forwarded for header 2026-09-09 19:06:58 +03:00
Stavros 7820a40f01 fix: remove duplicate error page 2026-09-09 19:02:53 +03:00
Stavros 9e54158d38 refacotr: no need to copy all proxy headers to tinyauth 2026-09-08 20:30:46 +03:00
Stavros ad8764c2f8 fix: do not forward request body to auth server 2026-09-08 01:03:32 +03:00
Stavros 5189cbfb87 Merge branch 'master' into refactor/x-tinyauth-location 2026-09-08 00:02:25 +03:00
Stavros be4fdf0d4d fix: remove duplicate auth module headers 2026-09-07 23:59:53 +03:00
LinuxServer-CI f0c3932e7e Bot Updating Package Versions 2026-09-05 07:33:15 +00:00
Stavros 84915dcfcf fix: update readme vars instead of main readme 2026-07-19 00:50:45 +03:00
Stavros 05da050b5f refactor: use x-tinyauth-location header in tinyauth auth request 2026-07-19 00:48:02 +03:00
10 changed files with 58 additions and 69 deletions

No files matched your search

+1 -1
View File
@@ -10,7 +10,7 @@ jobs:
external-trigger-master:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.1
- uses: linuxserver/github-workflows/.github/actions/checkout@v1
- name: External Trigger
if: github.ref == 'refs/heads/master'
@@ -12,7 +12,7 @@ jobs:
external-trigger-scheduler:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.1
- uses: linuxserver/github-workflows/.github/actions/checkout@v1
with:
fetch-depth: '0'
+1 -1
View File
@@ -12,7 +12,7 @@ jobs:
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/first-interaction@v1
- uses: linuxserver/github-workflows/.github/actions/first-interaction@v1
with:
issue-message: 'Thanks for opening your first issue here! Be sure to follow the relevant issue templates, or risk having this issue marked as invalid.'
pr-message: 'Thanks for opening this pull request! Be sure to follow the [pull request template](https://github.com/linuxserver/docker-swag/blob/master/.github/PULL_REQUEST_TEMPLATE.md)!'
@@ -12,7 +12,7 @@ jobs:
package-trigger-scheduler:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.1
- uses: linuxserver/github-workflows/.github/actions/checkout@v1
with:
fetch-depth: '0'
Vendored
+13 -13
View File
@@ -629,7 +629,7 @@ pipeline {
pids[$!]="$i"
done
for p in "${!pids[@]}"; do
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* && "${pids[$p]}" != *"registry.gitlab.com"* ]] && exit 1; }
done
fi
'''
@@ -698,7 +698,7 @@ pipeline {
pids[$!]="$i"
done
for p in "${!pids[@]}"; do
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* && "${pids[$p]}" != *"registry.gitlab.com"* ]] && exit 1; }
done
fi
'''
@@ -759,7 +759,7 @@ pipeline {
pids[$!]="$i"
done
for p in "${!pids[@]}"; do
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* && "${pids[$p]}" != *"registry.gitlab.com"* ]] && exit 1; }
done
fi
'''
@@ -941,10 +941,10 @@ pipeline {
fi
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} || \
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" && "${PUSHIMAGE}" != "${GITLABIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" && "${PUSHIMAGE}" != "${GITLABIMAGE}" ]]; then exit 1; fi; }
fi
done
'''
@@ -977,26 +977,26 @@ pipeline {
fi
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} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" && "${MANIFESTIMAGE}" != "${GITLABIMAGE}" ]]; 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 [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" && "${MANIFESTIMAGE}" != "${GITLABIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" && "${MANIFESTIMAGE}" != "${GITLABIMAGE}" ]]; 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; }
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" && "${MANIFESTIMAGE}" != "${GITLABIMAGE}" ]]; then exit 1; fi; }
fi
done
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" && "${MANIFESTIMAGE}" != "${GITLABIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" && "${MANIFESTIMAGE}" != "${GITLABIMAGE}" ]]; 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 [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" && "${MANIFESTIMAGE}" != "${GITLABIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" && "${MANIFESTIMAGE}" != "${GITLABIMAGE}" ]]; then exit 1; fi; }
fi
done
'''
+1
View File
@@ -436,6 +436,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions
* **09.09.26:** - Use new X-Tinyauth-Location header in Tinyauth locations and remove duplicate auth module headers.
* **19.07.26:** - Rebase to Alpine 3.24 with PHP 8.5.
* **10.07.26:** - Add support for Let's Encrypt cert profiles. Run certbot twice daily with a random delay.
* **19.06.26:** - Add support for mijn.host dns validation.
+26 -25
View File
@@ -7,10 +7,10 @@ alpine-baselayout-data 3.7.2-r1 apk
alpine-keys 2.6-r0 apk
alpine-release 3.24.1-r0 apk
annotated-types 0.8.0 python
anyio 4.14.2 python
anyio 4.15.1 python
aom-libs 3.14.1-r0 apk
apache2-utils 2.4.68-r0 apk
apk-tools 3.0.7-r0 apk
apk-tools 3.0.8-r0 apk
apr 1.7.6-r0 apk
apr-util 1.6.4-r0 apk
argon2-libs 20190702-r5 apk
@@ -23,8 +23,8 @@ azure-mgmt-dns 9.0.0 python
backports-tarfile 1.2.0 python
bash 5.3.9-r1 apk
beautifulsoup4 4.15.0 python
boto3 1.43.86 python
botocore 1.43.86 python
boto3 1.43.98 python
botocore 1.43.98 python
brotli-libs 1.2.0-r1 apk
bs4 0.0.2 python
busybox 1.37.0-r31 apk
@@ -86,16 +86,16 @@ cli UNKNOWN binary
cli-32 UNKNOWN binary
cli-64 UNKNOWN binary
cli-arm64 UNKNOWN binary
cloudflare 5.6.0 python
cloudflare 5.7.0 python
composer 2.10.3 binary
configargparse 1.7.5 python
configargparse 1.7.7 python
configobj 5.0.9 python
coreutils 9.11-r0 apk
coreutils-env 9.11-r0 apk
coreutils-fmt 9.11-r0 apk
coreutils-sha512sum 9.11-r0 apk
cryptography 50.0.1 python
curl 8.21.0-r0 apk
curl 8.22.0-r0 apk
distro 1.9.0 python
dns-lexicon 3.25.2 python
dnslib 0.9.26 python
@@ -104,7 +104,7 @@ domeneshop 0.4.4 python
fail2ban 1.1.0 python
fail2ban 1.1.0-r3 apk
fail2ban-pyc 1.1.0-r3 apk
filelock 3.32.5 python
filelock 4.0.1 python
findutils 4.10.0-r1 apk
fontconfig 2.17.1-r1 apk
freetype 2.14.3-r0 apk
@@ -121,11 +121,11 @@ gnupg-keyboxd 2.4.9-r1 apk
gnupg-utils 2.4.9-r1 apk
gnupg-wks-client 2.4.9-r1 apk
gnutls 3.8.13-r0 apk
google-api-core 2.34.0 python
google-api-core 2.38.0 python
google-api-python-client 2.200.0 python
google-auth 2.57.0 python
google-auth 2.58.0 python
google-auth-httplib2 0.4.2 python
googleapis-common-protos 1.75.2 python
googleapis-common-protos 1.75.3 python
gpg 2.4.9-r1 apk
gpg-agent 2.4.9-r1 apk
gpg-wks-server 2.4.9-r1 apk
@@ -136,13 +136,13 @@ gui-32 UNKNOWN binary
gui-64 UNKNOWN binary
gui-arm64 UNKNOWN binary
h11 0.16.0 python
hcloud 2.23.0 python
hcloud 2.25.1 python
httpcore 1.0.9 python
httplib2 0.32.0 python
httpx 0.28.1 python
icu-data-en 78.1-r0 apk
icu-libs 78.1-r0 apk
idna 3.19 python
idna 3.20 python
importlib-metadata 8.7.1 python
inotify-tools 4.23.9.0-r0 apk
inotify-tools-libs 4.23.9.0-r0 apk
@@ -156,20 +156,20 @@ jaraco-text 4.0.0 python
jinja2 3.1.6 python
jmespath 1.1.0 python
josepy 2.2.0 python
jq 1.8.1-r0 apk
jq 1.8.2-r0 apk
jsonpickle 4.1.2 python
libapk 3.0.7-r0 apk
libapk 3.0.8-r0 apk
libassuan 3.0.2-r0 apk
libattr 2.5.2-r2 apk
libavif 1.4.1-r0 apk
libbsd 0.12.2-r0 apk
libbz2 1.0.8-r6 apk
libcrypto3 3.5.8-r0 apk
libcurl 8.21.0-r0 apk
libcurl 8.22.0-r0 apk
libdav1d 1.5.3-r0 apk
libedit 20260508.3.1-r1 apk
libevent 2.1.13-r0 apk
libexpat 2.8.3-r0 apk
libexpat 2.8.4-r0 apk
libffi 3.5.2-r1 apk
libgcc 15.2.0-r5 apk
libgcrypt 1.12.2-r0 apk
@@ -203,7 +203,7 @@ libssl3 3.5.8-r0 apk
libstdc++ 15.2.0-r5 apk
libtasn1 4.21.0-r0 apk
libunistring 1.4.2-r0 apk
libuuid 2.42.1-r0 apk
libuuid 2.42.3-r1 apk
libwebp 1.6.0-r0 apk
libx11 1.8.13-r0 apk
libxau 1.0.12-r0 apk
@@ -220,14 +220,14 @@ libzip 1.11.4-r2 apk
linux-pam 1.7.1-r2 apk
logrotate 3.22.0-r0 apk
loopialib 0.2.0 python
lxml 6.1.2 python
lxml 6.1.3 python
lz4-libs 1.10.0-r1 apk
markupsafe 3.0.3 python
memcached 1.6.42-r0 apk
mock 5.2.0 python
more-itertools 10.8.0 python
mpdecimal 4.0.1-r0 apk
msal 1.38.0 python
msal 1.39.0 python
msal-extensions 1.3.1 python
musl 1.2.6-r2 apk
musl-utils 1.2.6-r2 apk
@@ -258,11 +258,12 @@ nginx-vim 1.30.4-r1 apk
npth 1.8-r0 apk
oniguruma 6.9.10-r0 apk
openssl 3.5.8-r0 apk
opentelemetry-api 1.44.0 python
p11-kit 0.26.2-r0 apk
packaging 26.0 python
packaging 26.3 python
parsedatetime 2.6 python
pcre2 10.47-r1 apk
pcre2 10.48-r0 apk
perl 5.42.2-r0 apk
perl-error 0.17030-r0 apk
perl-git 2.54.0-r0 apk
@@ -319,7 +320,7 @@ platformdirs 4.4.0 python
popt 1.19-r4 apk
procps-ng 4.0.6-r0 apk
proto-plus 1.28.4 python
protobuf 7.36.1 python
protobuf 7.36.2 python
pyacmedns 0.4 python
pyasn1 0.6.4 python
pyasn1-modules 0.4.2 python
@@ -327,7 +328,7 @@ pyc 3.14.7-r1 apk
pycparser 3.0 python
pydantic 2.13.5 python
pydantic-core 2.46.5 python
pyjwt 2.13.0 python
pyjwt 2.14.0 python
pynamecheap 0.0.3 python
pyopenssl 26.4.0 python
pyotp 2.10.0 python
@@ -363,12 +364,12 @@ typing-inspection 0.4.4 python
tzdata 2026c-r0 apk
unixodbc 2.3.14-r1 apk
uritemplate 4.2.0 python
urllib3 2.7.0 python
urllib3 2.8.0 python
utmps-libs 0.1.3.3-r0 apk
wheel 0.46.3 python
wheel 0.48.0 python
whois 5.6.6-r0 apk
xz-libs 5.8.3-r0 apk
xz-libs 5.8.4-r0 apk
zipp 3.23.0 python
zlib 1.3.2-r0 apk
zope-interface 8.6 python
+1
View File
@@ -220,6 +220,7 @@ init_diagram: |
"swag:latest" <- Base Images
# changelog
changelogs:
- {date: "09.09.26:", desc: "Use new X-Tinyauth-Location header in Tinyauth locations and remove duplicate auth module headers."}
- {date: "19.07.26:", desc: "Rebase to Alpine 3.24 with PHP 8.5."}
- {date: "10.07.26:", desc: "Add support for Let's Encrypt cert profiles. Run certbot twice daily with a random delay."}
- {date: "19.06.26:", desc: "Add support for mijn.host dns validation."}
@@ -1,12 +1,11 @@
## Version 2025/12/17 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/tinyauth-location.conf.sample
## Version 2026/07/19 - 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;
auth_request_set $redirection_url $upstream_http_x_tinyauth_location;
error_page 401 403 =302 $redirection_url;
## Translate the user information response headers from the auth subrequest into variables
auth_request_set $email $upstream_http_remote_email;
+10 -23
View File
@@ -1,4 +1,4 @@
## Version 2025/06/08 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/tinyauth-server.conf.sample
## Version 2026/09/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
@@ -6,30 +6,17 @@
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;
# Don't send the body to the auth server
proxy_pass_request_body off;
proxy_set_header Content-Length "";
# Headers needed for authentication
proxy_set_header X-Original-URL $scheme://$http_host$request_uri;
proxy_set_header X-Original-Method $request_method;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}