199 lines
7.2 KiB
Markdown
199 lines
7.2 KiB
Markdown
# pyTorrent stack installer
|
|
|
|
This document describes the one-command installer for installing **rTorrent + pyTorrent** from a clean server.
|
|
|
|
The installer is split into two layers:
|
|
|
|
- `scripts/install_stack.sh` - public bootstrap script intended to be downloaded directly from Git.
|
|
- `scripts/stack_installers/` - OS-specific installers and helper scripts used by the bootstrap script.
|
|
|
|
## Quick install
|
|
|
|
Run as root or through `sudo`:
|
|
|
|
```bash
|
|
curl -fsSL https://git.linuxiarz.pl/gru/pyTorrent/raw/branch/master/scripts/install_stack.sh | sudo bash
|
|
```
|
|
|
|
The bootstrap script downloads the current pyTorrent repository, detects the operating system family, and runs the matching installer:
|
|
|
|
- Debian / Ubuntu: `scripts/stack_installers/install_stack_debian_ubuntu.sh`
|
|
- RHEL-compatible systems: `scripts/stack_installers/install_stack_rhel.sh`
|
|
|
|
Supported RHEL-compatible systems include RHEL, Rocky Linux, AlmaLinux, CentOS Stream, and Fedora-like systems where `dnf` or `yum` is available.
|
|
|
|
## What gets installed
|
|
|
|
Default installation includes:
|
|
|
|
- rTorrent `v0.16.11`
|
|
- libtorrent `v0.16.11`
|
|
- minimal rTorrent build without c-ares/custom curl
|
|
- rTorrent system user: `rtorrent`
|
|
- rTorrent SCGI endpoint: `scgi://127.0.0.1:5000`
|
|
- rTorrent incoming BitTorrent port: `51300`
|
|
- pyTorrent application directory: `/opt/pytorrent`
|
|
- pyTorrent HTTP port: `8090`
|
|
- pyTorrent profile configured through the HTTP API
|
|
|
|
The installer creates or updates a pyTorrent rTorrent profile through API after both services are installed.
|
|
|
|
## Recommended usage with overrides
|
|
|
|
Environment variables must be passed to the `sudo bash` process.
|
|
|
|
Example:
|
|
|
|
```bash
|
|
curl -fsSL https://git.linuxiarz.pl/gru/pyTorrent/raw/branch/master/scripts/install_stack.sh \
|
|
| sudo PYTORRENT_PORT=8091 RTORRENT_SCGI_PORT=5001 bash
|
|
```
|
|
|
|
Another example with a custom profile name:
|
|
|
|
```bash
|
|
curl -fsSL https://git.linuxiarz.pl/gru/pyTorrent/raw/branch/master/scripts/install_stack.sh \
|
|
| sudo PYTORRENT_PROFILE_NAME="Local rTorrent" PYTORRENT_PORT=8090 bash
|
|
```
|
|
|
|
## Bootstrap parameters
|
|
|
|
These variables are used by `scripts/install_stack.sh`.
|
|
|
|
| Variable | Default | Description |
|
|
| --- | --- | --- |
|
|
| `PYTORRENT_REPO_URL` | `https://git.linuxiarz.pl/gru/pyTorrent` | Git repository base URL. |
|
|
| `PYTORRENT_REPO_BRANCH` | `master` | Branch used to download the repository archive. |
|
|
| `PYTORRENT_ARCHIVE_URL` | derived from repo URL and branch | Custom repository archive URL. |
|
|
| `PYTORRENT_BOOTSTRAP_DIR` | `/tmp/pytorrent-stack-installer` | Temporary directory used by the bootstrap script. |
|
|
| `PYTORRENT_KEEP_BOOTSTRAP_DIR` | `0` | Set to `1` to keep the temporary directory after installation. |
|
|
|
|
Example using a different branch:
|
|
|
|
```bash
|
|
curl -fsSL https://git.linuxiarz.pl/gru/pyTorrent/raw/branch/master/scripts/install_stack.sh \
|
|
| sudo PYTORRENT_REPO_BRANCH=develop bash
|
|
```
|
|
|
|
## rTorrent parameters
|
|
|
|
These variables are used by both stack installers.
|
|
|
|
| Variable | Default | Description |
|
|
| --- | --- | --- |
|
|
| `RTORRENT_USER` | `rtorrent` | System user used to run rTorrent. |
|
|
| `RTORRENT_HOME` | `/home/${RTORRENT_USER}` | Home directory for the rTorrent user. |
|
|
| `RTORRENT_BASE_DIR` | `/opt/rtorrent_build` | Build and install directory for xmlrpc-c, libtorrent and rTorrent. |
|
|
| `RTORRENT_SCGI_PORT` | `5000` | Local SCGI port for rTorrent XMLRPC/SCGI. |
|
|
| `RTORRENT_TORRENT_PORT` | `51300` | Incoming BitTorrent listen port. |
|
|
| `RTORRENT_REF` | `v0.16.11` | rTorrent Git tag, branch, or commit. |
|
|
| `LIBTORRENT_REF` | `v0.16.11` | libtorrent Git tag, branch, or commit. |
|
|
|
|
Example:
|
|
|
|
```bash
|
|
curl -fsSL https://git.linuxiarz.pl/gru/pyTorrent/raw/branch/master/scripts/install_stack.sh \
|
|
| sudo RTORRENT_USER=rtorrent RTORRENT_SCGI_PORT=5001 RTORRENT_TORRENT_PORT=51400 bash
|
|
```
|
|
|
|
## pyTorrent parameters
|
|
|
|
| Variable | Default | Description |
|
|
| --- | --- | --- |
|
|
| `PYTORRENT_APP_DIR` | `/opt/pytorrent` | pyTorrent installation directory. |
|
|
| `PYTORRENT_PORT` | `8090` | HTTP port used by the pyTorrent service. |
|
|
| `PYTORRENT_BASE_URL` | `http://127.0.0.1:${PYTORRENT_PORT}` | Base URL used by the API configurator. |
|
|
| `PYTORRENT_PROFILE_NAME` | `Local rTorrent` | Name of the rTorrent profile created in pyTorrent. |
|
|
| `PYTORRENT_API_TOKEN` | empty | Bearer token used when pyTorrent API authentication is enabled. |
|
|
| `PYTORRENT_SERVICE_NAME` | `pytorrent` | systemd service name for pyTorrent. |
|
|
| `PYTORRENT_RTORRENT_SCGI_URL` | `scgi://127.0.0.1:${RTORRENT_SCGI_PORT}` | SCGI URL saved in the pyTorrent rTorrent profile. |
|
|
|
|
Example with API token:
|
|
|
|
```bash
|
|
curl -fsSL https://git.linuxiarz.pl/gru/pyTorrent/raw/branch/master/scripts/install_stack.sh \
|
|
| sudo PYTORRENT_API_TOKEN="pt_xxx" bash
|
|
```
|
|
|
|
## API configurator parameters
|
|
|
|
The API configurator can be run manually:
|
|
|
|
```bash
|
|
/opt/pytorrent/venv/bin/python /opt/pytorrent/scripts/stack_installers/configure_pytorrent_api.py \
|
|
--base-url http://127.0.0.1:8090 \
|
|
--profile-name "Local rTorrent" \
|
|
--scgi-url scgi://127.0.0.1:5000
|
|
```
|
|
|
|
CLI options:
|
|
|
|
| Option | Environment variable | Default | Description |
|
|
| --- | --- | --- | --- |
|
|
| `--base-url` | `PYTORRENT_BASE_URL` | `http://127.0.0.1:8090` | pyTorrent API base URL. |
|
|
| `--api-token` | `PYTORRENT_API_TOKEN` | empty | Bearer token for authenticated API calls. |
|
|
| `--profile-name` | `PYTORRENT_RTORRENT_PROFILE_NAME` | `Local rTorrent` | Profile name to create or update. |
|
|
| `--scgi-url` | `PYTORRENT_RTORRENT_SCGI_URL` | `scgi://127.0.0.1:5000` | rTorrent SCGI URL. |
|
|
| `--timeout` | `PYTORRENT_RTORRENT_TIMEOUT` | `10` | rTorrent request timeout in seconds. |
|
|
| `--wait` | `PYTORRENT_API_WAIT_SECONDS` | `90` | Time to wait for the pyTorrent API to become available. |
|
|
| `--remote` | `PYTORRENT_RTORRENT_REMOTE` | `0` | Mark profile as remote. Accepts `1`, `true`, `yes`, `on`. |
|
|
|
|
## Local installation without bootstrap
|
|
|
|
If the repository is already cloned:
|
|
|
|
Debian / Ubuntu:
|
|
|
|
```bash
|
|
sudo bash scripts/stack_installers/install_stack_debian_ubuntu.sh
|
|
```
|
|
|
|
RHEL-compatible systems:
|
|
|
|
```bash
|
|
sudo bash scripts/stack_installers/install_stack_rhel.sh
|
|
```
|
|
|
|
## Installed service hints
|
|
|
|
Check services:
|
|
|
|
```bash
|
|
systemctl status pytorrent
|
|
systemctl status rtorrent@rtorrent.service
|
|
```
|
|
|
|
Check logs:
|
|
|
|
```bash
|
|
tail -f /data/logs/app.log /data/logs/error.log
|
|
journalctl -u pytorrent -f
|
|
journalctl -u rtorrent@rtorrent.service -f
|
|
```
|
|
|
|
## Notes
|
|
|
|
- The default rTorrent build is intentionally minimal.
|
|
- c-ares and custom curl are not enabled by the stack installer defaults.
|
|
- The rTorrent installer overwrites the generated `.rtorrent.rc` because the stack installer passes `--force-config`.
|
|
- pyTorrent is configured through the HTTP API after the service starts.
|
|
- If API authentication is enabled before profile configuration, pass `PYTORRENT_API_TOKEN`.
|
|
|
|
|
|
## Build logs and troubleshooting
|
|
|
|
The stack installer writes quiet build output to `/var/log/pytorrent-installer` by default.
|
|
Override it with:
|
|
|
|
```bash
|
|
PYTORRENT_STACK_LOG_DIR=/tmp/pytorrent-build-logs
|
|
```
|
|
|
|
For full command output during rTorrent/libtorrent compilation, run with:
|
|
|
|
```bash
|
|
PYTORRENT_DEBUG_INSTALL=1
|
|
```
|
|
|
|
On RHEL-compatible systems the installer also tries to enable CRB/PowerTools and installs `libcurl-devel`, `redhat-rpm-config`, `patch`, `diffutils`, `findutils`, `file`, and `libstdc++-devel`, because minimal Alma/Rocky images often do not include enough build tooling.
|