diff --git a/README.md b/README.md new file mode 100644 index 0000000..90e578c --- /dev/null +++ b/README.md @@ -0,0 +1,85 @@ +# Backstor UI + +**Backstor UI** is a modern, web-based interface for managing the **Bacula Backup System**. It provides a dashboard for job statistics, client management, and detailed job reporting, connected directly to your Bacula PostgreSQL database and Bacula Director. + +## Features + +- 📊 **Dashboard**: Real-time overview of backup jobs, success rates, and storage usage. +- 📝 **Jobs List**: Detailed history of backup jobs with status and duration. +- 🖥️ **Client Management**: View connected clients and easily add new clients via the UI. +- ⚙️ **Automated Configuration**: Generates and pushes client configuration files to the Bacula server via SSH. +- 🌓 **Modern Design**: Clean, responsive interface. + +## Prerequisites + +- **Linux Server** (tested on Ubuntu/Debian/CentOS). +- **Node.js** (v16+ recommended). +- **Bacula** installed with **PostgreSQL** backend. +- **SSH Access** to the Bacula Director server (for client management features). + +## Installation + +We provide an automated installer script that sets up dependencies, configuration, and a systemd service. + +1. **Clone the repository**: + ```bash + git clone ssh://git@gitea.avt.data-center.id:2525/othman.suseno/backstor-ui.git + cd backstor-ui + ``` + +2. **Run the Installer**: + ```bash + sudo ./install.sh + ``` + +3. **Configuration**: + The installer will prompt you for the following details: + - **Database**: Host, User, Password, DB Name (default: `bacula`), Port. + - **SSH (Remote Admin)**: Host IP, User (usually `root`), Password OR Key Path. + - **App**: Port to run the UI on (default: `3000`). + +4. **Access the UI**: + Open your browser and navigate to: + `http://:3000` + +## Uninstallation + +To remove the application and service: + +```bash +sudo ./uninstall.sh +``` +This script will: +- Stop and disable the `backstor` service. +- Remove the systemd service file. +- Optionally remove configuration (`.env`) and dependencies (`node_modules`) upon confirmation. + +## Manual Setup (Development) + +If you prefer to run it manually for development: + +1. **Install Dependencies**: + ```bash + cd server + npm install + ``` + +2. **Configure Environment**: + Copy `.env.example` to `.env` and edit it: + ```bash + cp .env.example .env + nano .env + ``` + +3. **Run Server**: + ```bash + node index.js + ``` + The frontend is served statically by the Node.js server. + +## Architecture + +- **Frontend**: HTML5, Vanilla CSS, Vanilla JS (No build step required). +- **Backend**: Node.js, Express. +- **Database**: `pg` (PostgreSQL client). +- **Remote Mgmt**: `ssh2` (For executing commands on Bacula server).