first commit

This commit is contained in:
root
2026-05-19 13:43:37 +00:00
commit 9dcd0abd7d
107 changed files with 33622 additions and 0 deletions

View File

@@ -0,0 +1,114 @@
#!/usr/bin/env bash
set -euo pipefail
# One-command installer for rTorrent + pyTorrent on RHEL-compatible systems.
# Notes:
# - rTorrent is built as a minimal v0.16.11 install by default.
# - pyTorrent is configured through its HTTP API after the service starts.
if [[ "${EUID}" -ne 0 ]]; then
echo "Run as root: sudo $0" >&2
exit 1
fi
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(cd "${SCRIPT_DIR}/../.." && pwd)"
RTORRENT_USER="${RTORRENT_USER:-rtorrent}"
RTORRENT_HOME="${RTORRENT_HOME:-/home/${RTORRENT_USER}}"
RTORRENT_BASE_DIR="${RTORRENT_BASE_DIR:-/opt/rtorrent_build}"
RTORRENT_SCGI_PORT="${RTORRENT_SCGI_PORT:-5000}"
RTORRENT_TORRENT_PORT="${RTORRENT_TORRENT_PORT:-51300}"
RTORRENT_REF="${RTORRENT_REF:-v0.16.11}"
LIBTORRENT_REF="${LIBTORRENT_REF:-v0.16.11}"
PYTORRENT_APP_DIR="${PYTORRENT_APP_DIR:-/opt/pytorrent}"
PYTORRENT_PORT="${PYTORRENT_PORT:-8090}"
PYTORRENT_BASE_URL="${PYTORRENT_BASE_URL:-http://127.0.0.1:${PYTORRENT_PORT}}"
PYTORRENT_PROFILE_NAME="${PYTORRENT_PROFILE_NAME:-Local rTorrent}"
PYTORRENT_API_TOKEN="${PYTORRENT_API_TOKEN:-}"
PYTORRENT_SERVICE_NAME="${PYTORRENT_SERVICE_NAME:-pytorrent}"
PYTORRENT_RTORRENT_SCGI_URL="${PYTORRENT_RTORRENT_SCGI_URL:-scgi://127.0.0.1:${RTORRENT_SCGI_PORT}}"
export PYTORRENT_APP_DIR PYTORRENT_PORT PYTORRENT_SERVICE_NAME PYTORRENT_API_TOKEN
install_rhel_stack_prerequisites() {
local manager=""
if command -v dnf >/dev/null 2>&1; then
manager="dnf"
elif command -v yum >/dev/null 2>&1; then
manager="yum"
else
echo "dnf or yum is required on RHEL-compatible systems." >&2
exit 1
fi
"${manager}" install -y ca-certificates tar curl gzip sudo python3 dnf-plugins-core epel-release || \
"${manager}" install -y ca-certificates tar curl gzip sudo python3
if command -v crb >/dev/null 2>&1; then
crb enable || true
fi
"${manager}" config-manager --set-enabled crb || true
"${manager}" config-manager --set-enabled powertools || true
"${manager}" makecache || true
"${manager}" groupinstall -y "Development Tools" || true
"${manager}" install -y \
git \
gcc \
gcc-c++ \
make \
autoconf \
automake \
libtool \
pkgconf-pkg-config \
ncurses-devel \
openssl-devel \
expat-devel \
zlib-devel \
libcurl-devel \
redhat-rpm-config \
patch \
diffutils \
findutils \
file \
which \
libstdc++-devel
}
install_rhel_stack_prerequisites
RTORRENT_INSTALL_ARGS=(
--yes
--minimal
--force-config
)
if [[ "${PYTORRENT_DEBUG_INSTALL:-0}" == "1" ]]; then
RTORRENT_INSTALL_ARGS+=(--debug)
fi
python3 "${SCRIPT_DIR}/install_rtorrent_rhel.py" \
"${RTORRENT_INSTALL_ARGS[@]}" \
--base-dir "${RTORRENT_BASE_DIR}" \
--user "${RTORRENT_USER}" \
--group "${RTORRENT_USER}" \
--home "${RTORRENT_HOME}" \
--scgi-port "${RTORRENT_SCGI_PORT}" \
--torrent-port "${RTORRENT_TORRENT_PORT}" \
--rtorrent-ref "${RTORRENT_REF}" \
--libtorrent-ref "${LIBTORRENT_REF}"
cd "${PROJECT_DIR}"
bash "${SCRIPT_DIR}/install_pytorrent_rhel.sh"
CONFIGURE_ARGS=(
--base-url "${PYTORRENT_BASE_URL}"
--profile-name "${PYTORRENT_PROFILE_NAME}"
--scgi-url "${PYTORRENT_RTORRENT_SCGI_URL}"
)
if [[ -n "${PYTORRENT_API_TOKEN}" ]]; then
CONFIGURE_ARGS+=(--api-token "${PYTORRENT_API_TOKEN}")
fi
"${PYTORRENT_APP_DIR}/venv/bin/python" "${PYTORRENT_APP_DIR}/scripts/stack_installers/configure_pytorrent_api.py" "${CONFIGURE_ARGS[@]}"
echo "Done. pyTorrent: ${PYTORRENT_BASE_URL} | rTorrent SCGI: ${PYTORRENT_RTORRENT_SCGI_URL}"