diff --git a/.editorconfig b/.editorconfig old mode 100644 new mode 100755 diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml old mode 100644 new mode 100755 diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml old mode 100644 new mode 100755 diff --git a/.github/ISSUE_TEMPLATE/issue.bug.yml b/.github/ISSUE_TEMPLATE/issue.bug.yml old mode 100644 new mode 100755 diff --git a/.github/ISSUE_TEMPLATE/issue.feature.yml b/.github/ISSUE_TEMPLATE/issue.feature.yml old mode 100644 new mode 100755 diff --git a/.github/workflows/call_issue_pr_tracker.yml b/.github/workflows/call_issue_pr_tracker.yml old mode 100644 new mode 100755 index d07cf12..2c30784 --- a/.github/workflows/call_issue_pr_tracker.yml +++ b/.github/workflows/call_issue_pr_tracker.yml @@ -8,9 +8,6 @@ on: pull_request_review: types: [submitted,edited,dismissed] -permissions: - contents: read - jobs: manage-project: permissions: diff --git a/.github/workflows/call_issues_cron.yml b/.github/workflows/call_issues_cron.yml old mode 100644 new mode 100755 index 7db1d96..244796f --- a/.github/workflows/call_issues_cron.yml +++ b/.github/workflows/call_issues_cron.yml @@ -4,9 +4,6 @@ on: - cron: '35 15 * * *' workflow_dispatch: -permissions: - contents: read - jobs: stale: permissions: diff --git a/.github/workflows/external_trigger.yml b/.github/workflows/external_trigger.yml index 5daab23..7d75675 100644 --- a/.github/workflows/external_trigger.yml +++ b/.github/workflows/external_trigger.yml @@ -3,9 +3,6 @@ name: External Trigger Main on: workflow_dispatch: -permissions: - contents: read - jobs: external-trigger-master: runs-on: ubuntu-latest @@ -46,8 +43,8 @@ jobs: "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} exit 1 fi - EXT_RELEASE_SANITIZED=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g') - echo "Sanitized external version: \`${EXT_RELEASE_SANITIZED}\`" >> $GITHUB_STEP_SUMMARY + EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g') + echo "External version: \`${EXT_RELEASE}\`" >> $GITHUB_STEP_SUMMARY echo "Retrieving last pushed version" >> $GITHUB_STEP_SUMMARY image="linuxserver/swag" tag="latest" @@ -103,8 +100,8 @@ jobs: exit 1 fi echo "Last pushed version: \`${IMAGE_VERSION}\`" >> $GITHUB_STEP_SUMMARY - if [ "${EXT_RELEASE_SANITIZED}" == "${IMAGE_VERSION}" ]; then - echo "Sanitized version \`${EXT_RELEASE_SANITIZED}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY + if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then + echo "Version \`${EXT_RELEASE}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY 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 echo "New version \`${EXT_RELEASE}\` found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY @@ -119,7 +116,7 @@ jobs: "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} else printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY - echo "New sanitized version \`${EXT_RELEASE_SANITIZED}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY + echo "New version \`${EXT_RELEASE}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY if [[ "${artifacts_found}" == "true" ]]; then echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY fi @@ -139,7 +136,7 @@ jobs: --data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \ --data-urlencode "Submit=Submit" echo "**** Notifying Discord ****" - TRIGGER_REASON="A version change was detected for swag tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE_SANITIZED}" + TRIGGER_REASON="A version change was detected for swag tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}" 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"}], "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} diff --git a/.github/workflows/external_trigger_scheduler.yml b/.github/workflows/external_trigger_scheduler.yml index a98082b..0a3b07e 100644 --- a/.github/workflows/external_trigger_scheduler.yml +++ b/.github/workflows/external_trigger_scheduler.yml @@ -5,9 +5,6 @@ on: - cron: '2 * * * *' workflow_dispatch: -permissions: - contents: read - jobs: external-trigger-scheduler: runs-on: ubuntu-latest diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index e50325c..6c9a147 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -2,14 +2,8 @@ name: Greetings on: [pull_request_target, issues] -permissions: - contents: read - jobs: greeting: - permissions: - issues: write - pull-requests: write runs-on: ubuntu-latest steps: - uses: actions/first-interaction@v1 diff --git a/.github/workflows/package_trigger_scheduler.yml b/.github/workflows/package_trigger_scheduler.yml index 3d80cf8..1906f88 100644 --- a/.github/workflows/package_trigger_scheduler.yml +++ b/.github/workflows/package_trigger_scheduler.yml @@ -5,9 +5,6 @@ on: - cron: '1 3 * * 6' workflow_dispatch: -permissions: - contents: read - jobs: package-trigger-scheduler: runs-on: ubuntu-latest diff --git a/.github/workflows/permissions.yml b/.github/workflows/permissions.yml old mode 100644 new mode 100755 diff --git a/.gitignore b/.gitignore index e4dccbc..df432a4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ -.idea .jenkins-external diff --git a/Dockerfile b/Dockerfile index ebb6cae..3016894 100755 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 -FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.22 +FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.21 # set version label ARG BUILD_DATE @@ -49,36 +49,37 @@ RUN \ nginx-mod-stream \ nginx-mod-stream-geoip2 \ nginx-vim \ - php84-bcmath \ - php84-bz2 \ - php84-dom \ - php84-exif \ - php84-ftp \ - php84-gd \ - php84-gmp \ - php84-imap \ - php84-intl \ - php84-ldap \ - php84-mysqli \ - php84-mysqlnd \ - php84-opcache \ - php84-pdo_mysql \ - php84-pdo_odbc \ - php84-pdo_pgsql \ - php84-pdo_sqlite \ - php84-pear \ - php84-pecl-apcu \ - php84-pecl-memcached \ - php84-pecl-redis \ - php84-pgsql \ - php84-posix \ - php84-soap \ - php84-sockets \ - php84-sodium \ - php84-sqlite3 \ - php84-tokenizer \ - php84-xmlreader \ - php84-xsl \ + php83-bcmath \ + php83-bz2 \ + php83-dom \ + php83-exif \ + php83-ftp \ + php83-gd \ + php83-gmp \ + php83-imap \ + php83-intl \ + php83-ldap \ + php83-mysqli \ + php83-mysqlnd \ + php83-opcache \ + php83-pdo_mysql \ + php83-pdo_odbc \ + php83-pdo_pgsql \ + php83-pdo_sqlite \ + php83-pear \ + php83-pecl-apcu \ + php83-pecl-mcrypt \ + php83-pecl-memcached \ + php83-pecl-redis \ + php83-pgsql \ + php83-posix \ + php83-soap \ + php83-sockets \ + php83-sodium \ + php83-sqlite3 \ + php83-tokenizer \ + php83-xmlreader \ + php83-xsl \ whois && \ echo "**** install certbot plugins ****" && \ if [ -z ${CERTBOT_VERSION+x} ]; then \ @@ -88,7 +89,7 @@ RUN \ pip install -U --no-cache-dir \ pip \ wheel && \ - pip install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.22/ \ + pip install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.21/ \ certbot==${CERTBOT_VERSION} \ certbot-dns-acmedns \ certbot-dns-aliyun \ diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index 8198789..516f30e 100755 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 -FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.22 +FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.21 # set version label ARG BUILD_DATE @@ -49,36 +49,37 @@ RUN \ nginx-mod-stream \ nginx-mod-stream-geoip2 \ nginx-vim \ - php84-bcmath \ - php84-bz2 \ - php84-dom \ - php84-exif \ - php84-ftp \ - php84-gd \ - php84-gmp \ - php84-imap \ - php84-intl \ - php84-ldap \ - php84-mysqli \ - php84-mysqlnd \ - php84-opcache \ - php84-pdo_mysql \ - php84-pdo_odbc \ - php84-pdo_pgsql \ - php84-pdo_sqlite \ - php84-pear \ - php84-pecl-apcu \ - php84-pecl-memcached \ - php84-pecl-redis \ - php84-pgsql \ - php84-posix \ - php84-soap \ - php84-sockets \ - php84-sodium \ - php84-sqlite3 \ - php84-tokenizer \ - php84-xmlreader \ - php84-xsl \ + php83-bcmath \ + php83-bz2 \ + php83-dom \ + php83-exif \ + php83-ftp \ + php83-gd \ + php83-gmp \ + php83-imap \ + php83-intl \ + php83-ldap \ + php83-mysqli \ + php83-mysqlnd \ + php83-opcache \ + php83-pdo_mysql \ + php83-pdo_odbc \ + php83-pdo_pgsql \ + php83-pdo_sqlite \ + php83-pear \ + php83-pecl-apcu \ + php83-pecl-mcrypt \ + php83-pecl-memcached \ + php83-pecl-redis \ + php83-pgsql \ + php83-posix \ + php83-soap \ + php83-sockets \ + php83-sodium \ + php83-sqlite3 \ + php83-tokenizer \ + php83-xmlreader \ + php83-xsl \ whois && \ echo "**** install certbot plugins ****" && \ if [ -z ${CERTBOT_VERSION+x} ]; then \ @@ -88,7 +89,7 @@ RUN \ pip install -U --no-cache-dir \ pip \ wheel && \ - pip install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.22/ \ + pip install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.21/ \ certbot==${CERTBOT_VERSION} \ certbot-dns-acmedns \ certbot-dns-aliyun \ diff --git a/Jenkinsfile b/Jenkinsfile index 6b41bcc..af1052e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -95,11 +95,7 @@ pipeline { env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/' 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' - if ( env.SYFT_IMAGE_TAG == null ) { - env.SYFT_IMAGE_TAG = 'latest' - } } - echo "Using syft image tag ${SYFT_IMAGE_TAG}" sh '''#! /bin/bash echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" ''' script{ @@ -784,7 +780,7 @@ pipeline { docker run --rm \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ -v ${TEMPDIR}:/tmp \ - ghcr.io/anchore/syft:${SYFT_IMAGE_TAG} \ + ghcr.io/anchore/syft:latest \ ${LOCAL_CONTAINER} -o table=/tmp/package_versions.txt 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" @@ -894,7 +890,6 @@ pipeline { -e WEB_AUTH=\"${CI_AUTH}\" \ -e WEB_PATH=\"${CI_WEBPATH}\" \ -e NODE_NAME=\"${NODE_NAME}\" \ - -e SYFT_IMAGE_TAG=\"${CI_SYFT_IMAGE_TAG:-${SYFT_IMAGE_TAG}}\" \ -t ghcr.io/linuxserver/ci:latest \ python3 test_build.py''' } diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md index e2c1361..7bf137c 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ [![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.") [![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.") [![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") @@ -21,6 +22,7 @@ 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! * [Discord](https://linuxserver.io/discord) - realtime support / chat with the community and the team. * [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. * [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget @@ -52,6 +54,7 @@ The architectures supported by this image are: | :----: | :----: | ---- | | x86-64 | ✅ | amd64-\ | | arm64 | ✅ | arm64v8-\ | +| armhf | ❌ | | ## Application Setup @@ -142,16 +145,6 @@ 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. * 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 Please follow the instructions [on this blog post](https://www.linuxserver.io/blog/2020-08-21-introducing-swag#migrate). @@ -204,7 +197,6 @@ services: ports: - 443:443 - 80:80 #optional - - 443:443/udp #optional restart: unless-stopped ``` @@ -232,7 +224,6 @@ docker run -d \ -e SWAG_AUTORELOAD_WATCHLIST= `#optional` \ -p 443:443 \ -p 80:80 `#optional` \ - -p 443:443/udp `#optional` \ -v /path/to/swag/config:/config \ --restart unless-stopped \ lscr.io/linuxserver/swag:latest @@ -246,7 +237,6 @@ Containers are configured using parameters passed at runtime (such as those abov | :----: | --- | | `-p 443:443` | HTTPS port | | `-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 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). | @@ -433,8 +423,6 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64 ## 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. * **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). diff --git a/package_versions.txt b/package_versions.txt index 7760e92..2628364 100755 --- a/package_versions.txt +++ b/package_versions.txt @@ -1,372 +1,367 @@ -NAME VERSION TYPE -Simple Launcher 1.1.0.14 binary (+5 duplicates) -acl-libs 2.3.2-r1 apk -acme 4.2.0 python -alpine-baselayout 3.7.0-r0 apk -alpine-baselayout-data 3.7.0-r0 apk -alpine-keys 2.5-r0 apk -alpine-release 3.22.1-r0 apk -aom-libs 3.12.1-r0 apk -apache2-utils 2.4.65-r0 apk -apk-tools 2.14.9-r2 apk -apr 1.7.5-r0 apk -apr-util 1.6.3-r1 apk -argon2-libs 20190702-r5 apk -attrs 25.3.0 python -autocommand 2.2.2 python -azure-common 1.1.28 python -azure-core 1.35.0 python -azure-identity 1.23.1 python -azure-mgmt-core 1.6.0 python -azure-mgmt-dns 9.0.0 python -backports-tarfile 1.2.0 python -bash 5.2.37-r0 apk -beautifulsoup4 4.13.4 python -boto3 1.40.2 python -botocore 1.40.2 python -brotli-libs 1.1.0-r2 apk -bs4 0.0.2 python -busybox 1.37.0-r18 apk -busybox-binsh 1.37.0-r18 apk -c-ares 1.34.5-r0 apk -c-client 2007f-r15 apk -ca-certificates 20250619-r0 apk -ca-certificates-bundle 20250619-r0 apk -cachetools 5.5.2 python -catatonit 0.2.1-r0 apk -certbot 4.2.0 python -certbot-dns-acmedns 0.1.0 python -certbot-dns-aliyun 2.0.0 python -certbot-dns-azure 1.5.0 python -certbot-dns-bunny 3.0.0 python -certbot-dns-cloudflare 4.2.0 python -certbot-dns-cpanel 0.4.0 python -certbot-dns-desec 1.2.1 python -certbot-dns-digitalocean 4.2.0 python -certbot-dns-directadmin 1.0.15 python -certbot-dns-dnsimple 4.2.0 python -certbot-dns-dnsmadeeasy 4.2.0 python -certbot-dns-dnspod 0.1.0 python -certbot-dns-do 0.31.0 python -certbot-dns-domeneshop 0.2.9 python -certbot-dns-dreamhost 1.0 python -certbot-dns-duckdns 1.6 python -certbot-dns-dynudns 0.0.6 python -certbot-dns-freedns 0.2.0 python -certbot-dns-gehirn 4.2.0 python -certbot-dns-glesys 2.1.0 python -certbot-dns-godaddy 2.8.0 python -certbot-dns-google 4.2.0 python -certbot-dns-he 1.0.0 python -certbot-dns-hetzner 2.0.1 python -certbot-dns-infomaniak 0.2.3 python -certbot-dns-inwx 3.0.3 python -certbot-dns-ionos 2024.11.9 python -certbot-dns-linode 4.2.0 python -certbot-dns-loopia 1.0.1 python -certbot-dns-luadns 4.2.0 python -certbot-dns-namecheap 1.0.0 python -certbot-dns-netcup 1.4.4 python -certbot-dns-njalla 2.0.2 python -certbot-dns-nsone 4.2.0 python -certbot-dns-ovh 4.2.0 python -certbot-dns-porkbun 0.10.1 python -certbot-dns-rfc2136 4.2.0 python -certbot-dns-route53 4.2.0 python -certbot-dns-sakuracloud 4.2.0 python -certbot-dns-standalone 1.2.1 python -certbot-dns-transip 0.5.2 python -certbot-dns-vultr 1.1.0 python -certbot-plugin-gandi 1.5.0 python -certifi 2025.8.3 python -cffi 1.17.1 python -charset-normalizer 3.4.2 python -cli UNKNOWN binary -cli-32 UNKNOWN binary -cli-64 UNKNOWN binary -cli-arm64 UNKNOWN binary -cloudflare 2.19.4 python -composer 2.8.10 binary -configargparse 1.7.1 python -configobj 5.0.9 python -coreutils 9.7-r1 apk -coreutils-env 9.7-r1 apk -coreutils-fmt 9.7-r1 apk -coreutils-sha512sum 9.7-r1 apk -cryptography 45.0.5 python -curl 8.14.1-r1 apk -distro 1.9.0 python -dns-lexicon 3.21.1 python -dnslib 0.9.26 python -dnspython 2.7.0 python -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.18.0 python -findutils 4.10.0-r0 apk -fontconfig 2.15.0-r3 apk -freetype 2.13.3-r0 apk -future 1.0.0 python -gdbm 1.24-r0 apk -git 2.49.1-r0 apk -git-init-template 2.49.1-r0 apk -git-perl 2.49.1-r0 apk -gmp 6.3.0-r3 apk -gnupg 2.4.7-r0 apk -gnupg-dirmngr 2.4.7-r0 apk -gnupg-gpgconf 2.4.7-r0 apk -gnupg-keyboxd 2.4.7-r0 apk -gnupg-utils 2.4.7-r0 apk -gnupg-wks-client 2.4.7-r0 apk -gnutls 3.8.8-r0 apk -google-api-core 2.25.1 python -google-api-python-client 2.177.0 python -google-auth 2.40.3 python -google-auth-httplib2 0.2.0 python -googleapis-common-protos 1.70.0 python -gpg 2.4.7-r0 apk -gpg-agent 2.4.7-r0 apk -gpg-wks-server 2.4.7-r0 apk -gpgsm 2.4.7-r0 apk -gpgv 2.4.7-r0 apk -gui UNKNOWN binary -gui-32 UNKNOWN binary -gui-64 UNKNOWN binary -gui-arm64 UNKNOWN binary -httplib2 0.22.0 python -icu-data-en 76.1-r1 apk -icu-libs 76.1-r1 apk -idna 3.10 python -importlib-metadata 8.0.0 python -inflect 7.3.1 python -inotify-tools 4.23.9.0-r0 apk -inotify-tools-libs 4.23.9.0-r0 apk -inwx-domrobot 3.2.0 python -iptables 1.8.11-r1 apk -iptables-legacy 1.8.11-r1 apk -isodate 0.7.2 python -jaraco-collections 5.1.0 python -jaraco-context 5.3.0 python -jaraco-functools 4.0.1 python -jaraco-text 3.12.1 python -jinja2 3.1.6 python -jmespath 1.0.1 python -josepy 2.1.0 python -jq 1.8.0-r0 apk -jsonlines 4.0.0 python -jsonpickle 4.1.1 python -libapk2 2.14.9-r2 apk -libassuan 2.5.7-r0 apk -libattr 2.5.2-r2 apk -libavif 1.3.0-r0 apk -libbsd 0.12.2-r0 apk -libbz2 1.0.8-r6 apk -libcrypto3 3.5.1-r0 apk -libcurl 8.14.1-r1 apk -libdav1d 1.5.1-r0 apk -libedit 20250104.3.1-r1 apk -libevent 2.1.12-r8 apk -libexpat 2.7.1-r0 apk -libffi 3.4.8-r0 apk -libgcc 14.2.0-r6 apk -libgcrypt 1.10.3-r1 apk -libgd 2.3.3-r10 apk -libgpg-error 1.55-r0 apk -libice 1.1.2-r0 apk -libidn2 2.3.7-r0 apk -libintl 0.24.1-r0 apk -libip4tc 1.8.11-r1 apk -libip6tc 1.8.11-r1 apk -libjpeg-turbo 3.1.0-r0 apk -libksba 1.6.7-r0 apk -libldap 2.6.8-r0 apk -libmaxminddb-libs 1.9.1-r0 apk -libmd 1.1.0-r0 apk -libmemcached-libs 1.1.4-r1 apk -libmnl 1.0.5-r2 apk -libncursesw 6.5_p20250503-r0 apk -libnftnl 1.2.9-r0 apk -libpanelw 6.5_p20250503-r0 apk -libpng 1.6.47-r0 apk -libpq 17.5-r0 apk -libproc2 4.0.4-r3 apk -libpsl 0.21.5-r3 apk -libsasl 2.1.28-r8 apk -libseccomp 2.6.0-r0 apk -libsharpyuv 1.5.0-r0 apk -libsm 1.2.5-r0 apk -libsodium 1.0.20-r0 apk -libssl3 3.5.1-r0 apk -libstdc++ 14.2.0-r6 apk -libtasn1 4.20.0-r0 apk -libunistring 1.3-r0 apk -libuuid 2.41-r9 apk -libwebp 1.5.0-r0 apk -libx11 1.8.11-r0 apk -libxau 1.0.12-r0 apk -libxcb 1.17.0-r0 apk -libxdmcp 1.1.5-r1 apk -libxext 1.3.6-r2 apk -libxml2 2.13.8-r0 apk -libxpm 3.5.17-r0 apk -libxslt 1.1.43-r3 apk -libxt 1.3.1-r0 apk -libxtables 1.8.11-r1 apk -libyuv 0.0.1887.20251502-r1 apk -libzip 1.11.4-r0 apk -linux-pam 1.7.0-r4 apk -logrotate 3.21.0-r1 apk -loopialib 0.2.0 python -lxml 6.0.0 python -lz4-libs 1.10.0-r0 apk -markupsafe 3.0.2 python -memcached 1.6.32-r0 apk -mock 5.2.0 python -more-itertools 10.3.0 python -mpdecimal 4.0.1-r0 apk -msal 1.33.0 python -msal-extensions 1.3.1 python -musl 1.2.5-r10 apk -musl-utils 1.2.5-r10 apk -my-test-package 1.0 python -nano 8.4-r0 apk -ncurses-terminfo-base 6.5_p20250503-r0 apk -netcat-openbsd 1.229.1-r0 apk -nettle 3.10.1-r0 apk -nghttp2-libs 1.65.0-r0 apk -nginx 1.28.0-r3 apk -nginx-mod-devel-kit 1.28.0-r3 apk -nginx-mod-http-brotli 1.28.0-r3 apk -nginx-mod-http-dav-ext 1.28.0-r3 apk -nginx-mod-http-echo 1.28.0-r3 apk -nginx-mod-http-fancyindex 1.28.0-r3 apk -nginx-mod-http-geoip2 1.28.0-r3 apk -nginx-mod-http-headers-more 1.28.0-r3 apk -nginx-mod-http-image-filter 1.28.0-r3 apk -nginx-mod-http-perl 1.28.0-r3 apk -nginx-mod-http-redis2 1.28.0-r3 apk -nginx-mod-http-set-misc 1.28.0-r3 apk -nginx-mod-http-upload-progress 1.28.0-r3 apk -nginx-mod-http-xslt-filter 1.28.0-r3 apk -nginx-mod-mail 1.28.0-r3 apk -nginx-mod-rtmp 1.28.0-r3 apk -nginx-mod-stream 1.28.0-r3 apk -nginx-mod-stream-geoip2 1.28.0-r3 apk -nginx-vim 1.28.0-r3 apk -npth 1.8-r0 apk -oniguruma 6.9.10-r0 apk -openssl 3.5.1-r0 apk -p11-kit 0.25.5-r2 apk -packaging 24.2 python -parsedatetime 2.6 python -pcre2 10.43-r1 apk -perl 5.40.3-r0 apk -perl-error 0.17030-r0 apk -perl-git 2.49.1-r0 apk -php84 8.4.10-r0 apk -php84-bcmath 8.4.10-r0 apk -php84-bz2 8.4.10-r0 apk -php84-common 8.4.10-r0 apk -php84-ctype 8.4.10-r0 apk -php84-curl 8.4.10-r0 apk -php84-dom 8.4.10-r0 apk -php84-exif 8.4.10-r0 apk -php84-fileinfo 8.4.10-r0 apk -php84-fpm 8.4.10-r0 apk -php84-ftp 8.4.10-r0 apk -php84-gd 8.4.10-r0 apk -php84-gmp 8.4.10-r0 apk -php84-iconv 8.4.10-r0 apk -php84-intl 8.4.10-r0 apk -php84-ldap 8.4.10-r0 apk -php84-mbstring 8.4.10-r0 apk -php84-mysqli 8.4.10-r0 apk -php84-mysqlnd 8.4.10-r0 apk -php84-opcache 8.4.10-r0 apk -php84-openssl 8.4.10-r0 apk -php84-pdo 8.4.10-r0 apk -php84-pdo_mysql 8.4.10-r0 apk -php84-pdo_odbc 8.4.10-r0 apk -php84-pdo_pgsql 8.4.10-r0 apk -php84-pdo_sqlite 8.4.10-r0 apk -php84-pear 8.4.10-r0 apk -php84-pecl-apcu 5.1.24-r1 apk -php84-pecl-igbinary 3.2.16-r1 apk -php84-pecl-imap 1.0.3-r0 apk -php84-pecl-memcached 3.3.0-r0 apk -php84-pecl-msgpack 3.0.0-r0 apk -php84-pecl-redis 6.2.0-r0 apk -php84-pgsql 8.4.10-r0 apk -php84-phar 8.4.10-r0 apk -php84-posix 8.4.10-r0 apk -php84-session 8.4.10-r0 apk -php84-simplexml 8.4.10-r0 apk -php84-soap 8.4.10-r0 apk -php84-sockets 8.4.10-r0 apk -php84-sodium 8.4.10-r0 apk -php84-sqlite3 8.4.10-r0 apk -php84-tokenizer 8.4.10-r0 apk -php84-xml 8.4.10-r0 apk -php84-xmlreader 8.4.10-r0 apk -php84-xmlwriter 8.4.10-r0 apk -php84-xsl 8.4.10-r0 apk -php84-zip 8.4.10-r0 apk -pinentry 1.3.1-r0 apk -pip 25.2 python -pkb-client 2.2.0 python -platformdirs 4.2.2 python -popt 1.19-r4 apk -procps-ng 4.0.4-r3 apk -proto-plus 1.26.1 python -protobuf 6.31.1 python -pyacmedns 0.4 python -pyasn1 0.6.1 python -pyasn1-modules 0.4.2 python -pyc 3.12.11-r0 apk -pycparser 2.22 python -pyjwt 2.10.1 python -pynamecheap 0.0.3 python -pyopenssl 25.1.0 python -pyotp 2.9.0 python -pyparsing 3.2.3 python -pyrfc3339 2.0.1 python -python-dateutil 2.9.0.post0 python -python-digitalocean 1.17.0 python -python-transip 0.6.0 python -python3 3.12.11-r0 apk -python3-pyc 3.12.11-r0 apk -python3-pycache-pyc0 3.12.11-r0 apk -pyyaml 6.0.2 python -readline 8.2.13-r1 apk -requests 2.32.4 python -requests-file 2.1.0 python -requests-mock 1.12.1 python -rsa 4.9.1 python -s3transfer 0.13.1 python -scanelf 1.3.8-r1 apk -setuptools 80.9.0 python -shadow 4.17.3-r0 apk -six 1.17.0 python -skalibs-libs 2.14.4.0-r0 apk -soupsieve 2.7 python -sqlite-libs 3.49.2-r1 apk -ssl_client 1.37.0-r18 apk -tiff 4.7.0-r0 apk -tldextract 5.3.0 python -tomli 2.0.1 python -typeguard 4.3.0 python -typing-extensions 4.12.2 python -typing-extensions 4.14.1 python -tzdata 2025b-r0 apk -unixodbc 2.3.12-r0 apk -uritemplate 4.2.0 python -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 +NAME VERSION TYPE +Simple Launcher 1.1.0.14 dotnet (+5 duplicates) +acl-libs 2.3.2-r1 apk +acme 3.3.0 python +alpine-baselayout 3.6.8-r1 apk +alpine-baselayout-data 3.6.8-r1 apk +alpine-keys 2.5-r0 apk +alpine-release 3.21.3-r0 apk +aom-libs 3.11.0-r0 apk +apache2-utils 2.4.62-r0 apk +apk-tools 2.14.6-r3 apk +apr 1.7.5-r0 apk +apr-util 1.6.3-r1 apk +argon2-libs 20190702-r5 apk +attrs 25.1.0 python +autocommand 2.2.2 python +azure-common 1.1.28 python +azure-core 1.32.0 python +azure-identity 1.20.0 python +azure-mgmt-core 1.5.0 python +azure-mgmt-dns 8.2.0 python +backports-tarfile 1.2.0 python +bash 5.2.37-r0 apk +beautifulsoup4 4.13.3 python +boto3 1.37.10 python +botocore 1.37.10 python +brotli-libs 1.1.0-r2 apk +bs4 0.0.2 python +busybox 1.37.0-r12 apk +busybox-binsh 1.37.0-r12 apk +c-ares 1.34.3-r0 apk +c-client 2007f-r15 apk +ca-certificates 20241121-r1 apk +ca-certificates-bundle 20241121-r1 apk +cachetools 5.5.2 python +catatonit 0.2.0-r0 apk +certbot 3.3.0 python +certbot-dns-acmedns 0.1.0 python +certbot-dns-aliyun 2.0.0 python +certbot-dns-azure 2.6.1 python +certbot-dns-bunny 3.0.0 python +certbot-dns-cloudflare 3.3.0 python +certbot-dns-cpanel 0.4.0 python +certbot-dns-desec 1.2.1 python +certbot-dns-digitalocean 3.3.0 python +certbot-dns-directadmin 1.0.14 python +certbot-dns-dnsimple 3.3.0 python +certbot-dns-dnsmadeeasy 3.3.0 python +certbot-dns-dnspod 0.1.0 python +certbot-dns-do 0.31.0 python +certbot-dns-domeneshop 0.2.9 python +certbot-dns-dreamhost 1.0 python +certbot-dns-duckdns 1.5 python +certbot-dns-dynudns 0.0.6 python +certbot-dns-freedns 0.2.0 python +certbot-dns-gehirn 3.3.0 python +certbot-dns-glesys 2.1.0 python +certbot-dns-godaddy 2.8.0 python +certbot-dns-google 3.3.0 python +certbot-dns-he 1.0.0 python +certbot-dns-hetzner 2.0.1 python +certbot-dns-infomaniak 0.2.3 python +certbot-dns-inwx 3.0.2 python +certbot-dns-ionos 2024.11.9 python +certbot-dns-linode 3.3.0 python +certbot-dns-loopia 1.0.1 python +certbot-dns-luadns 3.3.0 python +certbot-dns-namecheap 1.0.0 python +certbot-dns-netcup 1.4.4 python +certbot-dns-njalla 2.0.2 python +certbot-dns-nsone 3.3.0 python +certbot-dns-ovh 3.3.0 python +certbot-dns-porkbun 0.9.1 python +certbot-dns-rfc2136 3.3.0 python +certbot-dns-route53 3.3.0 python +certbot-dns-sakuracloud 3.3.0 python +certbot-dns-standalone 1.2.1 python +certbot-dns-transip 0.5.2 python +certbot-dns-vultr 1.1.0 python +certbot-plugin-gandi 1.5.0 python +certifi 2025.1.31 python +cffi 1.17.1 python +charset-normalizer 3.4.1 python +cloudflare 2.19.4 python +composer 2.8.6 binary +configargparse 1.7 python +configobj 5.0.9 python +coreutils 9.5-r2 apk +coreutils-env 9.5-r2 apk +coreutils-fmt 9.5-r2 apk +coreutils-sha512sum 9.5-r2 apk +cryptography 44.0.2 python +curl 8.12.1-r0 apk +distro 1.9.0 python +dns-lexicon 3.20.1 python +dnslib 0.9.26 python +dnspython 2.7.0 python +domeneshop 0.4.4 python +fail2ban 1.1.0 python +fail2ban 1.1.0-r2 apk +fail2ban-pyc 1.1.0-r2 apk +filelock 3.17.0 python +findutils 4.10.0-r0 apk +fontconfig 2.15.0-r1 apk +freetype 2.13.3-r0 apk +future 1.0.0 python +gdbm 1.24-r0 apk +git 2.47.2-r0 apk +git-init-template 2.47.2-r0 apk +git-perl 2.47.2-r0 apk +gmp 6.3.0-r2 apk +gnupg 2.4.7-r0 apk +gnupg-dirmngr 2.4.7-r0 apk +gnupg-gpgconf 2.4.7-r0 apk +gnupg-keyboxd 2.4.7-r0 apk +gnupg-utils 2.4.7-r0 apk +gnupg-wks-client 2.4.7-r0 apk +gnutls 3.8.8-r0 apk +google-api-core 2.24.2 python +google-api-python-client 2.163.0 python +google-auth 2.38.0 python +google-auth-httplib2 0.2.0 python +googleapis-common-protos 1.69.1 python +gpg 2.4.7-r0 apk +gpg-agent 2.4.7-r0 apk +gpg-wks-server 2.4.7-r0 apk +gpgsm 2.4.7-r0 apk +gpgv 2.4.7-r0 apk +httplib2 0.22.0 python +icu-data-en 74.2-r0 apk +icu-libs 74.2-r0 apk +idna 3.10 python +importlib-metadata 8.0.0 python +inflect 7.3.1 python +inotify-tools 4.23.9.0-r0 apk +inotify-tools-libs 4.23.9.0-r0 apk +inwx-domrobot 3.2.0 python +iptables 1.8.11-r1 apk +iptables-legacy 1.8.11-r1 apk +isodate 0.7.2 python +jaraco-collections 5.1.0 python +jaraco-context 5.3.0 python +jaraco-functools 4.0.1 python +jaraco-text 3.12.1 python +jinja2 3.1.6 python +jmespath 1.0.1 python +josepy 1.15.0 python +jq 1.7.1-r0 apk +jsonlines 4.0.0 python +jsonpickle 4.0.2 python +libassuan 2.5.7-r0 apk +libattr 2.5.2-r2 apk +libavif 1.0.4-r0 apk +libbsd 0.12.2-r0 apk +libbz2 1.0.8-r6 apk +libcrypto3 3.3.3-r0 apk +libcurl 8.12.1-r0 apk +libdav1d 1.5.0-r0 apk +libedit 20240808.3.1-r0 apk +libevent 2.1.12-r7 apk +libexpat 2.6.4-r0 apk +libffi 3.4.7-r0 apk +libgcc 14.2.0-r4 apk +libgcrypt 1.10.3-r1 apk +libgd 2.3.3-r9 apk +libgpg-error 1.51-r0 apk +libice 1.1.1-r6 apk +libidn2 2.3.7-r0 apk +libintl 0.22.5-r0 apk +libip4tc 1.8.11-r1 apk +libip6tc 1.8.11-r1 apk +libjpeg-turbo 3.0.4-r0 apk +libksba 1.6.7-r0 apk +libldap 2.6.8-r0 apk +libmaxminddb-libs 1.9.1-r0 apk +libmcrypt 2.5.8-r10 apk +libmd 1.1.0-r0 apk +libmemcached-libs 1.1.4-r1 apk +libmnl 1.0.5-r2 apk +libncursesw 6.5_p20241006-r3 apk +libnftnl 1.2.8-r0 apk +libpanelw 6.5_p20241006-r3 apk +libpng 1.6.44-r0 apk +libpq 17.4-r0 apk +libproc2 4.0.4-r2 apk +libpsl 0.21.5-r3 apk +libsasl 2.1.28-r8 apk +libseccomp 2.5.5-r1 apk +libsharpyuv 1.4.0-r0 apk +libsm 1.2.4-r4 apk +libsodium 1.0.20-r0 apk +libssl3 3.3.3-r0 apk +libstdc++ 14.2.0-r4 apk +libtasn1 4.20.0-r0 apk +libunistring 1.2-r0 apk +libuuid 2.40.4-r0 apk +libwebp 1.4.0-r0 apk +libx11 1.8.10-r0 apk +libxau 1.0.11-r4 apk +libxcb 1.16.1-r0 apk +libxdmcp 1.1.5-r1 apk +libxext 1.3.6-r2 apk +libxml2 2.13.4-r5 apk +libxpm 3.5.17-r0 apk +libxslt 1.1.42-r1 apk +libxt 1.3.1-r0 apk +libxtables 1.8.11-r1 apk +libzip 1.11.2-r0 apk +linux-pam 1.6.1-r1 apk +logrotate 3.21.0-r1 apk +loopialib 0.2.0 python +lxml 5.3.1 python +lz4-libs 1.10.0-r0 apk +markupsafe 3.0.2 python +memcached 1.6.32-r0 apk +mock 5.2.0 python +more-itertools 10.3.0 python +mpdecimal 4.0.0-r0 apk +msal 1.31.1 python +msal-extensions 1.2.0 python +musl 1.2.5-r9 apk +musl-utils 1.2.5-r9 apk +my-test-package 1.0 python +nano 8.2-r0 apk +ncurses-terminfo-base 6.5_p20241006-r3 apk +netcat-openbsd 1.226.1.1-r0 apk +nettle 3.10-r1 apk +nghttp2-libs 1.64.0-r0 apk +nginx 1.26.2-r4 apk +nginx-mod-devel-kit 1.26.2-r4 apk +nginx-mod-http-brotli 1.26.2-r4 apk +nginx-mod-http-dav-ext 1.26.2-r4 apk +nginx-mod-http-echo 1.26.2-r4 apk +nginx-mod-http-fancyindex 1.26.2-r4 apk +nginx-mod-http-geoip2 1.26.2-r4 apk +nginx-mod-http-headers-more 1.26.2-r4 apk +nginx-mod-http-image-filter 1.26.2-r4 apk +nginx-mod-http-perl 1.26.2-r4 apk +nginx-mod-http-redis2 1.26.2-r4 apk +nginx-mod-http-set-misc 1.26.2-r4 apk +nginx-mod-http-upload-progress 1.26.2-r4 apk +nginx-mod-http-xslt-filter 1.26.2-r4 apk +nginx-mod-mail 1.26.2-r4 apk +nginx-mod-rtmp 1.26.2-r4 apk +nginx-mod-stream 1.26.2-r4 apk +nginx-mod-stream-geoip2 1.26.2-r4 apk +nginx-vim 1.26.2-r4 apk +npth 1.6-r4 apk +oniguruma 6.9.9-r0 apk +openssl 3.3.3-r0 apk +p11-kit 0.25.5-r2 apk +packaging 24.2 python +parsedatetime 2.6 python +pcre 8.45-r3 apk +pcre2 10.43-r0 apk +perl 5.40.1-r0 apk +perl-error 0.17029-r2 apk +perl-git 2.47.2-r0 apk +php83 8.3.17-r0 apk +php83-bcmath 8.3.17-r0 apk +php83-bz2 8.3.17-r0 apk +php83-common 8.3.17-r0 apk +php83-ctype 8.3.17-r0 apk +php83-curl 8.3.17-r0 apk +php83-dom 8.3.17-r0 apk +php83-exif 8.3.17-r0 apk +php83-fileinfo 8.3.17-r0 apk +php83-fpm 8.3.17-r0 apk +php83-ftp 8.3.17-r0 apk +php83-gd 8.3.17-r0 apk +php83-gmp 8.3.17-r0 apk +php83-iconv 8.3.17-r0 apk +php83-imap 8.3.17-r0 apk +php83-intl 8.3.17-r0 apk +php83-ldap 8.3.17-r0 apk +php83-mbstring 8.3.17-r0 apk +php83-mysqli 8.3.17-r0 apk +php83-mysqlnd 8.3.17-r0 apk +php83-opcache 8.3.17-r0 apk +php83-openssl 8.3.17-r0 apk +php83-pdo 8.3.17-r0 apk +php83-pdo_mysql 8.3.17-r0 apk +php83-pdo_odbc 8.3.17-r0 apk +php83-pdo_pgsql 8.3.17-r0 apk +php83-pdo_sqlite 8.3.17-r0 apk +php83-pear 8.3.17-r0 apk +php83-pecl-apcu 5.1.24-r0 apk +php83-pecl-igbinary 3.2.16-r0 apk +php83-pecl-mcrypt 1.0.7-r0 apk +php83-pecl-memcached 3.3.0-r0 apk +php83-pecl-msgpack 3.0.0-r0 apk +php83-pecl-redis 6.1.0-r0 apk +php83-pgsql 8.3.17-r0 apk +php83-phar 8.3.17-r0 apk +php83-posix 8.3.17-r0 apk +php83-session 8.3.17-r0 apk +php83-simplexml 8.3.17-r0 apk +php83-soap 8.3.17-r0 apk +php83-sockets 8.3.17-r0 apk +php83-sodium 8.3.17-r0 apk +php83-sqlite3 8.3.17-r0 apk +php83-tokenizer 8.3.17-r0 apk +php83-xml 8.3.17-r0 apk +php83-xmlreader 8.3.17-r0 apk +php83-xmlwriter 8.3.17-r0 apk +php83-xsl 8.3.17-r0 apk +php83-zip 8.3.17-r0 apk +pinentry 1.3.1-r0 apk +pip 25.0.1 python +pkb-client 2.0.0 python +platformdirs 4.2.2 python +popt 1.19-r4 apk +portalocker 2.10.1 python +procps-ng 4.0.4-r2 apk +proto-plus 1.26.1 python +protobuf 5.29.3 python +pyacmedns 0.4 python +pyasn1 0.6.1 python +pyasn1-modules 0.4.1 python +pyc 3.12.9-r0 apk +pycparser 2.22 python +pyjwt 2.10.1 python +pynamecheap 0.0.3 python +pyopenssl 25.0.0 python +pyotp 2.9.0 python +pyparsing 3.2.1 python +pyrfc3339 2.0.1 python +python-dateutil 2.9.0.post0 python +python-digitalocean 1.17.0 python +python-transip 0.6.0 python +python3 3.12.9-r0 apk +python3-pyc 3.12.9-r0 apk +python3-pycache-pyc0 3.12.9-r0 apk +pytz 2025.1 python +pyyaml 6.0.2 python +readline 8.2.13-r0 apk +requests 2.32.3 python +requests-file 2.1.0 python +requests-mock 1.12.1 python +rsa 4.9 python +s3transfer 0.11.4 python +scanelf 1.3.8-r1 apk +setuptools 76.0.0 python +shadow 4.16.0-r1 apk +six 1.17.0 python +skalibs-libs 2.14.3.0-r0 apk +soupsieve 2.6 python +sqlite-libs 3.48.0-r0 apk +ssl_client 1.37.0-r12 apk +tiff 4.7.0-r0 apk +tldextract 5.1.3 python +tomli 2.0.1 python +typeguard 4.3.0 python +typing-extensions 4.12.2 python (+1 duplicate) +tzdata 2025a-r0 apk +unixodbc 2.3.12-r0 apk +uritemplate 4.1.1 python +urllib3 2.3.0 python +utmps-libs 0.1.2.3-r2 apk +wheel 0.43.0 python +wheel 0.45.1 python +whois 5.5.23-r0 apk +xz-libs 5.6.3-r0 apk +zipp 3.19.2 python +zlib 1.3.1-r2 apk +zope-interface 7.2 python +zstd-libs 1.5.6-r2 apk diff --git a/readme-vars.yml b/readme-vars.yml index 22c5fef..7482dc0 100644 --- a/readme-vars.yml +++ b/readme-vars.yml @@ -44,7 +44,6 @@ opt_param_env_vars: opt_param_usage_include_ports: true opt_param_ports: - {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_message: | * `/tmp` must be mounted to tmpfs @@ -139,16 +138,6 @@ app_setup_block: | * 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. - ### 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 Please follow the instructions [on this blog post](https://www.linuxserver.io/blog/2020-08-21-introducing-swag#migrate). @@ -175,7 +164,6 @@ init_diagram: | init-outdated-config -> init-config-end init-config -> init-crontab-config init-mods-end -> init-custom-files - init-adduser -> init-device-perms base -> init-envfile init-swag-samples -> init-fail2ban-config init-os-end -> init-folders @@ -187,7 +175,6 @@ init_diagram: | init-samples -> init-nginx init-version-checks -> init-nginx-end init-adduser -> init-os-end - init-device-perms -> init-os-end init-envfile -> init-os-end init-renew -> init-outdated-config init-keygen -> init-permissions @@ -213,13 +200,11 @@ init_diagram: | svc-swag-auto-reload -> legacy-services } Base Images: { - "baseimage-alpine-nginx:3.22" <- "baseimage-alpine:3.22" + "baseimage-alpine-nginx:3.21" <- "baseimage-alpine:3.21" } "swag:latest" <- Base Images # changelog 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: "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)."} diff --git a/root/defaults/nginx/authelia-location.conf.sample b/root/defaults/nginx/authelia-location.conf.sample index f927a71..6487536 100644 --- a/root/defaults/nginx/authelia-location.conf.sample +++ b/root/defaults/nginx/authelia-location.conf.sample @@ -1,8 +1,13 @@ -## Version 2025/03/25 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/authelia-location.conf.sample +## Version 2024/03/14 - 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 # 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 +## 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; ## If the subreqest returns 200 pass to the backend, if the subrequest returns 401 redirect to the portal diff --git a/root/defaults/nginx/authelia-server.conf.sample b/root/defaults/nginx/authelia-server.conf.sample index d969a05..43147de 100644 --- a/root/defaults/nginx/authelia-server.conf.sample +++ b/root/defaults/nginx/authelia-server.conf.sample @@ -1,15 +1,44 @@ -## Version 2025/03/25 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/authelia-server.conf.sample +## Version 2024/03/16 - 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 # 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 auth requests +# location for authelia subfolder 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 { internal; include /config/nginx/proxy.conf; include /config/nginx/resolver.conf; set $upstream_authelia authelia; - proxy_pass http://$upstream_authelia:9091/api/authz/auth-request; + proxy_pass http://$upstream_authelia:9091; ## Include the Set-Cookie header if present auth_request_set $set_cookie $upstream_http_set_cookie; @@ -33,6 +62,11 @@ location @authelia_proxy_signin { ## Translate the Location response header from the auth subrequest into a variable 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 return 302 $signin_url; } diff --git a/root/defaults/nginx/authentik-server.conf.sample b/root/defaults/nginx/authentik-server.conf.sample index 7b08ff9..1016fbb 100644 --- a/root/defaults/nginx/authentik-server.conf.sample +++ b/root/defaults/nginx/authentik-server.conf.sample @@ -1,4 +1,4 @@ -## Version 2025/03/25 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/authentik-server.conf.sample +## Version 2023/04/27 - 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 # 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/resolver.conf; set $upstream_authentik authentik-server; - proxy_pass http://$upstream_authentik:9000/outpost.goauthentik.io/auth/nginx; + proxy_pass http://$upstream_authentik:9000; ## Include the Set-Cookie header if present auth_request_set $set_cookie $upstream_http_set_cookie; diff --git a/root/defaults/nginx/site-confs/default.conf.sample b/root/defaults/nginx/site-confs/default.conf.sample index e240496..8613f1e 100644 --- a/root/defaults/nginx/site-confs/default.conf.sample +++ b/root/defaults/nginx/site-confs/default.conf.sample @@ -1,4 +1,4 @@ -## Version 2025/07/18 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/site-confs/default.conf.sample +## Version 2024/12/17 - Changelog: https://github.com/linuxserver/docker-swag/commits/master/root/defaults/nginx/site-confs/default.conf.sample # redirect all traffic to https server { @@ -13,9 +13,7 @@ server { # main server block server { listen 443 ssl default_server; -# listen 443 quic reuseport default_server; listen [::]:443 ssl default_server; -# listen [::]:443 quic reuseport default_server; server_name _; diff --git a/root/defaults/nginx/tinyauth-location.conf.sample b/root/defaults/nginx/tinyauth-location.conf.sample deleted file mode 100644 index 3bdae98..0000000 --- a/root/defaults/nginx/tinyauth-location.conf.sample +++ /dev/null @@ -1,9 +0,0 @@ -## 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; diff --git a/root/defaults/nginx/tinyauth-server.conf.sample b/root/defaults/nginx/tinyauth-server.conf.sample deleted file mode 100644 index a4256c8..0000000 --- a/root/defaults/nginx/tinyauth-server.conf.sample +++ /dev/null @@ -1,35 +0,0 @@ -## 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; -} diff --git a/root/etc/s6-overlay/s6-rc.d/init-certbot-config/run b/root/etc/s6-overlay/s6-rc.d/init-certbot-config/run index b5e3a26..c81153b 100755 --- a/root/etc/s6-overlay/s6-rc.d/init-certbot-config/run +++ b/root/etc/s6-overlay/s6-rc.d/init-certbot-config/run @@ -59,9 +59,6 @@ grep -qF 'agree-tos' /config/etc/letsencrypt/cli.ini || echo 'agree-tos=true' >> # Check for broken dns credentials value in cli.ini and remove 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 cp -n /defaults/dns-conf/* /config/dns-conf/ 2> >(grep -v 'cp: not replacing') lsiown -R abc:abc /config/dns-conf diff --git a/root/etc/s6-overlay/s6-rc.d/init-swag-config/run b/root/etc/s6-overlay/s6-rc.d/init-swag-config/run index b28d279..5ba2b21 100755 --- a/root/etc/s6-overlay/s6-rc.d/init-swag-config/run +++ b/root/etc/s6-overlay/s6-rc.d/init-swag-config/run @@ -22,14 +22,6 @@ if [[ ! -f /config/nginx/authentik-server.conf ]]; then cp /defaults/nginx/authentik-server.conf.sample /config/nginx/authentik-server.conf 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 if [[ -f /config/nginx/ldap.conf ]] && [[ ! -f /config/nginx/ldap-server.conf ]]; then cp /config/nginx/ldap.conf /config/nginx/ldap-server.conf