Compare commits

...

134 Commits

Author SHA1 Message Date
LinuxServer-CI
dfabf2eede Bot Updating Package Versions 2025-01-17 18:37:47 +00:00
LinuxServer-CI
9c28a7f738 Bot Updating Package Versions 2025-01-10 18:37:25 +00:00
LinuxServer-CI
04488583cd Bot Updating Package Versions 2024-12-27 18:36:45 +00:00
LinuxServer-CI
2c05453937 Bot Updating Package Versions 2024-12-20 18:41:55 +00:00
LinuxServer-CI
1cc3130021 Bot Updating Templated Files 2024-12-20 18:38:56 +00:00
LinuxServer-CI
29b552ead4 Bot Updating Templated Files 2024-12-20 18:36:10 +00:00
LinuxServer-CI
ce8dfe9941 Bot Updating Package Versions 2024-12-13 18:43:27 +00:00
LinuxServer-CI
f0936015bc Bot Updating Templated Files 2024-12-06 18:45:32 +00:00
LinuxServer-CI
4861eda2d3 Bot Updating Templated Files 2024-12-06 18:42:29 +00:00
LinuxServer-CI
a509328395 Bot Updating Templated Files 2024-12-06 18:40:20 +00:00
LinuxServer-CI
da90a88ddb Bot Updating Package Versions 2024-11-29 18:38:07 +00:00
LinuxServer-CI
f380906965 Bot Updating Package Versions 2024-11-22 18:38:28 +00:00
LinuxServer-CI
bf8cad83a2 Bot Updating Templated Files 2024-11-15 18:39:05 +00:00
LinuxServer-CI
a8bf32ca02 Bot Updating Templated Files 2024-11-15 18:37:34 +00:00
LinuxServer-CI
ce6b1284df Bot Updating Package Versions 2024-11-01 18:36:41 +00:00
LinuxServer-CI
dd3a2c1436 Bot Updating Package Versions 2024-10-25 18:37:08 +00:00
LinuxServer-CI
8dfbfd407b Bot Updating Templated Files 2024-10-04 18:36:08 +00:00
LinuxServer-CI
97b362c53b Bot Updating Package Versions 2024-09-27 18:42:33 +00:00
LinuxServer-CI
dc819e40e2 Bot Updating Templated Files 2024-09-27 18:40:04 +00:00
LinuxServer-CI
481b5eeacb Bot Updating Templated Files 2024-09-27 18:38:32 +00:00
LinuxServer-CI
43096092e1 Bot Updating Templated Files 2024-09-27 18:36:54 +00:00
LinuxServer-CI
3c1ed055ad Bot Updating Package Versions 2024-09-20 18:36:24 +00:00
LinuxServer-CI
d2133e3a45 Bot Updating Package Versions 2024-09-13 18:38:51 +00:00
LinuxServer-CI
1ff5ea8b10 Bot Updating Package Versions 2024-09-06 18:36:25 +00:00
LinuxServer-CI
5c49302a39 Bot Updating Package Versions 2024-08-23 18:37:44 +00:00
LinuxServer-CI
e413bfa5c0 Bot Updating Templated Files 2024-08-23 18:35:24 +00:00
LinuxServer-CI
8c3587b7c3 Bot Updating Templated Files 2024-08-23 18:33:21 +00:00
LinuxServer-CI
91d6a63bcf Bot Updating Package Versions 2024-08-16 18:34:21 +00:00
LinuxServer-CI
23752f9ba4 Bot Updating Package Versions 2024-08-09 18:36:03 +00:00
LinuxServer-CI
19c606439d Bot Updating Package Versions 2024-08-02 18:33:43 +00:00
LinuxServer-CI
421a86103b Bot Updating Package Versions 2024-07-26 18:32:25 +00:00
Eric Nemchik
740c467147 Merge pull request #154 from linuxserver/delete-default-conf-development
Delete root/defaults/nginx/site-confs/default.conf.sample [development]
2024-07-19 16:35:09 -05:00
LinuxServer-CI
767cc6637f Bot Updating Package Versions 2024-07-19 18:34:10 +00:00
Eric Nemchik
2835692143 Delete root/defaults/nginx/site-confs/default.conf.sample [development]
redundant to base
2024-07-16 20:48:40 -05:00
LinuxServer-CI
b9c10d0c3f Bot Updating Package Versions 2024-07-12 18:39:12 +00:00
LinuxServer-CI
3367ea93f0 Bot Updating Templated Files 2024-07-12 18:36:15 +00:00
LinuxServer-CI
ae633adcd2 Bot Updating Templated Files 2024-07-12 18:34:52 +00:00
LinuxServer-CI
aff35b0195 Bot Updating Package Versions 2024-07-05 18:32:36 +00:00
LinuxServer-CI
fd57557021 Bot Updating Package Versions 2024-06-28 09:07:21 +00:00
Roxedus
8e6a2394a6 Merge pull request #151 from linuxserver/development-3.20 2024-06-28 11:04:18 +02:00
thespad
ab650ac006 Add missing shellcheck format 2024-06-27 16:30:37 +01:00
thespad
3f23522949 Rebase to 3.20 2024-06-27 16:29:44 +01:00
LinuxServer-CI
ed36cb689e Bot Updating Package Versions 2024-06-21 18:32:44 +00:00
LinuxServer-CI
645959d5a1 Bot Updating Package Versions 2024-06-14 18:34:10 +00:00
LinuxServer-CI
523d744f8a Bot Updating Package Versions 2024-05-24 18:36:26 +00:00
LinuxServer-CI
49ec00127e Bot Updating Templated Files 2024-05-24 18:33:50 +00:00
LinuxServer-CI
b8e058679e Bot Updating Templated Files 2024-05-24 18:31:31 +00:00
LinuxServer-CI
6ebaf00cb6 Bot Updating Package Versions 2024-05-17 18:32:38 +00:00
LinuxServer-CI
9f0cb3aa38 Bot Updating Package Versions 2024-05-10 18:32:33 +00:00
LinuxServer-CI
e10521f93e Bot Updating Templated Files 2024-05-10 18:30:01 +00:00
LinuxServer-CI
b25194e490 Bot Updating Package Versions 2024-05-03 18:35:31 +00:00
LinuxServer-CI
475c877c76 Bot Updating Templated Files 2024-05-03 18:32:54 +00:00
LinuxServer-CI
45367a03b6 Bot Updating Package Versions 2024-04-26 18:29:53 +00:00
LinuxServer-CI
2f3d7bdd94 Bot Updating Package Versions 2024-04-19 18:28:58 +00:00
LinuxServer-CI
7166a2b229 Bot Updating Package Versions 2024-04-12 18:29:01 +00:00
LinuxServer-CI
4ee9ea84b9 Bot Updating Package Versions 2024-04-05 18:29:23 +00:00
LinuxServer-CI
4d728e90a3 Bot Updating Package Versions 2024-03-29 18:28:46 +00:00
LinuxServer-CI
ed8c89fc22 Bot Updating Package Versions 2024-03-22 18:28:42 +00:00
LinuxServer-CI
b2078bfbf6 Bot Updating Package Versions 2024-03-15 18:33:43 +00:00
LinuxServer-CI
fff281c5b8 Bot Updating Templated Files 2024-03-15 18:30:38 +00:00
LinuxServer-CI
9aa3cce066 Bot Updating Package Versions 2024-03-08 13:37:16 +00:00
LinuxServer-CI
09b457bbd4 Bot Updating Templated Files 2024-03-08 13:34:17 +00:00
aptalca
13955c751d Merge pull request #150 from linuxserver/development-parity
Add opcache and clean up default site conf
2024-03-08 08:32:38 -05:00
aptalca
723df80461 Add opcache and clean up default site conf 2024-03-07 09:17:32 -05:00
LinuxServer-CI
3d0d91cad8 Bot Updating Package Versions 2024-03-01 18:30:52 +00:00
LinuxServer-CI
86015b2bb6 Bot Updating Templated Files 2024-02-23 18:32:34 +00:00
LinuxServer-CI
9d09f09b65 Bot Updating Templated Files 2024-02-23 18:29:08 +00:00
LinuxServer-CI
3952031cc4 Bot Updating Package Versions 2024-02-17 15:45:06 +00:00
aptalca
65032223b6 Merge pull request #146 from linuxserver/feature-add_dom_php_extension
Add dom php extension to dev
2024-02-17 10:41:06 -05:00
Chris Hunt
c7475c8fe6 Add dom php extension to dev 2024-02-17 14:46:08 +00:00
LinuxServer-CI
181d9c4aed Bot Updating Package Versions 2024-02-17 08:47:18 +00:00
LinuxServer-CI
51ffe0c841 Bot Updating Package Versions 2024-02-16 21:47:16 +00:00
LinuxServer-CI
e04a704803 Bot Updating Package Versions 2024-02-16 18:30:58 +00:00
LinuxServer-CI
08127222fa Bot Updating Package Versions 2024-02-12 19:46:57 +00:00
LinuxServer-CI
0d894f8ca8 Bot Updating Package Versions 2024-02-09 18:31:07 +00:00
LinuxServer-CI
6ff1368f5f Bot Updating Package Versions 2024-02-02 18:29:58 +00:00
LinuxServer-CI
65c299b32f Bot Updating Package Versions 2024-01-26 16:42:34 +00:00
LinuxServer-CI
6aa0b5611d Bot Updating Templated Files 2024-01-26 16:39:55 +00:00
Eric Nemchik
fc295cdcad Merge pull request #141 from linuxserver/3.19-development
Rebase to Alpine 3.19
2024-01-26 10:37:56 -06:00
LinuxServer-CI
d9800ee920 Bot Updating Package Versions 2024-01-19 18:33:34 +00:00
LinuxServer-CI
5fbe7b8c94 Bot Updating Package Versions 2024-01-12 18:39:53 +00:00
LinuxServer-CI
450b8c49ae Bot Updating Templated Files 2024-01-12 18:36:21 +00:00
LinuxServer-CI
d0c3c7fb32 Bot Updating Templated Files 2024-01-12 18:33:53 +00:00
LinuxServer-CI
18594c2e33 Bot Updating Package Versions 2024-01-05 18:30:38 +00:00
Eric Nemchik
27b68856c7 Rebase to Alpine 3.19
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-12-23 19:20:34 -06:00
LinuxServer-CI
9905ef8a45 Bot Updating Package Versions 2023-12-22 18:29:20 +00:00
LinuxServer-CI
157c18a81a Bot Updating Package Versions 2023-12-15 18:31:10 +00:00
LinuxServer-CI
80ed370549 Bot Updating Package Versions 2023-12-08 18:30:20 +00:00
LinuxServer-CI
5544a0e7dd Bot Updating Package Versions 2023-12-01 18:30:22 +00:00
Eric Nemchik
74f43c96f6 Merge pull request #139 from linuxserver/quiet-migration-development
only run migration if conf exists
2023-11-29 08:31:03 -06:00
Eric Nemchik
6cb41d570e only run migration if conf exists
redirect stderr to /dev/null

Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-11-25 10:51:48 -06:00
LinuxServer-CI
dc1f719285 Bot Updating Package Versions 2023-11-24 18:30:38 +00:00
LinuxServer-CI
2a6b03eca7 Bot Updating Package Versions 2023-11-17 18:33:13 +00:00
LinuxServer-CI
5365f6181d Bot Updating Templated Files 2023-11-17 18:30:55 +00:00
LinuxServer-CI
c91ac478c9 Bot Updating Package Versions 2023-11-10 18:29:24 +00:00
LinuxServer-CI
369ba1c41b Bot Updating Package Versions 2023-10-27 18:29:08 +00:00
LinuxServer-CI
88e7e1df09 Bot Updating Package Versions 2023-10-20 18:29:37 +00:00
LinuxServer-CI
a694621f78 Bot Updating Templated Files 2023-10-13 18:31:24 +00:00
LinuxServer-CI
0a0c8862f6 Bot Updating Package Versions 2023-10-06 18:41:35 +00:00
LinuxServer-CI
649f2b09a7 Bot Updating Templated Files 2023-10-06 18:35:50 +00:00
LinuxServer-CI
1ab60fda12 Bot Updating Templated Files 2023-10-06 18:29:57 +00:00
LinuxServer-CI
67b8da2a27 Bot Updating Package Versions 2023-09-29 18:30:15 +00:00
LinuxServer-CI
9da87dc8cf Bot Updating Package Versions 2023-09-22 18:29:33 +00:00
LinuxServer-CI
1de91cfbd0 Bot Updating Package Versions 2023-09-08 18:28:47 +00:00
LinuxServer-CI
19c0db5c97 Bot Updating Package Versions 2023-09-01 18:28:39 +00:00
LinuxServer-CI
5498349626 Bot Updating Package Versions 2023-08-18 18:27:55 +00:00
LinuxServer-CI
eabd8a6738 Bot Updating Package Versions 2023-08-11 18:28:36 +00:00
LinuxServer-CI
82f1f4d934 Bot Updating Package Versions 2023-08-04 18:28:41 +00:00
LinuxServer-CI
7237d6ca9a Bot Updating Package Versions 2023-07-28 18:28:17 +00:00
LinuxServer-CI
2275a8fb64 Bot Updating Package Versions 2023-07-21 18:29:51 +00:00
LinuxServer-CI
d545593107 Bot Updating Package Versions 2023-07-14 18:33:53 +00:00
LinuxServer-CI
34f7492c97 Bot Updating Package Versions 2023-07-07 18:34:07 +00:00
LinuxServer-CI
134b3e9533 Bot Updating Templated Files 2023-07-07 18:31:48 +00:00
LinuxServer-CI
8217bd55ea Bot Updating Package Versions 2023-06-23 18:33:08 +00:00
LinuxServer-CI
1761816c42 Bot Updating Package Versions 2023-06-16 18:28:50 +00:00
LinuxServer-CI
ab5fc6b23d Bot Updating Package Versions 2023-06-09 18:28:46 +00:00
LinuxServer-CI
f9d2fca42c Bot Updating Package Versions 2023-06-07 12:40:54 +00:00
Eric Nemchik
fbe856fab3 Merge pull request #131 from linuxserver/3.18-development
Rebase to Alpine 3.18, deprecate armhf
2023-06-07 07:38:48 -05:00
LinuxServer-CI
5a251cd21c Bot Updating Package Versions 2023-06-02 18:29:27 +00:00
Eric Nemchik
19e3093840 Rebase to Alpine 3.18, deprecate armhf
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-05-31 17:46:44 +00:00
LinuxServer-CI
3e5d65217a Bot Updating Package Versions 2023-05-26 08:48:38 +00:00
LinuxServer-CI
1e5c88de48 Bot Updating Templated Files 2023-05-26 08:46:11 +00:00
LinuxServer-CI
44612aa569 Bot Updating Package Versions 2023-05-19 18:29:53 +00:00
LinuxServer-CI
8706d29fe0 Bot Updating Package Versions 2023-05-16 14:46:34 +00:00
LinuxServer-CI
136dbe61bf Bot Updating Package Versions 2023-05-12 18:28:08 +00:00
LinuxServer-CI
5977b7440e Bot Updating Package Versions 2023-04-28 20:32:24 +02:00
LinuxServer-CI
d04a852a8d Bot Updating Templated Files 2023-04-28 20:29:58 +02:00
LinuxServer-CI
a636e8534c Bot Updating Templated Files 2023-04-28 20:28:24 +02:00
LinuxServer-CI
c5693232f4 Bot Updating Package Versions 2023-04-21 13:30:18 -05:00
LinuxServer-CI
6d7fad2d98 Bot Updating Package Versions 2023-04-18 16:13:45 +02:00
Eric Nemchik
204bad5de9 Merge pull request #126 from linuxserver/move-ssl-include-dev
Move ssl.conf include to default.conf
2023-04-18 09:07:59 -05:00
LinuxServer-CI
3779275528 Bot Updating Package Versions 2023-04-14 13:29:33 -05:00
Eric Nemchik
c4ab19e354 Move ssl.conf include to default.conf 2023-04-13 13:38:47 -05:00
LinuxServer-CI
4ebb4da3fd Bot Updating Package Versions 2023-04-07 13:33:42 -05:00
19 changed files with 1210 additions and 912 deletions

