ProxmoxBackupClientPBSClien.../README.md
zaphod-black 71f7519353 Add CHANGELOG and update README with new features
Added:
- CHANGELOG.md following Keep a Changelog format
- Documented all changes from v1.0.0 to current unreleased version
- README section explaining reconfiguration options
- Enhanced troubleshooting section with connection test details

The CHANGELOG documents:
- Reconfiguration feature for existing installations
- Connection test timeout and improved error messages
- Installation method change from wget to git clone

The README now clearly explains:
- How to reconfigure existing installations
- Connection-only vs full reconfiguration options
- Use cases for quick connection updates
- Connection test timeout behavior and error types

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-01 16:40:53 -05:00

374 lines
9.7 KiB
Markdown

# PBSClientInstaller
Interactive bash script that automatically installs and configures Proxmox Backup Client on Ubuntu, Debian, and Arch Linux systems.
## Features
- **Auto-detects Linux distribution** (Ubuntu 20.04/22.04/24.04, Debian 10/11/12, Arch Linux)
- **Installs correct PBS client version** for your system
- **Interactive configuration** via console prompts
- **Automatic encryption key generation** with paper backup
- **Systemd service and timer** for automated backups
- **Configurable retention policies** (daily, weekly, monthly)
- **Connection testing** before finalizing setup
- **Immediate backup option** after installation
## Prerequisites
### All Systems
- Root/sudo access
- Active internet connection
- Proxmox Backup Server accessible on network
### Arch Linux Specifically
- `yay` AUR helper must be installed
- Install yay first: https://github.com/Jguer/yay
### Before Running
- Have your PBS server details ready:
- Server IP/hostname (e.g., 192.168.1.181)
- Port (default: 8007)
- Datastore name
- Authentication credentials (username/password or API token)
## Installation
### Clone the repository
```bash
git clone https://github.com/zaphod-black/PBSClientInstaller
cd PBSClientInstaller
chmod +x pbs-client-installer.sh
```
### Run with sudo
```bash
sudo ./pbs-client-installer.sh
```
### Reconfiguration
If PBS client is already installed, the script will detect this and offer you options:
**With existing configuration:**
- **Reconfigure connection only** - Quick update of PBS server IP/credentials only
- **Full reconfiguration** - Redo all settings (paths, schedules, retention, etc.)
- **Reinstall PBS client and reconfigure** - Complete reinstall
- **Exit without changes**
**Without existing configuration:**
- **Configure PBS client** - Set up for the first time
- **Reinstall and configure** - Fresh installation
- **Exit without changes**
The connection-only reconfiguration is perfect for:
- Switching to a different backup server
- Updating expired API tokens
- Changing authentication methods
- Updating datastore names
All backup settings (paths, schedules, retention policies) are preserved.
## Usage Example
The script will interactively prompt you for:
1. **PBS Server Configuration**
- Server IP/hostname
- Port (default: 8007)
- Datastore name
2. **Authentication**
- Username + Password OR
- API Token (recommended for automation)
3. **Backup Configuration**
- Paths to backup (e.g., `/`, `/home`)
- Exclusion patterns (e.g., `/tmp`, `/var/cache`)
4. **Schedule**
- Hourly, Daily, Weekly, or Custom schedule
- Specific time for backups
5. **Retention Policy**
- Number of last backups to keep
- Daily/weekly/monthly retention
6. **Encryption**
- Enable/disable client-side encryption
## Example Session
```
╔════════════════════════════════════════╗
║ Proxmox Backup Client Installer ║
║ Version: 1.0.0 ║
╚════════════════════════════════════════╝
[INFO] Detected: Ubuntu 24.04 LTS
[INFO] Installing Proxmox Backup Client on Ubuntu 24.04...
[INFO] PBS client installed successfully
======================================
PBS Client Configuration
======================================
Enter PBS server IP/hostname [192.168.1.181]:
Enter PBS server port [8007]:
Enter datastore name [backups]:
Authentication Method:
1) Username + Password
2) API Token (recommended for automation)
Select authentication method [1/2] [2]:
Enter username [backup]:
Enter realm [pbs]:
Enter token name [backup-token]:
Enter token secret:
Backup Configuration:
Enter paths to backup (space-separated) [/]: /
Enter exclusion patterns (space-separated) [/tmp /var/tmp /var/cache /proc /sys /dev /run]:
Backup Schedule:
1) Hourly
2) Daily (recommended)
3) Weekly
4) Custom
Select schedule type [1/2/3/4] [2]: 2
Enter hour for daily backup (0-23) [2]: 3
Retention Policy:
Keep last N backups [3]: 3
Keep daily backups for N days [7]: 7
Keep weekly backups for N weeks [4]: 4
Keep monthly backups for N months [6]: 12
Enable encryption? (yes/no) [yes]: yes
[INFO] Encryption key created successfully
[WARN] IMPORTANT: Encryption key paper backup saved to: /root/pbs-encryption-key-20251101.txt
[WARN] Print this file and store it securely. Lost keys = permanent data loss!
[INFO] Testing connection to PBS server...
[INFO] Connection test successful!
[INFO] Creating systemd service and timer...
[INFO] Systemd service and timer created successfully
Do you want to run a backup now? (yes/no) [no]: yes
[INFO] Starting immediate backup...
```
## Post-Installation
### Check Status
```bash
# Check timer status
sudo systemctl status pbs-backup.timer
# Check last backup run
sudo systemctl status pbs-backup.service
# View backup logs
sudo journalctl -u pbs-backup.service
# Follow logs in real-time
sudo journalctl -fu pbs-backup.service
```
### Manual Backup
```bash
# Run backup immediately
sudo systemctl start pbs-backup.service
# List all backups
sudo -E proxmox-backup-client snapshot list
```
### Configuration Files
- `/etc/proxmox-backup-client/config` - Main configuration
- `/etc/proxmox-backup-client/backup.sh` - Backup script
- `/root/.config/proxmox-backup/encryption-key.json` - Encryption key
- `/etc/systemd/system/pbs-backup.service` - Systemd service
- `/etc/systemd/system/pbs-backup.timer` - Systemd timer
### Modify Configuration
Edit the config file and restart the timer:
```bash
sudo nano /etc/proxmox-backup-client/config
sudo systemctl daemon-reload
sudo systemctl restart pbs-backup.timer
```
### Disable Automatic Backups
```bash
sudo systemctl disable pbs-backup.timer
sudo systemctl stop pbs-backup.timer
```
### Uninstall
Use the provided uninstaller:
```bash
sudo ./pbs-client-uninstaller.sh
```
## Backup Encryption Key
**CRITICAL**: Your encryption key is your only way to restore data. If you lose it, your backups are permanently unrecoverable.
### Key Locations
- Primary: `/root/.config/proxmox-backup/encryption-key.json`
- Paper backup: `/root/pbs-encryption-key-YYYYMMDD.txt`
### Best Practices
1. Print the paper backup immediately
2. Store printed copy in safe location (fireproof safe, safety deposit box)
3. Copy `encryption-key.json` to password manager
4. Never store key on the same system being backed up
5. Test key restoration regularly
### Restore Encryption Key
To restore backups on a new system:
```bash
# Copy your saved encryption-key.json
sudo mkdir -p /root/.config/proxmox-backup
sudo cp /path/to/saved/encryption-key.json /root/.config/proxmox-backup/
# Or recreate from paper backup QR code
# (scan QR code and save to file)
```
## Troubleshooting
### Connection Test Fails
The installer tests the connection with a 30-second timeout. If it fails, you'll see specific error messages:
**Timeout errors** (30+ seconds):
- PBS server is unreachable (check IP/hostname)
- Firewall blocking port (default: 8007)
- Network connectivity issues
**Authentication errors** (immediate failure):
- Invalid credentials (username/password/token)
- Datastore does not exist on server
- User lacks permissions for the datastore
Check your PBS server is accessible:
```bash
ping 192.168.1.181
curl -k https://192.168.1.181:8007
```
Verify credentials on PBS web interface.
### Installation Fails on Ubuntu 22.04
You may need to manually install `libssl1.1`:
```bash
wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb
sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb
```
### Arch: "libfuse3.so.3 not found"
Rebuild after fuse3 updates:
```bash
yay -S proxmox-backup-client-bin --rebuild
```
### Backups Not Running
Check timer and service status:
```bash
sudo systemctl list-timers pbs-backup.timer
sudo systemctl status pbs-backup.service
sudo journalctl -u pbs-backup.service -n 50
```
### "Skip mount point" Messages
This is normal. The script excludes separate mount points by default. To include specific mount points, edit `/etc/proxmox-backup-client/backup.sh` and add `--include-dev` flags.
## Advanced Usage
### Custom Backup Script
Modify `/etc/proxmox-backup-client/backup.sh` for advanced scenarios:
```bash
# Add specific mount points
--include-dev /boot/efi
# Use data change detection mode
--change-detection-mode=data
# Add rate limiting (10 MB/s)
--rate-limit 10485760
# Verbose output
--verbose
```
### Multiple Backup Jobs
Create additional services for different schedules:
```bash
# Copy and modify service/timer files
sudo cp /etc/systemd/system/pbs-backup.service /etc/systemd/system/pbs-backup-hourly.service
sudo cp /etc/systemd/system/pbs-backup.timer /etc/systemd/system/pbs-backup-hourly.timer
# Edit timer OnCalendar setting
sudo nano /etc/systemd/system/pbs-backup-hourly.timer
sudo systemctl daemon-reload
sudo systemctl enable --now pbs-backup-hourly.timer
```
## Security Considerations
- Configuration file contains credentials - protected with mode 600
- Encryption key is root-only accessible
- No passwords logged or displayed in output
- All communication uses TLS encryption
- Consider using API tokens instead of passwords for automation
## Supported Distributions
| Distribution | Versions | Notes |
|-------------|----------|-------|
| Ubuntu | 20.04, 22.04, 24.04 | LTS versions only |
| Debian | 10 (Buster), 11 (Bullseye), 12 (Bookworm) | Stable releases |
| Arch Linux | Rolling | Requires `yay` AUR helper |
## Contributing
Issues and pull requests welcome at [your-repo-url]
## License
MIT License - see LICENSE file
## Credits
- Proxmox team for PBS client
- Script by Cade
## Support
For PBS client issues: https://forum.proxmox.com
For script issues: [your-repo-url]/issues