From cd40beb1ebcc76b4fe59e249fdd395b098c84824 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Thu, 27 Feb 2025 09:11:22 +0100 Subject: [PATCH] New Script: ByteStash (#2680) * Add ByteStash script * Update bytestash-install.sh --- ct/bytestash.sh | 73 ++++++++++++++++++++++++++++++ install/bytestash-install.sh | 86 ++++++++++++++++++++++++++++++++++++ json/bytestash.json | 34 ++++++++++++++ 3 files changed, 193 insertions(+) create mode 100644 ct/bytestash.sh create mode 100644 install/bytestash-install.sh create mode 100644 json/bytestash.json diff --git a/ct/bytestash.sh b/ct/bytestash.sh new file mode 100644 index 000000000..52384e2c4 --- /dev/null +++ b/ct/bytestash.sh @@ -0,0 +1,73 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# 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/jordan-dalby/ByteStash + +APP="ByteStash" +var_tags="code" +var_disk="4" +var_cpu="1" +var_ram="1024" +var_os="debian" +var_version="12" +var_unprivileged="1" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/bytestash ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/jordan-dalby/ByteStash/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 Services" + systemctl stop bytestash-backend + systemctl stop bytestash-frontend + msg_ok "Services Stopped" + + msg_info "Updating ${APP} to ${RELEASE}" + temp_file=$(mktemp) + wget -q "https://github.com/jordan-dalby/ByteStash/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file + tar zxf $temp_file + rm -rf /opt/bytestash/server/node_modules + rm -rf /opt/bytestash/client/node_modules + cp -rf ByteStash-${RELEASE}/* /opt/bytestash + cd /opt/bytestash/server + $STD npm install + cd /opt/bytestash/client + $STD npm install + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP}" + + msg_info "Starting Services" + systemctl start bytestash-backend + systemctl start bytestash-frontend + msg_ok "Started Services" + + 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 ${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}:3000${CL}" diff --git a/install/bytestash-install.sh b/install/bytestash-install.sh new file mode 100644 index 000000000..8d4d01b81 --- /dev/null +++ b/install/bytestash-install.sh @@ -0,0 +1,86 @@ +#!/usr/bin/env bash + +# 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/jordan-dalby/ByteStash + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + sudo \ + curl \ + mc \ + gnupg +msg_ok "Installed Dependencies" + +msg_info "Setting up Node.js Repository" +mkdir -p /etc/apt/keyrings +curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +msg_ok "Set up Node.js Repository" + +msg_info "Installing Node.js" +$STD apt-get update +$STD apt-get install -y nodejs +msg_ok "Installed Node.js" + +msg_info "Installing ByteStash" +temp_file=$(mktemp) +RELEASE=$(curl -s https://api.github.com/repos/jordan-dalby/ByteStash/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +wget -q "https://github.com/jordan-dalby/ByteStash/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file +tar zxf $temp_file +mv ByteStash-${RELEASE} /opt/bytestash +cd /opt/bytestash/server +$STD npm install +cd /opt/bytestash/client +$STD npm install +echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" +msg_ok "Installed ByteStash" + +msg_info "Creating Service" +cat </etc/systemd/system/bytestash-backend.service +[Unit] +Description=ByteStash Backend Service +After=network.target + +[Service] +WorkingDirectory=/opt/bytestash/server +ExecStart=/usr/bin/node src/app.js +Restart=always + +[Install] +WantedBy=multi-user.target +EOF +cat </etc/systemd/system/bytestash-frontend.service +[Unit] +Description=ByteStash Frontend Service +After=network.target bytestash-backend.service + +[Service] +WorkingDirectory=/opt/bytestash/client +ExecStart=/usr/bin/npx vite --host +Restart=always + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now bytestash-backend +systemctl enable -q --now bytestash-frontend +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" diff --git a/json/bytestash.json b/json/bytestash.json new file mode 100644 index 000000000..d2fb545fe --- /dev/null +++ b/json/bytestash.json @@ -0,0 +1,34 @@ +{ + "name": "ByteStash", + "slug": "bytestash", + "categories": [ + 20 + ], + "date_created": "2024-12-20", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 3000, + "documentation": "https://github.com/jordan-dalby/ByteStash/wiki", + "website": "https://github.com/jordan-dalby/ByteStash", + "logo": "https://raw.githubusercontent.com/jordan-dalby/ByteStash/refs/heads/main/client/public/logo192.png", + "description": "ByteStash is a self-hosted web application designed to store, organise, and manage your code snippets efficiently. With support for creating, editing, and filtering snippets, ByteStash helps you keep track of your code in one secure place.", + "install_methods": [ + { + "type": "default", + "script": "ct/bytestash.sh", + "resources": { + "cpu": 1, + "ram": 1024, + "hdd": 4, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} \ No newline at end of file