View File

@@ -105,10 +105,10 @@ docker build \
-t linuxserver/heimdall:latest . -t linuxserver/heimdall:latest .
``` ```
The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static` The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static`
```bash ```bash
docker run --rm --privileged multiarch/qemu-user-static:register --reset docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset
``` ```
Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`. Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`.

View File

@@ -53,7 +53,6 @@ body:
options: options:
- x86-64 - x86-64
- arm64 - arm64
- armhf
validations: validations:
required: true required: true
- type: textarea - type: textarea
@@ -68,10 +67,10 @@ body:
- type: textarea - type: textarea
attributes: attributes:
description: | description: |
Provide a full docker log, output of "docker logs linuxserver.io" Provide a full docker log, output of "docker logs heimdall"
label: Container logs label: Container logs
placeholder: | placeholder: |
Output of `docker logs linuxserver.io` Output of `docker logs heimdall`
render: bash render: bash
validations: validations:
required: true required: true

View File

@@ -2,9 +2,11 @@ name: Issue & PR Tracker
on: on:
issues: issues:
types: [opened,reopened,labeled,unlabeled] types: [opened,reopened,labeled,unlabeled,closed]
pull_request_target: pull_request_target:
types: [opened,reopened,review_requested,review_request_removed,labeled,unlabeled] types: [opened,reopened,review_requested,review_request_removed,labeled,unlabeled,closed]
pull_request_review:
types: [submitted,edited,dismissed]
jobs: jobs:
manage-project: manage-project:

View File

@@ -7,20 +7,27 @@ jobs:
external-trigger-development: external-trigger-development:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3.1.0 - uses: actions/checkout@v4.1.1
- name: External Trigger - name: External Trigger
if: github.ref == 'refs/heads/development' if: github.ref == 'refs/heads/development'
env:
SKIP_EXTERNAL_TRIGGER: ${{ vars.SKIP_EXTERNAL_TRIGGER }}
run: | run: |
if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_HEIMDALL_DEVELOPMENT }}" ]; then printf "# External trigger for docker-heimdall\n\n" >> $GITHUB_STEP_SUMMARY
echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_HEIMDALL_DEVELOPMENT is set; skipping trigger. ****" if grep -q "^heimdall_development" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`heimdall_development\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
fi fi
echo "**** External trigger running off of development branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_HEIMDALL_DEVELOPMENT\". ****" echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
echo "**** Retrieving external version ****" echo "> External trigger running off of development branch. To disable this trigger, add \`heimdall_development\` into the Github organizational variable \`SKIP_EXTERNAL_TRIGGER\`." >> $GITHUB_STEP_SUMMARY
printf "\n## Retrieving external version\n\n" >> $GITHUB_STEP_SUMMARY
EXT_RELEASE=$(curl -u "${{ secrets.CR_USER }}:${{ secrets.CR_PAT }}" -sX GET "https://api.github.com/repos/linuxserver/Heimdall/commits/2.x" | jq -r '. | .sha' | cut -c1-8) EXT_RELEASE=$(curl -u "${{ secrets.CR_USER }}:${{ secrets.CR_PAT }}" -sX GET "https://api.github.com/repos/linuxserver/Heimdall/commits/2.x" | jq -r '. | .sha' | cut -c1-8)
echo "Type is \`github_commit\`" >> $GITHUB_STEP_SUMMARY
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
echo "**** Can't retrieve external version, exiting ****" echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Can't retrieve external version, exiting" >> $GITHUB_STEP_SUMMARY
FAILURE_REASON="Can't retrieve external version for heimdall branch development" FAILURE_REASON="Can't retrieve external version for heimdall branch development"
GHA_TRIGGER_URL="https://github.com/linuxserver/docker-heimdall/actions/runs/${{ github.run_id }}" GHA_TRIGGER_URL="https://github.com/linuxserver/docker-heimdall/actions/runs/${{ github.run_id }}"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680, curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
@@ -29,23 +36,42 @@ jobs:
exit 1 exit 1
fi fi
EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g') EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
echo "**** External version: ${EXT_RELEASE} ****" echo "External version: \`${EXT_RELEASE}\`" >> $GITHUB_STEP_SUMMARY
echo "**** Retrieving last pushed version ****" echo "Retrieving last pushed version" >> $GITHUB_STEP_SUMMARY
image="linuxserver/heimdall" image="linuxserver/heimdall"
tag="development" tag="development"
token=$(curl -sX GET \ token=$(curl -sX GET \
"https://ghcr.io/token?scope=repository%3Alinuxserver%2Fheimdall%3Apull" \ "https://ghcr.io/token?scope=repository%3Alinuxserver%2Fheimdall%3Apull" \
| jq -r '.token') | jq -r '.token')
multidigest=$(curl -s \ multidigest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Accept: application/vnd.oci.image.index.v1+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${tag}")
if jq -e '.layers // empty' <<< "${multidigest}" >/dev/null 2>&1; then
# If there's a layer element it's a single-arch manifest so just get that digest
digest=$(jq -r '.config.digest' <<< "${multidigest}")
else
# Otherwise it's multi-arch or has manifest annotations
if jq -e '.manifests[]?.annotations // empty' <<< "${multidigest}" >/dev/null 2>&1; then
# Check for manifest annotations and delete if found
multidigest=$(jq 'del(.manifests[] | select(.annotations))' <<< "${multidigest}")
fi
if [[ $(jq '.manifests | length' <<< "${multidigest}") -gt 1 ]]; then
# If there's still more than one digest, it's multi-arch
multidigest=$(jq -r ".manifests[] | select(.platform.architecture == \"amd64\").digest?" <<< "${multidigest}")
else
# Otherwise it's single arch
multidigest=$(jq -r ".manifests[].digest?" <<< "${multidigest}")
fi
if digest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \ --header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Accept: application/vnd.oci.image.manifest.v1+json" \
--header "Authorization: Bearer ${token}" \ --header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${tag}" \ "https://ghcr.io/v2/${image}/manifests/${multidigest}"); then
| jq -r 'first(.manifests[].digest)') digest=$(jq -r '.config.digest' <<< "${digest}");
digest=$(curl -s \ fi
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \ fi
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${multidigest}" \
| jq -r '.config.digest')
image_info=$(curl -sL \ image_info=$(curl -sL \
--header "Authorization: Bearer ${token}" \ --header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/blobs/${digest}") "https://ghcr.io/v2/${image}/blobs/${digest}")
@@ -57,40 +83,54 @@ jobs:
IMAGE_RELEASE=$(echo ${image_info} | jq -r '.Labels.build_version' | awk '{print $3}') IMAGE_RELEASE=$(echo ${image_info} | jq -r '.Labels.build_version' | awk '{print $3}')
IMAGE_VERSION=$(echo ${IMAGE_RELEASE} | awk -F'-ls' '{print $1}') IMAGE_VERSION=$(echo ${IMAGE_RELEASE} | awk -F'-ls' '{print $1}')
if [ -z "${IMAGE_VERSION}" ]; then if [ -z "${IMAGE_VERSION}" ]; then
echo "**** Can't retrieve last pushed version, exiting ****" echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "Can't retrieve last pushed version, exiting" >> $GITHUB_STEP_SUMMARY
FAILURE_REASON="Can't retrieve last pushed version for heimdall tag development" FAILURE_REASON="Can't retrieve last pushed version for heimdall tag development"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680, curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}], "description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
exit 1 exit 1
fi fi
echo "**** Last pushed version: ${IMAGE_VERSION} ****" echo "Last pushed version: \`${IMAGE_VERSION}\`" >> $GITHUB_STEP_SUMMARY
if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then
echo "**** Version ${EXT_RELEASE} already pushed, exiting ****" echo "Version \`${EXT_RELEASE}\` 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 ****" echo "New version \`${EXT_RELEASE}\` found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
else else
echo "**** New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build ****" if [[ "${artifacts_found}" == "false" ]]; then
response=$(curl -iX POST \ echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-heimdall/job/development/buildWithParameters?PACKAGE_CHECK=false \ echo "> New version detected, but not all artifacts are published yet; skipping trigger" >> $GITHUB_STEP_SUMMARY
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|") FAILURE_REASON="New version ${EXT_RELEASE} for heimdall tag development is detected, however not all artifacts are uploaded to upstream release yet. Will try again later."
echo "**** Jenkins job queue url: ${response%$'\r'} ****" curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
echo "**** Sleeping 10 seconds until job starts ****" "description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
sleep 10 "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url') else
buildurl="${buildurl%$'\r'}" printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY
echo "**** Jenkins job build url: ${buildurl} ****" echo "New version \`${EXT_RELEASE}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY
echo "**** Attempting to change the Jenkins job description ****" if [[ "${artifacts_found}" == "true" ]]; then
curl -iX POST \ echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY
"${buildurl}submitDescription" \ fi
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \ response=$(curl -iX POST \
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \ https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-heimdall/job/development/buildWithParameters?PACKAGE_CHECK=false \
--data-urlencode "Submit=Submit" --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
echo "**** Notifying Discord ****" echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY
TRIGGER_REASON="A version change was detected for heimdall tag development. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}" echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903, sleep 10
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}], buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} buildurl="${buildurl%$'\r'}"
echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY
echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY
curl -iX POST \
"${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
--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 heimdall tag development. 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 }}
fi
fi fi

