# 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).