From e31da334b2972c4d19f8e79e816c3505002f4135 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner Date: Tue, 16 Sep 2025 09:30:16 +0200 Subject: [PATCH] Add install.sh and ammend readme --- README.md | 2 ++ install.sh | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 install.sh diff --git a/README.md b/README.md index 275eede..51b323a 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,8 @@ A modern web-based management interface for Proxmox VE (PVE) helper scripts. Thi ## 🚀 Installation +You can use the provided ```install.sh``` file in the root directory of this repository or follow the steps below to install manually. The install script takes care of all prerequisits. + ### 1. Clone the Repository ```bash diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..9ed1732 --- /dev/null +++ b/install.sh @@ -0,0 +1,90 @@ +#!/usr/bin/env bash +# ------------------------------------------------------------------------------ +# Installer for PVESciptslocal +# Author: Canbiz +# ------------------------------------------------------------------------------ + +set -euo pipefail + +# Colors +RD=$(echo -e "\033[01;31m") +GN=$(echo -e "\033[1;92m") +YW=$(echo -e "\033[33m") +CL=$(echo -e "\033[m") + +# Status functions +msg_info() { echo -e "⏳ $YW$1$CL"; } +msg_ok() { echo -e "✔️ $GN$1$CL"; } +msg_err() { echo -e "❌ $RD$1$CL"; } + +# --- Check Proxmox VE environment --- +if ! command -v pveversion >/dev/null 2>&1; then + msg_err "This script must be executed on a Proxmox VE host." + exit 1 +fi +msg_ok "Proxmox VE detected: $(pveversion)" + +# --- Check git --- +if ! command -v git >/dev/null 2>&1; then + msg_info "Git not found, installing..." + apt-get update + apt-get install -y git + msg_ok "Git installed: $(git --version)" +else + msg_ok "Git already available: $(git --version)" +fi + +# --- Check Node.js --- +if ! command -v node >/dev/null 2>&1; then + msg_info "Node.js not found, installing Node.js 24.x..." + curl -fsSL https://deb.nodesource.com/setup_24.x | bash - + apt-get install -y nodejs + msg_ok "Node.js installed: $(node -v)" +else + msg_ok "Node.js already available: $(node -v)" +fi + +# --- Ask for installation path --- +read -rp "Installation directory [default: /opt/PVESciptslocal]: " INSTALL_DIR +INSTALL_DIR=${INSTALL_DIR:-/opt/PVESciptslocal} + +# --- Clone or update repository --- +if [ ! -d "$INSTALL_DIR/.git" ]; then + msg_info "Cloning repository into $INSTALL_DIR..." + git clone https://github.com/michelroegl-brunner/PVESciptslocal.git "$INSTALL_DIR" + msg_ok "Repository cloned." +else + msg_info "Directory already exists. Pulling latest changes..." + git -C "$INSTALL_DIR" pull + msg_ok "Repository updated." +fi + +cd "$INSTALL_DIR" + +# --- Install dependencies --- +msg_info "Installing dependencies..." +npm install +msg_ok "Dependencies installed." + +# --- Environment file --- +if [ ! -f .env ]; then + msg_info "Creating environment file from example..." + cp .env.example .env + msg_ok ".env file created." +else + msg_ok ".env file already exists, keeping it." +fi + +# --- Build the application --- +msg_info "Building application..." +npm run build +msg_ok "Build completed." + +# --- Start the application --- +read -rp "Do you want to start the application now? (y/N): " START_APP +if [[ "$START_APP" =~ ^[Yy]$ ]]; then + msg_info "Starting application..." + npm start +else + msg_info "You can start the app anytime by running: cd $INSTALL_DIR && npm start" +fi