View File

@@ -2,42 +2,44 @@ name: External Trigger Scheduler
on: on:
schedule: schedule:
- cron: '35 * * * *' - cron: '39 * * * *'
workflow_dispatch: workflow_dispatch:
jobs: jobs:
external-trigger-scheduler: external-trigger-scheduler:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3.1.0 - uses: actions/checkout@v4.1.1
with: with:
fetch-depth: '0' fetch-depth: '0'
- name: External Trigger Scheduler - name: External Trigger Scheduler
run: | run: |
echo "**** Branches found: ****" printf "# External trigger scheduler for docker-heimdall\n\n" >> $GITHUB_STEP_SUMMARY
git for-each-ref --format='%(refname:short)' refs/remotes printf "Found the branches:\n\n%s\n" "$(git for-each-ref --format='- %(refname:lstrip=3)' refs/remotes)" >> $GITHUB_STEP_SUMMARY
echo "**** Pulling the yq docker image ****" for br in $(git for-each-ref --format='%(refname:lstrip=3)' refs/remotes)
docker pull ghcr.io/linuxserver/yq
for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
do do
br=$(echo "$br" | sed 's|origin/||g') if [[ "${br}" == "HEAD" ]]; then
echo "**** Evaluating branch ${br} ****" printf "\nSkipping %s.\n" ${br} >> $GITHUB_STEP_SUMMARY
ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-heimdall/${br}/jenkins-vars.yml \ continue
| docker run --rm -i --entrypoint yq ghcr.io/linuxserver/yq -r .ls_branch) fi
if [ "$br" == "$ls_branch" ]; then printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY
echo "**** Branch ${br} appears to be live; checking workflow. ****" ls_jenkins_vars=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-heimdall/${br}/jenkins-vars.yml)
ls_branch=$(echo "${ls_jenkins_vars}" | yq -r '.ls_branch')
ls_trigger=$(echo "${ls_jenkins_vars}" | yq -r '.external_type')
if [[ "${br}" == "${ls_branch}" ]] && [[ "${ls_trigger}" != "os" ]]; then
echo "Branch appears to be live and trigger is not os; checking workflow." >> $GITHUB_STEP_SUMMARY
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-heimdall/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-heimdall/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then
echo "**** Workflow exists. Triggering external trigger workflow for branch ${br} ****." echo "Triggering external trigger workflow for branch." >> $GITHUB_STEP_SUMMARY
curl -iX POST \ curl -iX POST \
-H "Authorization: token ${{ secrets.CR_PAT }}" \ -H "Authorization: token ${{ secrets.CR_PAT }}" \
-H "Accept: application/vnd.github.v3+json" \ -H "Accept: application/vnd.github.v3+json" \
-d "{\"ref\":\"refs/heads/${br}\"}" \ -d "{\"ref\":\"refs/heads/${br}\"}" \
https://api.github.com/repos/linuxserver/docker-heimdall/actions/workflows/external_trigger.yml/dispatches https://api.github.com/repos/linuxserver/docker-heimdall/actions/workflows/external_trigger.yml/dispatches
else else
echo "**** Workflow doesn't exist; skipping trigger. ****" echo "Skipping branch due to no external trigger workflow present." >> $GITHUB_STEP_SUMMARY
fi fi
else else
echo "**** ${br} appears to be a dev branch; skipping trigger. ****" echo "Skipping branch due to being detected as dev branch or having no external version." >> $GITHUB_STEP_SUMMARY
fi fi
done done

View File

@@ -1,38 +0,0 @@
name: Package Trigger Main
on:
workflow_dispatch:
jobs:
package-trigger-development:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3.1.0
- name: Package Trigger
if: github.ref == 'refs/heads/development'
run: |
if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_HEIMDALL_DEVELOPMENT }}" ]; then
echo "**** Github secret PAUSE_PACKAGE_TRIGGER_HEIMDALL_DEVELOPMENT is set; skipping trigger. ****"
exit 0
fi
if [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-heimdall/job/development/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "**** There already seems to be an active build on Jenkins; skipping package trigger ****"
exit 0
fi
echo "**** Package trigger running off of development branch. To disable, set a Github secret named \"PAUSE_PACKAGE_TRIGGER_HEIMDALL_DEVELOPMENT\". ****"
response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-heimdall/job/development/buildWithParameters?PACKAGE_CHECK=true \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
echo "**** Jenkins job queue url: ${response%$'\r'} ****"
echo "**** Sleeping 10 seconds until job starts ****"
sleep 10
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
buildurl="${buildurl%$'\r'}"
echo "**** Jenkins job build url: ${buildurl} ****"
echo "**** Attempting to change the Jenkins job description ****"
curl -iX POST \
"${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
--data-urlencode "description=GHA package trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit"

View File

@@ -9,42 +9,92 @@ jobs:
package-trigger-scheduler: package-trigger-scheduler:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3.1.0 - uses: actions/checkout@v4.1.1
with: with:
fetch-depth: '0' fetch-depth: '0'
- name: Package Trigger Scheduler - name: Package Trigger Scheduler
env:
SKIP_PACKAGE_TRIGGER: ${{ vars.SKIP_PACKAGE_TRIGGER }}
run: | run: |
echo "**** Branches found: ****" printf "# Package trigger scheduler for docker-heimdall\n\n" >> $GITHUB_STEP_SUMMARY
git for-each-ref --format='%(refname:short)' refs/remotes printf "Found the branches:\n\n%s\n" "$(git for-each-ref --format='- %(refname:lstrip=3)' refs/remotes)" >> $GITHUB_STEP_SUMMARY
echo "**** Pulling the yq docker image ****" for br in $(git for-each-ref --format='%(refname:lstrip=3)' refs/remotes)
docker pull ghcr.io/linuxserver/yq
for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
do do
br=$(echo "$br" | sed 's|origin/||g') if [[ "${br}" == "HEAD" ]]; then
echo "**** Evaluating branch ${br} ****" printf "\nSkipping %s.\n" ${br} >> $GITHUB_STEP_SUMMARY
ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-heimdall/${br}/jenkins-vars.yml \ continue
| docker run --rm -i --entrypoint yq ghcr.io/linuxserver/yq -r .ls_branch) fi
if [ "${br}" == "${ls_branch}" ]; then printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY
echo "**** Branch ${br} appears to be live; checking workflow. ****" JENKINS_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-heimdall/${br}/jenkins-vars.yml)
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-heimdall/${br}/.github/workflows/package_trigger.yml > /dev/null 2>&1; then if ! curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-heimdall/${br}/Jenkinsfile >/dev/null 2>&1; then
echo "**** Workflow exists. Triggering package trigger workflow for branch ${br}. ****" echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
triggered_branches="${triggered_branches}${br} " echo "> No Jenkinsfile found. Branch is either deprecated or is an early dev branch." >> $GITHUB_STEP_SUMMARY
curl -iX POST \ skipped_branches="${skipped_branches}${br} "
-H "Authorization: token ${{ secrets.CR_PAT }}" \ elif [[ "${br}" == $(yq -r '.ls_branch' <<< "${JENKINS_VARS}") ]]; then
-H "Accept: application/vnd.github.v3+json" \ echo "Branch appears to be live; checking workflow." >> $GITHUB_STEP_SUMMARY
-d "{\"ref\":\"refs/heads/${br}\"}" \ README_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-heimdall/${br}/readme-vars.yml)
https://api.github.com/repos/linuxserver/docker-heimdall/actions/workflows/package_trigger.yml/dispatches if [[ $(yq -r '.project_deprecation_status' <<< "${README_VARS}") == "true" ]]; then
sleep 30 echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Branch appears to be deprecated; skipping trigger." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif [[ $(yq -r '.skip_package_check' <<< "${JENKINS_VARS}") == "true" ]]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Skipping branch ${br} due to \`skip_package_check\` being set in \`jenkins-vars.yml\`." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif grep -q "^heimdall_${br}" <<< "${SKIP_PACKAGE_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_PACKAGE_TRIGGER\` contains \`heimdall_${br}\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-heimdall/job/${br}/lastBuild/api/json | jq -r '.building' 2>/dev/null) == "true" ]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> There already seems to be an active build on Jenkins; skipping package trigger for ${br}" >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
else else
echo "**** Workflow doesn't exist; skipping trigger. ****" echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
echo "> Triggering package trigger for branch ${br}" >> $GITHUB_STEP_SUMMARY
printf "> To disable, add \`heimdall_%s\` into the Github organizational variable \`SKIP_PACKAGE_TRIGGER\`.\n\n" "${br}" >> $GITHUB_STEP_SUMMARY
triggered_branches="${triggered_branches}${br} "
response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-heimdall/job/${br}/buildWithParameters?PACKAGE_CHECK=true \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
if [[ -z "${response}" ]]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Jenkins build could not be triggered. Skipping branch."
continue
fi
echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY
echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY
sleep 10
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
buildurl="${buildurl%$'\r'}"
echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY
echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY
if ! curl -ifX POST \
"${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
--data-urlencode "description=GHA package trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Unable to change the Jenkins job description."
fi
sleep 20
fi fi
else else
echo "**** ${br} appears to be a dev branch; skipping trigger. ****" echo "Skipping branch ${br} due to being detected as dev branch." >> $GITHUB_STEP_SUMMARY
fi fi
done done
echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****" if [[ -n "${triggered_branches}" ]] || [[ -n "${skipped_branches}" ]]; then
echo "**** Notifying Discord ****" if [[ -n "${triggered_branches}" ]]; then
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903, NOTIFY_BRANCHES="**Triggered:** ${triggered_branches} \n"
"description": "**Package Check Build(s) Triggered for heimdall** \n**Branch(es):** '"${triggered_branches}"' \n**Build URL:** '"https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-heimdall/activity/"' \n"}], NOTIFY_BUILD_URL="**Build URL:** https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-heimdall/activity/ \n"
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****"
fi
if [[ -n "${skipped_branches}" ]]; then
NOTIFY_BRANCHES="${NOTIFY_BRANCHES}**Skipped:** ${skipped_branches} \n"
fi
echo "**** Notifying Discord ****"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**Package Check Build(s) for heimdall** \n'"${NOTIFY_BRANCHES}"''"${NOTIFY_BUILD_URL}"'"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
fi

