first commit
This commit is contained in:
126
scripts/stack_installers/install_stack_debian_ubuntu.sh
Executable file
126
scripts/stack_installers/install_stack_debian_ubuntu.sh
Executable file
@@ -0,0 +1,126 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# One-command installer for rTorrent + pyTorrent on Debian/Ubuntu.
|
||||
# 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_debian_stack_prerequisites() {
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
apt-get update
|
||||
apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
curl \
|
||||
tar \
|
||||
gzip \
|
||||
sudo \
|
||||
python3 \
|
||||
python3-venv \
|
||||
python3-pip \
|
||||
build-essential \
|
||||
pkg-config \
|
||||
libtool \
|
||||
autoconf \
|
||||
automake \
|
||||
git \
|
||||
make \
|
||||
gcc \
|
||||
g++ \
|
||||
libssl-dev \
|
||||
libncurses-dev \
|
||||
libncurses5-dev \
|
||||
libncursesw5-dev \
|
||||
libexpat1-dev \
|
||||
libcurl4-openssl-dev \
|
||||
libxml2-dev \
|
||||
libreadline-dev \
|
||||
zlib1g-dev \
|
||||
bison \
|
||||
flex \
|
||||
m4 \
|
||||
gettext \
|
||||
texinfo \
|
||||
patch \
|
||||
diffutils \
|
||||
file \
|
||||
procps \
|
||||
xz-utils
|
||||
}
|
||||
|
||||
install_debian_stack_prerequisites
|
||||
|
||||
RTORRENT_INSTALL_ARGS=(
|
||||
--yes
|
||||
--minimal
|
||||
)
|
||||
if [[ "${PYTORRENT_DEBUG_INSTALL:-0}" == "1" ]]; then
|
||||
RTORRENT_INSTALL_ARGS+=(--debug)
|
||||
fi
|
||||
|
||||
python3 "${SCRIPT_DIR}/install_rtorrent.py" \
|
||||
"${RTORRENT_INSTALL_ARGS[@]}" \
|
||||
--force-config \
|
||||
--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 "${PROJECT_DIR}/scripts/install_debian_ubuntu.sh"
|
||||
|
||||
if [[ -f "${PYTORRENT_APP_DIR}/.env" ]]; then
|
||||
python3 - "${PYTORRENT_APP_DIR}/.env" <<'PY'
|
||||
from pathlib import Path
|
||||
import secrets
|
||||
import sys
|
||||
path = Path(sys.argv[1])
|
||||
text = path.read_text()
|
||||
if "PYTORRENT_SECRET_KEY=change-me" in text:
|
||||
text = text.replace("PYTORRENT_SECRET_KEY=change-me", "PYTORRENT_SECRET_KEY=" + secrets.token_urlsafe(48))
|
||||
path.write_text(text)
|
||||
PY
|
||||
chown "${PYTORRENT_USER:-pytorrent}:${PYTORRENT_USER:-pytorrent}" "${PYTORRENT_APP_DIR}/.env" || true
|
||||
systemctl restart "${PYTORRENT_SERVICE_NAME}"
|
||||
fi
|
||||
|
||||
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