Compare commits
15 Commits
5.0.0-r2-l
...
5.0.3-r0-l
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b6f4c2c2ae | ||
|
|
771d61a5d6 | ||
|
|
bd4cee6e36 | ||
|
|
7c74f95173 | ||
|
|
803acb713c | ||
|
|
c2134670e6 | ||
|
|
4cb4668b2d | ||
|
|
84a6c72d65 | ||
|
|
56b84f7735 | ||
|
|
4535a9f1d8 | ||
|
|
e10e37f0a7 | ||
|
|
30ccc1c2a0 | ||
|
|
938bb587d7 | ||
|
|
67e8286cfe | ||
|
|
24d1630688 |
4
.github/CONTRIBUTING.md
vendored
4
.github/CONTRIBUTING.md
vendored
@@ -105,10 +105,10 @@ docker build \
|
||||
-t linuxserver/qbittorrent: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
|
||||
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`.
|
||||
|
||||
31
.github/workflows/external_trigger.yml
vendored
31
.github/workflows/external_trigger.yml
vendored
@@ -46,14 +46,33 @@ jobs:
|
||||
| jq -r '.token')
|
||||
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}" \
|
||||
| jq -r 'first(.manifests[].digest)')
|
||||
digest=$(curl -s \
|
||||
"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.oci.image.manifest.v1+json" \
|
||||
--header "Authorization: Bearer ${token}" \
|
||||
"https://ghcr.io/v2/${image}/manifests/${multidigest}" \
|
||||
| jq -r '.config.digest')
|
||||
"https://ghcr.io/v2/${image}/manifests/${multidigest}"); then
|
||||
digest=$(jq -r '.config.digest' <<< "${digest}");
|
||||
fi
|
||||
fi
|
||||
image_info=$(curl -sL \
|
||||
--header "Authorization: Bearer ${token}" \
|
||||
"https://ghcr.io/v2/${image}/blobs/${digest}")
|
||||
@@ -98,7 +117,7 @@ jobs:
|
||||
else
|
||||
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
|
||||
if "${artifacts_found}" == "true" ]]; then
|
||||
if [[ "${artifacts_found}" == "true" ]]; then
|
||||
echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY
|
||||
fi
|
||||
response=$(curl -iX POST \
|
||||
|
||||
32
.github/workflows/package_trigger_scheduler.yml
vendored
32
.github/workflows/package_trigger_scheduler.yml
vendored
@@ -27,9 +27,18 @@ jobs:
|
||||
fi
|
||||
printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY
|
||||
JENKINS_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-qbittorrent/${br}/jenkins-vars.yml)
|
||||
if [[ "${br}" == $(yq -r '.ls_branch' <<< "${JENKINS_VARS}") ]]; then
|
||||
if ! curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-qbittorrent/${br}/Jenkinsfile >/dev/null 2>&1; then
|
||||
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||
echo "> No Jenkinsfile found. Branch is either deprecated or is an early dev branch." >> $GITHUB_STEP_SUMMARY
|
||||
skipped_branches="${skipped_branches}${br} "
|
||||
elif [[ "${br}" == $(yq -r '.ls_branch' <<< "${JENKINS_VARS}") ]]; then
|
||||
echo "Branch appears to be live; checking workflow." >> $GITHUB_STEP_SUMMARY
|
||||
if [[ $(yq -r '.skip_package_check' <<< "${JENKINS_VARS}") == "true" ]]; then
|
||||
README_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-qbittorrent/${br}/readme-vars.yml)
|
||||
if [[ $(yq -r '.project_deprecation_status' <<< "${README_VARS}") == "true" ]]; then
|
||||
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} "
|
||||
@@ -37,7 +46,7 @@ jobs:
|
||||
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||
echo "> Github organizational variable \`SKIP_PACKAGE_TRIGGER\` contains \`qbittorrent_${br}\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
|
||||
skipped_branches="${skipped_branches}${br} "
|
||||
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-qbittorrent/job/${br}/lastBuild/api/json | jq -r '.building') == "true" ]; then
|
||||
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-qbittorrent/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} "
|
||||
@@ -49,6 +58,11 @@ jobs:
|
||||
response=$(curl -iX POST \
|
||||
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-qbittorrent/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
|
||||
@@ -56,11 +70,14 @@ jobs:
|
||||
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 \
|
||||
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"
|
||||
--data-urlencode "Submit=Submit"; then
|
||||
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||
echo "> Unable to change the Jenkins job description."
|
||||
fi
|
||||
sleep 20
|
||||
fi
|
||||
else
|
||||
@@ -70,13 +87,14 @@ jobs:
|
||||
if [[ -n "${triggered_branches}" ]] || [[ -n "${skipped_branches}" ]]; then
|
||||
if [[ -n "${triggered_branches}" ]]; then
|
||||
NOTIFY_BRANCHES="**Triggered:** ${triggered_branches} \n"
|
||||
NOTIFY_BUILD_URL="**Build URL:** https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-qbittorrent/activity/ \n"
|
||||
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 "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****"
|
||||
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) Triggered for qbittorrent** \n'"${NOTIFY_BRANCHES}"'**Build URL:** '"https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-qbittorrent/activity/"' \n"}],
|
||||
"description": "**Package Check Build(s) for qbittorrent** \n'"${NOTIFY_BRANCHES}"''"${NOTIFY_BUILD_URL}"'"}],
|
||||
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
|
||||
fi
|
||||
|
||||
226
Jenkinsfile
vendored
226
Jenkinsfile
vendored
@@ -195,6 +195,7 @@ pipeline {
|
||||
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
env.EXT_RELEASE_TAG = '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'
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -219,6 +220,7 @@ pipeline {
|
||||
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
||||
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
|
||||
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'
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -243,6 +245,7 @@ pipeline {
|
||||
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
|
||||
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.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'
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -339,6 +342,35 @@ pipeline {
|
||||
else
|
||||
echo "No templates to delete"
|
||||
fi
|
||||
echo "Starting Stage 2.5 - Update init diagram"
|
||||
if ! grep -q 'init_diagram:' readme-vars.yml; then
|
||||
echo "Adding the key 'init_diagram' to readme-vars.yml"
|
||||
sed -i '\\|^#.*changelog.*$|d' readme-vars.yml
|
||||
sed -i 's|^changelogs:|# init diagram\\ninit_diagram:\\n\\n# changelog\\nchangelogs:|' readme-vars.yml
|
||||
fi
|
||||
mkdir -p ${TEMPDIR}/d2
|
||||
docker run --rm -v ${TEMPDIR}/d2:/output -e PUID=$(id -u) -e PGID=$(id -g) -e RAW="true" ghcr.io/linuxserver/d2-builder:latest ${CONTAINER_NAME}:latest
|
||||
ls -al ${TEMPDIR}/d2
|
||||
yq -ei ".init_diagram |= load_str(\\"${TEMPDIR}/d2/${CONTAINER_NAME}-latest.d2\\")" readme-vars.yml
|
||||
if [[ $(md5sum readme-vars.yml | cut -c1-8) != $(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/readme-vars.yml | cut -c1-8) ]]; then
|
||||
echo "'init_diagram' has been updated. Updating repo and exiting build, new one will trigger based on commit."
|
||||
mkdir -p ${TEMPDIR}/repo
|
||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
||||
cd ${TEMPDIR}/repo/${LS_REPO}
|
||||
git checkout -f master
|
||||
cp ${WORKSPACE}/readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/readme-vars.yml
|
||||
git add readme-vars.yml
|
||||
git commit -m 'Bot Updating Templated Files'
|
||||
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
|
||||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
|
||||
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
echo "Updating templates and exiting build, new one will trigger based on commit"
|
||||
rm -Rf ${TEMPDIR}
|
||||
exit 0
|
||||
else
|
||||
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
echo "Init diagram is unchanged"
|
||||
fi
|
||||
echo "Starting Stage 3 - Update templates"
|
||||
CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
|
||||
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
|
||||
@@ -547,8 +579,42 @@ pipeline {
|
||||
--label \"org.opencontainers.image.title=Qbittorrent\" \
|
||||
--label \"org.opencontainers.image.description=The [Qbittorrent](https://www.qbittorrent.org/) project aims to provide an open-source software alternative to µTorrent. qBittorrent is based on the Qt toolkit and libtorrent-rasterbar library.\" \
|
||||
--no-cache --pull -t ${IMAGE}:${META_TAG} --platform=linux/amd64 \
|
||||
--provenance=false --sbom=false \
|
||||
--provenance=true --sbom=true --builder=container --load \
|
||||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
|
||||
for i in "${CACHE[@]}"; do
|
||||
docker tag ${IMAGE}:${META_TAG} ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
done
|
||||
'''
|
||||
withCredentials([
|
||||
[
|
||||
$class: 'UsernamePasswordMultiBinding',
|
||||
credentialsId: 'Quay.io-Robot',
|
||||
usernameVariable: 'QUAYUSER',
|
||||
passwordVariable: 'QUAYPASS'
|
||||
]
|
||||
]) {
|
||||
retry_backoff(5,5) {
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --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 $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
|
||||
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
|
||||
for i in "${CACHE[@]}"; do
|
||||
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
|
||||
done
|
||||
for p in $(jobs -p); do
|
||||
wait "$p" || { echo "job $p failed" >&2; exit 1; }
|
||||
done
|
||||
fi
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Build MultiArch Docker containers for push to LS Repo
|
||||
@@ -579,8 +645,42 @@ pipeline {
|
||||
--label \"org.opencontainers.image.title=Qbittorrent\" \
|
||||
--label \"org.opencontainers.image.description=The [Qbittorrent](https://www.qbittorrent.org/) project aims to provide an open-source software alternative to µTorrent. qBittorrent is based on the Qt toolkit and libtorrent-rasterbar library.\" \
|
||||
--no-cache --pull -t ${IMAGE}:amd64-${META_TAG} --platform=linux/amd64 \
|
||||
--provenance=false --sbom=false \
|
||||
--provenance=true --sbom=true --builder=container --load \
|
||||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
|
||||
for i in "${CACHE[@]}"; do
|
||||
docker tag ${IMAGE}:amd64-${META_TAG} ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
done
|
||||
'''
|
||||
withCredentials([
|
||||
[
|
||||
$class: 'UsernamePasswordMultiBinding',
|
||||
credentialsId: 'Quay.io-Robot',
|
||||
usernameVariable: 'QUAYUSER',
|
||||
passwordVariable: 'QUAYPASS'
|
||||
]
|
||||
]) {
|
||||
retry_backoff(5,5) {
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --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 $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
|
||||
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
|
||||
for i in "${CACHE[@]}"; do
|
||||
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
|
||||
done
|
||||
for p in $(jobs -p); do
|
||||
wait "$p" || { echo "job $p failed" >&2; exit 1; }
|
||||
done
|
||||
fi
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Build ARM64') {
|
||||
@@ -589,10 +689,6 @@ pipeline {
|
||||
}
|
||||
steps {
|
||||
echo "Running on node: ${NODE_NAME}"
|
||||
echo 'Logging into Github'
|
||||
sh '''#! /bin/bash
|
||||
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
||||
'''
|
||||
sh "sed -r -i 's|(^FROM .*)|\\1\\n\\nENV LSIO_FIRST_PARTY=true|g' Dockerfile.aarch64"
|
||||
sh "docker buildx build \
|
||||
--label \"org.opencontainers.image.created=${GITHUB_DATE}\" \
|
||||
@@ -608,18 +704,49 @@ pipeline {
|
||||
--label \"org.opencontainers.image.title=Qbittorrent\" \
|
||||
--label \"org.opencontainers.image.description=The [Qbittorrent](https://www.qbittorrent.org/) project aims to provide an open-source software alternative to µTorrent. qBittorrent is based on the Qt toolkit and libtorrent-rasterbar library.\" \
|
||||
--no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} --platform=linux/arm64 \
|
||||
--provenance=false --sbom=false \
|
||||
--provenance=true --sbom=true --builder=container --load \
|
||||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
||||
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
|
||||
for i in "${CACHE[@]}"; do
|
||||
docker tag ${IMAGE}:arm64v8-${META_TAG} ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
done
|
||||
'''
|
||||
withCredentials([
|
||||
[
|
||||
$class: 'UsernamePasswordMultiBinding',
|
||||
credentialsId: 'Quay.io-Robot',
|
||||
usernameVariable: 'QUAYUSER',
|
||||
passwordVariable: 'QUAYPASS'
|
||||
]
|
||||
]) {
|
||||
retry_backoff(5,5) {
|
||||
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --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 $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
|
||||
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
|
||||
for i in "${CACHE[@]}"; do
|
||||
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
|
||||
done
|
||||
for p in $(jobs -p); do
|
||||
wait "$p" || { echo "job $p failed" >&2; exit 1; }
|
||||
done
|
||||
fi
|
||||
'''
|
||||
}
|
||||
}
|
||||
sh '''#! /bin/bash
|
||||
containers=$(docker ps -aq)
|
||||
if [[ -n "${containers}" ]]; then
|
||||
docker stop ${containers}
|
||||
fi
|
||||
docker system prune -af --volumes || : '''
|
||||
docker system prune -af --volumes || :
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -769,40 +896,26 @@ pipeline {
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
}
|
||||
steps {
|
||||
withCredentials([
|
||||
[
|
||||
$class: 'UsernamePasswordMultiBinding',
|
||||
credentialsId: 'Quay.io-Robot',
|
||||
usernameVariable: 'QUAYUSER',
|
||||
passwordVariable: 'QUAYPASS'
|
||||
]
|
||||
]) {
|
||||
retry_backoff(5,5) {
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --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 $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
|
||||
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
|
||||
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:latest
|
||||
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER}
|
||||
for PUSHIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
|
||||
[[ ${PUSHIMAGE%%/*} =~ \\. ]] && PUSHIMAGEPLUS="${PUSHIMAGE}" || PUSHIMAGEPLUS="docker.io/${PUSHIMAGE}"
|
||||
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
|
||||
for i in "${CACHE[@]}"; do
|
||||
if [[ "${PUSHIMAGEPLUS}" == "$(cut -d "/" -f1 <<< ${i})"* ]]; then
|
||||
CACHEIMAGE=${i}
|
||||
fi
|
||||
docker push ${PUSHIMAGE}:latest
|
||||
docker push ${PUSHIMAGE}:${META_TAG}
|
||||
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
|
||||
done
|
||||
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:latest -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker push ${PUSHIMAGE}:${SEMVER}
|
||||
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
fi
|
||||
done
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// If this is a multi arch release push all images and define the manifest
|
||||
stage('Docker-Push-Multi') {
|
||||
when {
|
||||
@@ -810,50 +923,28 @@ pipeline {
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
}
|
||||
steps {
|
||||
withCredentials([
|
||||
[
|
||||
$class: 'UsernamePasswordMultiBinding',
|
||||
credentialsId: 'Quay.io-Robot',
|
||||
usernameVariable: 'QUAYUSER',
|
||||
passwordVariable: 'QUAYPASS'
|
||||
]
|
||||
]) {
|
||||
retry_backoff(5,5) {
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --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 $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||
if [ "${CI}" == "false" ]; then
|
||||
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}
|
||||
fi
|
||||
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
|
||||
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
|
||||
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-latest
|
||||
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
|
||||
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
||||
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-latest
|
||||
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
|
||||
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
|
||||
[[ ${MANIFESTIMAGE%%/*} =~ \\. ]] && MANIFESTIMAGEPLUS="${MANIFESTIMAGE}" || MANIFESTIMAGEPLUS="docker.io/${MANIFESTIMAGE}"
|
||||
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
|
||||
for i in "${CACHE[@]}"; do
|
||||
if [[ "${MANIFESTIMAGEPLUS}" == "$(cut -d "/" -f1 <<< ${i})"* ]]; then
|
||||
CACHEIMAGE=${i}
|
||||
fi
|
||||
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
|
||||
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
|
||||
docker push ${MANIFESTIMAGE}:amd64-latest
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-latest
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
||||
done
|
||||
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-latest -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-latest -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
|
||||
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}
|
||||
fi
|
||||
done
|
||||
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
|
||||
docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest
|
||||
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 [ -n "${SEMVER}" ]; then
|
||||
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
|
||||
@@ -863,7 +954,6 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// If this is a public release tag it in the LS Github
|
||||
stage('Github-Tag-Push-Release') {
|
||||
when {
|
||||
@@ -888,7 +978,7 @@ pipeline {
|
||||
echo '{"tag_name":"'${META_TAG}'",\
|
||||
"target_commitish": "master",\
|
||||
"name": "'${META_TAG}'",\
|
||||
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Repo Changes:**\\n\\n' > start
|
||||
"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
|
||||
printf '","draft": false,"prerelease": false}' >> 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'''
|
||||
|
||||
13
README.md
13
README.md
@@ -94,6 +94,9 @@ This image can be run with a read-only container filesystem. For details please
|
||||
|
||||
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))
|
||||
|
||||
```yaml
|
||||
@@ -143,9 +146,9 @@ Containers are configured using parameters passed at runtime (such as those abov
|
||||
|
||||
| Parameter | Function |
|
||||
| :----: | --- |
|
||||
| `-p 8080` | WebUI |
|
||||
| `-p 6881` | tcp connection port |
|
||||
| `-p 6881/udp` | udp connection port |
|
||||
| `-p 8080:8080` | WebUI |
|
||||
| `-p 6881:6881` | tcp connection port |
|
||||
| `-p 6881:6881/udp` | udp connection port |
|
||||
| `-e PUID=1000` | for UserID - see below for explanation |
|
||||
| `-e PGID=1000` | for GroupID - see below for explanation |
|
||||
| `-e TZ=Etc/UTC` | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List). |
|
||||
@@ -307,10 +310,10 @@ docker build \
|
||||
-t lscr.io/linuxserver/qbittorrent: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
|
||||
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`.
|
||||
|
||||
@@ -1,261 +1,261 @@
|
||||
NAME VERSION TYPE
|
||||
7zip 23.01-r0 apk
|
||||
7zip 24.08-r0 apk
|
||||
Alba.CsConsoleFormat 1.0.0.89 dotnet
|
||||
BencodeNET 2.3.0.0 dotnet
|
||||
Bouncy Castle for .NET (netstandard2.0) 1.8.8.2 dotnet
|
||||
CommandLineUtils 2.4.4+3c2a4909757a51602dcca9b961d577511b85fd31.3c2a4909757a51602dcca9b961d577511b85fd31 dotnet
|
||||
CsvHelper 12.1.2 dotnet
|
||||
Json.NET 13.0.3.27908 dotnet
|
||||
Microsoft.CSharp 6.0.3024.21525 dotnet
|
||||
Microsoft.VisualBasic 6.0.3024.21525 dotnet
|
||||
Microsoft.VisualBasic.Core 11.100.3024.21525 dotnet
|
||||
Microsoft.Win32.Primitives 6.0.3024.21525 dotnet
|
||||
Microsoft.Win32.Registry 6.0.3024.21525 dotnet
|
||||
Microsoft.CSharp 6.0.3524.45918 dotnet
|
||||
Microsoft.VisualBasic 6.0.3524.45918 dotnet
|
||||
Microsoft.VisualBasic.Core 11.100.3524.45918 dotnet
|
||||
Microsoft.Win32.Primitives 6.0.3524.45918 dotnet
|
||||
Microsoft.Win32.Registry 6.0.3524.45918 dotnet
|
||||
Mono.Posix.NETStandard 1.0.0.0 dotnet
|
||||
NJsonSchema 9.14.1.0 dotnet
|
||||
Portable.Xaml.dll 0.18.0.0 dotnet
|
||||
QBittorrent.Client 1.9.23349.1 dotnet
|
||||
System 6.0.3024.21525 dotnet
|
||||
System.AppContext 6.0.3024.21525 dotnet
|
||||
System.Buffers 6.0.3024.21525 dotnet
|
||||
System.Collections 6.0.3024.21525 dotnet
|
||||
System.Collections.Concurrent 6.0.3024.21525 dotnet
|
||||
System.Collections.Immutable 6.0.3024.21525 dotnet
|
||||
System.Collections.NonGeneric 6.0.3024.21525 dotnet
|
||||
System.Collections.Specialized 6.0.3024.21525 dotnet
|
||||
System.ComponentModel 6.0.3024.21525 dotnet
|
||||
System.ComponentModel.Annotations 6.0.3024.21525 dotnet
|
||||
System.ComponentModel.DataAnnotations 6.0.3024.21525 dotnet
|
||||
System.ComponentModel.EventBasedAsync 6.0.3024.21525 dotnet
|
||||
System.ComponentModel.Primitives 6.0.3024.21525 dotnet
|
||||
System.ComponentModel.TypeConverter 6.0.3024.21525 dotnet
|
||||
System.Configuration 6.0.3024.21525 dotnet
|
||||
System.Console 6.0.3024.21525 dotnet
|
||||
System.Core 6.0.3024.21525 dotnet
|
||||
System.Data 6.0.3024.21525 dotnet
|
||||
System.Data.Common 6.0.3024.21525 dotnet
|
||||
System.Data.DataSetExtensions 6.0.3024.21525 dotnet
|
||||
System.Diagnostics.Contracts 6.0.3024.21525 dotnet
|
||||
System.Diagnostics.Debug 6.0.3024.21525 dotnet
|
||||
System.Diagnostics.DiagnosticSource 6.0.3024.21525 dotnet
|
||||
System.Diagnostics.FileVersionInfo 6.0.3024.21525 dotnet
|
||||
System.Diagnostics.Process 6.0.3024.21525 dotnet
|
||||
System.Diagnostics.StackTrace 6.0.3024.21525 dotnet
|
||||
System.Diagnostics.TextWriterTraceListener 6.0.3024.21525 dotnet
|
||||
System.Diagnostics.Tools 6.0.3024.21525 dotnet
|
||||
System.Diagnostics.TraceSource 6.0.3024.21525 dotnet
|
||||
System.Diagnostics.Tracing 6.0.3024.21525 dotnet
|
||||
System.Drawing 6.0.3024.21525 dotnet
|
||||
System.Drawing.Primitives 6.0.3024.21525 dotnet
|
||||
System.Dynamic.Runtime 6.0.3024.21525 dotnet
|
||||
System.Formats.Asn1 6.0.3024.21525 dotnet
|
||||
System.Globalization 6.0.3024.21525 dotnet
|
||||
System.Globalization.Calendars 6.0.3024.21525 dotnet
|
||||
System.Globalization.Extensions 6.0.3024.21525 dotnet
|
||||
System.IO 6.0.3024.21525 dotnet
|
||||
System.IO.Compression 6.0.3024.21525 dotnet
|
||||
System.IO.Compression.Brotli 6.0.3024.21525 dotnet
|
||||
System.IO.Compression.FileSystem 6.0.3024.21525 dotnet
|
||||
System.IO.Compression.ZipFile 6.0.3024.21525 dotnet
|
||||
System.IO.FileSystem 6.0.3024.21525 dotnet
|
||||
System.IO.FileSystem.AccessControl 6.0.3024.21525 dotnet
|
||||
System.IO.FileSystem.DriveInfo 6.0.3024.21525 dotnet
|
||||
System.IO.FileSystem.Primitives 6.0.3024.21525 dotnet
|
||||
System.IO.FileSystem.Watcher 6.0.3024.21525 dotnet
|
||||
System.IO.IsolatedStorage 6.0.3024.21525 dotnet
|
||||
System.IO.MemoryMappedFiles 6.0.3024.21525 dotnet
|
||||
System.IO.Pipes 6.0.3024.21525 dotnet
|
||||
System.IO.Pipes.AccessControl 6.0.3024.21525 dotnet
|
||||
System.IO.UnmanagedMemoryStream 6.0.3024.21525 dotnet
|
||||
System.Linq 6.0.3024.21525 dotnet
|
||||
System.Linq.Expressions 6.0.3024.21525 dotnet
|
||||
System.Linq.Parallel 6.0.3024.21525 dotnet
|
||||
System.Linq.Queryable 6.0.3024.21525 dotnet
|
||||
System.Memory 6.0.3024.21525 dotnet
|
||||
System.Net 6.0.3024.21525 dotnet
|
||||
System.Net.Http 6.0.3024.21525 dotnet
|
||||
System.Net.Http.Json 6.0.3024.21525 dotnet
|
||||
System.Net.HttpListener 6.0.3024.21525 dotnet
|
||||
QBittorrent.Client 1.9.24285.1 dotnet
|
||||
System 6.0.3524.45918 dotnet
|
||||
System.AppContext 6.0.3524.45918 dotnet
|
||||
System.Buffers 6.0.3524.45918 dotnet
|
||||
System.Collections 6.0.3524.45918 dotnet
|
||||
System.Collections.Concurrent 6.0.3524.45918 dotnet
|
||||
System.Collections.Immutable 6.0.3524.45918 dotnet
|
||||
System.Collections.NonGeneric 6.0.3524.45918 dotnet
|
||||
System.Collections.Specialized 6.0.3524.45918 dotnet
|
||||
System.ComponentModel 6.0.3524.45918 dotnet
|
||||
System.ComponentModel.Annotations 6.0.3524.45918 dotnet
|
||||
System.ComponentModel.DataAnnotations 6.0.3524.45918 dotnet
|
||||
System.ComponentModel.EventBasedAsync 6.0.3524.45918 dotnet
|
||||
System.ComponentModel.Primitives 6.0.3524.45918 dotnet
|
||||
System.ComponentModel.TypeConverter 6.0.3524.45918 dotnet
|
||||
System.Configuration 6.0.3524.45918 dotnet
|
||||
System.Console 6.0.3524.45918 dotnet
|
||||
System.Core 6.0.3524.45918 dotnet
|
||||
System.Data 6.0.3524.45918 dotnet
|
||||
System.Data.Common 6.0.3524.45918 dotnet
|
||||
System.Data.DataSetExtensions 6.0.3524.45918 dotnet
|
||||
System.Diagnostics.Contracts 6.0.3524.45918 dotnet
|
||||
System.Diagnostics.Debug 6.0.3524.45918 dotnet
|
||||
System.Diagnostics.DiagnosticSource 6.0.3524.45918 dotnet
|
||||
System.Diagnostics.FileVersionInfo 6.0.3524.45918 dotnet
|
||||
System.Diagnostics.Process 6.0.3524.45918 dotnet
|
||||
System.Diagnostics.StackTrace 6.0.3524.45918 dotnet
|
||||
System.Diagnostics.TextWriterTraceListener 6.0.3524.45918 dotnet
|
||||
System.Diagnostics.Tools 6.0.3524.45918 dotnet
|
||||
System.Diagnostics.TraceSource 6.0.3524.45918 dotnet
|
||||
System.Diagnostics.Tracing 6.0.3524.45918 dotnet
|
||||
System.Drawing 6.0.3524.45918 dotnet
|
||||
System.Drawing.Primitives 6.0.3524.45918 dotnet
|
||||
System.Dynamic.Runtime 6.0.3524.45918 dotnet
|
||||
System.Formats.Asn1 6.0.3524.45918 dotnet
|
||||
System.Globalization 6.0.3524.45918 dotnet
|
||||
System.Globalization.Calendars 6.0.3524.45918 dotnet
|
||||
System.Globalization.Extensions 6.0.3524.45918 dotnet
|
||||
System.IO 6.0.3524.45918 dotnet
|
||||
System.IO.Compression 6.0.3524.45918 dotnet
|
||||
System.IO.Compression.Brotli 6.0.3524.45918 dotnet
|
||||
System.IO.Compression.FileSystem 6.0.3524.45918 dotnet
|
||||
System.IO.Compression.ZipFile 6.0.3524.45918 dotnet
|
||||
System.IO.FileSystem 6.0.3524.45918 dotnet
|
||||
System.IO.FileSystem.AccessControl 6.0.3524.45918 dotnet
|
||||
System.IO.FileSystem.DriveInfo 6.0.3524.45918 dotnet
|
||||
System.IO.FileSystem.Primitives 6.0.3524.45918 dotnet
|
||||
System.IO.FileSystem.Watcher 6.0.3524.45918 dotnet
|
||||
System.IO.IsolatedStorage 6.0.3524.45918 dotnet
|
||||
System.IO.MemoryMappedFiles 6.0.3524.45918 dotnet
|
||||
System.IO.Pipes 6.0.3524.45918 dotnet
|
||||
System.IO.Pipes.AccessControl 6.0.3524.45918 dotnet
|
||||
System.IO.UnmanagedMemoryStream 6.0.3524.45918 dotnet
|
||||
System.Linq 6.0.3524.45918 dotnet
|
||||
System.Linq.Expressions 6.0.3524.45918 dotnet
|
||||
System.Linq.Parallel 6.0.3524.45918 dotnet
|
||||
System.Linq.Queryable 6.0.3524.45918 dotnet
|
||||
System.Memory 6.0.3524.45918 dotnet
|
||||
System.Net 6.0.3524.45918 dotnet
|
||||
System.Net.Http 6.0.3524.45918 dotnet
|
||||
System.Net.Http.Json 6.0.3524.45918 dotnet
|
||||
System.Net.HttpListener 6.0.3524.45918 dotnet
|
||||
System.Net.IPNetwork 2.5.235 dotnet
|
||||
System.Net.Mail 6.0.3024.21525 dotnet
|
||||
System.Net.NameResolution 6.0.3024.21525 dotnet
|
||||
System.Net.NetworkInformation 6.0.3024.21525 dotnet
|
||||
System.Net.Ping 6.0.3024.21525 dotnet
|
||||
System.Net.Primitives 6.0.3024.21525 dotnet
|
||||
System.Net.Quic 6.0.3024.21525 dotnet
|
||||
System.Net.Requests 6.0.3024.21525 dotnet
|
||||
System.Net.Security 6.0.3024.21525 dotnet
|
||||
System.Net.ServicePoint 6.0.3024.21525 dotnet
|
||||
System.Net.Sockets 6.0.3024.21525 dotnet
|
||||
System.Net.WebClient 6.0.3024.21525 dotnet
|
||||
System.Net.WebHeaderCollection 6.0.3024.21525 dotnet
|
||||
System.Net.WebProxy 6.0.3024.21525 dotnet
|
||||
System.Net.WebSockets 6.0.3024.21525 dotnet
|
||||
System.Net.WebSockets.Client 6.0.3024.21525 dotnet
|
||||
System.Numerics 6.0.3024.21525 dotnet
|
||||
System.Numerics.Vectors 6.0.3024.21525 dotnet
|
||||
System.ObjectModel 6.0.3024.21525 dotnet
|
||||
System.Private.CoreLib 6.0.3024.21525 dotnet
|
||||
System.Private.DataContractSerialization 6.0.3024.21525 dotnet
|
||||
System.Private.Uri 6.0.3024.21525 dotnet
|
||||
System.Private.Xml 6.0.3024.21525 dotnet
|
||||
System.Private.Xml.Linq 6.0.3024.21525 dotnet
|
||||
System.Reflection 6.0.3024.21525 dotnet
|
||||
System.Reflection.DispatchProxy 6.0.3024.21525 dotnet
|
||||
System.Reflection.Emit 6.0.3024.21525 dotnet
|
||||
System.Reflection.Emit.ILGeneration 6.0.3024.21525 dotnet
|
||||
System.Reflection.Emit.Lightweight 6.0.3024.21525 dotnet
|
||||
System.Reflection.Extensions 6.0.3024.21525 dotnet
|
||||
System.Reflection.Metadata 6.0.3024.21525 dotnet
|
||||
System.Reflection.Primitives 6.0.3024.21525 dotnet
|
||||
System.Reflection.TypeExtensions 6.0.3024.21525 dotnet
|
||||
System.Resources.Reader 6.0.3024.21525 dotnet
|
||||
System.Resources.ResourceManager 6.0.3024.21525 dotnet
|
||||
System.Resources.Writer 6.0.3024.21525 dotnet
|
||||
System.Runtime 6.0.3024.21525 dotnet
|
||||
System.Runtime.CompilerServices.VisualC 6.0.3024.21525 dotnet
|
||||
System.Runtime.Extensions 6.0.3024.21525 dotnet
|
||||
System.Runtime.Handles 6.0.3024.21525 dotnet
|
||||
System.Runtime.InteropServices 6.0.3024.21525 dotnet
|
||||
System.Runtime.InteropServices.RuntimeInformation 6.0.3024.21525 dotnet
|
||||
System.Runtime.Intrinsics 6.0.3024.21525 dotnet
|
||||
System.Runtime.Loader 6.0.3024.21525 dotnet
|
||||
System.Runtime.Numerics 6.0.3024.21525 dotnet
|
||||
System.Runtime.Serialization 6.0.3024.21525 dotnet
|
||||
System.Runtime.Serialization.Formatters 6.0.3024.21525 dotnet
|
||||
System.Runtime.Serialization.Json 6.0.3024.21525 dotnet
|
||||
System.Runtime.Serialization.Primitives 6.0.3024.21525 dotnet
|
||||
System.Runtime.Serialization.Xml 6.0.3024.21525 dotnet
|
||||
System.Security 6.0.3024.21525 dotnet
|
||||
System.Security.AccessControl 6.0.3024.21525 dotnet
|
||||
System.Security.Claims 6.0.3024.21525 dotnet
|
||||
System.Security.Cryptography.Algorithms 6.0.3024.21525 dotnet
|
||||
System.Security.Cryptography.Cng 6.0.3024.21525 dotnet
|
||||
System.Security.Cryptography.Csp 6.0.3024.21525 dotnet
|
||||
System.Security.Cryptography.Encoding 6.0.3024.21525 dotnet
|
||||
System.Security.Cryptography.OpenSsl 6.0.3024.21525 dotnet
|
||||
System.Security.Cryptography.Primitives 6.0.3024.21525 dotnet
|
||||
System.Net.Mail 6.0.3524.45918 dotnet
|
||||
System.Net.NameResolution 6.0.3524.45918 dotnet
|
||||
System.Net.NetworkInformation 6.0.3524.45918 dotnet
|
||||
System.Net.Ping 6.0.3524.45918 dotnet
|
||||
System.Net.Primitives 6.0.3524.45918 dotnet
|
||||
System.Net.Quic 6.0.3524.45918 dotnet
|
||||
System.Net.Requests 6.0.3524.45918 dotnet
|
||||
System.Net.Security 6.0.3524.45918 dotnet
|
||||
System.Net.ServicePoint 6.0.3524.45918 dotnet
|
||||
System.Net.Sockets 6.0.3524.45918 dotnet
|
||||
System.Net.WebClient 6.0.3524.45918 dotnet
|
||||
System.Net.WebHeaderCollection 6.0.3524.45918 dotnet
|
||||
System.Net.WebProxy 6.0.3524.45918 dotnet
|
||||
System.Net.WebSockets 6.0.3524.45918 dotnet
|
||||
System.Net.WebSockets.Client 6.0.3524.45918 dotnet
|
||||
System.Numerics 6.0.3524.45918 dotnet
|
||||
System.Numerics.Vectors 6.0.3524.45918 dotnet
|
||||
System.ObjectModel 6.0.3524.45918 dotnet
|
||||
System.Private.CoreLib 6.0.3524.45918 dotnet
|
||||
System.Private.DataContractSerialization 6.0.3524.45918 dotnet
|
||||
System.Private.Uri 6.0.3524.45918 dotnet
|
||||
System.Private.Xml 6.0.3524.45918 dotnet
|
||||
System.Private.Xml.Linq 6.0.3524.45918 dotnet
|
||||
System.Reflection 6.0.3524.45918 dotnet
|
||||
System.Reflection.DispatchProxy 6.0.3524.45918 dotnet
|
||||
System.Reflection.Emit 6.0.3524.45918 dotnet
|
||||
System.Reflection.Emit.ILGeneration 6.0.3524.45918 dotnet
|
||||
System.Reflection.Emit.Lightweight 6.0.3524.45918 dotnet
|
||||
System.Reflection.Extensions 6.0.3524.45918 dotnet
|
||||
System.Reflection.Metadata 6.0.3524.45918 dotnet
|
||||
System.Reflection.Primitives 6.0.3524.45918 dotnet
|
||||
System.Reflection.TypeExtensions 6.0.3524.45918 dotnet
|
||||
System.Resources.Reader 6.0.3524.45918 dotnet
|
||||
System.Resources.ResourceManager 6.0.3524.45918 dotnet
|
||||
System.Resources.Writer 6.0.3524.45918 dotnet
|
||||
System.Runtime 6.0.3524.45918 dotnet
|
||||
System.Runtime.CompilerServices.VisualC 6.0.3524.45918 dotnet
|
||||
System.Runtime.Extensions 6.0.3524.45918 dotnet
|
||||
System.Runtime.Handles 6.0.3524.45918 dotnet
|
||||
System.Runtime.InteropServices 6.0.3524.45918 dotnet
|
||||
System.Runtime.InteropServices.RuntimeInformation 6.0.3524.45918 dotnet
|
||||
System.Runtime.Intrinsics 6.0.3524.45918 dotnet
|
||||
System.Runtime.Loader 6.0.3524.45918 dotnet
|
||||
System.Runtime.Numerics 6.0.3524.45918 dotnet
|
||||
System.Runtime.Serialization 6.0.3524.45918 dotnet
|
||||
System.Runtime.Serialization.Formatters 6.0.3524.45918 dotnet
|
||||
System.Runtime.Serialization.Json 6.0.3524.45918 dotnet
|
||||
System.Runtime.Serialization.Primitives 6.0.3524.45918 dotnet
|
||||
System.Runtime.Serialization.Xml 6.0.3524.45918 dotnet
|
||||
System.Security 6.0.3524.45918 dotnet
|
||||
System.Security.AccessControl 6.0.3524.45918 dotnet
|
||||
System.Security.Claims 6.0.3524.45918 dotnet
|
||||
System.Security.Cryptography.Algorithms 6.0.3524.45918 dotnet
|
||||
System.Security.Cryptography.Cng 6.0.3524.45918 dotnet
|
||||
System.Security.Cryptography.Csp 6.0.3524.45918 dotnet
|
||||
System.Security.Cryptography.Encoding 6.0.3524.45918 dotnet
|
||||
System.Security.Cryptography.OpenSsl 6.0.3524.45918 dotnet
|
||||
System.Security.Cryptography.Primitives 6.0.3524.45918 dotnet
|
||||
System.Security.Cryptography.ProtectedData 5.0.20.51904 dotnet
|
||||
System.Security.Cryptography.X509Certificates 6.0.3024.21525 dotnet
|
||||
System.Security.Principal 6.0.3024.21525 dotnet
|
||||
System.Security.Principal.Windows 6.0.3024.21525 dotnet
|
||||
System.Security.SecureString 6.0.3024.21525 dotnet
|
||||
System.ServiceModel.Web 6.0.3024.21525 dotnet
|
||||
System.ServiceProcess 6.0.3024.21525 dotnet
|
||||
System.Text.Encoding 6.0.3024.21525 dotnet
|
||||
System.Text.Encoding.CodePages 6.0.3024.21525 dotnet
|
||||
System.Text.Encoding.Extensions 6.0.3024.21525 dotnet
|
||||
System.Text.Encodings.Web 6.0.3024.21525 dotnet
|
||||
System.Text.Json 6.0.3024.21525 dotnet
|
||||
System.Text.RegularExpressions 6.0.3024.21525 dotnet
|
||||
System.Threading 6.0.3024.21525 dotnet
|
||||
System.Threading.Channels 6.0.3024.21525 dotnet
|
||||
System.Threading.Overlapped 6.0.3024.21525 dotnet
|
||||
System.Threading.Tasks 6.0.3024.21525 dotnet
|
||||
System.Threading.Tasks.Dataflow 6.0.3024.21525 dotnet
|
||||
System.Threading.Tasks.Extensions 6.0.3024.21525 dotnet
|
||||
System.Threading.Tasks.Parallel 6.0.3024.21525 dotnet
|
||||
System.Threading.Thread 6.0.3024.21525 dotnet
|
||||
System.Threading.ThreadPool 6.0.3024.21525 dotnet
|
||||
System.Threading.Timer 6.0.3024.21525 dotnet
|
||||
System.Transactions 6.0.3024.21525 dotnet
|
||||
System.Transactions.Local 6.0.3024.21525 dotnet
|
||||
System.ValueTuple 6.0.3024.21525 dotnet
|
||||
System.Web 6.0.3024.21525 dotnet
|
||||
System.Web.HttpUtility 6.0.3024.21525 dotnet
|
||||
System.Windows 6.0.3024.21525 dotnet
|
||||
System.Xml 6.0.3024.21525 dotnet
|
||||
System.Xml.Linq 6.0.3024.21525 dotnet
|
||||
System.Xml.ReaderWriter 6.0.3024.21525 dotnet
|
||||
System.Xml.Serialization 6.0.3024.21525 dotnet
|
||||
System.Xml.XDocument 6.0.3024.21525 dotnet
|
||||
System.Xml.XPath 6.0.3024.21525 dotnet
|
||||
System.Xml.XPath.XDocument 6.0.3024.21525 dotnet
|
||||
System.Xml.XmlDocument 6.0.3024.21525 dotnet
|
||||
System.Xml.XmlSerializer 6.0.3024.21525 dotnet
|
||||
WindowsBase 6.0.3024.21525 dotnet
|
||||
System.Security.Cryptography.X509Certificates 6.0.3524.45918 dotnet
|
||||
System.Security.Principal 6.0.3524.45918 dotnet
|
||||
System.Security.Principal.Windows 6.0.3524.45918 dotnet
|
||||
System.Security.SecureString 6.0.3524.45918 dotnet
|
||||
System.ServiceModel.Web 6.0.3524.45918 dotnet
|
||||
System.ServiceProcess 6.0.3524.45918 dotnet
|
||||
System.Text.Encoding 6.0.3524.45918 dotnet
|
||||
System.Text.Encoding.CodePages 6.0.3524.45918 dotnet
|
||||
System.Text.Encoding.Extensions 6.0.3524.45918 dotnet
|
||||
System.Text.Encodings.Web 6.0.3524.45918 dotnet
|
||||
System.Text.Json 6.0.3524.45918 dotnet
|
||||
System.Text.RegularExpressions 6.0.3524.45918 dotnet
|
||||
System.Threading 6.0.3524.45918 dotnet
|
||||
System.Threading.Channels 6.0.3524.45918 dotnet
|
||||
System.Threading.Overlapped 6.0.3524.45918 dotnet
|
||||
System.Threading.Tasks 6.0.3524.45918 dotnet
|
||||
System.Threading.Tasks.Dataflow 6.0.3524.45918 dotnet
|
||||
System.Threading.Tasks.Extensions 6.0.3524.45918 dotnet
|
||||
System.Threading.Tasks.Parallel 6.0.3524.45918 dotnet
|
||||
System.Threading.Thread 6.0.3524.45918 dotnet
|
||||
System.Threading.ThreadPool 6.0.3524.45918 dotnet
|
||||
System.Threading.Timer 6.0.3524.45918 dotnet
|
||||
System.Transactions 6.0.3524.45918 dotnet
|
||||
System.Transactions.Local 6.0.3524.45918 dotnet
|
||||
System.ValueTuple 6.0.3524.45918 dotnet
|
||||
System.Web 6.0.3524.45918 dotnet
|
||||
System.Web.HttpUtility 6.0.3524.45918 dotnet
|
||||
System.Windows 6.0.3524.45918 dotnet
|
||||
System.Xml 6.0.3524.45918 dotnet
|
||||
System.Xml.Linq 6.0.3524.45918 dotnet
|
||||
System.Xml.ReaderWriter 6.0.3524.45918 dotnet
|
||||
System.Xml.Serialization 6.0.3524.45918 dotnet
|
||||
System.Xml.XDocument 6.0.3524.45918 dotnet
|
||||
System.Xml.XPath 6.0.3524.45918 dotnet
|
||||
System.Xml.XPath.XDocument 6.0.3524.45918 dotnet
|
||||
System.Xml.XmlDocument 6.0.3524.45918 dotnet
|
||||
System.Xml.XmlSerializer 6.0.3524.45918 dotnet
|
||||
WindowsBase 6.0.3524.45918 dotnet
|
||||
acl-libs 2.3.2-r1 apk
|
||||
alpine-baselayout 3.6.8-r0 apk
|
||||
alpine-baselayout-data 3.6.8-r0 apk
|
||||
alpine-keys 2.5-r0 apk
|
||||
apk-tools 2.14.4-r3 apk
|
||||
apk-tools 2.14.7-r0 apk
|
||||
bash 5.2.37-r0 apk
|
||||
brotli-libs 1.1.0-r2 apk
|
||||
busybox 1.36.1-r32 apk
|
||||
busybox-binsh 1.36.1-r32 apk
|
||||
c-ares 1.34.1-r0 apk
|
||||
ca-certificates 20240705-r0 apk
|
||||
ca-certificates-bundle 20240705-r0 apk
|
||||
busybox 1.37.0-r10 apk
|
||||
busybox-binsh 1.37.0-r10 apk
|
||||
c-ares 1.34.3-r0 apk
|
||||
ca-certificates 20241010-r0 apk
|
||||
ca-certificates-bundle 20241010-r0 apk
|
||||
catatonit 0.2.0-r0 apk
|
||||
coreutils 9.5-r1 apk
|
||||
coreutils-env 9.5-r1 apk
|
||||
coreutils-fmt 9.5-r1 apk
|
||||
coreutils-sha512sum 9.5-r1 apk
|
||||
curl 8.9.1-r2 apk
|
||||
curl 8.11.1-r0 apk
|
||||
dbus-libs 1.14.10-r4 apk
|
||||
double-conversion 3.3.0-r0 apk
|
||||
duktape 2.7.0-r1 apk
|
||||
findutils 4.10.0-r0 apk
|
||||
gdbm 1.24-r0 apk
|
||||
glib 2.82.1-r1 apk
|
||||
glib 2.82.4-r0 apk
|
||||
grep 3.11-r0 apk
|
||||
icu-data-en 74.2-r0 apk
|
||||
icu-libs 74.2-r0 apk
|
||||
jq 1.7.1-r0 apk
|
||||
libattr 2.5.2-r2 apk
|
||||
libb2 0.98.1-r3 apk
|
||||
libblkid 2.40.2-r3 apk
|
||||
libblkid 2.40.2-r4 apk
|
||||
libbsd 0.12.2-r0 apk
|
||||
libbz2 1.0.8-r6 apk
|
||||
libcrypto3 3.3.2-r2 apk
|
||||
libcurl 8.9.1-r2 apk
|
||||
libcrypto3 3.3.2-r4 apk
|
||||
libcurl 8.11.1-r0 apk
|
||||
libeconf 0.6.3-r0 apk
|
||||
libexpat 2.6.3-r0 apk
|
||||
libexpat 2.6.4-r0 apk
|
||||
libffi 3.4.6-r0 apk
|
||||
libgcc 14.2.0-r3 apk
|
||||
libgomp 14.2.0-r3 apk
|
||||
libgcc 14.2.0-r4 apk
|
||||
libgomp 14.2.0-r4 apk
|
||||
libidn2 2.3.7-r0 apk
|
||||
libintl 0.22.5-r0 apk
|
||||
libmd 1.1.0-r0 apk
|
||||
libmount 2.40.2-r3 apk
|
||||
libncursesw 6.5_p20240601-r1 apk
|
||||
libpanelw 6.5_p20240601-r1 apk
|
||||
libmount 2.40.2-r4 apk
|
||||
libncursesw 6.5_p20241006-r3 apk
|
||||
libpanelw 6.5_p20241006-r3 apk
|
||||
libpcre2-16 10.43-r0 apk
|
||||
libproc2 4.0.4-r2 apk
|
||||
libproxy 0.5.9-r0 apk
|
||||
libpsl 0.21.5-r3 apk
|
||||
libssl3 3.3.2-r2 apk
|
||||
libstdc++ 14.2.0-r3 apk
|
||||
libtorrent-rasterbar 2.0.10-r2 apk
|
||||
libssl3 3.3.2-r4 apk
|
||||
libstdc++ 14.2.0-r4 apk
|
||||
libtorrent-rasterbar 2.0.10-r3 apk
|
||||
libunistring 1.2-r0 apk
|
||||
linux-pam 1.6.1-r1 apk
|
||||
mpdecimal 4.0.0-r0 apk
|
||||
mscorlib 6.0.3024.21525 dotnet
|
||||
musl 1.2.5-r5 apk
|
||||
musl-utils 1.2.5-r3 apk
|
||||
ncurses-terminfo-base 6.5_p20240601-r1 apk
|
||||
netcat-openbsd 1.226-r0 apk
|
||||
netstandard 6.0.3024.21525 dotnet
|
||||
nghttp2-libs 1.63.0-r0 apk
|
||||
mscorlib 6.0.3524.45918 dotnet
|
||||
musl 1.2.5-r8 apk
|
||||
musl-utils 1.2.5-r8 apk
|
||||
ncurses-terminfo-base 6.5_p20241006-r3 apk
|
||||
netcat-openbsd 1.226.1.1-r0 apk
|
||||
netstandard 6.0.3524.45918 dotnet
|
||||
nghttp2-libs 1.64.0-r0 apk
|
||||
oniguruma 6.9.9-r0 apk
|
||||
pcre2 10.43-r0 apk
|
||||
procps-ng 4.0.4-r2 apk
|
||||
pyc 3.12.7-r0 apk
|
||||
python3 3.12.7-r0 apk
|
||||
python3-pyc 3.12.7-r0 apk
|
||||
python3-pycache-pyc0 3.12.7-r0 apk
|
||||
qbittorrent-nox 5.0.0-r2 apk
|
||||
qbt 1.8.24199.1+738bca0d7d7585cf40629f13a59b6198eaf6fe64 dotnet
|
||||
qt6-qtbase 6.7.2-r2 apk
|
||||
qt6-qtbase-sqlite 6.7.2-r2 apk
|
||||
pyc 3.12.8-r1 apk
|
||||
python3 3.12.8-r1 apk
|
||||
python3-pyc 3.12.8-r1 apk
|
||||
python3-pycache-pyc0 3.12.8-r1 apk
|
||||
qbittorrent-nox 5.0.3-r0 apk
|
||||
qbt 1.8.24285.1+c5794123bd204e629729e52e7177834c4ba3bfc2 dotnet
|
||||
qt6-qtbase 6.8.1-r0 apk
|
||||
qt6-qtbase-sqlite 6.8.1-r0 apk
|
||||
readline 8.2.13-r0 apk
|
||||
scanelf 1.3.8-r0 apk
|
||||
shadow 4.16.0-r0 apk
|
||||
skalibs 2.14.2.0-r2 apk
|
||||
sqlite-libs 3.46.1-r0 apk
|
||||
ssl_client 1.36.1-r32 apk
|
||||
scanelf 1.3.8-r1 apk
|
||||
shadow 4.16.0-r1 apk
|
||||
skalibs-libs 2.14.3.0-r0 apk
|
||||
sqlite-libs 3.47.2-r0 apk
|
||||
ssl_client 1.37.0-r10 apk
|
||||
tzdata 2024b-r1 apk
|
||||
utmps-libs 0.1.2.2-r3 apk
|
||||
utmps-libs 0.1.2.3-r2 apk
|
||||
xz-libs 5.6.3-r0 apk
|
||||
zlib 1.3.1-r2 apk
|
||||
zstd-libs 1.5.6-r1 apk
|
||||
|
||||
@@ -6,18 +6,15 @@ project_url: "https://www.qbittorrent.org/"
|
||||
project_logo: "https://github.com/linuxserver/docker-templates/raw/master/linuxserver.io/img/qbittorrent-icon.png"
|
||||
project_blurb: "The [{{ project_name|capitalize }}]({{ project_url }}) project aims to provide an open-source software alternative to µTorrent. qBittorrent is based on the Qt toolkit and libtorrent-rasterbar library."
|
||||
project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}"
|
||||
|
||||
# supported architectures
|
||||
available_architectures:
|
||||
- {arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
|
||||
- {arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
|
||||
|
||||
# development version
|
||||
development_versions: true
|
||||
development_versions_items:
|
||||
- {tag: "latest", desc: "Stable qbittorrent releases"}
|
||||
- {tag: "libtorrentv1", desc: "Static qbittorrent builds using libtorrent v1"}
|
||||
|
||||
# container parameters
|
||||
common_param_env_vars_enabled: true
|
||||
param_container_name: "{{ project_name }}"
|
||||
@@ -36,9 +33,7 @@ param_env_vars:
|
||||
opt_param_usage_include_vols: true
|
||||
opt_param_volumes:
|
||||
- {vol_path: "/downloads", vol_host_path: "/path/to/downloads", desc: "Location of downloads on disk."}
|
||||
|
||||
readonly_supported: true
|
||||
|
||||
# application setup block
|
||||
app_setup_block_enabled: true
|
||||
app_setup_block: |
|
||||
@@ -59,7 +54,45 @@ app_setup_block: |
|
||||
A bittorrent client can be an active or a passive node. Running your client as an active node has the advantage of being able to connect to both active and passive peers, and can potentially increase the number of incoming connections. This requires an open port on the host machine which might differ from container's internal one.
|
||||
|
||||
Similarly to the WEBUI_PORT, to set the port to 6887 you need to pass -p 6887:6887, -p 6887:6887/udp and -e TORRENTING_PORT=6887 arguments to Docker.
|
||||
|
||||
# init diagram
|
||||
init_diagram: |
|
||||
"qbittorrent:latest": {
|
||||
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-os-end -> init-config
|
||||
init-config -> init-config-end
|
||||
init-crontab-config -> init-config-end
|
||||
init-qbittorrent-config -> init-config-end
|
||||
init-config -> init-crontab-config
|
||||
init-mods-end -> init-custom-files
|
||||
base -> init-envfile
|
||||
base -> init-migrations
|
||||
init-config-end -> init-mods
|
||||
init-mods-package-install -> init-mods-end
|
||||
init-mods -> init-mods-package-install
|
||||
init-adduser -> init-os-end
|
||||
init-envfile -> init-os-end
|
||||
init-config -> init-qbittorrent-config
|
||||
init-custom-files -> init-services
|
||||
init-services -> svc-cron
|
||||
svc-cron -> legacy-services
|
||||
init-services -> svc-qbittorrent
|
||||
svc-qbittorrent -> legacy-services
|
||||
}
|
||||
Base Images: {
|
||||
"baseimage-alpine:edge"
|
||||
}
|
||||
"qbittorrent:latest" <- Base Images
|
||||
# changelog
|
||||
changelogs:
|
||||
- {date: "17.07.24:", desc: "Restore qbittorrent-cli as it now supports openssl 3."}
|
||||
|
||||
Reference in New Issue
Block a user