Compare commits

..

55 Commits

Author SHA1 Message Date
LinuxServer-CI
99167880f4 Bot Updating Package Versions 2026-03-27 19:13:52 +00:00
LinuxServer-CI
194148f8bd Bot Updating Package Versions 2026-03-20 19:08:46 +00:00
LinuxServer-CI
9dfb57d19a Bot Updating Package Versions 2026-03-13 19:03:03 +00:00
LinuxServer-CI
3d23197670 Bot Updating Package Versions 2026-02-20 19:07:58 +00:00
LinuxServer-CI
39ae72645c Bot Updating Templated Files 2026-02-13 19:12:15 +00:00
LinuxServer-CI
531a251720 Bot Updating Templated Files 2026-02-13 19:10:06 +00:00
LinuxServer-CI
83c73029f6 Bot Updating Package Versions 2026-02-06 19:09:30 +00:00
LinuxServer-CI
d43ebded70 Bot Updating Package Versions 2026-01-30 19:03:30 +00:00
LinuxServer-CI
5d6fbcd004 Bot Updating Package Versions 2026-01-23 18:54:51 +00:00
LinuxServer-CI
0b9fc0396a Bot Updating Package Versions 2026-01-02 18:49:15 +00:00
LinuxServer-CI
24b8da221c Bot Updating Package Versions 2025-12-26 18:46:55 +00:00
LinuxServer-CI
bc944c0b75 Bot Updating Package Versions 2025-12-19 18:47:47 +00:00
LinuxServer-CI
efcb43e748 Bot Updating Package Versions 2025-12-12 18:49:06 +00:00
LinuxServer-CI
99020d7ba6 Bot Updating Package Versions 2025-11-28 18:44:03 +00:00
LinuxServer-CI
d18723b1c3 Bot Updating Package Versions 2025-11-21 18:46:07 +00:00
LinuxServer-CI
d2ea4012ff Bot Updating Templated Files 2025-11-21 18:41:33 +00:00
LinuxServer-CI
5975a7fc09 Bot Updating Package Versions 2025-11-14 18:45:38 +00:00
LinuxServer-CI
aaebd68d2b Bot Updating Package Versions 2025-10-24 18:43:30 +00:00
LinuxServer-CI
fede19fabe Bot Updating Templated Files 2025-10-24 18:40:36 +00:00
LinuxServer-CI
ec06dfbb1f Bot Updating Package Versions 2025-10-17 18:39:55 +00:00
LinuxServer-CI
27246bd4b0 Bot Updating Package Versions 2025-10-10 18:42:24 +00:00
LinuxServer-CI
90150e342a Bot Updating Package Versions 2025-10-03 18:41:05 +00:00
LinuxServer-CI
e4241eece8 Bot Updating Package Versions 2025-09-26 18:40:13 +00:00
LinuxServer-CI
41d4456605 Bot Updating Package Versions 2025-09-19 18:41:28 +00:00
LinuxServer-CI
5a10d8f3c0 Bot Updating Package Versions 2025-08-22 18:44:12 +00:00
LinuxServer-CI
dc4e1a3283 Bot Updating Package Versions 2025-08-15 18:47:35 +00:00
LinuxServer-CI
6a0e955c37 Bot Updating Package Versions 2025-08-08 18:48:00 +00:00
LinuxServer-CI
a57c4aacc8 Bot Updating Package Versions 2025-08-01 18:49:44 +00:00
LinuxServer-CI
ffdf07fb6c Bot Updating Package Versions 2025-07-25 18:48:45 +00:00
LinuxServer-CI
6b66c8ad06 Bot Updating Package Versions 2025-07-21 09:55:35 +00:00
LinuxServer-CI
bf48a950f4 Bot Updating Package Versions 2025-07-20 15:08:52 +00:00
LinuxServer-CI
33b32112ce Bot Updating Templated Files 2025-07-20 15:05:38 +00:00
LinuxServer-CI
bfe892c486 Bot Updating Templated Files 2025-07-20 15:03:47 +00:00
Adam
9e9e2d66e3 Merge pull request #159 from linuxserver/development-3.22 2025-07-20 16:01:50 +01:00
thespad
7ede2d01f9 Wording 2025-07-20 15:54:07 +01:00
LinuxServer-CI
ec8c19d4d0 Bot Updating Package Versions 2025-07-18 18:47:48 +00:00
thespad
8abdf117bb Rebase to 3.22 2025-07-17 16:23:54 +01:00
LinuxServer-CI
b8a13c24fd Bot Updating Package Versions 2025-07-13 16:58:31 +00:00
LinuxServer-CI
e1b7ff630a Bot Updating Package Versions 2025-07-11 15:52:53 +00:00
LinuxServer-CI
85b5c2b49c Bot Updating Package Versions 2025-07-10 18:58:05 +00:00
LinuxServer-CI
e98fb76b5e Bot Updating Templated Files 2025-07-04 18:45:29 +00:00
LinuxServer-CI
e14be89a3d Bot Updating Templated Files 2025-07-04 18:43:21 +00:00
LinuxServer-CI
ad5b8d1055 Bot Updating Templated Files 2025-06-13 18:44:13 +00:00
LinuxServer-CI
634e06c925 Bot Updating Package Versions 2025-05-23 18:45:00 +00:00
LinuxServer-CI
e94c72db59 Bot Updating Package Versions 2025-05-16 18:45:30 +00:00
LinuxServer-CI
dc94aaeb18 Bot Updating Templated Files 2025-05-16 18:42:30 +00:00
LinuxServer-CI
91094b3d8a Bot Updating Package Versions 2025-04-18 18:38:57 +00:00
LinuxServer-CI
3b56747736 Bot Updating Package Versions 2025-04-11 18:41:02 +00:00
LinuxServer-CI
9d0cd0cccb Bot Updating Package Versions 2025-04-04 18:39:41 +00:00
LinuxServer-CI
dba06dc313 Bot Updating Package Versions 2025-03-21 18:41:19 +00:00
LinuxServer-CI
f871f9cffb Bot Updating Package Versions 2025-03-14 18:38:52 +00:00
LinuxServer-CI
cc172f5532 Bot Updating Package Versions 2025-02-28 18:38:15 +00:00
LinuxServer-CI
f2ab9d7bd4 Bot Updating Package Versions 2025-02-21 18:36:57 +00:00
LinuxServer-CI
0f518fb2ff Bot Updating Package Versions 2025-02-14 18:40:21 +00:00
LinuxServer-CI
238962b372 Bot Updating Templated Files 2025-02-14 18:36:01 +00:00
20 changed files with 402 additions and 329 deletions