View File

@@ -5,6 +5,8 @@ on:
- '**/run' - '**/run'
- '**/finish' - '**/finish'
- '**/check' - '**/check'
- 'root/migrations/*'
jobs: jobs:
permission_check: permission_check:
uses: linuxserver/github-workflows/.github/workflows/init-svc-executable-permissions.yml@v1 uses: linuxserver/github-workflows/.github/workflows/init-svc-executable-permissions.yml@v1

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.17 FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.20
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -9,25 +9,24 @@ ARG HEIMDALL_RELEASE
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="aptalca" LABEL maintainer="aptalca"
# environment settings
ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2
RUN \ RUN \
echo "**** install runtime packages ****" && \ echo "**** install runtime packages ****" && \
apk add --no-cache --upgrade \ apk add --no-cache \
php81-ctype \ php83-dom \
php81-curl \ php83-intl \
php81-intl \ php83-opcache \
php81-pdo_pgsql \ php83-pdo_mysql \
php81-pdo_sqlite \ php83-pdo_pgsql \
php81-pdo_mysql \ php83-pdo_sqlite \
php81-tokenizer \ php83-tokenizer && \
php81-zip && \
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 && \
echo 'fastcgi_param PHP_AUTH_PW $http_authorization; # Heimdall user authorization' >> \ echo 'fastcgi_param PHP_AUTH_PW $http_authorization; # Heimdall user authorization' >> \
/etc/nginx/fastcgi_params && \ /etc/nginx/fastcgi_params && \
echo "**** configure php opcache ****" && \
echo 'opcache.validate_timestamps=0' >> \
/etc/php83/conf.d/00_opcache.ini && \
echo "**** install heimdall ****" && \ echo "**** install heimdall ****" && \
mkdir -p \ mkdir -p \
/heimdall && \ /heimdall && \
@@ -43,6 +42,7 @@ RUN \
tar xf \ tar xf \
/tmp/heimdall.tar.gz -C \ /tmp/heimdall.tar.gz -C \
/app/www-tmp --strip-components=1 && \ /app/www-tmp --strip-components=1 && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** cleanup ****" && \ echo "**** cleanup ****" && \
rm -rf \ rm -rf \
/tmp/* /tmp/*

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.17 FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.20
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -9,25 +9,24 @@ ARG HEIMDALL_RELEASE
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="aptalca" LABEL maintainer="aptalca"
# environment settings
ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2
RUN \ RUN \
echo "**** install runtime packages ****" && \ echo "**** install runtime packages ****" && \
apk add --no-cache --upgrade \ apk add --no-cache \
php81-ctype \ php83-dom \
php81-curl \ php83-intl \
php81-intl \ php83-opcache \
php81-pdo_pgsql \ php83-pdo_mysql \
php81-pdo_sqlite \ php83-pdo_pgsql \
php81-pdo_mysql \ php83-pdo_sqlite \
php81-tokenizer \ php83-tokenizer && \
php81-zip && \
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 && \
echo 'fastcgi_param PHP_AUTH_PW $http_authorization; # Heimdall user authorization' >> \ echo 'fastcgi_param PHP_AUTH_PW $http_authorization; # Heimdall user authorization' >> \
/etc/nginx/fastcgi_params && \ /etc/nginx/fastcgi_params && \
echo "**** configure php opcache ****" && \
echo 'opcache.validate_timestamps=0' >> \
/etc/php83/conf.d/00_opcache.ini && \
echo "**** install heimdall ****" && \ echo "**** install heimdall ****" && \
mkdir -p \ mkdir -p \
/heimdall && \ /heimdall && \
@@ -43,6 +42,7 @@ RUN \
tar xf \ tar xf \
/tmp/heimdall.tar.gz -C \ /tmp/heimdall.tar.gz -C \
/app/www-tmp --strip-components=1 && \ /app/www-tmp --strip-components=1 && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** cleanup ****" && \ echo "**** cleanup ****" && \
rm -rf \ rm -rf \
/tmp/* /tmp/*

View File

