first commit
This commit is contained in:
198
scripts/INSTALL.md
Normal file
198
scripts/INSTALL.md
Normal file
@@ -0,0 +1,198 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user