From 39c5549b01ccf1c016f10f4fd8e03d300c02a56b Mon Sep 17 00:00:00 2001 From: "push-app-to-main[bot]" <203845782+push-app-to-main[bot]@users.noreply.github.com> Date: Wed, 26 Aug 2026 06:49:13 +0000 Subject: [PATCH] Sync ct/ and install/ from ProxmoxVE Mirrored automatically. The bootstrap line is rewritten to load the engine from core, which is the only difference to upstream. --- ct/budget-board.sh | 77 +++++++++++++++++++ ct/haproxy.sh | 62 ++++++++++++++++ ct/maintainerr.sh | 80 ++++++++++++++++++++ ct/pyload.sh | 57 ++++++++++++++ install/budget-board-install.sh | 127 ++++++++++++++++++++++++++++++++ install/gitea-install.sh | 3 +- install/haproxy-install.sh | 73 ++++++++++++++++++ install/maintainerr-install.sh | 84 +++++++++++++++++++++ install/pyload-install.sh | 67 +++++++++++++++++ 9 files changed, 629 insertions(+), 1 deletion(-) create mode 100644 ct/budget-board.sh create mode 100644 ct/haproxy.sh create mode 100644 ct/maintainerr.sh create mode 100644 ct/pyload.sh create mode 100644 install/budget-board-install.sh create mode 100644 install/haproxy-install.sh create mode 100644 install/maintainerr-install.sh create mode 100644 install/pyload-install.sh diff --git a/ct/budget-board.sh b/ct/budget-board.sh new file mode 100644 index 0000000..96aa593 --- /dev/null +++ b/ct/budget-board.sh @@ -0,0 +1,77 @@ +#!/usr/bin/env bash +_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/Incus/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: Slaviša Arežina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/teelur/budget-board + +APP="Budget-Board" +var_tags="${var_tags:-finance;budget;money}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-2048}" +var_disk="${var_disk:-8}" +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/budget-board ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "budget-board" "teelur/budget-board"; then + msg_info "Stopping Service" + systemctl stop budget-board + msg_ok "Stopped Service" + + create_backup /opt/budget-board/budget-board.env + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "budget-board" "teelur/budget-board" "tarball" + + restore_backup + + msg_info "Rebuilding Backend" + cd /opt/budget-board/server + $STD dotnet restore "BudgetBoard.WebAPI/BudgetBoard.WebAPI.csproj" + export configuration=Release + $STD dotnet publish "BudgetBoard.WebAPI/BudgetBoard.WebAPI.csproj" -c $configuration -o /opt/budget-board/publish /p:UseAppHost=false --no-restore + msg_ok "Rebuilt Backend" + + msg_info "Rebuilding Frontend" + cd /opt/budget-board/client + export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 + $STD yarn install + $STD yarn run build + cp -r dist/. /var/www/html/ + msg_ok "Rebuilt Frontend" + + msg_info "Starting Service" + systemctl start budget-board + nginx_enable_site budget-board.conf + msg_ok "Started Service" + msg_ok "Updated successfully!" + fi + 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}${CL}" diff --git a/ct/haproxy.sh b/ct/haproxy.sh new file mode 100644 index 0000000..249e127 --- /dev/null +++ b/ct/haproxy.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash +_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/Incus/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://www.haproxy.org/ + +APP="HAProxy" +var_tags="${var_tags:-network;proxy}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-512}" +var_disk="${var_disk:-4}" +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 [[ ! -f /etc/haproxy/haproxy.cfg ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + msg_info "Updating ${APP}" + $STD apt update + $STD apt install -y haproxy + msg_ok "Updated ${APP}" + + msg_info "Validating Configuration" + if ! $STD haproxy -c -f /etc/haproxy/haproxy.cfg; then + msg_error "Configuration is invalid - service not restarted" + exit + fi + msg_ok "Validated Configuration" + + msg_info "Restarting Service" + systemctl restart haproxy + msg_ok "Restarted 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}Statistics page:${CL}" +echo -e "${GATEWAY}${BGN}http://${IP}:8404${CL}" +echo -e "${INFO}${YW}The generated stats password is in /etc/haproxy/haproxy.cfg${CL}" diff --git a/ct/maintainerr.sh b/ct/maintainerr.sh new file mode 100644 index 0000000..99da1f0 --- /dev/null +++ b/ct/maintainerr.sh @@ -0,0 +1,80 @@ +#!/usr/bin/env bash +_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/Incus/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: Karolis Stanelis (kstanelis) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/Maintainerr/Maintainerr + +APP="Maintainerr" +var_tags="${var_tags:-media;arr;cleanup}" +var_cpu="${var_cpu:-4}" +var_ram="${var_ram:-8192}" +var_disk="${var_disk:-24}" +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/maintainerr ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "maintainerr" "Maintainerr/Maintainerr"; then + msg_info "Stopping Service" + systemctl stop maintainerr + msg_ok "Stopped Service" + + create_backup /opt/data /opt/maintainerr/.env + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "maintainerr" "Maintainerr/Maintainerr" "tarball" "latest" "/opt/maintainerr" + restore_backup + + msg_info "Rebuilding Maintainerr (Patience)" + cd /opt/maintainerr + export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 + export NODE_OPTIONS="--max-old-space-size=4096" + $STD corepack enable + $STD corepack prepare yarn@4.11.0 --activate + $STD yarn config set enableTelemetry 0 + $STD yarn install --network-timeout 300000 + $STD yarn turbo build --concurrency=1 + cp -r apps/ui/dist apps/server/dist/ui + cp -r apps/server/assets apps/server/dist/assets + find apps/server/dist/ui -type f -not -path '*/node_modules/*' -print0 | xargs -0 sed -i "s,/__PATH_PREFIX__,,g" + $STD yarn workspaces focus --all --production + rm -rf /opt/maintainerr/.yarn/cache /opt/maintainerr/.turbo /opt/maintainerr/apps/ui + sed -i '/^npm_package_version=/d;/^VERSION_TAG=/d' /opt/maintainerr/.env + { + echo "VERSION_TAG=stable" + echo "npm_package_version=$(cat ~/.maintainerr)" + } >>/opt/maintainerr/.env + msg_ok "Rebuilt Maintainerr" + + msg_info "Starting Service" + systemctl start maintainerr + msg_ok "Started Service" + msg_ok "Updated Successfully!" + fi + 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 "${TAB}${GATEWAY}${BGN}http://${IP}:6246${CL}" diff --git a/ct/pyload.sh b/ct/pyload.sh new file mode 100644 index 0000000..566e027 --- /dev/null +++ b/ct/pyload.sh @@ -0,0 +1,57 @@ +#!/usr/bin/env bash +_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/Incus/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}" diff --git a/install/budget-board-install.sh b/install/budget-board-install.sh new file mode 100644 index 0000000..8465349 --- /dev/null +++ b/install/budget-board-install.sh @@ -0,0 +1,127 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: Slaviša Arežina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/teelur/budget-board + +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 nginx +setup_deb822_repo \ + "microsoft" \ + "https://packages.microsoft.com/keys/microsoft-2025.asc" \ + "https://packages.microsoft.com/debian/13/prod/" \ + "trixie" +$STD apt install -y dotnet-sdk-10.0 +msg_ok "Installed Dependencies" + +NODE_VERSION=25 setup_nodejs +PG_VERSION=16 setup_postgresql +PG_DB_NAME=budget_board_db PG_DB_USER=budget_board setup_postgresql_db + +fetch_and_deploy_gh_release "budget-board" "teelur/budget-board" "tarball" + +msg_info "Configuring Budget Board Backend" +cd /opt/budget-board/server +$STD dotnet restore "BudgetBoard.WebAPI/BudgetBoard.WebAPI.csproj" +export configuration=Release +$STD dotnet publish "BudgetBoard.WebAPI/BudgetBoard.WebAPI.csproj" -c $configuration -o /opt/budget-board/publish /p:UseAppHost=false --no-restore + +cat </opt/budget-board/budget-board.env +Logging__LogLevel__Default=Information +CLIENT_ADDRESS=$LOCAL_IP +POSTGRES_HOST=localhost +POSTGRES_PORT=5432 +POSTGRES_DATABASE=$PG_DB_NAME +POSTGRES_USER=$PG_DB_USER +POSTGRES_PASSWORD=$PG_DB_PASS +OIDC_ENABLED=false +OIDC_ISSUER= +OIDC_CLIENT_ID= +OIDC_CLIENT_SECRET= +EMAIL_SENDER= +EMAIL_SENDER_USERNAME= +EMAIL_SENDER_PASSWORD= +EMAIL_SMTP_HOST= +EMAIL_SMTP_PORT=587 +DISABLE_NEW_USERS=false +DISABLE_LOCAL_AUTH=false +AUTO_UPDATE_DB=true +DISABLE_AUTO_SYNC=false +SYNC_INTERVAL_HOURS=8 +TZ=UTC + +ASPNETCORE_URLS=http://127.0.0.1:6253 +PORT=6253 +VITE_SERVER_ADDRESS=${LOCAL_IP} +VITE_OIDC_ENABLED=false +VITE_OIDC_PROVIDER= +VITE_OIDC_CLIENT_ID= +VITE_DISABLE_NEW_USERS=false +VITE_DISABLE_LOCAL_AUTH=false +EOF +msg_ok "Configured Budget Board Backend" + +msg_info "Configuring Budget Board Frontend" +cd /opt/budget-board/client +export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 +$STD yarn config set --home enableTelemetry 0 +$STD npm install --global corepack@latest +$STD corepack enable +$STD yarn install +$STD yarn run build +cp -r dist/. /var/www/html/ +msg_ok "Configured Budget Board Frontend" + +msg_info "Creating services" +cat </etc/systemd/system/budget-board.service +[Unit] +Description=Budget Board Service +After=network.target + +[Service] +WorkingDirectory=/opt/budget-board/publish +ExecStart=dotnet BudgetBoard.WebAPI.dll +Restart=always +EnvironmentFile=/opt/budget-board/budget-board.env + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now budget-board + +cat <<'EOF' >/etc/nginx/sites-available/budget-board.conf +server { + listen 80 default_server; + server_name _; + root /var/www/html; + index index.html; + + location /api/ { + proxy_pass http://127.0.0.1:6253; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + + location / { + try_files $uri $uri/ /index.html; + } +} +EOF +nginx_enable_site budget-board.conf +msg_ok "Created services" + +motd_ssh +customize +cleanup_lxc diff --git a/install/gitea-install.sh b/install/gitea-install.sh index f4c38d7..3e37a9c 100644 --- a/install/gitea-install.sh +++ b/install/gitea-install.sh @@ -30,8 +30,9 @@ setup_deb_based() { chown -R gitea:gitea /var/lib/gitea/ chmod -R 750 /var/lib/gitea/ chown root:gitea /etc/gitea - chmod 750 /etc/gitea + chmod 770 /etc/gitea sudo -u gitea ln -s /var/lib/gitea/data/.ssh/ /etc/gitea/.ssh + chmod 750 /etc/gitea msg_ok "Configured Gitea" msg_info "Creating Service" diff --git a/install/haproxy-install.sh b/install/haproxy-install.sh new file mode 100644 index 0000000..dd2b133 --- /dev/null +++ b/install/haproxy-install.sh @@ -0,0 +1,73 @@ +#!/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://www.haproxy.org/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing HAProxy" +$STD apt install -y haproxy +msg_ok "Installed HAProxy" + +msg_info "Configuring HAProxy" +HAPROXY_STATS_PASSWORD=$(openssl rand -base64 18) +cat </etc/haproxy/haproxy.cfg +global + log /dev/log local0 + chroot /var/lib/haproxy + stats socket /run/haproxy/admin.sock mode 660 level admin + stats timeout 30s + user haproxy + group haproxy + daemon + ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets + +defaults + log global + mode http + option httplog + option dontlognull + timeout connect 5s + timeout client 50s + timeout server 50s + errorfile 400 /etc/haproxy/errors/400.http + errorfile 403 /etc/haproxy/errors/403.http + errorfile 408 /etc/haproxy/errors/408.http + errorfile 500 /etc/haproxy/errors/500.http + errorfile 502 /etc/haproxy/errors/502.http + errorfile 503 /etc/haproxy/errors/503.http + errorfile 504 /etc/haproxy/errors/504.http + +listen stats + bind *:8404 + stats enable + stats uri / + stats refresh 10s + stats admin if TRUE + stats auth admin:${HAPROXY_STATS_PASSWORD} + +# Example: replace with your own frontend/backend pairs. +#frontend http_in +# bind *:80 +# default_backend servers +# +#backend servers +# balance roundrobin +# server web1 192.168.1.10:80 check +# server web2 192.168.1.11:80 check +EOF +$STD haproxy -c -f /etc/haproxy/haproxy.cfg +systemctl restart haproxy +msg_ok "Configured HAProxy" + +motd_ssh +customize +cleanup_lxc diff --git a/install/maintainerr-install.sh b/install/maintainerr-install.sh new file mode 100644 index 0000000..f4e374d --- /dev/null +++ b/install/maintainerr-install.sh @@ -0,0 +1,84 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: Karolis Stanelis (kstanelis) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/Maintainerr/Maintainerr + +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 \ + build-essential \ + pkg-config \ + libcairo2-dev \ + libpango1.0-dev \ + libjpeg-dev \ + libgif-dev \ + libpixman-1-dev \ + librsvg2-dev +msg_ok "Installed Dependencies" + +NODE_VERSION="24" setup_nodejs + +fetch_and_deploy_gh_release "maintainerr" "Maintainerr/Maintainerr" "tarball" "latest" "/opt/maintainerr" + +msg_info "Building Maintainerr (Patience)" +cd /opt/maintainerr +export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 +export NODE_OPTIONS="--max-old-space-size=4096" +$STD corepack enable +$STD corepack prepare yarn@4.11.0 --activate +$STD yarn config set enableTelemetry 0 +$STD yarn install --network-timeout 300000 +$STD yarn turbo build --concurrency=1 +cp -r apps/ui/dist apps/server/dist/ui +cp -r apps/server/assets apps/server/dist/assets +find apps/server/dist/ui -type f -not -path '*/node_modules/*' -print0 | xargs -0 sed -i "s,/__PATH_PREFIX__,,g" +$STD yarn workspaces focus --all --production +rm -rf /opt/maintainerr/.yarn/cache /opt/maintainerr/.turbo /opt/maintainerr/apps/ui +msg_ok "Built Maintainerr" + +msg_info "Configuring Environment" +mkdir -p /opt/data/logs +ln -sfn /opt/maintainerr /opt/app +cat </opt/maintainerr/.env +NODE_ENV=production +DATA_DIR=/opt/data +UI_PORT=6246 +UI_HOSTNAME=0.0.0.0 +BASE_PATH= +VERSION_TAG=stable +npm_package_version=$(cat ~/.maintainerr) +EOF +msg_ok "Configured Environment" + +msg_info "Creating Service" +cat </etc/systemd/system/maintainerr.service +[Unit] +Description=Maintainerr +After=network.target + +[Service] +Type=simple +WorkingDirectory=/opt/maintainerr/apps/server +EnvironmentFile=/opt/maintainerr/.env +ExecStart=/usr/bin/node dist/main +Restart=always +RestartSec=10 + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now maintainerr +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc diff --git a/install/pyload-install.sh b/install/pyload-install.sh new file mode 100644 index 0000000..1715f59 --- /dev/null +++ b/install/pyload-install.sh @@ -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 </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