first commit
This commit is contained in:
114
scripts/stack_installers/install_stack_rhel.sh
Executable file
114
scripts/stack_installers/install_stack_rhel.sh
Executable 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}"
|
||||
Reference in New Issue
Block a user