0
.editorconfig Executable file → Normal file
View File

0
.github/CONTRIBUTING.md vendored 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: '14 15 * * *' - cron: '14 15 * * *'
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
stale: stale:
permissions: permissions:

15
.github/workflows/external_trigger.yml vendored Executable file → Normal file
View File

@@ -3,6 +3,9 @@ name: External Trigger Main
on: on:
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
external-trigger-development: external-trigger-development:
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/heimdall" image="linuxserver/heimdall"
tag="development" tag="development"
@@ -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-heimdall/job/development/lastBuild/api/json | jq -r '.building') == "true" ]; then elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-heimdall/job/development/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 heimdall tag development. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}" TRIGGER_REASON="A version change was detected for heimdall tag development. 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 }}

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

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

6
.github/workflows/greetings.yml vendored Executable file → Normal file
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

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

@@ -5,6 +5,9 @@ on:
- cron: '14 18 * * 5' - cron: '14 18 * * 5'
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

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.20 FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.22
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -12,13 +12,13 @@ LABEL maintainer="aptalca"
RUN \ RUN \
echo "**** install runtime packages ****" && \ echo "**** install runtime packages ****" && \
apk add --no-cache \ apk add --no-cache \
php83-dom \ php84-dom \
php83-intl \ php84-intl \
php83-opcache \ php84-opcache \
php83-pdo_mysql \ php84-pdo_mysql \
php83-pdo_pgsql \ php84-pdo_pgsql \
php83-pdo_sqlite \ php84-pdo_sqlite \
php83-tokenizer && \ php84-tokenizer && \
echo "**** configure nginx ****" && \ echo "**** configure nginx ****" && \
echo 'fastcgi_param PHP_AUTH_USER $remote_user; # Heimdall user authorization' >> \ echo 'fastcgi_param PHP_AUTH_USER $remote_user; # Heimdall user authorization' >> \
/etc/nginx/fastcgi_params && \ /etc/nginx/fastcgi_params && \
@@ -26,7 +26,11 @@ RUN \
/etc/nginx/fastcgi_params && \ /etc/nginx/fastcgi_params && \
echo "**** configure php opcache ****" && \ echo "**** configure php opcache ****" && \
echo 'opcache.validate_timestamps=0' >> \ echo 'opcache.validate_timestamps=0' >> \
/etc/php83/conf.d/00_opcache.ini && \ /etc/php84/conf.d/00_opcache.ini && \
echo "**** configure php-fpm to pass env vars ****" && \
sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php84/php-fpm.d/www.conf && \
if ! grep -qxF 'clear_env = no' /etc/php84/php-fpm.d/www.conf; then echo 'clear_env = no' >> /etc/php84/php-fpm.d/www.conf; fi && \
echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php84/php-fpm.conf && \
echo "**** install heimdall ****" && \ echo "**** install heimdall ****" && \
mkdir -p \ mkdir -p \
/heimdall && \ /heimdall && \

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.20 FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.22
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -12,13 +12,13 @@ LABEL maintainer="aptalca"
RUN \ RUN \
echo "**** install runtime packages ****" && \ echo "**** install runtime packages ****" && \
apk add --no-cache \ apk add --no-cache \
php83-dom \ php84-dom \
php83-intl \ php84-intl \
php83-opcache \ php84-opcache \
php83-pdo_mysql \ php84-pdo_mysql \
php83-pdo_pgsql \ php84-pdo_pgsql \
php83-pdo_sqlite \ php84-pdo_sqlite \
php83-tokenizer && \ php84-tokenizer && \
echo "**** configure nginx ****" && \ echo "**** configure nginx ****" && \
echo 'fastcgi_param PHP_AUTH_USER $remote_user; # Heimdall user authorization' >> \ echo 'fastcgi_param PHP_AUTH_USER $remote_user; # Heimdall user authorization' >> \
/etc/nginx/fastcgi_params && \ /etc/nginx/fastcgi_params && \
@@ -26,7 +26,11 @@ RUN \
/etc/nginx/fastcgi_params && \ /etc/nginx/fastcgi_params && \
echo "**** configure php opcache ****" && \ echo "**** configure php opcache ****" && \
echo 'opcache.validate_timestamps=0' >> \ echo 'opcache.validate_timestamps=0' >> \
/etc/php83/conf.d/00_opcache.ini && \ /etc/php84/conf.d/00_opcache.ini && \
echo "**** configure php-fpm to pass env vars ****" && \
sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php84/php-fpm.d/www.conf && \
if ! grep -qxF 'clear_env = no' /etc/php84/php-fpm.d/www.conf; then echo 'clear_env = no' >> /etc/php84/php-fpm.d/www.conf; fi && \
echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php84/php-fpm.conf && \
echo "**** install heimdall ****" && \ echo "**** install heimdall ****" && \
mkdir -p \ mkdir -p \
/heimdall && \ /heimdall && \

117
Jenkinsfile vendored
View File

