diff --git a/dist/docker/.env b/dist/docker/.env new file mode 100644 index 000000000..27246a6b4 --- /dev/null +++ b/dist/docker/.env @@ -0,0 +1,8 @@ +# refer to Readme.md for an explanation of the variables + +QBT_EULA= +QBT_VERSION=devel +QBT_WEBUI_PORT=8080 + +QBT_CONFIG_PATH=/config +QBT_DOWNLOADS_PATH=/downloads diff --git a/dist/docker/Dockerfile b/dist/docker/Dockerfile index 4b0bd4552..e5111d4dd 100644 --- a/dist/docker/Dockerfile +++ b/dist/docker/Dockerfile @@ -42,8 +42,11 @@ RUN \ apk --no-cache add \ doas \ libtorrent-rasterbar \ + python3 \ qt6-qtbase \ - tini && \ + tini + +RUN \ adduser \ -D \ -H \ diff --git a/dist/docker/Readme.md b/dist/docker/Readme.md index faedf359c..4d19295dd 100644 --- a/dist/docker/Readme.md +++ b/dist/docker/Readme.md @@ -4,69 +4,92 @@ This Dockerfile allows you to build a docker image containing qBittorrent-nox ## Prerequisities -In order to build/run this image you'll need docker installed: https://docs.docker.com/get-docker/ +In order to build/run this image you'll need `docker` installed: https://docs.docker.com/get-docker/ + +It is also recommended to install `docker-compose` as it can significantly ease the process: https://docs.docker.com/compose/install/ ## Building docker image -In this docker folder run: -```shell -export \ - QBT_VERSION=devel -docker build \ - --build-arg QBT_VERSION \ - -t qbittorrent-nox:"$QBT_VERSION" \ - . -``` +* If you are using docker (not docker-compose) then run the following commands in this folder: + ```shell + export \ + QBT_VERSION=devel + docker build \ + --build-arg QBT_VERSION \ + -t qbittorrent-nox:"$QBT_VERSION" \ + . + ``` + +* If you are using docker-compose then you should edit `.env` file first. + You can find an explaination of the variables in the following [Parameters](#parameters) section. \ + Then run the following commands in this folder: + ```shell + docker compose build \ + --build-arg QBT_VERSION + ``` ### Parameters -* `QBT_VERSION` +#### Environment variables + +* `QBT_EULA` \ + This environment variable defines whether you accept the end-user license agreement (EULA) of qBittorrent. \ + **Put `accept` only if you understand and accepted the EULA.** You can find + the EULA [here](https://github.com/qbittorrent/qBittorrent/blob/56667e717b82c79433ecb8a5ff6cc2d7b315d773/src/app/main.cpp#L320-L323). +* `QBT_VERSION` \ This environment variable specifies the version of qBittorrent-nox to be built. \ For example, `4.4.0` is a valid entry. You can find all tagged versions [here](https://github.com/qbittorrent/qBittorrent/tags). \ Or you can put `devel` to build the latest development version. - -## Running docker image - -* To start the the docker image simply run: - ```shell - export \ - QBT_VERSION=devel \ - QBT_EULA=accept \ - QBT_WEBUI_PORT=8080 - docker run \ - -it \ - --read-only \ - --rm \ - --name qbittorrent-nox \ - -e QBT_EULA \ - -e QBT_WEBUI_PORT \ - -p "$QBT_WEBUI_PORT":"$QBT_WEBUI_PORT" \ - -p 6881:6881/tcp \ - -p 6881:6881/udp \ - -v /config:/config \ - -v /downloads:/downloads \ - qbittorrent-nox:"$QBT_VERSION" - ``` - Then you can login at: `http://127.0.0.1:8080` - -* To stop the container: - ```shell - docker stop -t 1800 qbittorrent-nox - ``` - -### Parameters - -* `QBT_VERSION` \ - The same as [above](#variables). -* `QBT_EULA` \ - This environment variable defines whether you accept the end-user license agreement (EULA) of qBittorrent. \ - Put `accept` only if you understand and accepted the EULA. You can find - the EULA [here](https://github.com/qbittorrent/qBittorrent/blob/56667e717b82c79433ecb8a5ff6cc2d7b315d773/src/app/main.cpp#L320-L323). * `QBT_WEBUI_PORT` \ This environment variable sets the port number which qBittorrent WebUI will be binded to. -### Volumes +#### Volumes There are some paths involved: * `/config` on your host machine will contain qBittorrent configurations * `/downloads` on your host machine will contain the files downloaded by qBittorrent + +## Running container + +* Using docker (not docker-compose), simply run: + ```shell + export \ + QBT_EULA=accept \ + QBT_VERSION=devel \ + QBT_WEBUI_PORT=8080 \ + QBT_CONFIG_PATH="/tmp/bbb/config" + QBT_DOWNLOADS_PATH="/tmp/bbb/downloads" + docker run \ + -t \ + --read-only \ + --rm \ + --tmpfs /tmp \ + --name qbittorrent-nox \ + -e QBT_EULA \ + -e QBT_WEBUI_PORT \ + -p "$QBT_WEBUI_PORT":"$QBT_WEBUI_PORT"/tcp \ + -p 6881:6881/tcp \ + -p 6881:6881/udp \ + -v "$QBT_CONFIG_PATH":/config \ + -v "$QBT_DOWNLOADS_PATH":/downloads \ + qbittorrent-nox:"$QBT_VERSION" + ``` + +* Using docker-compose: + ```shell + docker compose up + ``` + +Then you can login at: `http://127.0.0.1:8080` + +## Stopping container + +* Using docker (not docker-compose): + ```shell + docker stop -t 1800 qbittorrent-nox + ``` + +* Using docker-compose: + ```shell + docker compose down + ``` diff --git a/dist/docker/docker-compose.yml b/dist/docker/docker-compose.yml new file mode 100644 index 000000000..c5cab9846 --- /dev/null +++ b/dist/docker/docker-compose.yml @@ -0,0 +1,25 @@ +version: "3.9" + +services: + qbittorrent-nox: + build: . + container_name: qbittorrent-nox + environment: + - QBT_EULA=${QBT_EULA} + - QBT_VERSION=${QBT_VERSION} + - QBT_WEBUI_PORT=${QBT_WEBUI_PORT} + image: qbittorrent-nox:${QBT_VERSION} + ports: + # for bittorrent traffic + - 6881:6881/tcp + - 6881:6881/udp + # for WebUI + - ${QBT_WEBUI_PORT}:${QBT_WEBUI_PORT}/tcp + read_only: true + stop_grace_period: 30m + tmpfs: + - /tmp + tty: true + volumes: + - ${QBT_CONFIG_PATH}:/config + - ${QBT_DOWNLOADS_PATH}:/downloads