Skip to content

Commit 6f2afc3

Browse files
committed
Update README.md
1 parent 13cb4e7 commit 6f2afc3

File tree

1 file changed

+138
-75
lines changed

1 file changed

+138
-75
lines changed

README.md

Lines changed: 138 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,165 +1,203 @@
1-
# qbittorrent-nox-static
1+
# qBittorrent-nox Static Builds
22

33
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/9817ad80d35c480aa9842b53001d55b0)](https://app.codacy.com/gh/userdocs/qbittorrent-nox-static?utm_source=github.com&utm_medium=referral&utm_content=userdocs/qbittorrent-nox-static&utm_campaign=Badge_Grade)
44
[![CodeFactor](https://www.codefactor.io/repository/github/userdocs/qbittorrent-nox-static/badge)](https://www.codefactor.io/repository/github/userdocs/qbittorrent-nox-static)
55
[![CI](https://github.com/userdocs/qbittorrent-nox-static/actions/workflows/ci-main-reusable-caller.yml/badge.svg)](https://github.com/userdocs/qbittorrent-nox-static/actions/workflows/ci-main-reusable-caller.yml)
66

7-
## Summary
7+
Cross-platform static builds of qBittorrent-nox with the latest dependencies
88

9-
The `qbittorrent-nox-static` project is a `bash` build script that compiles a static `qbittorrent-nox` binary using the latest available dependencies from their source. These statically linked binaries can run on any matching CPU architecture and are not OS specific. This means you can run a `x86_64` Alpine edge build on any Linux based OS of like CentOS | Fedora | OpenSuse | Debian | Ubuntu and more.
9+
[📦 Latest Release](https://github.com/userdocs/qbittorrent-nox-static/releases/latest)[📖 Documentation](https://userdocs.github.io/qbittorrent-nox-static/introduction/)[🏷️ All Releases](https://github.com/userdocs/qbittorrent-nox-static/tags)
10+
11+
## 🚀 Quick Start
12+
13+
### Instant Installation (x86_64)
14+
15+
```bash
16+
mkdir -p ~/bin && source ~/.profile
17+
wget -qO ~/bin/qbittorrent-nox https://github.com/userdocs/qbittorrent-nox-static/releases/latest/download/x86_64-qbittorrent-nox
18+
chmod 700 ~/bin/qbittorrent-nox
19+
qbittorrent-nox
20+
```
21+
22+
**That's it!** Access the WebUI at `http://localhost:8080`
23+
Default credentials: `admin` / `adminadmin`
1024

1125
> [!TIP]
12-
> You don't need to use the script to access the binaries it creates, just use the [release tag](https://github.com/userdocs/qbittorrent-nox-static/tags) you need or [latest release page](https://github.com/userdocs/qbittorrent-nox-static/releases/latest)
26+
> Don't have x86_64? Check the [Installation section](#-installation) for your architecture.
1327
14-
See here for how to [install the latest release](https://github.com/userdocs/qbittorrent-nox-static?tab=readme-ov-file#install-the-latest-release)
28+
### What You Get
1529

16-
## Linked Github repositories
30+
**No installation hassles** - Single static binary
31+
**Latest versions** - Always up-to-date dependencies
32+
**Universal compatibility** - Runs on any Linux distro
33+
**Multiple architectures** - Support for ARM devices too
1734

18-
This build script uses and depends on some related repositories.
35+
## 📋 Table of Contents
1936

20-
- [qbt-musl-cross-make](https://github.com/userdocs/qbt-musl-cross-make)
21-
- [qbt-workflow-files](https://github.com/userdocs/qbt-workflow-files)
22-
- [qbt-ninja-build](https://github.com/userdocs/qbt-ninja-build)
23-
- [qbt-cmake-ninja-crossbuilds](https://github.com/userdocs/qbt-cmake-ninja-crossbuilds)
37+
- [Overview](#-overview)
38+
- [Features](#-features)
39+
- [Installation](#-installation)
40+
- [Libtorrent Versions](#-libtorrent-versions)
41+
- [Version Management](#-version-management)
42+
- [Dependency Tracking](#-dependency-tracking)
43+
- [Build Attestation](#%EF%B8%8F-build-attestation)
44+
- [Related Projects](#-related-projects)
45+
- [WSL2 Support](#-wsl2-support)
46+
- [Documentation](#-documentation)
2447

25-
## Documentation
48+
## 🔍 Overview
2649

27-
> [!TIP]
28-
> Visit the [documentation](https://userdocs.github.io/qbittorrent-nox-static/introduction/) for in depth information on using this project and script usage.
50+
The `qbittorrent-nox-static` project provides a bash build script that compiles static `qbittorrent-nox` binaries using the latest available dependencies from their source. These statically linked binaries offer several advantages:
2951

30-
## WSL2
52+
- **Universal compatibility**: Run on any Linux distribution with matching CPU architecture
53+
- **No dependencies**: All required libraries are statically linked
54+
- **Latest versions**: Built with the most recent stable releases of all dependencies
55+
- **Multiple architectures**: Support for x86, x86_64, ARM variants
3156

32-
> [!TIP]
33-
> These static builds can be used on WSL2 and accessed via `localhost:8080` using the download instructions below
57+
## ✨ Features
3458

35-
## Install the latest release
59+
- 🔧 **Static compilation** - No external dependencies required
60+
- 🏗️ **Multi-architecture support** - x86, x86_64, armhf, armv7, aarch64
61+
- 📦 **Latest dependencies** - Always built with current stable versions
62+
- 🔄 **Automated builds** - CI/CD pipeline ensures fresh releases
63+
- 🛡️ **Build attestation** - Cryptographically signed provenance
64+
- 📊 **Version tracking** - JSON metadata for dependency versions
3665

37-
> [!TIP]
38-
> For the most current build visit the [latest release page](https://github.com/userdocs/qbittorrent-nox-static/releases/latest)
66+
## 📦 Installation
3967

40-
Or uses these commands for your arch:
68+
Choose the command that matches your system architecture:
4169

42-
### x86
70+
### x86 (32-bit Intel/AMD)
4371

4472
```bash
4573
mkdir -p ~/bin && source ~/.profile
4674
wget -qO ~/bin/qbittorrent-nox https://github.com/userdocs/qbittorrent-nox-static/releases/latest/download/x86-qbittorrent-nox
4775
chmod 700 ~/bin/qbittorrent-nox
4876
```
4977

50-
### x86_64
78+
### x86_64 (64-bit Intel/AMD)
5179

5280
```bash
5381
mkdir -p ~/bin && source ~/.profile
5482
wget -qO ~/bin/qbittorrent-nox https://github.com/userdocs/qbittorrent-nox-static/releases/latest/download/x86_64-qbittorrent-nox
5583
chmod 700 ~/bin/qbittorrent-nox
5684
```
5785

58-
### armhf (armv6)
86+
### armhf (ARM v6 - Raspberry Pi 1/Zero)
5987

6088
```bash
6189
mkdir -p ~/bin && source ~/.profile
6290
wget -qO ~/bin/qbittorrent-nox https://github.com/userdocs/qbittorrent-nox-static/releases/latest/download/armhf-qbittorrent-nox
6391
chmod 700 ~/bin/qbittorrent-nox
6492
```
6593

66-
### armv7
94+
### armv7 (ARM v7 - Raspberry Pi 2/3/4 32-bit)
6795

6896
```bash
6997
mkdir -p ~/bin && source ~/.profile
7098
wget -qO ~/bin/qbittorrent-nox https://github.com/userdocs/qbittorrent-nox-static/releases/latest/download/armv7-qbittorrent-nox
7199
chmod 700 ~/bin/qbittorrent-nox
72100
```
73101

74-
### aarch64
102+
### aarch64 (ARM 64-bit - Raspberry Pi 3/4/5 64-bit)
75103

76104
```bash
77105
mkdir -p ~/bin && source ~/.profile
78106
wget -qO ~/bin/qbittorrent-nox https://github.com/userdocs/qbittorrent-nox-static/releases/latest/download/aarch64-qbittorrent-nox
79107
chmod 700 ~/bin/qbittorrent-nox
80108
```
81109

82-
## Libtorrent versions
110+
### Alternative Installation with curl
111+
112+
Replace `wget` with `curl` if preferred:
113+
114+
```bash
115+
mkdir -p ~/bin && source ~/.profile
116+
curl -sL -o ~/bin/qbittorrent-nox https://github.com/userdocs/qbittorrent-nox-static/releases/latest/download/x86_64-qbittorrent-nox
117+
chmod 700 ~/bin/qbittorrent-nox
118+
```
119+
120+
## 🔧 Libtorrent Versions
83121

84122
> [!IMPORTANT]
85-
> Libtorrent `v1.2` is currently the main branch supported by qBittorrent since a change with the release of [4.4.5](https://www.qbittorrent.org/news.php)
123+
> **Libtorrent v1.2** is currently the main branch supported by qBittorrent since the release of [4.4.5](https://www.qbittorrent.org/news.php). However, both v1.2 and v2.0 builds are provided.
124+
125+
This project automatically builds and releases binaries for both Libtorrent versions:
86126

87-
Libtorrent `v2.0` builds are still released as latest releases as it it does not really matter to this project as it always builds and releases for both `v1.2` and `v2.0`. See the next section for how to get the version you need via the latest release URL.
127+
- **Libtorrent v1.2**: Stable and widely supported (recommended)
128+
- **Libtorrent v2.0**: Latest features and improvements
88129

89130
> [!TIP]
90-
> You can view the current latest and pre releases and tags here <https://github.com/userdocs/qbittorrent-nox-static/tags>
131+
> You can view all current releases and pre-releases at <https://github.com/userdocs/qbittorrent-nox-static/tags>
91132
92-
## Getting the Version you want via the latest release URL
133+
## 🎯 Version Management
93134

94-
Since this project builds and releases both v1.2 and v2.0 builds simultaneously we can use the commands below to always get the latest version of the related pre release via the latest release `dependency-version.json` asset.
135+
### Getting Version-Specific Releases
95136

96-
Using this method it does not matter which version is the latest release or pre release as the commands will provide you the version specific info you need for the twinned latest/pre releases.
137+
Since this project builds both v1.2 and v2.0 simultaneously, you can target specific libtorrent versions using these commands:
97138

98-
For Libtorrent `v1.2`
139+
#### Libtorrent v1.2 Release Info
99140

100141
```bash
101142
jq -r '. | "release-\(.qbittorrent)_v\(.libtorrent_1_2)"' < <(curl -sL https://github.com/userdocs/qbittorrent-nox-static/releases/latest/download/dependency-version.json)
102143
```
103144

104-
For Libtorrent `v2.0`
145+
#### Libtorrent v2.0 Release Info
105146

106147
```bash
107148
jq -r '. | "release-\(.qbittorrent)_v\(.libtorrent_2_0)"' < <(curl -sL https://github.com/userdocs/qbittorrent-nox-static/releases/latest/download/dependency-version.json)
108149
```
109150

110-
## Revisions
151+
### Build Revisions
111152

112-
The build has 5 main dependencies tracked that will trigger a rebuild on an update being available.
153+
The build system tracks 5 main dependencies that trigger automatic rebuilds:
113154

114-
- qBittorrent
115-
- Libtorrent
116-
- Qt
117-
- Boost
118-
- Openssl
155+
- qBittorrent
156+
- Libtorrent
157+
- Qt
158+
- Boost
159+
- OpenSSL
119160

120-
When a new build is triggered for updating `qBittorrent` or `Libtorrent` a new release will be generated as the release tags will be updated.
161+
**Revision Tracking:**
121162

122-
Since I do not append revision info to tags `Qt` - `Boost` - `Openssl` or patched builds it will only update the existing release assets.
163+
- New releases start at revision `0`
164+
- Incremented by `1` for each rebuild
165+
- Updates to Qt, Boost, or OpenSSL only update existing release assets
166+
- Updates to qBittorrent or Libtorrent create new releases
123167

124-
Revisions values are incremented in the `dependency-version.json` of the release. All new releases start at a revision of `0` and increment by `1` per revised build.
125-
126-
### Tracking latest release revisions (Libtorrent v2.0)
127-
128-
Simply use this command.
168+
#### Check Latest Revision
129169

130170
```bash
131171
jq -r '.revision' < <(curl -sL "https://github.com/userdocs/qbittorrent-nox-static/releases/latest/download/dependency-version.json")
132172
```
133173

134-
### Tracking v2.0 and v1.2 releases independently
135-
136-
There are times when the revision counts may differ between `v2.0` and `v1.2` builds as the `dependency-version.json` is unique to the release but has some shared values that won't change. In this case you need to track them as independent values unique to their release.
174+
#### Track Specific Version Revisions
137175

138-
To do this you start by getting the current release version value first, for example, getting the `v1.2` prerelease revision value.
176+
For independent tracking of v1.2 and v2.0 revisions:
139177

140-
```bash
141-
release="$(jq -r '. | "release-\(.qbittorrent)_v\(.libtorrent_1_2)"' < <(curl -sL https://github.com/userdocs/qbittorrent-nox-static/releases/latest/download/dependency-version.json))"
142-
```
178+
1. **Get the release tag:**
143179

144-
Then get the revision from that specific release.
180+
```bash
181+
release="$(jq -r '. | "release-\(.qbittorrent)_v\(.libtorrent_1_2)"' < <(curl -sL https://github.com/userdocs/qbittorrent-nox-static/releases/latest/download/dependency-version.json))"
182+
```
145183

146-
```bash
147-
jq -r '.revision' < <(curl -sL "https://github.com/userdocs/qbittorrent-nox-static/releases/download/${release}/dependency-version.json")
148-
```
184+
2. **Get the revision for that release:**
149185

150-
Now you have tracked the current revision of the latest release of the libtorrent v1.2 binary.
186+
```bash
187+
jq -r '.revision' < <(curl -sL "https://github.com/userdocs/qbittorrent-nox-static/releases/download/${release}/dependency-version.json")
188+
```
151189

152-
## Dependency json
190+
## 📊 Dependency Tracking
153191

154-
From `release-4.4.5` each release contains a `dependency-version.json` file that provide some key version information for that is shared across the latest release and the twinned pre release. This helps to overcome some limitations of the API for consistently and directly accessing this information.
192+
Each release includes a `dependency-version.json` file that provides version information shared across latest and pre-releases. This helps overcome API limitations for consistent access to version data.
155193

156-
Downloading the file like this:
194+
### Download Dependency Information
157195

158196
```bash
159197
curl -sL https://github.com/userdocs/qbittorrent-nox-static/releases/latest/download/dependency-version.json
160198
```
161199

162-
Will output a result like this:
200+
### Example Output
163201

164202
```json
165203
{
@@ -174,26 +212,22 @@ Will output a result like this:
174212
}
175213
```
176214

177-
As demonstrated above by using the latest release URL we can construct the tag of the twinned pre release and therefore the asset URL with no margin for error.
178-
179215
> [!IMPORTANT]
180-
> From the release of qBittorrent v5 configure based builds will be unsupported and we will only be able to use cmake to build qBittorrent v5 onwards. All releases from that point on will drop Qt5 builds as at this point cmake,Qt6 and v5 should be the default and preferred build combination with Qt5 being a legacy dependency.
216+
> Starting with qBittorrent v5, configure-based builds will be unsupported. Only CMake builds will be available, with Qt6 as the default. Qt5 builds will be considered legacy and eventually dropped.
181217
182-
## gh attestation verify
218+
## 🛡️ Build Attestation
183219

184-
Binaries built from the release of release `release-5.0.0_v2.0.10` and `release-5.0.0_v1.2.19` revision `1` use [actions/attest-build-provenance](https://github.com/actions/attest-build-provenance)
220+
Binaries built from `release-5.0.0_v2.0.10` and `release-5.0.0_v1.2.19` revision `1` onwards use [actions/attest-build-provenance](https://github.com/actions/attest-build-provenance) for cryptographic verification.
185221

186-
Verify the integrity and provenance of an artifact using its associated cryptographically signed attestations.
222+
### Verify Binary Integrity
187223

188-
https://cli.github.com/manual/gh_attestation_verify
189-
190-
For example:
224+
You can verify the integrity and provenance of downloaded binaries using GitHub CLI:
191225

192226
```bash
193227
gh attestation verify x86_64-qbittorrent-nox -o userdocs
194228
```
195229

196-
Will give you this result for the `release-5.0.0_v2.0.10` revision `1` binary.
230+
### Example Verification Output
197231

198232
```bash
199233
Loaded digest sha256:a656ff57b03ee6218205d858679ea189246caaecbbcc38d4d2b57eb81d8e59bb for file://x86_64-qbittorrent-nox
@@ -204,3 +238,32 @@ sha256:a656ff57b03ee6218205d858679ea189246caaecbbcc38d4d2b57eb81d8e59bb was atte
204238
REPO PREDICATE_TYPE WORKFLOW
205239
userdocs/qbittorrent-nox-static https://slsa.dev/provenance/v1 .github/workflows/matrix_multi_build_and_release_qbt_workflow_files.yml@refs/heads/master
206240
```
241+
242+
For more information, visit the [GitHub CLI attestation documentation](https://cli.github.com/manual/gh_attestation_verify).
243+
244+
## 🔗 Related Projects
245+
246+
This build script depends on several related repositories:
247+
248+
- [qbt-musl-cross-make](https://github.com/userdocs/qbt-musl-cross-make) - Cross-compilation toolchain
249+
- [qbt-workflow-files](https://github.com/userdocs/qbt-workflow-files) - CI/CD workflow templates
250+
- [qbt-ninja-build](https://github.com/userdocs/qbt-ninja-build) - Ninja build system integration
251+
- [qbt-host-deps](https://github.com/userdocs/qbt-host-deps) - Host dependency management
252+
- [qbt-cmake-ninja-crossbuilds](https://github.com/userdocs/qbt-cmake-ninja-crossbuilds) - CMake cross-build configurations
253+
254+
## 💻 WSL2 Support
255+
256+
> [!TIP]
257+
> These static builds work perfectly on WSL2! After installation, access the WebUI at `localhost:8080` from your Windows browser.
258+
259+
The static nature of these builds makes them ideal for WSL2 environments where dependency management can be challenging.
260+
261+
## 📖 Documentation
262+
263+
> [!TIP]
264+
> For comprehensive documentation, visit the [project documentation](https://userdocs.github.io/qbittorrent-nox-static/introduction/) which covers:
265+
>
266+
> - Detailed build instructions
267+
> - Advanced configuration options
268+
> - Troubleshooting guides
269+
> - Contributing guidelines

0 commit comments

Comments
 (0)