Compare commits

...

43 Commits

Author SHA1 Message Date
LinuxServer-CI
31ce96fdb8 Bot Updating Package Versions 2024-02-01 09:20:37 +00:00
LinuxServer-CI
19c202debc Bot Updating Templated Files 2024-02-01 09:16:12 +00:00
Adam
4f6920e7fd Merge pull request #286 from linuxserver/old-packages
Remove obsolete compat packages
2024-02-01 09:12:57 +00:00
TheSpad
98f36cee40 Remove obsolete compat packages 2024-01-31 19:21:26 +00:00
LinuxServer-CI
4fe96ba449 Bot Updating Package Versions 2024-01-28 06:52:03 +00:00
LinuxServer-CI
247c0c500d Bot Updating Package Versions 2024-01-21 06:51:52 +00:00
LinuxServer-CI
d502e0f0b7 Bot Updating Package Versions 2024-01-17 14:50:08 +00:00
LinuxServer-CI
f4888f95ff Bot Updating Package Versions 2024-01-14 06:56:34 +00:00
LinuxServer-CI
5f2876d7aa Bot Updating Templated Files 2024-01-14 06:53:03 +00:00
LinuxServer-CI
e7262e48ad Bot Updating Templated Files 2024-01-14 06:51:30 +00:00
LinuxServer-CI
155bfd490e Bot Updating Package Versions 2024-01-07 06:53:29 +00:00
LinuxServer-CI
953db8a8b2 Bot Updating Package Versions 2023-12-31 06:53:12 +00:00
LinuxServer-CI
2bd9a6634b Bot Updating Package Versions 2023-12-25 20:23:54 +00:00
LinuxServer-CI
c2ac676ec1 Bot Updating Templated Files 2023-12-25 20:20:37 +00:00
Eric Nemchik
fbe8864932 Merge pull request #278 from linuxserver/qbt-cli-latest-master
Only pull stable releases of qbittorrent-cli
2023-12-25 14:18:15 -06:00
Eric Nemchik
541a406846 Only pull stable releases of qbittorrent-cli
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-12-25 13:51:52 -06:00
LinuxServer-CI
1a588b401f Bot Updating Package Versions 2023-12-10 06:53:08 +00:00
LinuxServer-CI
d22929498f Bot Updating Package Versions 2023-12-03 06:53:03 +00:00
LinuxServer-CI
7c3a63d3d7 Bot Updating Templated Files 2023-11-28 17:17:41 +00:00
Adam
6e66cff947 Merge pull request #269 from linuxserver/readme-pass 2023-11-28 17:15:15 +00:00
LinuxServer-CI
7cb8027134 Bot Updating Package Versions 2023-11-28 15:49:22 +00:00
TheSpad
5f475c0dc6 Tweak wording 2023-11-26 18:24:05 +00:00
TheSpad
2c74cda4fc Add note about password auto-gen 2023-11-26 14:08:15 +00:00
LinuxServer-CI
e45181f2c8 Bot Updating Package Versions 2023-11-26 06:52:02 +00:00
LinuxServer-CI
86a3a6517b Bot Updating Package Versions 2023-11-21 04:49:56 +00:00
LinuxServer-CI
19bdee4315 Bot Updating Package Versions 2023-11-19 06:54:28 +00:00
LinuxServer-CI
b122c61422 Bot Updating Templated Files 2023-11-19 06:51:13 +00:00
LinuxServer-CI
c57eee0ee9 Bot Updating Package Versions 2023-11-12 06:53:37 +00:00
LinuxServer-CI
9998eb7462 Bot Updating Package Versions 2023-11-05 06:52:03 +00:00
LinuxServer-CI
1d02eac543 Bot Updating Package Versions 2023-10-29 06:53:18 +00:00
LinuxServer-CI
be24d21cfe Bot Updating Package Versions 2023-10-23 13:50:02 +00:00
LinuxServer-CI
f14e8da62e Bot Updating Package Versions 2023-10-22 06:51:51 +00:00
LinuxServer-CI
0452157ad5 Bot Updating Package Versions 2023-10-15 06:51:44 +00:00
LinuxServer-CI
d7a11b0208 Bot Updating Package Versions 2023-10-08 02:32:18 +00:00
Roxedus
556ecd7b8f Merge pull request #264 from linuxserver/unrar 2023-10-08 04:29:52 +02:00
aptalca
e3ad78bd8d install unrar from lsio repo 2023-10-07 20:45:20 -04:00
LinuxServer-CI
31b71b35a9 Bot Updating Package Versions 2023-10-01 06:52:02 +00:00
LinuxServer-CI
9d18db774b Bot Updating Package Versions 2023-09-24 06:53:47 +00:00
LinuxServer-CI
0708176c5a Bot Updating Package Versions 2023-09-17 06:52:23 +00:00
LinuxServer-CI
ddabe39b18 Bot Updating Package Versions 2023-09-10 06:53:38 +00:00
LinuxServer-CI
ea1fad9381 Bot Updating Package Versions 2023-09-03 06:51:49 +00:00
LinuxServer-CI
4ae813edeb Bot Updating Package Versions 2023-09-01 18:50:33 +00:00
LinuxServer-CI
b717188814 Bot Updating Package Versions 2023-08-27 06:52:25 +00:00
6 changed files with 583 additions and 571 deletions

View File

