# BAMS - Backup Appliance Management System A comprehensive management system for backup appliances, providing unified control over disk repositories, tape libraries, iSCSI targets, and Bacula integration. ## Features - **Dashboard**: Real-time monitoring of storage, tape library, iSCSI sessions, and Bacula status - **Disk Repository Management**: Create and manage LVM and ZFS repositories - **Tape Library Management**: Inventory, load/unload operations for LTO-8 libraries - **iSCSI Target Management**: Configure SCST targets with portal and initiator ACL - **Bacula Integration**: Status monitoring, config generation, and inventory operations - **Logs & Diagnostics**: Live log viewing and support bundle generation ## Architecture - **Backend**: Go-based REST API service running as systemd service - **Frontend**: Cockpit plugin providing web-based UI - **Storage**: LVM and ZFS support for disk repositories - **iSCSI**: SCST framework for iSCSI target management - **Tape**: Support for LTO-8 SAS/FC tape libraries ## Requirements - Ubuntu Server 24.04 LTS - Go 1.21+ - Cockpit 300+ - SCST (stable) - Bacula Community/Enterprise - LTO-8 compatible tape library ## Installation ### 1. Build Backend ```bash cd backend go mod download go build -o bams-backend . sudo cp bams-backend /usr/local/bin/ ``` ### 2. Install Cockpit Plugin ```bash sudo cp -r cockpit /usr/share/cockpit/bams sudo systemctl restart cockpit ``` ### 3. Configure System ```bash # Create user and group sudo useradd -r -s /bin/false bams sudo groupadd bams-admin sudo groupadd bams-operator # Create directories sudo mkdir -p /var/lib/bams sudo mkdir -p /etc/bams sudo mkdir -p /var/log/bams # Copy configuration sudo cp configs/config.yaml.example /etc/bams/config.yaml sudo cp configs/bams.service /etc/systemd/system/ # Install polkit rules sudo cp configs/polkit.rules /etc/polkit-1/rules.d/50-bams.rules # Set permissions sudo chown -R bams:bams /var/lib/bams sudo chown -R bams:bams /var/log/bams sudo chmod 640 /etc/bams/config.yaml ``` ### 4. Start Service ```bash sudo systemctl daemon-reload sudo systemctl enable bams.service sudo systemctl start bams.service ``` ## Configuration Edit `/etc/bams/config.yaml` to customize: - Port number (default: 8080) - Log level (debug, info, warn, error) - Data directory - SCST and Bacula config paths - Security settings ## Usage 1. Access Cockpit web interface 2. Navigate to "BAMS" in the tools menu 3. Use the dashboard to monitor system status 4. Manage storage repositories, tape library, and iSCSI targets through the UI ## API Endpoints The backend provides a REST API at `http://localhost:8080/api/v1/`: - `GET /dashboard` - Dashboard summary - `GET /disk/repositories` - List repositories - `POST /disk/repositories` - Create repository - `GET /tape/library` - Library status - `POST /tape/inventory` - Run inventory - `GET /iscsi/targets` - List iSCSI targets - `POST /iscsi/targets` - Create target - `GET /bacula/status` - Bacula SD status - `GET /logs/{service}` - Get logs - `GET /diagnostics/bundle` - Download support bundle ## Security - Privileged operations require polkit authorization - Users must be in `bams-admin` or `bams-operator` groups - HTTPS/TLS recommended for production - Audit logging for configuration changes ## Troubleshooting - Check service status: `sudo systemctl status bams` - View logs: `sudo journalctl -u bams -f` - Verify Cockpit plugin: Check `/usr/share/cockpit/bams` exists - Test API: `curl http://localhost:8080/api/v1/health` ## License GPL-3.0