Skip to content
Open

pyLoad #16717

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions ct/headers/pyload
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
__ __
____ __ __/ / ____ ____ _____/ /
/ __ \/ / / / / / __ \/ __ `/ __ /
/ /_/ / /_/ / /___/ /_/ / /_/ / /_/ /
/ .___/\__, /_____/\____/\__,_/\__,_/
/_/ /____/
57 changes: 57 additions & 0 deletions ct/pyload.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
#!/usr/bin/env bash
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/pyload/pyload

APP="pyLoad"
var_tags="${var_tags:-downloader}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-16}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified
var_unprivileged="${var_unprivileged:-1}"

header_info "$APP"
variables
color
catch_errors

function update_script() {
header_info
check_container_storage
check_container_resources

if [[ ! -d /opt/pyload ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi

msg_info "Stopping Service"
systemctl stop pyload
msg_ok "Stopped Service"

msg_info "Updating ${APP}"
$STD uv pip install --python /opt/pyload/.venv --upgrade --prerelease allow "pyload-ng[all]"
msg_ok "Updated ${APP}"

msg_info "Starting Service"
systemctl start pyload
msg_ok "Started Service"
msg_ok "Updated successfully!"
exit
}

start
build_container
description

msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:8000${CL}"
67 changes: 67 additions & 0 deletions install/pyload-install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
#!/usr/bin/env bash

# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/pyload/pyload

source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os

msg_info "Installing Dependencies"
$STD apt install -y \
unrar-free \
p7zip-full \
tesseract-ocr
msg_ok "Installed Dependencies"

UV_PYTHON="3.13" setup_uv

msg_info "Setting up pyLoad"
mkdir -p /opt/pyload_data/{userdir,downloads}
$STD uv venv --python 3.13 /opt/pyload/.venv
$STD uv pip install --python /opt/pyload/.venv --prerelease allow "pyload-ng[all]"
msg_ok "Set up pyLoad"

msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/pyload.service
[Unit]
Description=pyLoad Download Manager
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/pyload
ExecStart=/opt/pyload/.venv/bin/pyload --userdir /opt/pyload_data/userdir --storagedir /opt/pyload_data/downloads
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now pyload
msg_ok "Created Service"

msg_info "Configuring Web Interface"
for _ in {1..30}; do
[[ -f /opt/pyload_data/userdir/settings/pyload.cfg ]] && break
sleep 1
done
sed -i 's|^\([[:space:]]*ip host : "IP address"\) = localhost$|\1 = 0.0.0.0|' /opt/pyload_data/userdir/settings/pyload.cfg

# pyLoad rewrites storage_folder from --storagedir on every start; the first start seeded it.
sed -i 's| --storagedir /opt/pyload_data/downloads||' /etc/systemd/system/pyload.service
systemctl daemon-reload
systemctl restart pyload
msg_ok "Configured Web Interface"

motd_ssh
customize
cleanup_lxc