From 0f0664d2e35e98f3818d55c4cd5bc12164d7fa49 Mon Sep 17 00:00:00 2001 From: tremor021 Date: Wed, 14 May 2025 11:51:05 +0200 Subject: [PATCH 1/3] Update rclone --- ct/rclone.sh | 37 ++++++++++++++++++++++++++++++------- install/rclone-install.sh | 35 ++++++++++++++++++++++++++--------- 2 files changed, 56 insertions(+), 16 deletions(-) diff --git a/ct/rclone.sh b/ct/rclone.sh index bff0140..1cb2cb4 100644 --- a/ct/rclone.sh +++ b/ct/rclone.sh @@ -1,9 +1,9 @@ #!/usr/bin/env bash source <(curl -s https://git.community-scripts.org/community-scripts/ProxmoxVED/raw/branch/main/misc/build.func) # Copyright (c) 2021-2025 community-scripts ORG -# Author: MickLesk (CanbiZ) +# Author: Slaviša Arežina (tremor021) # License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE -# Source: https://rclone.org/ +# Source: https://github.com/rclone/rclone APP="Rclone" var_tags="${var_tags:-os}" @@ -23,14 +23,35 @@ function update_script() { header_info check_container_storage check_container_resources - if [[ ! -d /var ]]; then + if [[ ! -d /opt/rclone ]]; then msg_error "No ${APP} Installation Found!" exit fi - msg_info "Updating $APP LXC" - $STD apt-get update - $STD apt-get -y upgrade - msg_ok "Updated $APP LXC" + RELEASE=$(curl -s https://api.github.com/repos/rclone/rclone/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping Service" + systemctl stop rclone-web + msg_ok "Stopped Service" + + msg_info "Updating ${APP} to v${RELEASE}" + temp_file=$(mktemp) + rm -rf /opt/rclone/* + curl -fsSL "https://github.com/rclone/rclone/releases/download/v${RELEASE}/rclone-v${RELEASE}-linux-amd64.zip" -o "$temp_file" + $STD unzip -j "$temp_file" '*/**' -d /opt/rclone + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated $APP to v${RELEASE}" + + msg_info "Starting Service" + systemctl start rclone-web + msg_ok "Started Service" + + msg_info "Cleaning up" + rm -f "$temp_file" + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + fi exit } @@ -40,3 +61,5 @@ 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}:3000${CL}" diff --git a/install/rclone-install.sh b/install/rclone-install.sh index c6ea068..38d5470 100644 --- a/install/rclone-install.sh +++ b/install/rclone-install.sh @@ -1,9 +1,9 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2025 tteck -# Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Slaviša Arežina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/rclone/rclone source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color @@ -14,14 +14,29 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y gnupg2 +$STD apt-get install -y \ + apache2-utils \ + unzip msg_ok "Installed Dependencies" msg_info "Installing rclone" -$STD fetch_and_deploy_gh_release rclone/rclone -dpkg -i rclone-v1.69.1-linux-amd64.deb +temp_file=$(mktemp) +mkdir -p /opt/rclone +RELEASE=$(curl -s https://api.github.com/repos/rclone/rclone/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +curl -fsSL "https://github.com/rclone/rclone/releases/download/v${RELEASE}/rclone-v${RELEASE}-linux-amd64.zip" -o "$temp_file" +$STD unzip -j "$temp_file" '*/**' -d /opt/rclone +cd /opt/rclone +RCLONE_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) +$STD htpasswd -cb -B login.pwd admin "$RCLONE_PASSWORD" +{ + echo "rclone-Credentials" + echo "rclone User Name: admin" + echo "rclone Password: $RCLONE_PASSWORD" +} >>~/rclone.creds +echo "${RELEASE}" >/opt/rclone_version.txt msg_ok "Installed rclone" +msg_info "Creating Service" cat </etc/systemd/system/rclone-web.service [Unit] Description=Rclone Web GUI @@ -30,19 +45,21 @@ After=network-online.target [Service] Type=simple User=root -ExecStart=/usr/bin/rclone rcd --rc-web-gui --rc-web-gui-no-open-browser --rc-addr :3000 --rc-user admin --rc-pass 12345 +WorkingDirectory=/opt/rclone +ExecStart=/opt/rclone/rclone rcd --rc-web-gui --rc-web-gui-no-open-browser --rc-addr :3000 --rc-htpasswd /opt/rclone/login.pwd Restart=on-failure [Install] WantedBy=multi-user.target EOF - systemctl enable -q --now rclone-web +msg_ok "Created Service" motd_ssh customize msg_info "Cleaning up" +rm -f "$temp_file" $STD apt-get -y autoremove $STD apt-get -y autoclean msg_ok "Cleaned" From b99494c659577c5056a4e608242b746c807e915f Mon Sep 17 00:00:00 2001 From: tremor021 Date: Wed, 14 May 2025 11:59:16 +0200 Subject: [PATCH 2/3] Update rclone --- install/rclone-install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/rclone-install.sh b/install/rclone-install.sh index 38d5470..35cae3a 100644 --- a/install/rclone-install.sh +++ b/install/rclone-install.sh @@ -27,7 +27,7 @@ curl -fsSL "https://github.com/rclone/rclone/releases/download/v${RELEASE}/rclon $STD unzip -j "$temp_file" '*/**' -d /opt/rclone cd /opt/rclone RCLONE_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) -$STD htpasswd -cb -B login.pwd admin "$RCLONE_PASSWORD" +$STD htpasswd -cb -B /opt/login.pwd admin "$RCLONE_PASSWORD" { echo "rclone-Credentials" echo "rclone User Name: admin" @@ -46,7 +46,7 @@ After=network-online.target Type=simple User=root WorkingDirectory=/opt/rclone -ExecStart=/opt/rclone/rclone rcd --rc-web-gui --rc-web-gui-no-open-browser --rc-addr :3000 --rc-htpasswd /opt/rclone/login.pwd +ExecStart=/opt/rclone/rclone rcd --rc-web-gui --rc-web-gui-no-open-browser --rc-addr :3000 --rc-htpasswd /opt/login.pwd Restart=on-failure [Install] From 3599c8bb8d21d51f3c52ec3cd3d575fd303796be Mon Sep 17 00:00:00 2001 From: tremor021 Date: Wed, 14 May 2025 12:11:33 +0200 Subject: [PATCH 3/3] Add rclone json --- frontend/public/json/rclone.json | 55 ++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 frontend/public/json/rclone.json diff --git a/frontend/public/json/rclone.json b/frontend/public/json/rclone.json new file mode 100644 index 0000000..1728514 --- /dev/null +++ b/frontend/public/json/rclone.json @@ -0,0 +1,55 @@ +{ + "name": "Rclone", + "slug": "rclone", + "categories": [ + 11 + ], + "date_created": "2025-05-06", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 3000, + "documentation": "https://rclone.org/docs/", + "website": "https://rclone.org/", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/rclone.svg", + "config_path": "~/.config/rclone/rclone.conf", + "description": "Rclone is a command-line program to manage files on cloud storage. It is a feature-rich alternative to cloud vendors' web storage interfaces", + "install_methods": [ + { + "type": "default", + "script": "ct/rclone.sh", + "resources": { + "cpu": 1, + "ram": 256, + "hdd": 1, + "os": "debian", + "version": "12" + } + }, + { + "type": "alpine", + "script": "ct/alpine-rclone.sh", + "resources": { + "cpu": 1, + "ram": 256, + "hdd": 1, + "os": "alpine", + "version": "3.21" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "type": "info", + "text": "`cat ~/rclone.creds` to view login credentials" + }, + { + "type": "info", + "text": "`htpasswd -b -B /opt/login.pwd newuser newuserpassword` to add more users." + } + ] +}