@@ -73,7 +73,9 @@ pipeline {
fi fi
done done
fi fi
docker system prune -f --volumes || : ''' docker system prune -f --volumes || :
docker image prune -af || :
'''
script{ script{
env.EXIT_STATUS = '' env.EXIT_STATUS = ''
env.LS_RELEASE = sh( env.LS_RELEASE = sh(
@@ -95,7 +97,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' 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'
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{
@@ -212,6 +218,7 @@ pipeline {
env.META_TAG = 'development-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.META_TAG = 'development-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.EXT_RELEASE_TAG = 'development-version-' + env.EXT_RELEASE_CLEAN env.EXT_RELEASE_TAG = 'development-version-' + env.EXT_RELEASE_CLEAN
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache' env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
env.CITEST_IMAGETAG = 'latest'
} }
} }
} }
@@ -237,6 +244,7 @@ pipeline {
env.EXT_RELEASE_TAG = 'development-version-' + env.EXT_RELEASE_CLEAN env.EXT_RELEASE_TAG = 'development-version-' + env.EXT_RELEASE_CLEAN
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/' env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache' env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
env.CITEST_IMAGETAG = 'develop'
} }
} }
} }
@@ -262,6 +270,7 @@ pipeline {
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/' env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache' env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
env.CITEST_IMAGETAG = 'develop'
} }
} }
} }
@@ -284,7 +293,7 @@ pipeline {
-v ${WORKSPACE}:/mnt \ -v ${WORKSPACE}:/mnt \
-e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \ -e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
-e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \ -e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
ghcr.io/linuxserver/baseimage-alpine:3.20 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\ ghcr.io/linuxserver/baseimage-alpine:3.23 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
apk add --no-cache python3 && \ apk add --no-cache python3 && \
python3 -m venv /lsiopy && \ python3 -m venv /lsiopy && \
pip install --no-cache-dir -U pip && \ pip install --no-cache-dir -U pip && \
@@ -619,13 +628,16 @@ pipeline {
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE" IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} & docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done done
for p in $(jobs -p); do for p in "${!pids[@]}"; do
wait "$p" || { echo "job $p failed" >&2; exit 1; } wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
done done
fi fi
''' '''
@@ -685,13 +697,16 @@ pipeline {
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE" IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} & docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done done
for p in $(jobs -p); do for p in "${!pids[@]}"; do
wait "$p" || { echo "job $p failed" >&2; exit 1; } wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
done done
fi fi
''' '''
@@ -745,12 +760,14 @@ pipeline {
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE" IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do for i in "${CACHE[@]}"; do
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} & docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done done
for p in $(jobs -p); do for p in "${!pids[@]}"; do
wait "$p" || { echo "job $p failed" >&2; exit 1; } wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
done done
fi fi
''' '''
@@ -761,7 +778,8 @@ pipeline {
if [[ -n "${containers}" ]]; then if [[ -n "${containers}" ]]; then
docker stop ${containers} docker stop ${containers}
fi fi
docker system prune -af --volumes || : docker system prune -f --volumes || :
docker image prune -af || :
''' '''
} }
} }
@@ -787,7 +805,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"
@@ -874,7 +892,7 @@ pipeline {
CI_DOCKERENV="LSIO_FIRST_PARTY=true" CI_DOCKERENV="LSIO_FIRST_PARTY=true"
fi fi
fi fi
docker pull ghcr.io/linuxserver/ci:latest docker pull ghcr.io/linuxserver/ci:${CITEST_IMAGETAG}
if [ "${MULTIARCH}" == "true" ]; then if [ "${MULTIARCH}" == "true" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64 docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
@@ -897,7 +915,10 @@ pipeline {
-e WEB_AUTH=\"${CI_AUTH}\" \ -e WEB_AUTH=\"${CI_AUTH}\" \
-e WEB_PATH=\"${CI_WEBPATH}\" \ -e WEB_PATH=\"${CI_WEBPATH}\" \
-e NODE_NAME=\"${NODE_NAME}\" \ -e NODE_NAME=\"${NODE_NAME}\" \
-t ghcr.io/linuxserver/ci:latest \ -e SYFT_IMAGE_TAG=\"${CI_SYFT_IMAGE_TAG:-${SYFT_IMAGE_TAG}}\" \
-e COMMIT_SHA=\"${COMMIT_SHA}\" \
-e BUILD_NUMBER=\"${BUILD_NUMBER}\" \
-t ghcr.io/linuxserver/ci:${CITEST_IMAGETAG} \
python3 test_build.py''' python3 test_build.py'''
} }
} }
@@ -923,9 +944,11 @@ pipeline {
CACHEIMAGE=${i} CACHEIMAGE=${i}
fi fi
done done
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:development -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:development -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
fi fi
done done
''' '''
@@ -950,20 +973,27 @@ pipeline {
CACHEIMAGE=${i} CACHEIMAGE=${i}
fi fi
done done
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-development -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-development -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-development -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-development -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
fi fi
done done
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
docker buildx imagetools create -t ${MANIFESTIMAGE}:development ${MANIFESTIMAGE}:amd64-development ${MANIFESTIMAGE}:arm64v8-development docker buildx imagetools create -t ${MANIFESTIMAGE}:development ${MANIFESTIMAGE}:amd64-development ${MANIFESTIMAGE}:arm64v8-development || \
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} || \
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} { if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
fi fi
done done
''' '''
@@ -981,23 +1011,41 @@ pipeline {
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
sh '''#! /bin/bash
echo "Auto-generating release notes"
if [ "$(git tag --points-at HEAD)" != "" ]; then
echo "Existing tag points to current commit, suggesting no new LS changes"
AUTO_RELEASE_NOTES="No changes"
else
AUTO_RELEASE_NOTES=$(curl -fsL -H "Authorization: token ${GITHUB_TOKEN}" -H "Accept: application/vnd.github+json" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases/generate-notes \
-d '{"tag_name":"'${META_TAG}'",\
"target_commitish": "development"}' \
| jq -r '.body' | sed 's|## What.s Changed||')
fi
echo "Pushing New tag for current commit ${META_TAG}" echo "Pushing New tag for current commit ${META_TAG}"
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \ curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${META_TAG}'",\ -d '{"tag":"'${META_TAG}'",\
"object": "'${COMMIT_SHA}'",\ "object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to development",\ "message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to development",\
"type": "commit",\ "type": "commit",\
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}' ''' "tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}'
echo "Pushing New release for Tag" echo "Pushing New release for Tag"
sh '''#! /bin/bash curl -H "Authorization: token ${GITHUB_TOKEN}" -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/commits/${EXT_RELEASE_CLEAN} | jq -r '.commit.message' > releasebody.json
curl -H "Authorization: token ${GITHUB_TOKEN}" -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/commits/${EXT_RELEASE_CLEAN} | jq '.commit.message' | sed 's:^.\\(.*\\).$:\\1:' > releasebody.json jq -n \
echo '{"tag_name":"'${META_TAG}'",\ --arg tag_name "$META_TAG" \
"target_commitish": "development",\ --arg target_commitish "development" \
"name": "'${META_TAG}'",\ --arg ci_url "${CI_URL:-N/A}" \
"body": "**CI Report:**\\n\\n'${CI_URL:-N/A}'\\n\\n**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start --arg ls_notes "$AUTO_RELEASE_NOTES" \
printf '","draft": false,"prerelease": true}' >> releasebody.json --arg remote_notes "$(cat releasebody.json)" \
paste -d'\\0' start releasebody.json > releasebody.json.done '{
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done''' "tag_name": $tag_name,
"target_commitish": $target_commitish,
"name": $tag_name,
"body": ("**CI Report:**\\n\\n" + $ci_url + "\\n\\n**LinuxServer Changes:**\\n\\n" + $ls_notes + "\\n\\n**Remote Changes:**\\n\\n" + $remote_notes),
"draft": false,
"prerelease": true }' > releasebody.json.done
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done
'''
} }
} }
// Add protection to the release branch // Add protection to the release branch
@@ -1187,6 +1235,7 @@ EOF
done done
fi fi
docker system prune -f --volumes || : docker system prune -f --volumes || :
docker image prune -af || :
''' '''
cleanWs() cleanWs()
} }

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
@@ -59,7 +57,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 | ❌ | |
## Version Tags ## Version Tags
@@ -83,7 +80,7 @@ This image now supports password protection through htpasswd. Run the following
To help you get started creating a container from this image you can either use docker-compose or the docker cli. To help you get started creating a container from this image you can either use docker-compose or the docker cli.
>[!NOTE] >[!NOTE]
>Unless a parameter is flaged as 'optional', it is *mandatory* and a value must be provided. >Unless a parameter is flagged as 'optional', it is *mandatory* and a value must be provided.
### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose)) ### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose))
@@ -97,6 +94,7 @@ services:
- PUID=1000 - PUID=1000
- PGID=1000 - PGID=1000
- TZ=Etc/UTC - TZ=Etc/UTC
- ALLOW_INTERNAL_REQUESTS=false #optional
volumes: volumes:
- /path/to/heimdall/config:/config - /path/to/heimdall/config:/config
ports: ports:
@@ -113,6 +111,7 @@ docker run -d \
-e PUID=1000 \ -e PUID=1000 \
-e PGID=1000 \ -e PGID=1000 \
-e TZ=Etc/UTC \ -e TZ=Etc/UTC \
-e ALLOW_INTERNAL_REQUESTS=false `#optional` \
-p 80:80 \ -p 80:80 \
-p 443:443 \ -p 443:443 \
-v /path/to/heimdall/config:/config \ -v /path/to/heimdall/config:/config \
@@ -131,6 +130,7 @@ Containers are configured using parameters passed at runtime (such as those abov
| `-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). |
| `-e ALLOW_INTERNAL_REQUESTS=false` | By default, Heimdall blocks lookup requests to private or reserved IP addresses, if your instance is not exposed to the internet, or is behind some level of authentication, you can set this to `true` to allow requests to private IP addresses. |
| `-v /config` | Persistent config files | | `-v /config` | Persistent config files |
## Environment variables from files (Docker secrets) ## Environment variables from files (Docker secrets)
@@ -295,6 +295,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions ## Versions
* **17.07.25:** - Rebase to Alpine 3.22, enable PHP environment passthrough.
* **27.06.24:** - Rebase to Alpine 3.20. Existing users should update their nginx confs to avoid http2 deprecation warnings. * **27.06.24:** - Rebase to Alpine 3.20. Existing users should update their nginx confs to avoid http2 deprecation warnings.
* **07.03.24:** - Enable the opcache and disable file revalidation. * **07.03.24:** - Enable the opcache and disable file revalidation.
* **06.03.24:** - Existing users should update: site-confs/default.conf - Cleanup default site conf. * **06.03.24:** - Existing users should update: site-confs/default.conf - Cleanup default site conf.

View File

@@ -1,252 +1,245 @@
NAME VERSION TYPE NAME VERSION TYPE
Hidden Input 1, 0, 0, 0 dotnet Hidden Input 1, 0, 0, 0 binary
alpine-baselayout 3.6.5-r0 apk acl-libs 2.3.2-r1 apk
alpine-baselayout-data 3.6.5-r0 apk alpine-baselayout 3.7.0-r0 apk
alpine-keys 2.4-r1 apk alpine-baselayout-data 3.7.0-r0 apk
alpine-release 3.20.5-r0 apk alpine-keys 2.5-r0 apk
apache2-utils 2.4.62-r0 apk alpine-release 3.22.3-r0 apk
apk-tools 2.14.4-r1 apk apache2-utils 2.4.66-r0 apk
apk-tools 2.14.9-r3 apk
apr 1.7.5-r0 apk apr 1.7.5-r0 apk
apr-util 1.6.3-r1 apk apr-util 1.6.3-r1 apk
argon2-libs 20190702-r5 apk argon2-libs 20190702-r5 apk
aws/aws-crt-php v1.2.4 php-composer aws/aws-crt-php v1.2.7 php-composer
aws/aws-sdk-php 3.299.1 php-composer aws/aws-sdk-php 3.349.3 php-composer
barryvdh/laravel-ide-helper v2.15.1 php-composer barryvdh/laravel-ide-helper v3.5.5 php-composer
barryvdh/reflection-docblock v2.1.1 php-composer barryvdh/reflection-docblock v2.3.1 php-composer
bash 5.2.26-r0 apk bash 5.2.37-r0 apk
brick/math 0.11.0 php-composer brick/math 0.12.3 php-composer
brotli-libs 1.1.0-r2 apk brotli-libs 1.1.0-r2 apk
busybox 1.36.1-r29 apk busybox 1.37.0-r20 apk
busybox-binsh 1.36.1-r29 apk busybox-binsh 1.37.0-r20 apk
c-ares 1.33.1-r0 apk c-ares 1.34.6-r0 apk
ca-certificates 20241121-r1 apk ca-certificates 20250911-r0 apk
ca-certificates-bundle 20241121-r1 apk ca-certificates-bundle 20250911-r0 apk
carbonphp/carbon-doctrine-types 2.1.0 php-composer carbonphp/carbon-doctrine-types 3.2.0 php-composer
catatonit 0.2.0-r0 apk catatonit 0.2.1-r0 apk
clue/stream-filter v1.7.0 php-composer clue/stream-filter v1.7.0 php-composer
composer 2.8.5 binary composer 2.9.5 binary
composer/class-map-generator 1.1.0 php-composer composer/class-map-generator 1.6.1 php-composer
composer/pcre 3.1.1 php-composer composer/pcre 3.3.2 php-composer
coreutils 9.5-r2 apk coreutils 9.7-r1 apk
coreutils-env 9.5-r2 apk coreutils-env 9.7-r1 apk
coreutils-fmt 9.5-r2 apk coreutils-fmt 9.7-r1 apk
coreutils-sha512sum 9.5-r2 apk coreutils-sha512sum 9.7-r1 apk
curl 8.11.1-r0 apk curl 8.14.1-r2 apk
dflydev/dot-access-data v3.0.2 php-composer dflydev/dot-access-data v3.0.3 php-composer
doctrine/cache 2.2.0 php-composer doctrine/inflector 2.0.10 php-composer
doctrine/dbal 3.8.2 php-composer
doctrine/deprecations 1.1.3 php-composer
doctrine/event-manager 2.0.0 php-composer
doctrine/inflector 2.0.9 php-composer
doctrine/instantiator 2.0.0 php-composer
doctrine/lexer 3.0.1 php-composer doctrine/lexer 3.0.1 php-composer
dragonmantank/cron-expression v3.3.3 php-composer dragonmantank/cron-expression v3.4.0 php-composer
egulias/email-validator 4.0.2 php-composer egulias/email-validator 4.0.4 php-composer
fakerphp/faker v1.23.1 php-composer enshrined/svg-sanitize 0.21.0 php-composer
filp/whoops 2.15.4 php-composer fakerphp/faker v1.24.1 php-composer
findutils 4.9.0-r5 apk filp/whoops 2.18.3 php-composer
findutils 4.10.0-r0 apk
fruitcake/php-cors v1.3.0 php-composer fruitcake/php-cors v1.3.0 php-composer
git 2.45.3-r0 apk git 2.49.1-r0 apk
git-init-template 2.45.3-r0 apk git-init-template 2.49.1-r0 apk
gmp 6.3.0-r1 apk graham-campbell/bounded-cache v3.0.0 php-composer
graham-campbell/bounded-cache v2.2.0 php-composer graham-campbell/github v12.8.0 php-composer
graham-campbell/github v12.4.0 php-composer graham-campbell/manager v5.2.0 php-composer
graham-campbell/manager v5.1.0 php-composer graham-campbell/result-type v1.1.3 php-composer
graham-campbell/result-type v1.1.2 php-composer guzzlehttp/guzzle 7.9.3 php-composer
guzzlehttp/guzzle 7.8.1 php-composer guzzlehttp/promises 2.2.0 php-composer
guzzlehttp/promises 2.0.2 php-composer guzzlehttp/psr7 2.7.1 php-composer
guzzlehttp/psr7 2.6.2 php-composer guzzlehttp/uri-template v1.0.4 php-composer
guzzlehttp/uri-template v1.0.3 php-composer hamcrest/hamcrest-php v2.1.1 php-composer
hamcrest/hamcrest-php v2.0.1 php-composer icu-data-en 76.1-r1 apk
icu-data-en 74.2-r0 apk icu-libs 76.1-r1 apk
icu-libs 74.2-r0 apk jq 1.8.1-r0 apk
jq 1.7.1-r0 apk knplabs/github-api v3.16.0 php-composer
knplabs/github-api v3.13.0 php-composer laravel/framework v11.45.1 php-composer
laravel/framework v10.44.0 php-composer laravel/prompts v0.3.6 php-composer
laravel/prompts v0.1.15 php-composer laravel/serializable-closure v2.0.4 php-composer
laravel/serializable-closure v1.3.3 php-composer laravel/tinker v2.10.1 php-composer
laravel/tinker v2.9.0 php-composer laravel/ui v4.6.1 php-composer
laravel/ui v4.4.0 php-composer lcobucci/jwt 5.5.0 php-composer
laravelcollective/html v6.4.1 php-composer league/commonmark 2.7.0 php-composer
lcobucci/jwt 5.2.0 php-composer
league/commonmark 2.4.2 php-composer
league/config v1.2.0 php-composer league/config v1.2.0 php-composer
league/flysystem 3.24.0 php-composer league/flysystem 3.30.0 php-composer
league/flysystem-aws-s3-v3 3.24.0 php-composer league/flysystem-aws-s3-v3 3.29.0 php-composer
league/flysystem-local 3.23.1 php-composer league/flysystem-local 3.30.0 php-composer
league/mime-type-detection 1.15.0 php-composer league/mime-type-detection 1.16.0 php-composer
libacl 2.3.2-r0 apk league/uri 7.5.1 php-composer
libattr 2.5.2-r0 apk league/uri-interfaces 7.5.0 php-composer
libapk2 2.14.9-r3 apk
libattr 2.5.2-r2 apk
libbsd 0.12.2-r0 apk libbsd 0.12.2-r0 apk
libbz2 1.0.8-r6 apk libbz2 1.0.8-r6 apk
libcrypto3 3.3.2-r1 apk libcrypto3 3.5.5-r0 apk
libcurl 8.11.1-r0 apk libcurl 8.14.1-r2 apk
libedit 20240517.3.1-r0 apk libedit 20250104.3.1-r1 apk
libexpat 2.6.4-r0 apk libexpat 2.7.5-r0 apk
libgcc 13.2.1_git20240309-r0 apk libgcc 14.2.0-r6 apk
libidn2 2.3.7-r0 apk libidn2 2.3.7-r0 apk
libintl 0.22.5-r0 apk libintl 0.24.1-r0 apk
libmd 1.1.0-r0 apk libmd 1.1.0-r0 apk
libncursesw 6.4_p20240420-r2 apk libncursesw 6.5_p20250503-r0 apk
libpq 16.6-r0 apk libpq 17.9-r0 apk
libproc2 4.0.4-r0 apk libproc2 4.0.4-r3 apk
libpsl 0.21.5-r1 apk libpsl 0.21.5-r3 apk
libssl3 3.3.2-r1 apk libssl3 3.5.5-r0 apk
libstdc++ 13.2.1_git20240309-r0 apk libstdc++ 14.2.0-r6 apk
libunistring 1.2-r0 apk libunistring 1.3-r0 apk
libuuid 2.40.1-r1 apk libuuid 2.41-r9 apk
libxml2 2.12.7-r0 apk libxml2 2.13.9-r0 apk
libzip 1.10.1-r0 apk libzip 1.11.4-r0 apk
linux-pam 1.6.0-r0 apk linux-pam 1.7.0-r4 apk
logrotate 3.21.0-r1 apk logrotate 3.21.0-r1 apk
mockery/mockery 1.6.7 php-composer mockery/mockery 1.6.12 php-composer
monolog/monolog 3.5.0 php-composer monolog/monolog 3.9.0 php-composer
mtdowling/jmespath.php 2.7.0 php-composer mtdowling/jmespath.php 2.8.0 php-composer
musl 1.2.5-r0 apk musl 1.2.5-r10 apk
musl-utils 1.2.5-r0 apk musl-utils 1.2.5-r10 apk
myclabs/deep-copy 1.11.1 php-composer myclabs/deep-copy 1.13.3 php-composer
nano 8.0-r0 apk nano 8.4-r0 apk
ncurses-terminfo-base 6.4_p20240420-r2 apk ncurses-terminfo-base 6.5_p20250503-r0 apk
nesbot/carbon 2.72.3 php-composer nesbot/carbon 3.10.1 php-composer
netcat-openbsd 1.226-r0 apk netcat-openbsd 1.229.1-r0 apk
nette/schema v1.3.0 php-composer nette/schema v1.3.2 php-composer
nette/utils v4.0.4 php-composer nette/utils v4.0.7 php-composer
nghttp2-libs 1.62.1-r0 apk nghttp2-libs 1.65.0-r0 apk
nginx 1.26.2-r0 apk nginx 1.28.3-r0 apk
nikic/php-parser v5.0.0 php-composer nikic/php-parser v5.5.0 php-composer
nunomaduro/collision v6.4.0 php-composer nunomaduro/collision v8.5.0 php-composer
nunomaduro/termwind v1.15.1 php-composer nunomaduro/termwind v2.3.1 php-composer
oniguruma 6.9.9-r0 apk oniguruma 6.9.10-r0 apk
openssl 3.3.2-r1 apk openssl 3.5.5-r0 apk
pcre 8.45-r3 apk pcre2 10.46-r0 apk
pcre2 10.43-r0 apk phar-io/manifest 2.0.4 php-composer
phar-io/manifest 2.0.3 php-composer
phar-io/version 3.2.1 php-composer phar-io/version 3.2.1 php-composer
php-http/cache-plugin 1.8.1 php-composer php-http/cache-plugin 2.0.1 php-composer
php-http/client-common 2.7.1 php-composer php-http/client-common 2.7.2 php-composer
php-http/discovery 1.19.2 php-composer php-http/discovery 1.20.0 php-composer
php-http/httplug 2.4.0 php-composer php-http/httplug 2.4.1 php-composer
php-http/message 1.16.0 php-composer php-http/message 1.16.2 php-composer
php-http/message-factory 1.1.0 php-composer php-http/multipart-stream-builder 1.4.2 php-composer
php-http/multipart-stream-builder 1.3.0 php-composer php-http/promise 1.3.1 php-composer
php-http/promise 1.3.0 php-composer php84 8.4.16-r0 apk
php83 8.3.15-r0 apk php84-common 8.4.16-r0 apk
php83-common 8.3.15-r0 apk php84-ctype 8.4.16-r0 apk
php83-ctype 8.3.15-r0 apk php84-curl 8.4.16-r0 apk
php83-curl 8.3.15-r0 apk php84-dom 8.4.16-r0 apk
php83-dom 8.3.15-r0 apk php84-fileinfo 8.4.16-r0 apk
php83-fileinfo 8.3.15-r0 apk php84-fpm 8.4.16-r0 apk
php83-fpm 8.3.15-r0 apk php84-iconv 8.4.16-r0 apk
php83-iconv 8.3.15-r0 apk php84-intl 8.4.16-r0 apk
php83-intl 8.3.15-r0 apk php84-mbstring 8.4.16-r0 apk
php83-mbstring 8.3.15-r0 apk php84-mysqlnd 8.4.16-r0 apk
php83-mysqlnd 8.3.15-r0 apk php84-opcache 8.4.16-r0 apk
php83-opcache 8.3.15-r0 apk php84-openssl 8.4.16-r0 apk
php83-openssl 8.3.15-r0 apk php84-pdo 8.4.16-r0 apk
php83-pdo 8.3.15-r0 apk php84-pdo_mysql 8.4.16-r0 apk
php83-pdo_mysql 8.3.15-r0 apk php84-pdo_pgsql 8.4.16-r0 apk
php83-pdo_pgsql 8.3.15-r0 apk php84-pdo_sqlite 8.4.16-r0 apk
php83-pdo_sqlite 8.3.15-r0 apk php84-phar 8.4.16-r0 apk
php83-phar 8.3.15-r0 apk php84-session 8.4.16-r0 apk
php83-session 8.3.15-r0 apk php84-simplexml 8.4.16-r0 apk
php83-simplexml 8.3.15-r0 apk php84-tokenizer 8.4.16-r0 apk
php83-tokenizer 8.3.15-r0 apk php84-xml 8.4.16-r0 apk
php83-xml 8.3.15-r0 apk php84-xmlwriter 8.4.16-r0 apk
php83-xmlwriter 8.3.15-r0 apk php84-zip 8.4.16-r0 apk
php83-zip 8.3.15-r0 apk phpoption/phpoption 1.9.3 php-composer
phpdocumentor/reflection-common 2.2.0 php-composer phpunit/php-code-coverage 10.1.16 php-composer
phpdocumentor/type-resolver 1.8.0 php-composer phpunit/php-file-iterator 4.1.0 php-composer
phpoption/phpoption 1.9.2 php-composer phpunit/php-invoker 4.0.0 php-composer
phpstan/phpdoc-parser 1.25.0 php-composer phpunit/php-text-template 3.0.1 php-composer
phpunit/php-code-coverage 9.2.30 php-composer phpunit/php-timer 6.0.0 php-composer
phpunit/php-file-iterator 3.0.6 php-composer phpunit/phpunit 10.5.47 php-composer
phpunit/php-invoker 3.1.1 php-composer popt 1.19-r4 apk
phpunit/php-text-template 2.0.4 php-composer procps-ng 4.0.4-r3 apk
phpunit/php-timer 5.0.3 php-composer
phpunit/phpunit 9.6.16 php-composer
popt 1.19-r3 apk
procps-ng 4.0.4-r0 apk
psr/cache 3.0.0 php-composer psr/cache 3.0.0 php-composer
psr/clock 1.0.0 php-composer psr/clock 1.0.0 php-composer
psr/container 2.0.2 php-composer psr/container 2.0.2 php-composer
psr/event-dispatcher 1.0.0 php-composer psr/event-dispatcher 1.0.0 php-composer
psr/http-client 1.0.3 php-composer psr/http-client 1.0.3 php-composer
psr/http-factory 1.0.2 php-composer psr/http-factory 1.1.0 php-composer
psr/http-message 2.0 php-composer psr/http-message 2.0 php-composer
psr/log 3.0.0 php-composer psr/log 3.0.2 php-composer
psr/simple-cache 3.0.0 php-composer psr/simple-cache 3.0.0 php-composer
psy/psysh v0.12.0 php-composer psy/psysh v0.12.9 php-composer
ralouphie/getallheaders 3.0.3 php-composer ralouphie/getallheaders 3.0.3 php-composer
ramsey/collection 2.0.0 php-composer ramsey/collection 2.1.1 php-composer
ramsey/uuid 4.7.5 php-composer ramsey/uuid 4.9.0 php-composer
readline 8.2.10-r0 apk readline 8.2.13-r1 apk
scanelf 1.3.7-r2 apk scanelf 1.3.8-r1 apk
sebastian/cli-parser 1.0.1 php-composer sebastian/cli-parser 2.0.1 php-composer
sebastian/code-unit 1.0.8 php-composer sebastian/code-unit 2.0.0 php-composer
sebastian/code-unit-reverse-lookup 2.0.3 php-composer sebastian/code-unit-reverse-lookup 3.0.0 php-composer
sebastian/comparator 4.0.8 php-composer sebastian/comparator 5.0.3 php-composer
sebastian/complexity 2.0.3 php-composer sebastian/complexity 3.2.0 php-composer
sebastian/diff 4.0.5 php-composer sebastian/diff 5.1.1 php-composer
sebastian/environment 5.1.5 php-composer sebastian/environment 6.1.0 php-composer
sebastian/exporter 4.0.5 php-composer sebastian/exporter 5.1.2 php-composer
sebastian/global-state 5.0.6 php-composer sebastian/global-state 6.0.2 php-composer
sebastian/lines-of-code 1.0.4 php-composer sebastian/lines-of-code 2.0.2 php-composer
sebastian/object-enumerator 4.0.4 php-composer sebastian/object-enumerator 5.0.0 php-composer
sebastian/object-reflector 2.0.4 php-composer sebastian/object-reflector 3.0.0 php-composer
sebastian/recursion-context 4.0.5 php-composer sebastian/recursion-context 5.0.0 php-composer
sebastian/resource-operations 3.0.3 php-composer sebastian/type 4.0.0 php-composer
sebastian/type 3.2.1 php-composer sebastian/version 4.0.1 php-composer
sebastian/version 3.0.2 php-composer shadow 4.17.3-r0 apk
shadow 4.15.1-r0 apk skalibs-libs 2.14.4.0-r0 apk
skalibs 2.14.1.1-r0 apk spatie/backtrace 1.7.4 php-composer
spatie/backtrace 1.5.3 php-composer spatie/error-solutions 1.1.3 php-composer
spatie/flare-client-php 1.4.4 php-composer spatie/flare-client-php 1.10.1 php-composer
spatie/ignition 1.12.0 php-composer spatie/ignition 1.15.1 php-composer
spatie/laravel-ignition 2.4.2 php-composer spatie/laravel-html 3.12.0 php-composer
sqlite-libs 3.45.3-r1 apk spatie/laravel-ignition 2.9.1 php-composer
squizlabs/php_codesniffer 3.9.0 php-composer sqlite-libs 3.49.2-r1 apk
ssl_client 1.36.1-r29 apk squizlabs/php_codesniffer 3.13.2 php-composer
symfony/cache v6.4.3 php-composer ssl_client 1.37.0-r20 apk
symfony/cache-contracts v3.4.0 php-composer symfony/cache v7.3.1 php-composer
symfony/console v6.4.3 php-composer symfony/cache-contracts v3.6.0 php-composer
symfony/css-selector v7.0.3 php-composer symfony/clock v7.3.0 php-composer
symfony/deprecation-contracts v3.4.0 php-composer symfony/console v7.3.1 php-composer
symfony/error-handler v6.4.3 php-composer symfony/css-selector v7.3.0 php-composer
symfony/event-dispatcher v7.0.3 php-composer symfony/deprecation-contracts v3.6.0 php-composer
symfony/event-dispatcher-contracts v3.4.0 php-composer symfony/error-handler v7.3.1 php-composer
symfony/finder v6.4.0 php-composer symfony/event-dispatcher v7.3.0 php-composer
symfony/http-foundation v6.4.3 php-composer symfony/event-dispatcher-contracts v3.6.0 php-composer
symfony/http-kernel v6.4.3 php-composer symfony/finder v7.3.0 php-composer
symfony/mailer v6.4.3 php-composer symfony/http-foundation v7.3.1 php-composer
symfony/mime v6.4.3 php-composer symfony/http-kernel v7.3.1 php-composer
symfony/options-resolver v7.0.0 php-composer symfony/mailer v7.3.1 php-composer
symfony/polyfill-ctype v1.29.0 php-composer symfony/mime v7.3.0 php-composer
symfony/polyfill-intl-grapheme v1.29.0 php-composer symfony/options-resolver v7.3.0 php-composer
symfony/polyfill-intl-idn v1.29.0 php-composer symfony/polyfill-ctype v1.32.0 php-composer
symfony/polyfill-intl-normalizer v1.29.0 php-composer symfony/polyfill-intl-grapheme v1.32.0 php-composer
symfony/polyfill-mbstring v1.29.0 php-composer symfony/polyfill-intl-idn v1.32.0 php-composer
symfony/polyfill-php72 v1.29.0 php-composer symfony/polyfill-intl-normalizer v1.32.0 php-composer
symfony/polyfill-php80 v1.29.0 php-composer symfony/polyfill-mbstring v1.32.0 php-composer
symfony/polyfill-php83 v1.29.0 php-composer symfony/polyfill-php80 v1.32.0 php-composer
symfony/polyfill-uuid v1.29.0 php-composer symfony/polyfill-php83 v1.32.0 php-composer
symfony/process v6.4.3 php-composer symfony/polyfill-uuid v1.32.0 php-composer
symfony/routing v6.4.3 php-composer symfony/process v7.3.0 php-composer
symfony/service-contracts v3.4.1 php-composer symfony/routing v7.3.0 php-composer
symfony/string v7.0.3 php-composer symfony/service-contracts v3.6.0 php-composer
symfony/thanks v1.2.10 php-composer symfony/string v7.3.0 php-composer
symfony/translation v6.4.3 php-composer symfony/thanks v1.4.0 php-composer
symfony/translation-contracts v3.4.1 php-composer symfony/translation v7.3.1 php-composer
symfony/uid v6.4.3 php-composer symfony/translation-contracts v3.6.0 php-composer
symfony/var-dumper v6.4.3 php-composer symfony/uid v7.3.1 php-composer
symfony/var-exporter v7.0.3 php-composer symfony/var-dumper v7.3.1 php-composer
symfony/yaml v6.4.3 php-composer symfony/var-exporter v7.3.0 php-composer
theseer/tokenizer 1.2.2 php-composer symfony/yaml v7.3.1 php-composer
tijsverkoyen/css-to-inline-styles v2.2.7 php-composer theseer/tokenizer 1.2.3 php-composer
tzdata 2024b-r0 apk tijsverkoyen/css-to-inline-styles v2.3.0 php-composer
utmps-libs 0.1.2.2-r1 apk tzdata 2026a-r0 apk
vlucas/phpdotenv v5.6.0 php-composer utmps-libs 0.1.3.1-r0 apk
voku/portable-ascii 2.0.1 php-composer vlucas/phpdotenv v5.6.2 php-composer
voku/portable-ascii 2.0.3 php-composer
webmozart/assert 1.11.0 php-composer webmozart/assert 1.11.0 php-composer
xz-libs 5.6.2-r0 apk xz-libs 5.8.1-r0 apk
zlib 1.3.1-r1 apk zlib 1.3.1-r2 apk
zstd-libs 1.5.6-r0 apk zstd-libs 1.5.7-r0 apk

View File

@@ -30,6 +30,9 @@ param_usage_include_ports: true
param_ports: param_ports:
- {external_port: "80", internal_port: "80", port_desc: "http gui"} - {external_port: "80", internal_port: "80", port_desc: "http gui"}
- {external_port: "443", internal_port: "443", port_desc: "https gui"} - {external_port: "443", internal_port: "443", port_desc: "https gui"}
opt_param_usage_include_env: true
opt_param_env_vars:
- {env_var: "ALLOW_INTERNAL_REQUESTS", env_value: "false", desc: "By default, Heimdall blocks lookup requests to private or reserved IP addresses, if your instance is not exposed to the internet, or is behind some level of authentication, you can set this to `true` to allow requests to private IP addresses."}
# application setup block # application setup block
app_setup_block_enabled: true app_setup_block_enabled: true
app_setup_block: | app_setup_block: |
@@ -56,32 +59,29 @@ init_diagram: |
init-nginx-end -> init-config init-nginx-end -> init-config
init-os-end -> init-config init-os-end -> init-config
init-config -> init-config-end init-config -> init-config-end
init-crontab-config -> init-config-end
init-heimdall-config -> init-config-end init-heimdall-config -> init-config-end
init-os-end -> 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-os-end -> init-folders init-os-end -> init-folders
init-nginx-end -> init-heimdall-config init-nginx-end -> init-heimdall-config
init-php -> init-keygen init-php -> init-keygen
base -> init-migrations base -> init-migrations
base -> init-mods
init-config-end -> init-mods init-config-end -> init-mods
init-version-checks -> init-mods
init-mods -> init-mods-end
init-mods-package-install -> init-mods-end init-mods-package-install -> init-mods-end
init-mods -> init-mods-package-install init-mods -> init-mods-package-install
init-samples -> init-nginx init-samples -> init-nginx
init-permissions -> init-nginx-end init-version-checks -> init-nginx-end
base -> init-os-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-migrations -> init-os-end
init-keygen -> init-permissions init-keygen -> init-permissions
init-nginx -> init-php init-nginx -> init-php
init-folders -> init-samples init-folders -> init-samples
init-custom-files -> init-services init-custom-files -> init-services
init-mods-end -> init-services init-permissions -> init-version-checks
init-config-end -> init-version-checks
init-services -> svc-cron init-services -> svc-cron
svc-cron -> legacy-services svc-cron -> legacy-services
init-services -> svc-nginx init-services -> svc-nginx
@@ -92,11 +92,12 @@ init_diagram: |
svc-queue -> legacy-services svc-queue -> legacy-services
} }
Base Images: { Base Images: {
"baseimage-alpine-nginx:3.20" <- "baseimage-alpine:3.20" "baseimage-alpine-nginx:3.22" <- "baseimage-alpine:3.22"
} }
"heimdall:development" <- Base Images "heimdall:development" <- Base Images
# changelog # changelog
changelogs: changelogs:
- {date: "17.07.25:", desc: "Rebase to Alpine 3.22, enable PHP environment passthrough."}
- {date: "27.06.24:", desc: "Rebase to Alpine 3.20. Existing users should update their nginx confs to avoid http2 deprecation warnings."} - {date: "27.06.24:", desc: "Rebase to Alpine 3.20. Existing users should update their nginx confs to avoid http2 deprecation warnings."}
- {date: "07.03.24:", desc: "Enable the opcache and disable file revalidation."} - {date: "07.03.24:", desc: "Enable the opcache and disable file revalidation."}
- {date: "06.03.24:", desc: "Existing users should update: site-confs/default.conf - Cleanup default site conf."} - {date: "06.03.24:", desc: "Existing users should update: site-confs/default.conf - Cleanup default site conf."}