@@ -1,55 +0,0 @@
# syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm32v7-3.17
# set version label
ARG BUILD_DATE
ARG VERSION
ARG HEIMDALL_RELEASE
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="aptalca"
# environment settings
ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2
RUN \
echo "**** install runtime packages ****" && \
apk add --no-cache --upgrade \
php81-ctype \
php81-curl \
php81-intl \
php81-pdo_pgsql \
php81-pdo_sqlite \
php81-pdo_mysql \
php81-tokenizer \
php81-zip && \
echo "**** configure nginx ****" && \
echo 'fastcgi_param PHP_AUTH_USER $remote_user; # Heimdall user authorization' >> \
/etc/nginx/fastcgi_params && \
echo 'fastcgi_param PHP_AUTH_PW $http_authorization; # Heimdall user authorization' >> \
/etc/nginx/fastcgi_params && \
echo "**** install heimdall ****" && \
mkdir -p \
/heimdall && \
if [ -z ${HEIMDALL_RELEASE+x} ]; then \
HEIMDALL_RELEASE=$(curl -sX GET "https://api.github.com/repos/linuxserver/Heimdall/commits/2.x" \
| awk '/sha/{print $4;exit}' FS='[""]'); \
fi && \
curl -o \
/tmp/heimdall.tar.gz -L \
"https://github.com/linuxserver/Heimdall/archive/${HEIMDALL_RELEASE}.tar.gz" && \
mkdir -p \
/app/www-tmp && \
tar xf \
/tmp/heimdall.tar.gz -C \
/app/www-tmp --strip-components=1 && \
echo "**** cleanup ****" && \
rm -rf \
/tmp/*
# add local files
COPY root/ /
# ports and volumes
EXPOSE 80 443
VOLUME /config

864
Jenkinsfile vendored

File diff suppressed because it is too large Load Diff

171
README.md
View File

@@ -1,6 +1,5 @@
<!-- DO NOT EDIT THIS FILE MANUALLY --> <!-- DO NOT EDIT THIS FILE MANUALLY -->
<!-- Please read the https://github.com/linuxserver/docker-heimdall/blob/development/.github/CONTRIBUTING.md --> <!-- Please read https://github.com/linuxserver/docker-heimdall/blob/development/.github/CONTRIBUTING.md -->
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io) [![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io)
[![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!")
@@ -29,7 +28,7 @@ Find us at:
# [linuxserver/heimdall](https://github.com/linuxserver/docker-heimdall) # [linuxserver/heimdall](https://github.com/linuxserver/docker-heimdall)
[![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Fheimdall?color=94398d&label-color=555555&logo-color=ffffff&style=for-the-badge&package-type=docker)](https://scarf.sh/gateway/linuxserver-ci/docker/linuxserver%2Fheimdall) [![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Fheimdall?color=94398d&label-color=555555&logo-color=ffffff&style=for-the-badge&package-type=docker)](https://scarf.sh)
[![GitHub Stars](https://img.shields.io/github/stars/linuxserver/docker-heimdall.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-heimdall) [![GitHub Stars](https://img.shields.io/github/stars/linuxserver/docker-heimdall.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-heimdall)
[![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-heimdall.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-heimdall/releases) [![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-heimdall.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-heimdall/releases)
[![GitHub Package Repository](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub%20Package&logo=github)](https://github.com/linuxserver/docker-heimdall/packages) [![GitHub Package Repository](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub%20Package&logo=github)](https://github.com/linuxserver/docker-heimdall/packages)
@@ -38,7 +37,7 @@ Find us at:
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/heimdall.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=pulls&logo=docker)](https://hub.docker.com/r/linuxserver/heimdall) [![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/heimdall.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=pulls&logo=docker)](https://hub.docker.com/r/linuxserver/heimdall)
[![Docker Stars](https://img.shields.io/docker/stars/linuxserver/heimdall.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=stars&logo=docker)](https://hub.docker.com/r/linuxserver/heimdall) [![Docker Stars](https://img.shields.io/docker/stars/linuxserver/heimdall.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=stars&logo=docker)](https://hub.docker.com/r/linuxserver/heimdall)
[![Jenkins Build](https://img.shields.io/jenkins/build?labelColor=555555&logoColor=ffffff&style=for-the-badge&jobUrl=https%3A%2F%2Fci.linuxserver.io%2Fjob%2FDocker-Pipeline-Builders%2Fjob%2Fdocker-heimdall%2Fjob%2Fdevelopment%2F&logo=jenkins)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-heimdall/job/development/) [![Jenkins Build](https://img.shields.io/jenkins/build?labelColor=555555&logoColor=ffffff&style=for-the-badge&jobUrl=https%3A%2F%2Fci.linuxserver.io%2Fjob%2FDocker-Pipeline-Builders%2Fjob%2Fdocker-heimdall%2Fjob%2Fdevelopment%2F&logo=jenkins)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-heimdall/job/development/)
[![LSIO CI](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=CI&query=CI&url=https%3A%2F%2Fci-tests.linuxserver.io%2Flinuxserver%2Fheimdall%2Flatest%2Fci-status.yml)](https://ci-tests.linuxserver.io/linuxserver/heimdall/latest/index.html) [![LSIO CI](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=CI&query=CI&url=https%3A%2F%2Fci-tests.linuxserver.io%2Flinuxserver%2Fheimdall%2Fdevelopment%2Fci-status.yml)](https://ci-tests.linuxserver.io/linuxserver/heimdall/development/index.html)
[Heimdall](https://heimdall.site) is a way to organise all those links to your most used web sites and web applications in a simple way. [Heimdall](https://heimdall.site) is a way to organise all those links to your most used web sites and web applications in a simple way.
@@ -50,7 +49,7 @@ Why not use it as your browser start page? It even has the ability to include a
## Supported Architectures ## Supported Architectures
We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/). We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
Simply pulling `lscr.io/linuxserver/heimdall:development` should retrieve the correct image for your arch, but you can also pull specific arch images via tags. Simply pulling `lscr.io/linuxserver/heimdall:development` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
@@ -60,7 +59,7 @@ 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 | | arm32v7-\<version tag\> | | armhf | | |
## Version Tags ## Version Tags
@@ -70,24 +69,26 @@ This image provides various versions that are available via tags. Please read th
| :----: | :----: |--- | | :----: | :----: |--- |
| latest | ✅ | Stable Heimdall releases. | | latest | ✅ | Stable Heimdall releases. |
| development | ✅ | Latest commit from the github 2.x branch. | | development | ✅ | Latest commit from the github 2.x branch. |
## Application Setup ## Application Setup
Access the web gui at http://SERVERIP:PORT Access the web gui at http://SERVERIP:PORT
### Adding password protection ### Adding password protection
This image now supports password protection through htpasswd. Run the following command on your host to generate the htpasswd file `docker exec -it heimdall htpasswd -c /config/nginx/.htpasswd <username>`. Replace <username> with a username of your choice and you will be asked to enter a password. Uncomment the `basic auth` lines in `/config/nginx/site-confs/default.conf` and restart the container. This image now supports password protection through htpasswd. Run the following command on your host to generate the htpasswd file `docker exec -it heimdall htpasswd -c /config/nginx/.htpasswd <username>`. Replace <username> with a username of your choice and you will be asked to enter a password. Uncomment the `basic auth` lines in `/config/nginx/site-confs/default.conf` and restart the container.
## Usage ## Usage
Here are some example snippets to help you get started creating a container. To help you get started creating a container from this image you can either use docker-compose or the docker cli.
>[!NOTE]
>Unless a parameter is flaged 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))
```yaml ```yaml
--- ---
version: "2.1"
services: services:
heimdall: heimdall:
image: lscr.io/linuxserver/heimdall:development image: lscr.io/linuxserver/heimdall:development
@@ -97,7 +98,7 @@ services:
- PGID=1000 - PGID=1000
- TZ=Etc/UTC - TZ=Etc/UTC
volumes: volumes:
- /path/to/appdata/config:/config - /path/to/heimdall/config:/config
ports: ports:
- 80:80 - 80:80
- 443:443 - 443:443
@@ -114,24 +115,23 @@ docker run -d \
-e TZ=Etc/UTC \ -e TZ=Etc/UTC \
-p 80:80 \ -p 80:80 \
-p 443:443 \ -p 443:443 \
-v /path/to/appdata/config:/config \ -v /path/to/heimdall/config:/config \
--restart unless-stopped \ --restart unless-stopped \
lscr.io/linuxserver/heimdall:development lscr.io/linuxserver/heimdall:development
``` ```
## Parameters ## Parameters
Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container. Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.
| Parameter | Function | | Parameter | Function |
| :----: | --- | | :----: | --- |
| `-p 80` | http gui | | `-p 80:80` | http gui |
| `-p 443` | https gui | | `-p 443:443` | https gui |
| `-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). |
| `-v /config` | Contains all relevant configuration files. | | `-v /config` | Persistent config files |
## Environment variables from files (Docker secrets) ## Environment variables from files (Docker secrets)
@@ -140,10 +140,10 @@ You can set any environment variable from a file by using a special prepend `FIL
As an example: As an example:
```bash ```bash
-e FILE__PASSWORD=/run/secrets/mysecretpassword -e FILE__MYVAR=/run/secrets/mysecretvariable
``` ```
Will set the environment variable `PASSWORD` based on the contents of the `/run/secrets/mysecretpassword` file. Will set the environment variable `MYVAR` based on the contents of the `/run/secrets/mysecretvariable` file.
## Umask for running applications ## Umask for running applications
@@ -152,15 +152,20 @@ Keep in mind umask is not chmod it subtracts from permissions based on it's valu
## User / Group Identifiers ## User / Group Identifiers
When using volumes (`-v` flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`. When using volumes (`-v` flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`.
Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.
In this instance `PUID=1000` and `PGID=1000`, to find yours use `id user` as below: In this instance `PUID=1000` and `PGID=1000`, to find yours use `id your_user` as below:
```bash ```bash
$ id username id your_user
uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup) ```
Example output:
```text
uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
``` ```
## Docker Mods ## Docker Mods
@@ -171,53 +176,101 @@ We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to
## Support Info ## Support Info
* Shell access whilst the container is running: `docker exec -it heimdall /bin/bash` * Shell access whilst the container is running:
* To monitor the logs of the container in realtime: `docker logs -f heimdall`
* container version number ```bash
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' heimdall` docker exec -it heimdall /bin/bash
* image version number ```
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/heimdall:development`
* To monitor the logs of the container in realtime:
```bash
docker logs -f heimdall
```
* Container version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' heimdall
```
* Image version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/heimdall:development
```
## Updating Info ## Updating Info
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image. Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image.
Below are the instructions for updating containers: Below are the instructions for updating containers:
### Via Docker Compose ### Via Docker Compose
* Update all images: `docker-compose pull` * Update images:
* or update a single image: `docker-compose pull heimdall` * All images:
* Let compose update all containers as necessary: `docker-compose up -d`
* or update a single container: `docker-compose up -d heimdall` ```bash
* You can also remove the old dangling images: `docker image prune` docker-compose pull
```
* Single image:
```bash
docker-compose pull heimdall
```
* Update containers:
* All containers:
```bash
docker-compose up -d
```
* Single container:
```bash
docker-compose up -d heimdall
```
* You can also remove the old dangling images:
```bash
docker image prune
```
### Via Docker Run ### Via Docker Run
* Update the image: `docker pull lscr.io/linuxserver/heimdall:development` * Update the image:
* Stop the running container: `docker stop heimdall`
* Delete the container: `docker rm heimdall` ```bash
docker pull lscr.io/linuxserver/heimdall:development
```
* Stop the running container:
```bash
docker stop heimdall
```
* Delete the container:
```bash
docker rm heimdall
```
* Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved) * Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved)
* You can also remove the old dangling images: `docker image prune` * You can also remove the old dangling images:
### Via Watchtower auto-updater (only use if you don't remember the original parameters) ```bash
docker image prune
* Pull the latest image at its tag and replace it with the same env variables in one run: ```
```bash
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--run-once heimdall
```
* You can also remove the old dangling images: `docker image prune`
**Note:** We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using [Docker Compose](https://docs.linuxserver.io/general/docker-compose).
### Image Update Notifications - Diun (Docker Image Update Notifier) ### Image Update Notifications - Diun (Docker Image Update Notifier)
* We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported. >[!TIP]
>We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
## Building locally ## Building locally
@@ -232,16 +285,22 @@ docker build \
-t lscr.io/linuxserver/heimdall:development . -t lscr.io/linuxserver/heimdall:development .
``` ```
The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static` The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static`
```bash ```bash
docker run --rm --privileged multiarch/qemu-user-static:register --reset docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset
``` ```
Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`. Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`.
## Versions ## Versions
* **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.
* **06.03.24:** - Existing users should update: site-confs/default.conf - Cleanup default site conf.
* **23.12.23:** - Rebase to Alpine 3.19 with php 8.3.
* **25.05.23:** - Rebase to Alpine 3.18, deprecate armhf.
* **13.04.23:** - Move ssl.conf include to default.conf.
* **20.01.23:** - Rebase to alpine 3.17 with php8.1. * **20.01.23:** - Rebase to alpine 3.17 with php8.1.
* **14.11.22:** - Rebasing to alpine 3.15 with php8. Restructure nginx configs ([see changes announcement](https://info.linuxserver.io/issues/2022-08-20-nginx-base)). * **14.11.22:** - Rebasing to alpine 3.15 with php8. Restructure nginx configs ([see changes announcement](https://info.linuxserver.io/issues/2022-08-20-nginx-base)).
* **04.11.22:** - Build commits to upstream branch 2.x. * **04.11.22:** - Build commits to upstream branch 2.x.

View File

@@ -24,6 +24,6 @@ repo_vars:
- CI_PORT='80' - CI_PORT='80'
- CI_SSL='false' - CI_SSL='false'
- CI_DELAY='120' - CI_DELAY='120'
- CI_DOCKERENV='TZ=US/Pacific' - CI_DOCKERENV=''
- CI_AUTH='user:password' - CI_AUTH=''
- CI_WEBPATH='' - CI_WEBPATH=''

View File

@@ -1,227 +1,252 @@
NAME VERSION TYPE NAME VERSION TYPE
alpine-baselayout 3.4.0-r0 apk Hidden Input 1, 0, 0, 0 dotnet
alpine-baselayout-data 3.4.0-r0 apk alpine-baselayout 3.6.5-r0 apk
alpine-keys 2.4-r1 apk alpine-baselayout-data 3.6.5-r0 apk
alpine-release 3.17.2-r0 apk alpine-keys 2.4-r1 apk
apache2-utils 2.4.56-r0 apk alpine-release 3.20.5-r0 apk
apk-tools 2.12.10-r1 apk apache2-utils 2.4.62-r0 apk
apr 1.7.2-r0 apk apk-tools 2.14.4-r1 apk
apr-util 1.6.3-r0 apk apr 1.7.5-r0 apk
argon2-libs 20190702-r2 apk apr-util 1.6.3-r1 apk
barryvdh/laravel-ide-helper v2.12.3 php-composer argon2-libs 20190702-r5 apk
barryvdh/reflection-docblock v2.1.0 php-composer aws/aws-crt-php v1.2.4 php-composer
bash 5.2.15-r0 apk aws/aws-sdk-php 3.299.1 php-composer
brick/math 0.9.3 php-composer barryvdh/laravel-ide-helper v2.15.1 php-composer
brotli-libs 1.0.9-r9 apk barryvdh/reflection-docblock v2.1.1 php-composer
busybox 1.35.0 binary bash 5.2.26-r0 apk
busybox 1.35.0-r29 apk brick/math 0.11.0 php-composer
busybox-binsh 1.35.0-r29 apk brotli-libs 1.1.0-r2 apk
ca-certificates 20220614-r4 apk busybox 1.36.1-r29 apk
ca-certificates-bundle 20220614-r4 apk busybox-binsh 1.36.1-r29 apk
clue/stream-filter v1.6.0 php-composer c-ares 1.33.1-r0 apk
composer/pcre 3.1.0 php-composer ca-certificates 20241121-r1 apk
coreutils 9.1-r0 apk ca-certificates-bundle 20241121-r1 apk
curl 7.88.1-r1 apk carbonphp/carbon-doctrine-types 2.1.0 php-composer
dflydev/dot-access-data v3.0.2 php-composer catatonit 0.2.0-r0 apk
doctrine/cache 2.2.0 php-composer clue/stream-filter v1.7.0 php-composer
doctrine/dbal 3.5.1 php-composer composer 2.8.4 binary
doctrine/deprecations v1.0.0 php-composer composer/class-map-generator 1.1.0 php-composer
doctrine/event-manager 1.2.0 php-composer composer/pcre 3.1.1 php-composer
doctrine/inflector 2.0.6 php-composer coreutils 9.5-r2 apk
doctrine/instantiator 1.4.1 php-composer coreutils-env 9.5-r2 apk
doctrine/lexer 1.2.3 php-composer coreutils-fmt 9.5-r2 apk
dragonmantank/cron-expression v3.3.2 php-composer coreutils-sha512sum 9.5-r2 apk
egulias/email-validator 2.1.25 php-composer curl 8.11.1-r0 apk
facade/flare-client-php 1.10.0 php-composer dflydev/dot-access-data v3.0.2 php-composer
facade/ignition 2.17.6 php-composer doctrine/cache 2.2.0 php-composer
facade/ignition-contracts 1.0.2 php-composer doctrine/dbal 3.8.2 php-composer
fideloper/proxy 4.4.2 php-composer doctrine/deprecations 1.1.3 php-composer
filp/whoops 2.14.6 php-composer doctrine/event-manager 2.0.0 php-composer
fzaninotto/faker v1.9.2 php-composer doctrine/inflector 2.0.9 php-composer
git 2.38.4-r1 apk doctrine/instantiator 2.0.0 php-composer
graham-campbell/bounded-cache v1.3.0 php-composer doctrine/lexer 3.0.1 php-composer
graham-campbell/github v10.6.0 php-composer dragonmantank/cron-expression v3.3.3 php-composer
graham-campbell/manager v4.7.0 php-composer egulias/email-validator 4.0.2 php-composer
graham-campbell/result-type v1.1.0 php-composer fakerphp/faker v1.23.1 php-composer
guzzlehttp/guzzle 7.5.0 php-composer filp/whoops 2.15.4 php-composer
guzzlehttp/promises 1.5.2 php-composer findutils 4.9.0-r5 apk
guzzlehttp/psr7 2.4.3 php-composer fruitcake/php-cors v1.3.0 php-composer
hamcrest/hamcrest-php v2.0.1 php-composer git 2.45.3-r0 apk
icu-data-en 72.1-r1 apk git-init-template 2.45.3-r0 apk
icu-libs 72.1-r1 apk gmp 6.3.0-r1 apk
jq 1.6-r2 apk graham-campbell/bounded-cache v2.2.0 php-composer
knplabs/github-api v3.6.0 php-composer graham-campbell/github v12.4.0 php-composer
laravel/framework v8.83.26 php-composer graham-campbell/manager v5.1.0 php-composer
laravel/serializable-closure v1.2.2 php-composer graham-campbell/result-type v1.1.2 php-composer
laravel/tinker v2.7.3 php-composer guzzlehttp/guzzle 7.8.1 php-composer
laravel/ui v3.4.6 php-composer guzzlehttp/promises 2.0.2 php-composer
laravelcollective/html v6.3.0 php-composer guzzlehttp/psr7 2.6.2 php-composer
league/commonmark 2.3.7 php-composer guzzlehttp/uri-template v1.0.3 php-composer
league/config v1.1.1 php-composer hamcrest/hamcrest-php v2.0.1 php-composer
league/flysystem 1.1.10 php-composer icu-data-en 74.2-r0 apk
league/mime-type-detection 1.11.0 php-composer icu-libs 74.2-r0 apk
libacl 2.3.1-r1 apk jq 1.7.1-r0 apk
libattr 2.5.1-r2 apk knplabs/github-api v3.13.0 php-composer
libbsd 0.11.7-r0 apk laravel/framework v10.44.0 php-composer
libbz2 1.0.8-r4 apk laravel/prompts v0.1.15 php-composer
libc-utils 0.7.2-r3 apk laravel/serializable-closure v1.3.3 php-composer
libcrypto3 3.0.8-r3 apk laravel/tinker v2.9.0 php-composer
libcurl 7.88.1-r1 apk laravel/ui v4.4.0 php-composer
libedit 20221030.3.1-r0 apk laravelcollective/html v6.4.1 php-composer
libexpat 2.5.0-r0 apk lcobucci/jwt 5.2.0 php-composer
libgcc 12.2.1_git20220924-r4 apk league/commonmark 2.4.2 php-composer
libintl 0.21.1-r1 apk league/config v1.2.0 php-composer
libmd 1.0.4-r0 apk league/flysystem 3.24.0 php-composer
libpq 15.2-r0 apk league/flysystem-aws-s3-v3 3.24.0 php-composer
libproc 3.3.17-r2 apk league/flysystem-local 3.23.1 php-composer
libssl3 3.0.8-r3 apk league/mime-type-detection 1.15.0 php-composer
libstdc++ 12.2.1_git20220924-r4 apk libacl 2.3.2-r0 apk
libuuid 2.38.1-r1 apk libattr 2.5.2-r0 apk
libxml2 2.10.3-r1 apk libbsd 0.12.2-r0 apk
libzip 1.9.2-r2 apk libbz2 1.0.8-r6 apk
linux-pam 1.5.2-r1 apk libcrypto3 3.3.2-r1 apk
logrotate 3.20.1-r3 apk libcurl 8.11.1-r0 apk
mockery/mockery 1.5.1 php-composer libedit 20240517.3.1-r0 apk
monolog/monolog 2.8.0 php-composer libexpat 2.6.4-r0 apk
musl 1.2.3-r4 apk libgcc 13.2.1_git20240309-r0 apk
musl-utils 1.2.3-r4 apk libidn2 2.3.7-r0 apk
myclabs/deep-copy 1.11.0 php-composer libintl 0.22.5-r0 apk
nano 7.0-r0 apk libmd 1.1.0-r0 apk
ncurses-libs 6.3_p20221119-r0 apk libncursesw 6.4_p20240420-r2 apk
ncurses-terminfo-base 6.3_p20221119-r0 apk libpq 16.6-r0 apk
nesbot/carbon 2.63.0 php-composer libproc2 4.0.4-r0 apk
netcat-openbsd 1.130-r4 apk libpsl 0.21.5-r1 apk
nette/schema v1.2.3 php-composer libssl3 3.3.2-r1 apk
nette/utils v3.2.8 php-composer libstdc++ 13.2.1_git20240309-r0 apk
nghttp2-libs 1.51.0-r0 apk libunistring 1.2-r0 apk
nginx 1.22.1-r0 apk libuuid 2.40.1-r1 apk
nikic/php-parser v4.15.2 php-composer libxml2 2.12.7-r0 apk
nunomaduro/collision v5.11.0 php-composer libzip 1.10.1-r0 apk
oniguruma 6.9.8-r0 apk linux-pam 1.6.0-r0 apk
openssl 3.0.8-r3 apk logrotate 3.21.0-r1 apk
opis/closure 3.6.3 php-composer mockery/mockery 1.6.7 php-composer
pcre 8.45-r2 apk monolog/monolog 3.5.0 php-composer
pcre2 10.42-r0 apk mtdowling/jmespath.php 2.7.0 php-composer
phar-io/manifest 2.0.3 php-composer musl 1.2.5-r0 apk
phar-io/version 3.2.1 php-composer musl-utils 1.2.5-r0 apk
php-cli 8.1.17 binary myclabs/deep-copy 1.11.1 php-composer
php-fpm 8.1.17 binary nano 8.0-r0 apk
php-http/cache-plugin 1.7.5 php-composer ncurses-terminfo-base 6.4_p20240420-r2 apk
php-http/client-common 2.6.0 php-composer nesbot/carbon 2.72.3 php-composer
php-http/discovery 1.14.3 php-composer netcat-openbsd 1.226-r0 apk
php-http/httplug 2.3.0 php-composer nette/schema v1.3.0 php-composer
php-http/message 1.13.0 php-composer nette/utils v4.0.4 php-composer
php-http/message-factory v1.0.2 php-composer nghttp2-libs 1.62.1-r0 apk
php-http/multipart-stream-builder 1.2.0 php-composer nginx 1.26.2-r0 apk
php-http/promise 1.1.0 php-composer nikic/php-parser v5.0.0 php-composer
php81 8.1.17-r0 apk nunomaduro/collision v6.4.0 php-composer
php81-common 8.1.17-r0 apk nunomaduro/termwind v1.15.1 php-composer
php81-ctype 8.1.17-r0 apk oniguruma 6.9.9-r0 apk
php81-curl 8.1.17-r0 apk openssl 3.3.2-r1 apk
php81-fileinfo 8.1.17-r0 apk pcre 8.45-r3 apk
php81-fpm 8.1.17-r0 apk pcre2 10.43-r0 apk
php81-intl 8.1.17-r0 apk phar-io/manifest 2.0.3 php-composer
php81-mbstring 8.1.17-r0 apk phar-io/version 3.2.1 php-composer
php81-mysqlnd 8.1.17-r0 apk php-http/cache-plugin 1.8.1 php-composer
php81-openssl 8.1.17-r0 apk php-http/client-common 2.7.1 php-composer
php81-pdo 8.1.17-r0 apk php-http/discovery 1.19.2 php-composer
php81-pdo_mysql 8.1.17-r0 apk php-http/httplug 2.4.0 php-composer
php81-pdo_pgsql 8.1.17-r0 apk php-http/message 1.16.0 php-composer
php81-pdo_sqlite 8.1.17-r0 apk php-http/message-factory 1.1.0 php-composer
php81-session 8.1.17-r0 apk php-http/multipart-stream-builder 1.3.0 php-composer
php81-simplexml 8.1.17-r0 apk php-http/promise 1.3.0 php-composer
php81-tokenizer 8.1.17-r0 apk php83 8.3.15-r0 apk
php81-xml 8.1.17-r0 apk php83-common 8.3.15-r0 apk
php81-xmlwriter 8.1.17-r0 apk php83-ctype 8.3.15-r0 apk
php81-zip 8.1.17-r0 apk php83-curl 8.3.15-r0 apk
phpdocumentor/reflection-common 2.2.0 php-composer php83-dom 8.3.15-r0 apk
phpdocumentor/type-resolver 1.6.2 php-composer php83-fileinfo 8.3.15-r0 apk
phpoption/phpoption 1.9.0 php-composer php83-fpm 8.3.15-r0 apk
phpunit/php-code-coverage 9.2.19 php-composer php83-iconv 8.3.15-r0 apk
phpunit/php-file-iterator 3.0.6 php-composer php83-intl 8.3.15-r0 apk
phpunit/php-invoker 3.1.1 php-composer php83-mbstring 8.3.15-r0 apk
phpunit/php-text-template 2.0.4 php-composer php83-mysqlnd 8.3.15-r0 apk
phpunit/php-timer 5.0.3 php-composer php83-opcache 8.3.15-r0 apk
phpunit/phpunit 9.5.26 php-composer php83-openssl 8.3.15-r0 apk
popt 1.19-r0 apk php83-pdo 8.3.15-r0 apk
procps 3.3.17-r2 apk php83-pdo_mysql 8.3.15-r0 apk
psr/cache 1.0.1 php-composer php83-pdo_pgsql 8.3.15-r0 apk
psr/container 1.1.2 php-composer php83-pdo_sqlite 8.3.15-r0 apk
psr/event-dispatcher 1.0.0 php-composer php83-phar 8.3.15-r0 apk
psr/http-client 1.0.1 php-composer php83-session 8.3.15-r0 apk
psr/http-factory 1.0.1 php-composer php83-simplexml 8.3.15-r0 apk
psr/http-message 1.0.1 php-composer php83-tokenizer 8.3.15-r0 apk
psr/log 1.1.4 php-composer php83-xml 8.3.15-r0 apk
psr/simple-cache 1.0.1 php-composer php83-xmlwriter 8.3.15-r0 apk
psy/psysh v0.11.9 php-composer php83-zip 8.3.15-r0 apk
ralouphie/getallheaders 3.0.3 php-composer phpdocumentor/reflection-common 2.2.0 php-composer
ramsey/collection 1.2.2 php-composer phpdocumentor/type-resolver 1.8.0 php-composer
ramsey/uuid 4.2.3 php-composer phpoption/phpoption 1.9.2 php-composer
readline 8.2.0-r0 apk phpstan/phpdoc-parser 1.25.0 php-composer
scanelf 1.3.5-r1 apk phpunit/php-code-coverage 9.2.30 php-composer
sebastian/cli-parser 1.0.1 php-composer phpunit/php-file-iterator 3.0.6 php-composer
sebastian/code-unit 1.0.8 php-composer phpunit/php-invoker 3.1.1 php-composer
sebastian/code-unit-reverse-lookup 2.0.3 php-composer phpunit/php-text-template 2.0.4 php-composer
sebastian/comparator 4.0.8 php-composer phpunit/php-timer 5.0.3 php-composer
sebastian/complexity 2.0.2 php-composer phpunit/phpunit 9.6.16 php-composer
sebastian/diff 4.0.4 php-composer popt 1.19-r3 apk
sebastian/environment 5.1.4 php-composer procps-ng 4.0.4-r0 apk
sebastian/exporter 4.0.5 php-composer psr/cache 3.0.0 php-composer
sebastian/global-state 5.0.5 php-composer psr/clock 1.0.0 php-composer
sebastian/lines-of-code 1.0.3 php-composer psr/container 2.0.2 php-composer
sebastian/object-enumerator 4.0.4 php-composer psr/event-dispatcher 1.0.0 php-composer
sebastian/object-reflector 2.0.4 php-composer psr/http-client 1.0.3 php-composer
sebastian/recursion-context 4.0.4 php-composer psr/http-factory 1.0.2 php-composer
sebastian/resource-operations 3.0.3 php-composer psr/http-message 2.0 php-composer
sebastian/type 3.2.0 php-composer psr/log 3.0.0 php-composer
sebastian/version 3.0.2 php-composer psr/simple-cache 3.0.0 php-composer
shadow 4.13-r0 apk psy/psysh v0.12.0 php-composer
skalibs 2.12.0.1-r0 apk ralouphie/getallheaders 3.0.3 php-composer
sqlite-libs 3.40.1-r0 apk ramsey/collection 2.0.0 php-composer
squizlabs/php_codesniffer 3.7.1 php-composer ramsey/uuid 4.7.5 php-composer
ssl_client 1.35.0-r29 apk readline 8.2.10-r0 apk
swiftmailer/swiftmailer v6.3.0 php-composer scanelf 1.3.7-r2 apk
symfony/cache v5.4.15 php-composer sebastian/cli-parser 1.0.1 php-composer
symfony/cache-contracts v2.5.2 php-composer sebastian/code-unit 1.0.8 php-composer
symfony/console v5.4.15 php-composer sebastian/code-unit-reverse-lookup 2.0.3 php-composer
symfony/css-selector v5.4.11 php-composer sebastian/comparator 4.0.8 php-composer
symfony/deprecation-contracts v2.5.2 php-composer sebastian/complexity 2.0.3 php-composer
symfony/error-handler v5.4.15 php-composer sebastian/diff 4.0.5 php-composer
symfony/event-dispatcher v5.4.9 php-composer sebastian/environment 5.1.5 php-composer
symfony/event-dispatcher-contracts v2.5.2 php-composer sebastian/exporter 4.0.5 php-composer
symfony/finder v5.4.11 php-composer sebastian/global-state 5.0.6 php-composer
symfony/http-foundation v5.4.15 php-composer sebastian/lines-of-code 1.0.4 php-composer
symfony/http-kernel v5.4.15 php-composer sebastian/object-enumerator 4.0.4 php-composer
symfony/mime v5.4.14 php-composer sebastian/object-reflector 2.0.4 php-composer
symfony/options-resolver v5.4.11 php-composer sebastian/recursion-context 4.0.5 php-composer
symfony/polyfill-ctype v1.27.0 php-composer sebastian/resource-operations 3.0.3 php-composer
symfony/polyfill-iconv v1.27.0 php-composer sebastian/type 3.2.1 php-composer
symfony/polyfill-intl-grapheme v1.27.0 php-composer sebastian/version 3.0.2 php-composer
symfony/polyfill-intl-idn v1.27.0 php-composer shadow 4.15.1-r0 apk
symfony/polyfill-intl-normalizer v1.27.0 php-composer skalibs 2.14.1.1-r0 apk
symfony/polyfill-mbstring v1.27.0 php-composer spatie/backtrace 1.5.3 php-composer
symfony/polyfill-php72 v1.27.0 php-composer spatie/flare-client-php 1.4.4 php-composer
symfony/polyfill-php73 v1.27.0 php-composer spatie/ignition 1.12.0 php-composer
symfony/polyfill-php80 v1.27.0 php-composer spatie/laravel-ignition 2.4.2 php-composer
symfony/polyfill-php81 v1.27.0 php-composer sqlite-libs 3.45.3-r1 apk
symfony/process v5.4.11 php-composer squizlabs/php_codesniffer 3.9.0 php-composer
symfony/routing v5.4.15 php-composer ssl_client 1.36.1-r29 apk
symfony/service-contracts v2.5.2 php-composer symfony/cache v6.4.3 php-composer
symfony/string v5.4.15 php-composer symfony/cache-contracts v3.4.0 php-composer
symfony/thanks v1.2.10 php-composer symfony/console v6.4.3 php-composer
symfony/translation v5.4.14 php-composer symfony/css-selector v7.0.3 php-composer
symfony/translation-contracts v2.5.2 php-composer symfony/deprecation-contracts v3.4.0 php-composer
symfony/var-dumper v5.4.14 php-composer symfony/error-handler v6.4.3 php-composer
symfony/var-exporter v5.4.10 php-composer symfony/event-dispatcher v7.0.3 php-composer
symfony/yaml v5.4.14 php-composer symfony/event-dispatcher-contracts v3.4.0 php-composer
theseer/tokenizer 1.2.1 php-composer symfony/finder v6.4.0 php-composer
tijsverkoyen/css-to-inline-styles 2.2.5 php-composer symfony/http-foundation v6.4.3 php-composer
tzdata 2023b-r1 apk symfony/http-kernel v6.4.3 php-composer
utmps-libs 0.1.2.0-r1 apk symfony/mailer v6.4.3 php-composer
vlucas/phpdotenv v5.5.0 php-composer symfony/mime v6.4.3 php-composer
voku/portable-ascii 1.6.1 php-composer symfony/options-resolver v7.0.0 php-composer
webmozart/assert 1.11.0 php-composer symfony/polyfill-ctype v1.29.0 php-composer
xz 5.2.9-r0 apk symfony/polyfill-intl-grapheme v1.29.0 php-composer
xz-libs 5.2.9-r0 apk symfony/polyfill-intl-idn v1.29.0 php-composer
zlib 1.2.13-r0 apk symfony/polyfill-intl-normalizer v1.29.0 php-composer
zstd-libs 1.5.2-r9 apk symfony/polyfill-mbstring v1.29.0 php-composer
symfony/polyfill-php72 v1.29.0 php-composer
symfony/polyfill-php80 v1.29.0 php-composer
symfony/polyfill-php83 v1.29.0 php-composer
symfony/polyfill-uuid v1.29.0 php-composer
symfony/process v6.4.3 php-composer
symfony/routing v6.4.3 php-composer
symfony/service-contracts v3.4.1 php-composer
symfony/string v7.0.3 php-composer
symfony/thanks v1.2.10 php-composer
symfony/translation v6.4.3 php-composer
symfony/translation-contracts v3.4.1 php-composer
symfony/uid v6.4.3 php-composer
symfony/var-dumper v6.4.3 php-composer
symfony/var-exporter v7.0.3 php-composer
symfony/yaml v6.4.3 php-composer
theseer/tokenizer 1.2.2 php-composer
tijsverkoyen/css-to-inline-styles v2.2.7 php-composer
tzdata 2024b-r0 apk
utmps-libs 0.1.2.2-r1 apk
vlucas/phpdotenv v5.6.0 php-composer
voku/portable-ascii 2.0.1 php-composer
webmozart/assert 1.11.0 php-composer
xz-libs 5.6.2-r0 apk
zlib 1.3.1-r1 apk
zstd-libs 1.5.6-r0 apk

View File

@@ -11,73 +11,117 @@ project_blurb: |
Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo. Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo.
project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}" project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}"
# supported architectures # supported architectures
available_architectures: available_architectures:
- { arch: "{{ arch_x86_64 }}", tag: "amd64-latest"} - {arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
- { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"} - {arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
- { arch: "{{ arch_armhf }}", tag: "arm32v7-latest"}
# development version # development version
development_versions: true development_versions: true
development_versions_items: development_versions_items:
- { tag: "latest", desc: "Stable Heimdall releases." } - {tag: "latest", desc: "Stable Heimdall releases."}
- { tag: "development", desc: "Latest commit from the github 2.x branch." } - {tag: "development", desc: "Latest commit from the github 2.x branch."}
# container parameters # container parameters
common_param_env_vars_enabled: true common_param_env_vars_enabled: true
param_container_name: "{{ project_name }}" param_container_name: "{{ project_name }}"
param_usage_include_vols: true param_usage_include_vols: true
param_volumes: param_volumes:
- { vol_path: "/config", vol_host_path: "/path/to/appdata/config", desc: "Contains all relevant configuration files." } - {vol_path: "/config", vol_host_path: "/path/to/{{ project_name }}/config", desc: "Persistent config files"}
param_usage_include_ports: true 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"}
param_usage_include_env: true
param_env_vars:
- { env_var: "TZ", env_value: "Europe/London", desc: "Specify a timezone to use EG Europe/London"}
# optional parameters
optional_block_1: false
optional_block_1_items:
- |
Using tags, you can switch between the stable releases of Heimdall and the master branch. No tag is required for the latest stable release.
Add the development tag, if required, to the linuxserver/heimdall line of the run/create command in the following format, linuxserver/heimdall:development
The development tag will be the latest commit in the master branch of Heimdall.
HOWEVER , USE THE DEVELOPMENT TAG AT YOUR OWN PERIL !!!!!!!!!
# application setup block # application setup block
app_setup_block_enabled: true app_setup_block_enabled: true
app_setup_block: | app_setup_block: |
Access the web gui at http://SERVERIP:PORT Access the web gui at http://SERVERIP:PORT
### Adding password protection ### Adding password protection
This image now supports password protection through htpasswd. Run the following command on your host to generate the htpasswd file `docker exec -it heimdall htpasswd -c /config/nginx/.htpasswd <username>`. Replace <username> with a username of your choice and you will be asked to enter a password. Uncomment the `basic auth` lines in `/config/nginx/site-confs/default.conf` and restart the container.
This image now supports password protection through htpasswd. Run the following command on your host to generate the htpasswd file `docker exec -it heimdall htpasswd -c /config/nginx/.htpasswd <username>`. Replace <username> with a username of your choice and you will be asked to enter a password. Uncomment the `basic auth` lines in `/config/nginx/site-confs/default.conf` and restart the container.
# init diagram
init_diagram: |
"heimdall:development": {
docker-mods
base {
fix-attr +\nlegacy cont-init
}
docker-mods -> base
legacy-services
custom services
init-services -> legacy-services
init-services -> custom services
custom services -> legacy-services
legacy-services -> ci-service-check
init-migrations -> init-adduser
init-nginx-end -> init-config
init-os-end -> init-config
init-config -> init-config-end
init-heimdall-config -> init-config-end
init-os-end -> init-crontab-config
init-mods-end -> init-custom-files
base -> init-envfile
init-os-end -> init-folders
init-nginx-end -> init-heimdall-config
init-php -> init-keygen
base -> init-migrations
base -> 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 -> init-mods-package-install
init-samples -> init-nginx
init-permissions -> init-nginx-end
base -> init-os-end
init-adduser -> init-os-end
init-envfile -> init-os-end
init-migrations -> init-os-end
init-keygen -> init-permissions
init-nginx -> init-php
init-folders -> init-samples
init-custom-files -> init-services
init-mods-end -> init-services
init-config-end -> init-version-checks
init-services -> svc-cron
svc-cron -> legacy-services
init-services -> svc-nginx
svc-nginx -> legacy-services
init-services -> svc-php-fpm
svc-php-fpm -> legacy-services
init-services -> svc-queue
svc-queue -> legacy-services
}
Base Images: {
"baseimage-alpine-nginx:3.20" <- "baseimage-alpine:3.20"
}
"heimdall:development" <- Base Images
# changelog # changelog
changelogs: changelogs:
- { date: "20.01.23:", desc: "Rebase to alpine 3.17 with php8.1." } - {date: "27.06.24:", desc: "Rebase to Alpine 3.20. Existing users should update their nginx confs to avoid http2 deprecation warnings."}
- { date: "14.11.22:", desc: "Rebasing to alpine 3.15 with php8. Restructure nginx configs ([see changes announcement](https://info.linuxserver.io/issues/2022-08-20-nginx-base))." } - {date: "07.03.24:", desc: "Enable the opcache and disable file revalidation."}
- { date: "04.11.22:", desc: "Build commits to upstream branch 2.x." } - {date: "06.03.24:", desc: "Existing users should update: site-confs/default.conf - Cleanup default site conf."}
- { date: "13.03.21:", desc: "Make searchproviders.yaml user configurable." } - {date: "23.12.23:", desc: "Rebase to Alpine 3.19 with php 8.3."}
- { date: "11.03.21:", desc: "Rebase to alpine 3.14." } - {date: "25.05.23:", desc: "Rebase to Alpine 3.18, deprecate armhf."}
- { date: "10.02.21:", desc: "Revert to alpine 3.12 as php 7.4 broke laravel." } - {date: "13.04.23:", desc: "Move ssl.conf include to default.conf."}
- { date: "10.02.21:", desc: "Rebasing to alpine 3.13." } - {date: "20.01.23:", desc: "Rebase to alpine 3.17 with php8.1."}
- { date: "01.06.20:", desc: "Rebasing to alpine 3.12." } - {date: "14.11.22:", desc: "Rebasing to alpine 3.15 with php8. Restructure nginx configs ([see changes announcement](https://info.linuxserver.io/issues/2022-08-20-nginx-base))."}
- { date: "19.12.19:", desc: "Rebasing to alpine 3.11." } - {date: "04.11.22:", desc: "Build commits to upstream branch 2.x."}
- { date: "15.07.19:", desc: "Save laravel.log to /config, install heimdall during first start." } - {date: "13.03.21:", desc: "Make searchproviders.yaml user configurable."}
- { date: "28.06.19:", desc: "Rebasing to alpine 3.10." } - {date: "11.03.21:", desc: "Rebase to alpine 3.14."}
- { date: "23.03.19:", desc: "Switching to new Base images, shift to arm32v7 tag." } - {date: "10.02.21:", desc: "Revert to alpine 3.12 as php 7.4 broke laravel."}
- { date: "22.02.19:", desc: "Rebasing to alpine 3.9." } - {date: "10.02.21:", desc: "Rebasing to alpine 3.13."}
- { date: "04.11.18:", desc: "Add php7-zip." } - {date: "01.06.20:", desc: "Rebasing to alpine 3.12."}
- { date: "31.10.18:", desc: "Add queue service." } - {date: "19.12.19:", desc: "Rebasing to alpine 3.11."}
- { date: "17.10.18:", desc: "Symlink avatars folder." } - {date: "15.07.19:", desc: "Save laravel.log to /config, install heimdall during first start."}
- { date: "16.10.18:", desc: "Updated fastcgi_params for user login support." } - {date: "28.06.19:", desc: "Rebasing to alpine 3.10."}
- { date: "07.10.18:", desc: "Symlink `.env` rather than copy. It now resides under `/config/www`" } - {date: "23.03.19:", desc: "Switching to new Base images, shift to arm32v7 tag."}
- { date: "30.09.18:", desc: "Multi-arch image. Move `.env` to `/config`." } - {date: "22.02.19:", desc: "Rebasing to alpine 3.9."}
- { date: "05.09.18:", desc: "Rebase to alpine linux 3.8." } - {date: "04.11.18:", desc: "Add php7-zip."}
- { date: "06.03.18:", desc: "Use password protection if htpasswd is set. Existing users can delete their default site config at /config/nginx/site-confs/default.conf and restart the container, a new default site config with htpasswd support will be created in its place" } - {date: "31.10.18:", desc: "Add queue service."}
- { date: "12.02.18:", desc: "Initial Release." } - {date: "17.10.18:", desc: "Symlink avatars folder."}
- {date: "16.10.18:", desc: "Updated fastcgi_params for user login support."}
- {date: "07.10.18:", desc: "Symlink `.env` rather than copy. It now resides under `/config/www`"}
- {date: "30.09.18:", desc: "Multi-arch image. Move `.env` to `/config`."}
- {date: "05.09.18:", desc: "Rebase to alpine linux 3.8."}
- {date: "06.03.18:", desc: "Use password protection if htpasswd is set. Existing users can delete their default site config at /config/nginx/site-confs/default.conf and restart the container, a new default site config with htpasswd support will be created in its place"}
- {date: "12.02.18:", desc: "Initial Release."}

View File

@@ -1,34 +0,0 @@
## Version 2022/11/14 - Changelog: https://github.com/linuxserver/docker-heimdall/commits/master/root/defaults/nginx/site-confs/default.conf.sample
server {
listen 80 default_server;
listen [::]:80 default_server;
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name _;
root /app/www/public;
index index.html index.htm index.php;
location / {
# enable for basic auth
#auth_basic "Restricted";
#auth_basic_user_file /config/nginx/.htpasswd;
try_files $uri $uri/ /index.html /index.php$is_args$args;
}
location ~ ^(.+\.php)(.*)$ {
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
# deny access to .htaccess/.htpasswd files
location ~ /\.ht {
deny all;
}
}

View File

@@ -1,4 +1,5 @@
#!/usr/bin/with-contenv bash #!/usr/bin/with-contenv bash
# shellcheck shell=bash
exec \ exec \
s6-setuidgid abc php /app/www/artisan queue:work database --sleep=3 --tries=3 s6-setuidgid abc php /app/www/artisan queue:work database --sleep=3 --tries=3

3
root/migrations/02-default-location Normal file → Executable file
View File

@@ -1,10 +1,11 @@
#!/usr/bin/with-contenv bash #!/usr/bin/with-contenv bash
# shellcheck shell=bash
DEFAULT_CONF="/config/nginx/site-confs/default.conf" DEFAULT_CONF="/config/nginx/site-confs/default.conf"
OLD_ROOT="root /var/www/localhost/heimdall/public;" OLD_ROOT="root /var/www/localhost/heimdall/public;"
NEW_ROOT="root /app/www/public;" NEW_ROOT="root /app/www/public;"
if grep -q "${OLD_ROOT}" "${DEFAULT_CONF}" 2>/dev/null; then if [[ -f "${DEFAULT_CONF}" ]] && grep -q "${OLD_ROOT}" "${DEFAULT_CONF}" 2>/dev/null; then
echo "updating root in ${DEFAULT_CONF}" echo "updating root in ${DEFAULT_CONF}"
sed -i "s|${OLD_ROOT}|${NEW_ROOT}|" "${DEFAULT_CONF}" sed -i "s|${OLD_ROOT}|${NEW_ROOT}|" "${DEFAULT_CONF}"
fi fi