From 11a7c2e4102e04b697d2f60afb8a274fa0eb412d Mon Sep 17 00:00:00 2001 From: "push-app-to-main[bot]" <203845782+push-app-to-main[bot]@users.noreply.github.com> Date: Tue, 27 May 2025 17:21:07 +0200 Subject: [PATCH] 'Add new script' (#4766) Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com> --- ct/backrest.sh | 66 ++++++++++++++++++++++++++++++ ct/headers/backrest | 6 +++ frontend/public/json/backrest.json | 40 ++++++++++++++++++ install/backrest-install.sh | 54 ++++++++++++++++++++++++ 4 files changed, 166 insertions(+) create mode 100644 ct/backrest.sh create mode 100644 ct/headers/backrest create mode 100644 frontend/public/json/backrest.json create mode 100644 install/backrest-install.sh diff --git a/ct/backrest.sh b/ct/backrest.sh new file mode 100644 index 000000000..7dc740175 --- /dev/null +++ b/ct/backrest.sh @@ -0,0 +1,66 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: ksad (enirys31) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://garethgeorge.github.io/backrest/ + +APP="Backrest" +var_tags="${var_tags:-backup}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-512}" +var_disk="${var_disk:-8}" +var_os="${var_os:-debian}" +var_version="${var_version:-12}" +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/backrest ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -fsSL https://api.github.com/repos/garethgeorge/backrest/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 ${APP}" + systemctl stop backrest + msg_ok "Stopped ${APP}" + + msg_info "Updating ${APP} to ${RELEASE}" + temp_file=$(mktemp) + rm -f /opt/backrest/bin/backrest + curl -fsSL "https://github.com/garethgeorge/backrest/releases/download/v${RELEASE}/backrest_Linux_x86_64.tar.gz" -o "$temp_file" + tar xzf $temp_file -C /opt/backrest/bin + chmod +x /opt/backrest/bin/backrest + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP} to ${RELEASE}" + + msg_info "Starting ${APP}" + systemctl start backrest + msg_ok "Started ${APP}" + + msg_info "Cleaning up" + rm -f "$temp_file" + msg_ok "Cleaned up" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + 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}:9898${CL}" diff --git a/ct/headers/backrest b/ct/headers/backrest new file mode 100644 index 000000000..fd1f7f060 --- /dev/null +++ b/ct/headers/backrest @@ -0,0 +1,6 @@ + ____ __ __ + / __ )____ ______/ /__________ _____/ /_ + / __ / __ `/ ___/ //_/ ___/ _ \/ ___/ __/ + / /_/ / /_/ / /__/ ,< / / / __(__ ) /_ +/_____/\__,_/\___/_/|_/_/ \___/____/\__/ + diff --git a/frontend/public/json/backrest.json b/frontend/public/json/backrest.json new file mode 100644 index 000000000..bd3dc64d9 --- /dev/null +++ b/frontend/public/json/backrest.json @@ -0,0 +1,40 @@ +{ + "name": "Backrest", + "slug": "backrest", + "categories": [ + 7 + ], + "date_created": "2025-05-11", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 9898, + "documentation": "https://garethgeorge.github.io/backrest/introduction/getting-started", + "website": "https://garethgeorge.github.io/backrest", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/backrest.webp", + "config_path": "/opt/backrest/config/config.json", + "description": "Backrest is a web-accessible backup solution built on top of restic and providing a WebUI which wraps the restic CLI and makes it easy to create repos, browse snapshots, and restore files. Additionally, Backrest can run in the background and take an opinionated approach to scheduling snapshots and orchestrating repo health operations.", + "install_methods": [ + { + "type": "default", + "script": "ct/backrest.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 8, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "type": "info", + "text": "`cat ~/.ssh/id_ed25519.pub` to view ssh public key. This key is used to authenticate with sftp targets. You can add this key on the sftp server." + } + ] +} diff --git a/install/backrest-install.sh b/install/backrest-install.sh new file mode 100644 index 000000000..f8cc5a06c --- /dev/null +++ b/install/backrest-install.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: ksad (enirys31) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://garethgeorge.github.io/backrest/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Backrest" +RELEASE=$(curl -fsSL https://api.github.com/repos/garethgeorge/backrest/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +temp_file=$(mktemp) +mkdir -p /opt/backrest/{bin,config,data} +curl -fsSL "https://github.com/garethgeorge/backrest/releases/download/v${RELEASE}/backrest_Linux_x86_64.tar.gz" -o "$temp_file" +tar xzf $temp_file -C /opt/backrest/bin +chmod +x /opt/backrest/bin/backrest +echo "${RELEASE}" >/opt/${APPLICATION}_version.txt +msg_ok "Installed Backrest" + +msg_info "Creating Service" +cat </etc/systemd/system/backrest.service +[Unit] +Description=Backrest +After=network.target + +[Service] +Type=simple +User=root +ExecStart=/opt/backrest/bin/backrest +Environment="BACKREST_PORT=9898" +Environment="BACKREST_CONFIG=/opt/backrest/config/config.json" +Environment="BACKREST_DATA=/opt/backrest/data" +Environment="XDG_CACHE_HOME=/opt/backrest/cache" + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now backrest +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"