@@ -1,46 +1,30 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/unrar:latest as unrar
FROM ghcr.io/linuxserver/baseimage-alpine:edge FROM ghcr.io/linuxserver/baseimage-alpine:edge
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
ARG VERSION ARG VERSION
ARG QBITTORRENT_VERSION ARG QBITTORRENT_VERSION
ARG QBT_VERSION ARG QBT_CLI_VERSION
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="thespad" LABEL maintainer="thespad"
# environment settings # environment settings
ARG UNRAR_VERSION=6.2.10
ENV HOME="/config" \ ENV HOME="/config" \
XDG_CONFIG_HOME="/config" \ XDG_CONFIG_HOME="/config" \
XDG_DATA_HOME="/config" XDG_DATA_HOME="/config"
# install runtime packages and qbitorrent-cli # install runtime packages and qbitorrent-cli
RUN \ RUN \
echo "**** install build packages ****" && \
apk add --no-cache --virtual=build-dependencies \
build-base && \
echo "**** install packages ****" && \ echo "**** install packages ****" && \
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing \ apk add --no-cache \
icu-libs \ icu-libs \
libstdc++ \
openssl \
openssl1.1-compat \
p7zip \ p7zip \
python3 \ python3 \
qt6-qtbase-sqlite && \ qt6-qtbase-sqlite && \
echo "**** install unrar from source ****" && \
mkdir /tmp/unrar && \
curl -o \
/tmp/unrar.tar.gz -L \
"https://www.rarlab.com/rar/unrarsrc-${UNRAR_VERSION}.tar.gz" && \
tar xf \
/tmp/unrar.tar.gz -C \
/tmp/unrar --strip-components=1 && \
cd /tmp/unrar && \
make && \
install -v -m755 unrar /usr/bin && \
if [ -z ${QBITTORRENT_VERSION+x} ]; then \ if [ -z ${QBITTORRENT_VERSION+x} ]; then \
QBITTORRENT_VERSION=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \ QBITTORRENT_VERSION=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \
&& awk '/^P:qbittorrent-nox$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://'); \ && awk '/^P:qbittorrent-nox$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://'); \
@@ -49,17 +33,17 @@ RUN \
qbittorrent-nox==${QBITTORRENT_VERSION} && \ qbittorrent-nox==${QBITTORRENT_VERSION} && \
echo "***** install qbitorrent-cli ****" && \ echo "***** install qbitorrent-cli ****" && \
mkdir /qbt && \ mkdir /qbt && \
QBT_VERSION=$(curl -sL "https://api.github.com/repos/fedarovich/qbittorrent-cli/releases" \ if [ -z ${QBT_CLI_VERSION+x} ]; then \
| awk '/tag_name/{print $4;exit}' FS='[""]'); \ QBT_CLI_VERSION=$(curl -sL "https://api.github.com/repos/fedarovich/qbittorrent-cli/releases/latest" \
| jq -r '. | .tag_name'); \
fi && \
curl -o \ curl -o \
/tmp/qbt.tar.gz -L \ /tmp/qbt.tar.gz -L \
"https://github.com/fedarovich/qbittorrent-cli/releases/download/${QBT_VERSION}/qbt-linux-alpine-x64-${QBT_VERSION:1}.tar.gz" && \ "https://github.com/fedarovich/qbittorrent-cli/releases/download/${QBT_CLI_VERSION}/qbt-linux-alpine-x64-${QBT_CLI_VERSION#v}.tar.gz" && \
tar xf \ tar xf \
/tmp/qbt.tar.gz -C \ /tmp/qbt.tar.gz -C \
/qbt && \ /qbt && \
echo "**** cleanup ****" && \ echo "**** cleanup ****" && \
apk del --purge \
build-dependencies && \
rm -rf \ rm -rf \
/root/.cache \ /root/.cache \
/tmp/* /tmp/*
@@ -67,6 +51,9 @@ RUN \
# add local files # add local files
COPY root/ / COPY root/ /
# add unrar
COPY --from=unrar /usr/bin/unrar-alpine /usr/bin/unrar
# ports and volumes # ports and volumes
EXPOSE 8080 6881 6881/udp EXPOSE 8080 6881 6881/udp

View File

@@ -1,46 +1,30 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/unrar:arm64v8-latest as unrar
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-edge FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-edge
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
ARG VERSION ARG VERSION
ARG QBITTORRENT_VERSION ARG QBITTORRENT_VERSION
ARG QBT_VERSION ARG QBT_CLI_VERSION
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="thespad" LABEL maintainer="thespad"
# environment settings # environment settings
ARG UNRAR_VERSION=6.2.10
ENV HOME="/config" \ ENV HOME="/config" \
XDG_CONFIG_HOME="/config" \ XDG_CONFIG_HOME="/config" \
XDG_DATA_HOME="/config" XDG_DATA_HOME="/config"
# install runtime packages and qbitorrent-cli # install runtime packages and qbitorrent-cli
RUN \ RUN \
echo "**** install build packages ****" && \
apk add --no-cache --virtual=build-dependencies \
build-base && \
echo "**** install packages ****" && \ echo "**** install packages ****" && \
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing \ apk add --no-cache \
icu-libs \ icu-libs \
libstdc++ \
openssl \
openssl1.1-compat \
p7zip \ p7zip \
python3 \ python3 \
qt6-qtbase-sqlite && \ qt6-qtbase-sqlite && \
echo "**** install unrar from source ****" && \
mkdir /tmp/unrar && \
curl -o \
/tmp/unrar.tar.gz -L \
"https://www.rarlab.com/rar/unrarsrc-${UNRAR_VERSION}.tar.gz" && \
tar xf \
/tmp/unrar.tar.gz -C \
/tmp/unrar --strip-components=1 && \
cd /tmp/unrar && \
make && \
install -v -m755 unrar /usr/bin && \
if [ -z ${QBITTORRENT_VERSION+x} ]; then \ if [ -z ${QBITTORRENT_VERSION+x} ]; then \
QBITTORRENT_VERSION=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \ QBITTORRENT_VERSION=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \
&& awk '/^P:qbittorrent-nox$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://'); \ && awk '/^P:qbittorrent-nox$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://'); \
@@ -49,17 +33,17 @@ RUN \
qbittorrent-nox==${QBITTORRENT_VERSION} && \ qbittorrent-nox==${QBITTORRENT_VERSION} && \
echo "***** install qbitorrent-cli ****" && \ echo "***** install qbitorrent-cli ****" && \
mkdir /qbt && \ mkdir /qbt && \
QBT_VERSION=$(curl -sL "https://api.github.com/repos/fedarovich/qbittorrent-cli/releases" \ if [ -z ${QBT_CLI_VERSION+x} ]; then \
| awk '/tag_name/{print $4;exit}' FS='[""]'); \ QBT_CLI_VERSION=$(curl -sL "https://api.github.com/repos/fedarovich/qbittorrent-cli/releases/latest" \
| jq -r '. | .tag_name'); \
fi && \
curl -o \ curl -o \
/tmp/qbt.tar.gz -L \ /tmp/qbt.tar.gz -L \
"https://github.com/fedarovich/qbittorrent-cli/releases/download/${QBT_VERSION}/qbt-linux-alpine-arm64-${QBT_VERSION:1}.tar.gz" && \ "https://github.com/fedarovich/qbittorrent-cli/releases/download/${QBT_CLI_VERSION}/qbt-linux-alpine-arm64-${QBT_CLI_VERSION#v}.tar.gz" && \
tar xf \ tar xf \
/tmp/qbt.tar.gz -C \ /tmp/qbt.tar.gz -C \
/qbt && \ /qbt && \
echo "**** cleanup ****" && \ echo "**** cleanup ****" && \
apk del --purge \
build-dependencies && \
rm -rf \ rm -rf \
/root/.cache \ /root/.cache \
/tmp/* /tmp/*
@@ -67,6 +51,9 @@ RUN \
# add local files # add local files
COPY root/ / COPY root/ /
# add unrar
COPY --from=unrar /usr/bin/unrar-alpine /usr/bin/unrar
# ports and volumes # ports and volumes
EXPOSE 8080 6881 6881/udp EXPOSE 8080 6881 6881/udp

346
Jenkinsfile vendored
View File

@@ -16,7 +16,7 @@ pipeline {
GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab') GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0') GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0')
GITLAB_NAMESPACE=credentials('gitlab-namespace-id') GITLAB_NAMESPACE=credentials('gitlab-namespace-id')
SCARF_TOKEN=credentials('scarf_api_key') DOCKERHUB_TOKEN=credentials('docker-hub-ci-pat')
CONTAINER_NAME = 'qbittorrent' CONTAINER_NAME = 'qbittorrent'
BUILD_VERSION_ARG = 'QBITTORRENT_VERSION' BUILD_VERSION_ARG = 'QBITTORRENT_VERSION'
LS_USER = 'linuxserver' LS_USER = 'linuxserver'
@@ -62,11 +62,16 @@ pipeline {
env.COMMIT_SHA = sh( env.COMMIT_SHA = sh(
script: '''git rev-parse HEAD''', script: '''git rev-parse HEAD''',
returnStdout: true).trim() returnStdout: true).trim()
env.GH_DEFAULT_BRANCH = sh(
script: '''git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||' ''',
returnStdout: true).trim()
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/' env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/'
env.PULL_REQUEST = env.CHANGE_ID env.PULL_REQUEST = env.CHANGE_ID
env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml ./.github/workflows/package_trigger.yml' env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml ./.github/workflows/package_trigger.yml'
} }
sh '''#! /bin/bash
echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" '''
script{ script{
env.LS_RELEASE_NUMBER = sh( env.LS_RELEASE_NUMBER = sh(
script: '''echo ${LS_RELEASE} |sed 's/^.*-ls//g' ''', script: '''echo ${LS_RELEASE} |sed 's/^.*-ls//g' ''',
@@ -125,7 +130,7 @@ pipeline {
steps{ steps{
script{ script{
env.EXT_RELEASE_CLEAN = sh( env.EXT_RELEASE_CLEAN = sh(
script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''', script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/ ]//g' ''',
returnStdout: true).trim() returnStdout: true).trim()
def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)/ def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)/
@@ -143,7 +148,7 @@ pipeline {
} }
if (env.SEMVER != null) { if (env.SEMVER != null) {
if (BRANCH_NAME != "master" && BRANCH_NAME != "main") { if (BRANCH_NAME != "${env.GH_DEFAULT_BRANCH}") {
env.SEMVER = "${env.SEMVER}-${BRANCH_NAME}" env.SEMVER = "${env.SEMVER}-${BRANCH_NAME}"
} }
println("SEMVER: ${env.SEMVER}") println("SEMVER: ${env.SEMVER}")
@@ -261,115 +266,150 @@ pipeline {
} }
} }
steps { steps {
sh '''#! /bin/bash withCredentials([
set -e [
TEMPDIR=$(mktemp -d) $class: 'UsernamePasswordMultiBinding',
docker pull ghcr.io/linuxserver/jenkins-builder:latest credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest usernameVariable: 'DOCKERUSER',
# Stage 1 - Jenkinsfile update passwordVariable: 'DOCKERPASS'
if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then ]
mkdir -p ${TEMPDIR}/repo ]) {
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} sh '''#! /bin/bash
cd ${TEMPDIR}/repo/${LS_REPO} set -e
git checkout -f master TEMPDIR=$(mktemp -d)
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/ docker pull ghcr.io/linuxserver/jenkins-builder:latest
git add Jenkinsfile docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest
git commit -m 'Bot Updating Templated Files' # Stage 1 - Jenkinsfile update
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} mkdir -p ${TEMPDIR}/repo
echo "Updating Jenkinsfile" git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
rm -Rf ${TEMPDIR} cd ${TEMPDIR}/repo/${LS_REPO}
exit 0 git checkout -f master
else cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
echo "Jenkinsfile is up to date." git add Jenkinsfile
fi git commit -m 'Bot Updating Templated Files'
# Stage 2 - Delete old templates git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml Dockerfile.armhf" git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
for i in ${OLD_TEMPLATES}; do echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
if [[ -f "${i}" ]]; then echo "Updating Jenkinsfile"
TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}" rm -Rf ${TEMPDIR}
fi exit 0
done
if [[ -n "${TEMPLATES_TO_DELETE}" ]]; then
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
for i in ${TEMPLATES_TO_DELETE}; do
git rm "${i}"
done
git commit -m 'Bot Updating Templated Files'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Deleting old and deprecated templates"
rm -Rf ${TEMPDIR}
exit 0
else
echo "No templates to delete"
fi
# Stage 3 - Update templates
CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
if [[ "${CURRENTHASH}" != "${NEWHASH}" ]] || ! grep -q '.jenkins-external' "${WORKSPACE}/.gitignore" 2>/dev/null; then
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
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || :
cp --parents readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/ || :
cd ${TEMPDIR}/repo/${LS_REPO}/
if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then
echo ".jenkins-external" >> .gitignore
git add .gitignore
fi
git add readme-vars.yml ${TEMPLATED_FILES}
git commit -m 'Bot Updating Templated Files'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
else
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
fi
mkdir -p ${TEMPDIR}/gitbook
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/gitbook/docker-documentation
if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md ${TEMPDIR}/gitbook/docker-documentation/images/
cd ${TEMPDIR}/gitbook/docker-documentation/
git add images/docker-${CONTAINER_NAME}.md
git commit -m 'Bot Updating Documentation'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git --all
fi
mkdir -p ${TEMPDIR}/unraid
git clone https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates
git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates
if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-logo.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
elif [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-icon.png ]]; then
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-icon.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
fi
if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then
cd ${TEMPDIR}/unraid/templates/
if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then
echo "Image is on the ignore list, marking Unraid template as deprecated"
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
git add -u unraid/${CONTAINER_NAME}.xml
git mv unraid/${CONTAINER_NAME}.xml unraid/deprecated/${CONTAINER_NAME}.xml || :
git commit -m 'Bot Moving Deprecated Unraid Template' || :
else else
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/ echo "Jenkinsfile is up to date."
git add unraid/${CONTAINER_NAME}.xml
git commit -m 'Bot Updating Unraid Template'
fi fi
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git --all # Stage 2 - Delete old templates
fi OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml Dockerfile.armhf"
rm -Rf ${TEMPDIR}''' for i in ${OLD_TEMPLATES}; do
script{ if [[ -f "${i}" ]]; then
env.FILES_UPDATED = sh( TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}"
script: '''cat /tmp/${COMMIT_SHA}-${BUILD_NUMBER}''', fi
returnStdout: true).trim() done
if [[ -n "${TEMPLATES_TO_DELETE}" ]]; then
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
for i in ${TEMPLATES_TO_DELETE}; do
git rm "${i}"
done
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 "Deleting old and deprecated templates"
rm -Rf ${TEMPDIR}
exit 0
else
echo "No templates to delete"
fi
# Stage 3 - Update templates
CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
if [[ "${CURRENTHASH}" != "${NEWHASH}" ]] || ! grep -q '.jenkins-external' "${WORKSPACE}/.gitignore" 2>/dev/null; then
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
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || :
cp --parents readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/ || :
cd ${TEMPDIR}/repo/${LS_REPO}/
if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then
echo ".jenkins-external" >> .gitignore
git add .gitignore
fi
git add readme-vars.yml ${TEMPLATED_FILES}
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}
else
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
fi
mkdir -p ${TEMPDIR}/docs
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/docs/docker-documentation
if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]] && [[ (! -f ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md ${TEMPDIR}/docs/docker-documentation/docs/images/
cd ${TEMPDIR}/docs/docker-documentation
GH_DOCS_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||')
git add docs/images/docker-${CONTAINER_NAME}.md
git commit -m 'Bot Updating Documentation'
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH}
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH}
fi
mkdir -p ${TEMPDIR}/unraid
git clone https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates
git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates
if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-logo.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
elif [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-icon.png ]]; then
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-icon.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
fi
if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then
cd ${TEMPDIR}/unraid/templates/
GH_TEMPLATES_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||')
if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then
echo "Image is on the ignore list, marking Unraid template as deprecated"
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
git add -u unraid/${CONTAINER_NAME}.xml
git mv unraid/${CONTAINER_NAME}.xml unraid/deprecated/${CONTAINER_NAME}.xml || :
git commit -m 'Bot Moving Deprecated Unraid Template' || :
else
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
git add unraid/${CONTAINER_NAME}.xml
git commit -m 'Bot Updating Unraid Template'
fi
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH}
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH}
fi
# Stage 4 - Sync Readme to Docker Hub
if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]]; then
if [[ $(cat ${TEMPDIR}/docker-${CONTAINER_NAME}/README.md | wc -m) > 25000 ]]; then
echo "Readme is longer than 25,000 characters. Syncing the lite version to Docker Hub"
DH_README_SYNC_PATH="${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/README.lite"
else
echo "Syncing readme to Docker Hub"
DH_README_SYNC_PATH="${TEMPDIR}/docker-${CONTAINER_NAME}/README.md"
fi
DH_TOKEN=$(curl -d '{"username":"'${DOCKERUSER}'", "password":"'${DOCKERHUB_TOKEN}'"}' -H "Content-Type: application/json" -X POST https://hub.docker.com/v2/users/login | jq -r '.token')
curl -s \
-H "Authorization: JWT ${DH_TOKEN}" \
-H "Content-Type: application/json" \
-X PATCH \
-d "{\\"full_description\\":$(jq -Rsa . ${DH_README_SYNC_PATH})}" \
https://hub.docker.com/v2/repositories/${DOCKERHUB_IMAGE} || :
else
echo "Not the default Github branch. Skipping readme sync to Docker Hub."
fi
rm -Rf ${TEMPDIR}'''
script{
env.FILES_UPDATED = sh(
script: '''cat /tmp/${COMMIT_SHA}-${BUILD_NUMBER}''',
returnStdout: true).trim()
}
} }
} }
} }
@@ -429,35 +469,6 @@ pipeline {
"visibility":"public"}' ''' "visibility":"public"}' '''
} }
} }
/* #######################
Scarf.sh package registry
####################### */
// Add package to Scarf.sh and set permissions
stage("Scarf.sh package registry"){
when {
branch "master"
environment name: 'EXIT_STATUS', value: ''
}
steps{
sh '''#! /bin/bash
PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/organizations/linuxserver-ci/packages | jq -r '.[] | select(.name=="linuxserver/qbittorrent") | .uuid' || :)
if [ -z "${PACKAGE_UUID}" ]; then
echo "Adding package to Scarf.sh"
curl -sX POST https://scarf.sh/api/v1/organizations/linuxserver-ci/packages \
-H "Authorization: Bearer ${SCARF_TOKEN}" \
-H "Content-Type: application/json" \
-d '{"name":"linuxserver/qbittorrent",\
"shortDescription":"example description",\
"libraryType":"docker",\
"website":"https://github.com/linuxserver/docker-qbittorrent",\
"backendUrl":"https://ghcr.io/linuxserver/qbittorrent",\
"publicUrl":"https://lscr.io/linuxserver/qbittorrent"}' || :
else
echo "Package already exists on Scarf.sh"
fi
'''
}
}
/* ############### /* ###############
Build Container Build Container
############### */ ############### */
@@ -592,7 +603,8 @@ pipeline {
wait wait
git add package_versions.txt git add package_versions.txt
git commit -m 'Bot Updating Package Versions' git commit -m 'Bot Updating Package Versions'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all 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/packages-${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER}
echo "Package tag updated, stopping build process" echo "Package tag updated, stopping build process"
else else
@@ -853,37 +865,39 @@ pipeline {
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @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'''
} }
} }
// Use helper container to sync the current README on master to the dockerhub endpoint // Add protection to the release branch
stage('Sync-README') { stage('Github-Release-Branch-Protection') {
when { when {
branch "master"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
withCredentials([ echo "Setting up protection for release branch master"
[ sh '''#! /bin/bash
$class: 'UsernamePasswordMultiBinding', curl -H "Authorization: token ${GITHUB_TOKEN}" -X PUT https://api.github.com/repos/${LS_USER}/${LS_REPO}/branches/master/protection \
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207', -d $(jq -c . << EOF
usernameVariable: 'DOCKERUSER', {
passwordVariable: 'DOCKERPASS' "required_status_checks": null,
] "enforce_admins": false,
]) { "required_pull_request_reviews": {
sh '''#! /bin/bash "dismiss_stale_reviews": false,
set -e "require_code_owner_reviews": false,
TEMPDIR=$(mktemp -d) "require_last_push_approval": false,
docker pull ghcr.io/linuxserver/jenkins-builder:latest "required_approving_review_count": 1
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH="${BRANCH_NAME}" -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest },
docker pull ghcr.io/linuxserver/readme-sync "restrictions": null,
docker run --rm=true \ "required_linear_history": false,
-e DOCKERHUB_USERNAME=$DOCKERUSER \ "allow_force_pushes": false,
-e DOCKERHUB_PASSWORD=$DOCKERPASS \ "allow_deletions": false,
-e GIT_REPOSITORY=${LS_USER}/${LS_REPO} \ "block_creations": false,
-e DOCKER_REPOSITORY=${IMAGE} \ "required_conversation_resolution": true,
-e GIT_BRANCH=master \ "lock_branch": false,
-v ${TEMPDIR}/docker-${CONTAINER_NAME}:/mnt \ "allow_fork_syncing": false,
ghcr.io/linuxserver/readme-sync bash -c 'node sync' "required_signatures": false
rm -Rf ${TEMPDIR} ''' }
} EOF
) '''
} }
} }
// If this is a Pull request send the CI link as a comment on it // If this is a Pull request send the CI link as a comment on it

173
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-qbittorrent/blob/master/.github/CONTRIBUTING.md --> <!-- Please read https://github.com/linuxserver/docker-qbittorrent/blob/master/.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!")
@@ -46,7 +45,7 @@ The [Qbittorrent](https://www.qbittorrent.org/) project aims to provide an open-
## 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/qbittorrent:latest` should retrieve the correct image for your arch, but you can also pull specific arch images via tags. Simply pulling `lscr.io/linuxserver/qbittorrent:latest` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
@@ -66,41 +65,29 @@ This image provides various versions that are available via tags. Please read th
| :----: | :----: |--- | | :----: | :----: |--- |
| latest | ✅ | Stable qbittorrent releases | | latest | ✅ | Stable qbittorrent releases |
| libtorrentv1 | ✅ | Static qbittorrent builds using libtorrent v1 | | libtorrentv1 | ✅ | Static qbittorrent builds using libtorrent v1 |
## Application Setup ## Application Setup
The webui is at `<your-ip>:8080` and the default username/password is `admin/adminadmin`. The web UI is at `<your-ip>:8080` and a temporary password for the `admin` user will be printed to the container log on startup.
Change username/password via the webui in the webui section of settings. You must then change username/password in the web UI section of settings. If you do not change the password a new one will be generated every time the container starts.
### WEBUI_PORT variable
Due to issues with CSRF and port mapping, should you require to alter the port for the webui you need to change both sides of the -p 8080 switch AND set the WEBUI_PORT variable to the new port.
For example, to set the port to 8090 you need to set -p 8090:8090 and -e WEBUI_PORT=8090
This should alleviate the "white screen" issue.
If you have no webui , check the file /config/qBittorrent/qBittorrent.conf
edit or add the following lines
```text
WebUI\Address=*
WebUI\ServerDomains=*
```
If you are running a very old (3.x) kernel you may run into [this issue](https://github.com/linuxserver/docker-qbittorrent/issues/103) which can be worked around using [this method](https://github.com/linuxserver/docker-qbittorrent/issues/103#issuecomment-831238484) If you are running a very old (3.x) kernel you may run into [this issue](https://github.com/linuxserver/docker-qbittorrent/issues/103) which can be worked around using [this method](https://github.com/linuxserver/docker-qbittorrent/issues/103#issuecomment-831238484)
### WEBUI_PORT variable
Due to issues with CSRF and port mapping, should you require to alter the port for the web UI you need to change both sides of the -p 8080 switch AND set the WEBUI_PORT variable to the new port.
For example, to set the port to 8090 you need to set -p 8090:8090 and -e WEBUI_PORT=8090
## 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.
### 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:
qbittorrent: qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest image: lscr.io/linuxserver/qbittorrent:latest
@@ -136,12 +123,11 @@ docker run -d \
-v /path/to/downloads:/downloads \ -v /path/to/downloads:/downloads \
--restart unless-stopped \ --restart unless-stopped \
lscr.io/linuxserver/qbittorrent:latest lscr.io/linuxserver/qbittorrent:latest
``` ```
## 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 |
| :----: | --- | | :----: | --- |
@@ -151,7 +137,7 @@ Container images are configured using parameters passed at runtime (such as thos
| `-e PUID=1000` | for UserID - see below for explanation | | `-e PUID=1000` | for UserID - see below for explanation |
| `-e PGID=1000` | for GroupID - see below for explanation | | `-e PGID=1000` | for GroupID - see below for explanation |
| `-e TZ=Etc/UTC` | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List). | | `-e TZ=Etc/UTC` | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List). |
| `-e WEBUI_PORT=8080` | for changing the port of the webui, see below for explanation | | `-e WEBUI_PORT=8080` | for changing the port of the web UI, see below for explanation |
| `-v /config` | Contains all relevant configuration files. | | `-v /config` | Contains all relevant configuration files. |
| `-v /downloads` | Location of downloads on disk. | | `-v /downloads` | Location of downloads on disk. |
@@ -162,10 +148,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
@@ -174,15 +160,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
@@ -193,53 +184,100 @@ 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 qbittorrent /bin/bash` * Shell access whilst the container is running:
* To monitor the logs of the container in realtime: `docker logs -f qbittorrent`
* container version number ```bash
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' qbittorrent` docker exec -it qbittorrent /bin/bash
* image version number ```
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/qbittorrent:latest`
* To monitor the logs of the container in realtime:
```bash
docker logs -f qbittorrent
```
* Container version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' qbittorrent
```
* Image version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/qbittorrent:latest
```
## 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 qbittorrent` * All images:
* Let compose update all containers as necessary: `docker-compose up -d`
* or update a single container: `docker-compose up -d qbittorrent` ```bash
* You can also remove the old dangling images: `docker image prune` docker-compose pull
```
* Single image:
```bash
docker-compose pull qbittorrent
```
* Update containers:
* All containers:
```bash
docker-compose up -d
```
* Single container:
```bash
docker-compose up -d qbittorrent
```
* 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/qbittorrent:latest` * Update the image:
* Stop the running container: `docker stop qbittorrent`
* Delete the container: `docker rm qbittorrent` ```bash
docker pull lscr.io/linuxserver/qbittorrent:latest
```
* Stop the running container:
```bash
docker stop qbittorrent
```
* Delete the container:
```bash
docker rm qbittorrent
```
* 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 qbittorrent
```
* 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
@@ -264,6 +302,9 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions ## Versions
* **31.01.24:** - Remove obsolete compat packages.
* **25.12.23:** - Only pull stable releases of qbittorrent-cli.
* **07.10.23:** - Install unrar from [linuxserver repo](https://github.com/linuxserver/docker-unrar).
* **10.08.23:** - Bump unrar to 6.2.10. * **10.08.23:** - Bump unrar to 6.2.10.
* **17.06.23:** - Deprecate armhf as per [https://www.linuxserver.io/armhf](https://www.linuxserver.io/armhf). * **17.06.23:** - Deprecate armhf as per [https://www.linuxserver.io/armhf](https://www.linuxserver.io/armhf).
* **10.06.23:** - Bump unrar to 6.2.8. * **10.06.23:** - Bump unrar to 6.2.8.

View File

@@ -1,261 +1,258 @@
NAME VERSION TYPE NAME VERSION TYPE
7zip 23.01-r0 apk 7zip 23.01-r0 apk
Alba.CsConsoleFormat 1.0.0.89 dotnet Alba.CsConsoleFormat 1.0.0.89 dotnet
BencodeNET 2.3.0.0 dotnet BencodeNET 2.3.0.0 dotnet
BouncyCastle.Crypto 1.8.8.2 dotnet Bouncy Castle for .NET (netstandard2.0) 1.8.8.2 dotnet
CsvHelper 12.0.0.0 dotnet CommandLineUtils 2.4.4+3c2a4909757a51602dcca9b961d577511b85fd31.3c2a4909757a51602dcca9b961d577511b85fd31 dotnet
Json.NET .NET Standard 2.0 13.0.1.25517 dotnet CsvHelper 12.0.0.0 dotnet
McMaster.Extensions.CommandLineUtils 2.4.4.0 dotnet Json.NET 13.0.3.27908 dotnet
Microsoft.CSharp 4.700.22.56512 dotnet Microsoft.CSharp 4.700.22.56512 dotnet
Microsoft.VisualBasic 4.700.22.56512 dotnet Microsoft.VisualBasic 4.700.22.56512 dotnet
Microsoft.VisualBasic.Core 4.700.22.56512 dotnet Microsoft.VisualBasic.Core 4.700.22.56512 dotnet
Microsoft.Win32.Primitives 4.700.22.56512 dotnet Microsoft.Win32.Primitives 4.700.22.56512 dotnet
Microsoft.Win32.Registry 4.700.22.56512 dotnet Microsoft.Win32.Registry 4.700.22.56512 dotnet
Mono.Posix.NETStandard.dll 1.0.0.0 dotnet Mono.Posix.NETStandard 1.0.0.0 dotnet
NJsonSchema 9.14.1.0 dotnet NJsonSchema 9.14.1.0 dotnet
Portable.Xaml.dll 0.18.0.0 dotnet Portable.Xaml.dll 0.18.0.0 dotnet
QBittorrent.Client 1.8.23016.2 dotnet QBittorrent.Client 1.9.23349.1 dotnet
System 4.700.22.56512 dotnet System 4.700.22.56512 dotnet
System.AppContext 4.700.22.56512 dotnet System.AppContext 4.700.22.56512 dotnet
System.Buffers 4.700.22.56512 dotnet System.Buffers 4.700.22.56512 dotnet
System.Collections 4.700.22.56512 dotnet System.Collections 4.700.22.56512 dotnet
System.Collections.Concurrent 4.700.22.56512 dotnet System.Collections.Concurrent 4.700.22.56512 dotnet
System.Collections.Immutable 4.700.22.56512 dotnet System.Collections.Immutable 4.700.22.56512 dotnet
System.Collections.NonGeneric 4.700.22.56512 dotnet System.Collections.NonGeneric 4.700.22.56512 dotnet
System.Collections.Specialized 4.700.22.56512 dotnet System.Collections.Specialized 4.700.22.56512 dotnet
System.ComponentModel 4.700.22.56512 dotnet System.ComponentModel 4.700.22.56512 dotnet
System.ComponentModel.Annotations 4.700.22.56512 dotnet System.ComponentModel.Annotations 4.700.22.56512 dotnet
System.ComponentModel.DataAnnotations 4.700.22.56512 dotnet System.ComponentModel.DataAnnotations 4.700.22.56512 dotnet
System.ComponentModel.EventBasedAsync 4.700.22.56512 dotnet System.ComponentModel.EventBasedAsync 4.700.22.56512 dotnet
System.ComponentModel.Primitives 4.700.22.56512 dotnet System.ComponentModel.Primitives 4.700.22.56512 dotnet
System.ComponentModel.TypeConverter 4.700.22.56512 dotnet System.ComponentModel.TypeConverter 4.700.22.56512 dotnet
System.Configuration 4.700.22.56512 dotnet System.Configuration 4.700.22.56512 dotnet
System.Console 4.700.22.56512 dotnet System.Console 4.700.22.56512 dotnet
System.Core 4.700.22.56512 dotnet System.Core 4.700.22.56512 dotnet
System.Data 4.700.22.56512 dotnet System.Data 4.700.22.56512 dotnet
System.Data.Common 4.700.22.56512 dotnet System.Data.Common 4.700.22.56512 dotnet
System.Data.DataSetExtensions 4.700.22.56512 dotnet System.Data.DataSetExtensions 4.700.22.56512 dotnet
System.Diagnostics.Contracts 4.700.22.56512 dotnet System.Diagnostics.Contracts 4.700.22.56512 dotnet
System.Diagnostics.Debug 4.700.22.56512 dotnet System.Diagnostics.Debug 4.700.22.56512 dotnet
System.Diagnostics.DiagnosticSource 4.700.22.56512 dotnet System.Diagnostics.DiagnosticSource 4.700.22.56512 dotnet
System.Diagnostics.FileVersionInfo 4.700.22.56512 dotnet System.Diagnostics.FileVersionInfo 4.700.22.56512 dotnet
System.Diagnostics.Process 4.700.22.56512 dotnet System.Diagnostics.Process 4.700.22.56512 dotnet
System.Diagnostics.StackTrace 4.700.22.56512 dotnet System.Diagnostics.StackTrace 4.700.22.56512 dotnet
System.Diagnostics.TextWriterTraceListener 4.700.22.56512 dotnet System.Diagnostics.TextWriterTraceListener 4.700.22.56512 dotnet
System.Diagnostics.Tools 4.700.22.56512 dotnet System.Diagnostics.Tools 4.700.22.56512 dotnet
System.Diagnostics.TraceSource 4.700.22.56512 dotnet System.Diagnostics.TraceSource 4.700.22.56512 dotnet
System.Diagnostics.Tracing 4.700.22.56512 dotnet System.Diagnostics.Tracing 4.700.22.56512 dotnet
System.Drawing 4.700.22.56512 dotnet System.Drawing 4.700.22.56512 dotnet
System.Drawing.Primitives 4.700.22.56512 dotnet System.Drawing.Primitives 4.700.22.56512 dotnet
System.Dynamic.Runtime 4.700.22.56512 dotnet System.Dynamic.Runtime 4.700.22.56512 dotnet
System.Globalization 4.700.22.56512 dotnet System.Globalization 4.700.22.56512 dotnet
System.Globalization.Calendars 4.700.22.56512 dotnet System.Globalization.Calendars 4.700.22.56512 dotnet
System.Globalization.Extensions 4.700.22.56512 dotnet System.Globalization.Extensions 4.700.22.56512 dotnet
System.IO 4.700.22.56512 dotnet System.IO 4.700.22.56512 dotnet
System.IO.Compression 4.700.22.56512 dotnet System.IO.Compression 4.700.22.56512 dotnet
System.IO.Compression.Brotli 4.700.22.56512 dotnet System.IO.Compression.Brotli 4.700.22.56512 dotnet
System.IO.Compression.FileSystem 4.700.22.56512 dotnet System.IO.Compression.FileSystem 4.700.22.56512 dotnet
System.IO.Compression.ZipFile 4.700.22.56512 dotnet System.IO.Compression.ZipFile 4.700.22.56512 dotnet
System.IO.FileSystem 4.700.22.56512 dotnet System.IO.FileSystem 4.700.22.56512 dotnet
System.IO.FileSystem.AccessControl 4.700.22.56512 dotnet System.IO.FileSystem.AccessControl 4.700.22.56512 dotnet
System.IO.FileSystem.DriveInfo 4.700.22.56512 dotnet System.IO.FileSystem.DriveInfo 4.700.22.56512 dotnet
System.IO.FileSystem.Primitives 4.700.22.56512 dotnet System.IO.FileSystem.Primitives 4.700.22.56512 dotnet
System.IO.FileSystem.Watcher 4.700.22.56512 dotnet System.IO.FileSystem.Watcher 4.700.22.56512 dotnet
System.IO.IsolatedStorage 4.700.22.56512 dotnet System.IO.IsolatedStorage 4.700.22.56512 dotnet
System.IO.MemoryMappedFiles 4.700.22.56512 dotnet System.IO.MemoryMappedFiles 4.700.22.56512 dotnet
System.IO.Pipes 4.700.22.56512 dotnet System.IO.Pipes 4.700.22.56512 dotnet
System.IO.Pipes.AccessControl 4.700.22.56512 dotnet System.IO.Pipes.AccessControl 4.700.22.56512 dotnet
System.IO.UnmanagedMemoryStream 4.700.22.56512 dotnet System.IO.UnmanagedMemoryStream 4.700.22.56512 dotnet
System.Linq 4.700.22.56512 dotnet System.Linq 4.700.22.56512 dotnet
System.Linq.Expressions 4.700.22.56512 dotnet System.Linq.Expressions 4.700.22.56512 dotnet
System.Linq.Parallel 4.700.22.56512 dotnet System.Linq.Parallel 4.700.22.56512 dotnet
System.Linq.Queryable 4.700.22.56512 dotnet System.Linq.Queryable 4.700.22.56512 dotnet
System.Memory 4.700.22.56512 dotnet System.Memory 4.700.22.56512 dotnet
System.Net 4.700.22.56512 dotnet System.Net 4.700.22.56512 dotnet
System.Net.Http 4.700.22.56512 dotnet System.Net.Http 4.700.22.56512 dotnet
System.Net.HttpListener 4.700.22.56512 dotnet System.Net.HttpListener 4.700.22.56512 dotnet
System.Net.IPNetwork 2.5.235 dotnet System.Net.IPNetwork 2.5.235 dotnet
System.Net.Mail 4.700.22.56512 dotnet System.Net.Mail 4.700.22.56512 dotnet
System.Net.NameResolution 4.700.22.56512 dotnet System.Net.NameResolution 4.700.22.56512 dotnet
System.Net.NetworkInformation 4.700.22.56512 dotnet System.Net.NetworkInformation 4.700.22.56512 dotnet
System.Net.Ping 4.700.22.56512 dotnet System.Net.Ping 4.700.22.56512 dotnet
System.Net.Primitives 4.700.22.56512 dotnet System.Net.Primitives 4.700.22.56512 dotnet
System.Net.Requests 4.700.22.56512 dotnet System.Net.Requests 4.700.22.56512 dotnet
System.Net.Security 4.700.22.56512 dotnet System.Net.Security 4.700.22.56512 dotnet
System.Net.ServicePoint 4.700.22.56512 dotnet System.Net.ServicePoint 4.700.22.56512 dotnet
System.Net.Sockets 4.700.22.56512 dotnet System.Net.Sockets 4.700.22.56512 dotnet
System.Net.WebClient 4.700.22.56512 dotnet System.Net.WebClient 4.700.22.56512 dotnet
System.Net.WebHeaderCollection 4.700.22.56512 dotnet System.Net.WebHeaderCollection 4.700.22.56512 dotnet
System.Net.WebProxy 4.700.22.56512 dotnet System.Net.WebProxy 4.700.22.56512 dotnet
System.Net.WebSockets 4.700.22.56512 dotnet System.Net.WebSockets 4.700.22.56512 dotnet
System.Net.WebSockets.Client 4.700.22.56512 dotnet System.Net.WebSockets.Client 4.700.22.56512 dotnet
System.Numerics 4.700.22.56512 dotnet System.Numerics 4.700.22.56512 dotnet
System.Numerics.Vectors 4.700.22.56512 dotnet System.Numerics.Vectors 4.700.22.56512 dotnet
System.ObjectModel 4.700.22.56512 dotnet System.ObjectModel 4.700.22.56512 dotnet
System.Private.CoreLib 4.700.22.55902 dotnet System.Private.CoreLib 3.1.32-servicing.22559.2+c17d273aa03d4b9d14c92248a91f0d0faa881b98 dotnet
System.Private.DataContractSerialization 4.700.22.56512 dotnet System.Private.DataContractSerialization 4.700.22.56512 dotnet
System.Private.Uri 4.700.22.56512 dotnet System.Private.Uri 4.700.22.56512 dotnet
System.Private.Xml 4.700.22.56512 dotnet System.Private.Xml 4.700.22.56512 dotnet
System.Private.Xml.Linq 4.700.22.56512 dotnet System.Private.Xml.Linq 4.700.22.56512 dotnet
System.Reflection 4.700.22.56512 dotnet System.Reflection 4.700.22.56512 dotnet
System.Reflection.DispatchProxy 4.700.22.56512 dotnet System.Reflection.DispatchProxy 4.700.22.56512 dotnet
System.Reflection.Emit 4.700.22.56512 dotnet System.Reflection.Emit 4.700.22.56512 dotnet
System.Reflection.Emit.ILGeneration 4.700.22.56512 dotnet System.Reflection.Emit.ILGeneration 4.700.22.56512 dotnet
System.Reflection.Emit.Lightweight 4.700.22.56512 dotnet System.Reflection.Emit.Lightweight 4.700.22.56512 dotnet
System.Reflection.Extensions 4.700.22.56512 dotnet System.Reflection.Extensions 4.700.22.56512 dotnet
System.Reflection.Metadata 4.700.22.56512 dotnet System.Reflection.Metadata 4.700.22.56512 dotnet
System.Reflection.Primitives 4.700.22.56512 dotnet System.Reflection.Primitives 4.700.22.56512 dotnet
System.Reflection.TypeExtensions 4.700.22.56512 dotnet System.Reflection.TypeExtensions 4.700.22.56512 dotnet
System.Resources.Reader 4.700.22.56512 dotnet System.Resources.Reader 4.700.22.56512 dotnet
System.Resources.ResourceManager 4.700.22.56512 dotnet System.Resources.ResourceManager 4.700.22.56512 dotnet
System.Resources.Writer 4.700.22.56512 dotnet System.Resources.Writer 4.700.22.56512 dotnet
System.Runtime 4.700.22.56512 dotnet System.Runtime 4.700.22.56512 dotnet
System.Runtime.CompilerServices.VisualC 4.700.22.56512 dotnet System.Runtime.CompilerServices.VisualC 4.700.22.56512 dotnet
System.Runtime.Extensions 4.700.22.56512 dotnet System.Runtime.Extensions 4.700.22.56512 dotnet
System.Runtime.Handles 4.700.22.56512 dotnet System.Runtime.Handles 4.700.22.56512 dotnet
System.Runtime.InteropServices 4.700.22.56512 dotnet System.Runtime.InteropServices 4.700.22.56512 dotnet
System.Runtime.InteropServices.RuntimeInformation 4.700.22.56512 dotnet System.Runtime.InteropServices.RuntimeInformation 4.700.22.56512 dotnet
System.Runtime.InteropServices.WindowsRuntime 4.700.22.56512 dotnet System.Runtime.InteropServices.WindowsRuntime 4.700.22.56512 dotnet
System.Runtime.Intrinsics 4.700.22.56512 dotnet System.Runtime.Intrinsics 4.700.22.56512 dotnet
System.Runtime.Loader 4.700.22.56512 dotnet System.Runtime.Loader 4.700.22.56512 dotnet
System.Runtime.Numerics 4.700.22.56512 dotnet System.Runtime.Numerics 4.700.22.56512 dotnet
System.Runtime.Serialization 4.700.22.56512 dotnet System.Runtime.Serialization 4.700.22.56512 dotnet
System.Runtime.Serialization.Formatters 4.700.22.56512 dotnet System.Runtime.Serialization.Formatters 4.700.22.56512 dotnet
System.Runtime.Serialization.Json 4.700.22.56512 dotnet System.Runtime.Serialization.Json 4.700.22.56512 dotnet
System.Runtime.Serialization.Primitives 4.700.22.56512 dotnet System.Runtime.Serialization.Primitives 4.700.22.56512 dotnet
System.Runtime.Serialization.Xml 4.700.22.56512 dotnet System.Runtime.Serialization.Xml 4.700.22.56512 dotnet
System.Runtime.WindowsRuntime 4.700.22.56512 dotnet System.Runtime.WindowsRuntime 4.700.22.56512 dotnet
System.Runtime.WindowsRuntime.UI.Xaml 4.700.22.56512 dotnet System.Runtime.WindowsRuntime.UI.Xaml 4.700.22.56512 dotnet
System.Security 4.700.22.56512 dotnet System.Security 4.700.22.56512 dotnet
System.Security.AccessControl 4.700.22.56512 dotnet System.Security.AccessControl 4.700.22.56512 dotnet
System.Security.Claims 4.700.22.56512 dotnet System.Security.Claims 4.700.22.56512 dotnet
System.Security.Cryptography.Algorithms 4.700.22.56512 dotnet System.Security.Cryptography.Algorithms 4.700.22.56512 dotnet
System.Security.Cryptography.Cng 4.700.22.56512 dotnet System.Security.Cryptography.Cng 4.700.22.56512 dotnet
System.Security.Cryptography.Csp 4.700.22.56512 dotnet System.Security.Cryptography.Csp 4.700.22.56512 dotnet
System.Security.Cryptography.Encoding 4.700.22.56512 dotnet System.Security.Cryptography.Encoding 4.700.22.56512 dotnet
System.Security.Cryptography.OpenSsl 4.700.22.56512 dotnet System.Security.Cryptography.OpenSsl 4.700.22.56512 dotnet
System.Security.Cryptography.Primitives 4.700.22.56512 dotnet System.Security.Cryptography.Primitives 4.700.22.56512 dotnet
System.Security.Cryptography.ProtectedData 5.0.20.51904 dotnet System.Security.Cryptography.ProtectedData 5.0.20.51904 dotnet
System.Security.Cryptography.X509Certificates 4.700.22.56512 dotnet System.Security.Cryptography.X509Certificates 4.700.22.56512 dotnet
System.Security.Principal 4.700.22.56512 dotnet System.Security.Principal 4.700.22.56512 dotnet
System.Security.Principal.Windows 4.700.22.56512 dotnet System.Security.Principal.Windows 4.700.22.56512 dotnet
System.Security.SecureString 4.700.22.56512 dotnet System.Security.SecureString 4.700.22.56512 dotnet
System.ServiceModel.Web 4.700.22.56512 dotnet System.ServiceModel.Web 4.700.22.56512 dotnet
System.ServiceProcess 4.700.22.56512 dotnet System.ServiceProcess 4.700.22.56512 dotnet
System.Text.Encoding 4.700.22.56512 dotnet System.Text.Encoding 4.700.22.56512 dotnet
System.Text.Encoding.CodePages 4.700.22.56512 dotnet System.Text.Encoding.CodePages 4.700.22.56512 dotnet
System.Text.Encoding.Extensions 4.700.22.56512 dotnet System.Text.Encoding.Extensions 4.700.22.56512 dotnet
System.Text.Encodings.Web 4.700.22.56512 dotnet System.Text.Encodings.Web 4.700.22.56512 dotnet
System.Text.Json 4.700.22.56512 dotnet System.Text.Json 4.700.22.56512 dotnet
System.Text.RegularExpressions 4.700.22.56512 dotnet System.Text.RegularExpressions 4.700.22.56512 dotnet
System.Threading 4.700.22.56512 dotnet System.Threading 4.700.22.56512 dotnet
System.Threading.Channels 4.700.22.56512 dotnet System.Threading.Channels 4.700.22.56512 dotnet
System.Threading.Overlapped 4.700.22.56512 dotnet System.Threading.Overlapped 4.700.22.56512 dotnet
System.Threading.Tasks 4.700.22.56512 dotnet System.Threading.Tasks 4.700.22.56512 dotnet
System.Threading.Tasks.Dataflow 4.700.22.56512 dotnet System.Threading.Tasks.Dataflow 4.700.22.56512 dotnet
System.Threading.Tasks.Extensions 4.700.22.56512 dotnet System.Threading.Tasks.Extensions 4.700.22.56512 dotnet
System.Threading.Tasks.Parallel 4.700.22.56512 dotnet System.Threading.Tasks.Parallel 4.700.22.56512 dotnet
System.Threading.Thread 4.700.22.56512 dotnet System.Threading.Thread 4.700.22.56512 dotnet
System.Threading.ThreadPool 4.700.22.56512 dotnet System.Threading.ThreadPool 4.700.22.56512 dotnet
System.Threading.Timer 4.700.22.56512 dotnet System.Threading.Timer 4.700.22.56512 dotnet
System.Transactions 4.700.22.56512 dotnet System.Transactions 4.700.22.56512 dotnet
System.Transactions.Local 4.700.22.56512 dotnet System.Transactions.Local 4.700.22.56512 dotnet
System.ValueTuple 4.700.22.56512 dotnet System.ValueTuple 4.700.22.56512 dotnet
System.Web 4.700.22.56512 dotnet System.Web 4.700.22.56512 dotnet
System.Web.HttpUtility 4.700.22.56512 dotnet System.Web.HttpUtility 4.700.22.56512 dotnet
System.Windows 4.700.22.56512 dotnet System.Windows 4.700.22.56512 dotnet
System.Xml 4.700.22.56512 dotnet System.Xml 4.700.22.56512 dotnet
System.Xml.Linq 4.700.22.56512 dotnet System.Xml.Linq 4.700.22.56512 dotnet
System.Xml.ReaderWriter 4.700.22.56512 dotnet System.Xml.ReaderWriter 4.700.22.56512 dotnet
System.Xml.Serialization 4.700.22.56512 dotnet System.Xml.Serialization 4.700.22.56512 dotnet
System.Xml.XDocument 4.700.22.56512 dotnet System.Xml.XDocument 4.700.22.56512 dotnet
System.Xml.XPath 4.700.22.56512 dotnet System.Xml.XPath 4.700.22.56512 dotnet
System.Xml.XPath.XDocument 4.700.22.56512 dotnet System.Xml.XPath.XDocument 4.700.22.56512 dotnet
System.Xml.XmlDocument 4.700.22.56512 dotnet System.Xml.XmlDocument 4.700.22.56512 dotnet
System.Xml.XmlSerializer 4.700.22.56512 dotnet System.Xml.XmlSerializer 4.700.22.56512 dotnet
WindowsBase 4.700.22.56512 dotnet WindowsBase 4.700.22.56512 dotnet
alpine-baselayout 3.4.3-r1 apk alpine-baselayout 3.5.3-r1 apk
alpine-baselayout-data 3.4.3-r1 apk alpine-baselayout-data 3.5.3-r1 apk
alpine-keys 2.4-r1 apk alpine-keys 2.4-r1 apk
apk-tools 2.14.0-r5 apk apk-tools 2.14.0-r5 apk
bash 5.2.15-r5 apk bash 5.2.26-r0 apk
brotli-libs 1.0.9-r15 apk brotli-libs 1.1.0-r1 apk
busybox 1.36.1-r6 apk busybox 1.36.1-r19 apk
busybox-binsh 1.36.1-r6 apk busybox-binsh 1.36.1-r19 apk
c-ares 1.19.1-r1 apk c-ares 1.26.0-r0 apk
ca-certificates 20230506-r0 apk ca-certificates 20230506-r1 apk
ca-certificates-bundle 20230506-r0 apk ca-certificates-bundle 20230506-r1 apk
coreutils 9.3-r7 apk coreutils 9.4-r2 apk
coreutils-env 9.3-r7 apk coreutils-env 9.4-r2 apk
coreutils-fmt 9.3-r7 apk coreutils-fmt 9.4-r2 apk
coreutils-sha512sum 9.3-r7 apk coreutils-sha512sum 9.4-r2 apk
curl 8.2.1-r0 apk curl 8.5.0-r1 apk
dbus-libs 1.14.8-r0 apk dbus-libs 1.14.10-r1 apk
double-conversion 3.3.0-r0 apk double-conversion 3.3.0-r0 apk
duktape 2.7.0-r1 apk duktape 2.7.0-r1 apk
gdbm 1.23-r1 apk gdbm 1.23-r1 apk
glib 2.76.4-r1 apk glib 2.78.4-r0 apk
icu-data-en 73.2-r2 apk icu-data-en 74.2-r0 apk
icu-libs 73.2-r2 apk icu-libs 74.2-r0 apk
jq 1.6-r3 apk jq 1.7.1-r0 apk
libacl 2.3.1-r4 apk libacl 2.3.2-r0 apk
libattr 2.5.1-r5 apk libattr 2.5.2-r0 apk
libb2 0.98.1-r3 apk libb2 0.98.1-r3 apk
libblkid 2.39.2-r0 apk libblkid 2.39.3-r0 apk
libbsd 0.11.7-r3 apk libbsd 0.11.8-r0 apk
libbz2 1.0.8-r6 apk libbz2 1.0.8-r6 apk
libc-utils 0.7.2-r5 apk libc-utils 0.7.2-r5 apk
libcrypto1.1 1.1.1u-r1 apk libcrypto3 3.1.4-r5 apk
libcrypto3 3.1.2-r0 apk libcurl 8.5.0-r1 apk
libcurl 8.2.1-r0 apk libexpat 2.5.0-r2 apk
libexpat 2.5.0-r2 apk libffi 3.4.4-r3 apk
libffi 3.4.4-r3 apk libgcc 13.2.1_git20231014-r0 apk
libgcc 13.1.1_git20230722-r2 apk libgomp 13.2.1_git20231014-r0 apk
libgomp 13.1.1_git20230722-r2 apk libidn2 2.3.7-r0 apk
libidn2 2.3.4-r3 apk libintl 0.22.4-r0 apk
libintl 0.22-r0 apk libmd 1.1.0-r0 apk
libmd 1.1.0-r0 apk libmount 2.39.3-r0 apk
libmount 2.39.2-r0 apk libncursesw 6.4_p20231125-r0 apk
libncursesw 6.4_p20230722-r0 apk libpanelw 6.4_p20231125-r0 apk
libpanelw 6.4_p20230722-r0 apk libpcre2-16 10.42-r2 apk
libpcre2-16 10.42-r1 apk libproc2 4.0.4-r0 apk
libproc2 4.0.3-r2 apk libproxy 0.5.3-r0 apk
libproxy 0.5.3-r0 apk libpsl 0.21.5-r0 apk
libssl1.1 1.1.1u-r1 apk libssl3 3.1.4-r5 apk
libssl3 3.1.2-r0 apk libstdc++ 13.2.1_git20231014-r0 apk
libstdc++ 13.1.1_git20230722-r2 apk libtorrent-rasterbar 2.0.9-r2 apk
libtorrent-rasterbar 2.0.9-r2 apk libunistring 1.1-r2 apk
libunistring 1.1-r2 apk linux-pam 1.5.3-r7 apk
linux-pam 1.5.3-r4 apk mpdecimal 4.0.0-r0 apk
mpdecimal 2.5.1-r2 apk mscorlib 4.700.22.56512 dotnet
mscorlib 4.700.22.56512 dotnet musl 1.2.4_git20230717-r5 apk
musl 1.2.4_git20230717-r2 apk musl-utils 1.2.4_git20230717-r5 apk
musl-utils 1.2.4_git20230717-r2 apk ncurses-terminfo-base 6.4_p20231125-r0 apk
ncurses-terminfo-base 6.4_p20230722-r0 apk netcat-openbsd 1.226-r0 apk
netcat-openbsd 1.225-r0 apk netstandard 4.700.22.56512 dotnet
netstandard 4.700.22.56512 dotnet nghttp2-libs 1.59.0-r0 apk
nghttp2-libs 1.55.1-r0 apk oniguruma 6.9.9-r0 apk
oniguruma 6.9.8-r1 apk pcre2 10.42-r2 apk
openssl 3.1.2-r0 apk procps-ng 4.0.4-r0 apk
openssl1.1-compat 1.1.1u-r1 apk pyc 3.11.7-r1 apk
pcre2 10.42-r1 apk python3 3.11.7-r1 apk
procps-ng 4.0.3-r2 apk python3-pyc 3.11.7-r1 apk
pyc 0.1-r0 apk python3-pycache-pyc0 3.11.7-r1 apk
python3 3.11.4-r4 apk qbittorrent-nox 4.6.3-r0 apk
python3-pyc 3.11.4-r4 apk qbt 1.8.24012.1+00a638ba43f1a80a03cc8be139f586ce9886c908 dotnet
python3-pycache-pyc0 3.11.4-r4 apk qt6-qtbase 6.6.1-r0 apk
qbittorrent-nox 4.5.4-r2 apk qt6-qtbase-sqlite 6.6.1-r0 apk
qbt 1.7.23016.1 dotnet readline 8.2.10-r0 apk
qt6-qtbase 6.5.2-r0 apk scanelf 1.3.7-r2 apk
qt6-qtbase-sqlite 6.5.2-r0 apk shadow 4.14.3-r0 apk
readline 8.2.1-r2 apk skalibs 2.14.1.0-r0 apk
scanelf 1.3.7-r2 apk sqlite-libs 3.45.1-r0 apk
shadow 4.13-r6 apk ssl_client 1.36.1-r19 apk
skalibs 2.13.1.1-r2 apk tzdata 2023d-r0 apk
sqlite-libs 3.42.0-r2 apk utmps-libs 0.1.2.2-r0 apk
ssl_client 1.36.1-r6 apk xz-libs 5.4.6-r0 apk
tzdata 2023c-r1 apk zlib 1.3.1-r0 apk
utmps-libs 0.1.2.1-r2 apk zstd-libs 1.5.5-r8 apk
xz-libs 5.4.4-r0 apk
zlib 1.2.13-r2 apk
zstd-libs 1.5.5-r7 apk

View File

@@ -16,7 +16,7 @@ available_architectures:
development_versions: true development_versions: true
development_versions_items: development_versions_items:
- { tag: "latest", desc: "Stable qbittorrent releases" } - { tag: "latest", desc: "Stable qbittorrent releases" }
- { tag: "libtorrentv1", desc: "Static qbittorrent builds using libtorrent v1" } - { tag: "libtorrentv1", desc: "Static qbittorrent builds using libtorrent v1" }
# container parameters # container parameters
common_param_env_vars_enabled: true common_param_env_vars_enabled: true
@@ -32,43 +32,29 @@ param_ports:
- { external_port: "6881", internal_port: "6881/udp", port_desc: "udp connection port" } - { external_port: "6881", internal_port: "6881/udp", port_desc: "udp connection port" }
param_usage_include_env: true param_usage_include_env: true
param_env_vars: param_env_vars:
- { env_var: "TZ", env_value: "Europe/London", desc: "Specify a timezone to use EG Europe/London"} - { env_var: "WEBUI_PORT", env_value: "8080", desc: "for changing the port of the web UI, see below for explanation"}
- { env_var: "WEBUI_PORT", env_value: "8080", desc: "for changing the port of the webui, see below for explanation"}
# optional parameters
optional_block_1: false
optional_block_1_items: ""
# application setup block # application setup block
app_setup_block_enabled: true app_setup_block_enabled: true
app_setup_block: | app_setup_block: |
The webui is at `<your-ip>:8080` and the default username/password is `admin/adminadmin`. The web UI is at `<your-ip>:8080` and a temporary password for the `admin` user will be printed to the container log on startup.
Change username/password via the webui in the webui section of settings. You must then change username/password in the web UI section of settings. If you do not change the password a new one will be generated every time the container starts.
If you are running a very old (3.x) kernel you may run into [this issue](https://github.com/linuxserver/docker-qbittorrent/issues/103) which can be worked around using [this method](https://github.com/linuxserver/docker-qbittorrent/issues/103#issuecomment-831238484)
### WEBUI_PORT variable ### WEBUI_PORT variable
Due to issues with CSRF and port mapping, should you require to alter the port for the webui you need to change both sides of the -p 8080 switch AND set the WEBUI_PORT variable to the new port.
For example, to set the port to 8090 you need to set -p 8090:8090 and -e WEBUI_PORT=8090
This should alleviate the "white screen" issue.
If you have no webui , check the file /config/qBittorrent/qBittorrent.conf
edit or add the following lines
```text Due to issues with CSRF and port mapping, should you require to alter the port for the web UI you need to change both sides of the -p 8080 switch AND set the WEBUI_PORT variable to the new port.
WebUI\Address=*
For example, to set the port to 8090 you need to set -p 8090:8090 and -e WEBUI_PORT=8090
WebUI\ServerDomains=*
```
If you are running a very old (3.x) kernel you may run into [this issue](https://github.com/linuxserver/docker-qbittorrent/issues/103) which can be worked around using [this method](https://github.com/linuxserver/docker-qbittorrent/issues/103#issuecomment-831238484)
# changelog # changelog
changelogs: changelogs:
- {date: "10.08.23:", desc: "Bump unrar to 6.2.10."} - { date: "31.01.24:", desc: "Remove obsolete compat packages."}
- { date: "25.12.23:", desc: "Only pull stable releases of qbittorrent-cli."}
- { date: "07.10.23:", desc: "Install unrar from [linuxserver repo](https://github.com/linuxserver/docker-unrar)."}
- { date: "10.08.23:", desc: "Bump unrar to 6.2.10."}
- { date: "17.06.23:", desc: "Deprecate armhf as per [https://www.linuxserver.io/armhf](https://www.linuxserver.io/armhf)." } - { date: "17.06.23:", desc: "Deprecate armhf as per [https://www.linuxserver.io/armhf](https://www.linuxserver.io/armhf)." }
- { date: "10.06.23:", desc: "Bump unrar to 6.2.8." } - { date: "10.06.23:", desc: "Bump unrar to 6.2.8." }
- { date: "23.02.23:", desc: "Add qt6-qtbase-sqlite to support SQLite database for resume files."} - { date: "23.02.23:", desc: "Add qt6-qtbase-sqlite to support SQLite database for resume files."}