Reorganized documentation for better usability and maintenance.
CHANGES:
1. README.md simplified (750 → 243 lines):
- Focused on quick start and essential usage
- Removed redundant step-by-step sections
- Removed duplicate explanations
- Clearer structure with better hierarchy
- Link to dedicated troubleshooting guide
2. New TROUBLESHOOTING.md (comprehensive guide):
- Connection Issues:
- Connection test script usage
- 3-step failure diagnosis
- SSL certificate handling
- Permission Errors:
- Missing Datastore.Backup permission
- PBS web interface and CLI solutions
- Required permissions explained
- Installation Issues:
- Ubuntu 22.04 libssl1.1 missing
- Arch Linux libfuse3 errors
- yay AUR helper installation
- Backup Issues:
- Backups not running diagnostics
- "Skip mount point" explanation
- No space left solutions
- Encryption key problems
- Multi-Target Issues:
- Target connection test failures
- Missing services
- Configuration Issues:
- Whitespace in configuration
- Incomplete configuration warning
- Advanced Troubleshooting:
- Verbose logging
- Manual testing
- PBS server logs
- Network timeout solutions
- Common Misconfigurations:
- Token format examples
- Datastore name case-sensitivity
- Repository string format
- Permission path format
BENEFITS:
- Faster onboarding (README focused on getting started)
- Easier problem-solving (dedicated troubleshooting guide)
- Better maintainability (separate concerns)
- Improved searchability (detailed error solutions)
- Professional documentation structure
README now covers:
- Features and quick start
- Prerequisites (simplified)
- Basic usage
- Multi-target management
- Backup types explained
- Encryption key best practices
- Updating and uninstallation
TROUBLESHOOTING covers:
- All error messages and solutions
- Step-by-step diagnostic procedures
- Advanced configuration options
- Common pitfalls and how to avoid them
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
9.3 KiB
Troubleshooting Guide
Common issues and solutions for PBSClientTool.
Connection Issues
Connection Test Script
If you encounter connection issues, use the included diagnostic script:
./test-connection.sh <server> <port> <datastore> <username> <realm> <password-or-token>
Examples:
With username/password:
./test-connection.sh 192.168.1.181 8007 DEAD-BACKUP root pam mypassword
With API token:
./test-connection.sh 192.168.1.181 8007 DEAD-BACKUP root pam backup-token token-secret-here
The script will:
- Test server reachability
- Handle SSL certificate fingerprint acceptance
- Test authentication
- Verify datastore access
- Provide detailed error messages
Connection Test Failures
The installer tests connections with a 3-step process:
Step 1 - Server Reachability (5s timeout):
- PBS server is unreachable (check IP/hostname)
- Firewall blocking port (default: 8007)
- Network connectivity issues
Quick checks:
# Test server reachability
ping 192.168.1.181
curl -k https://192.168.1.181:8007
Step 2 - Authentication (15s timeout):
- Invalid credentials (username/password/token)
- SSL certificate fingerprint issues (automatically handled)
- API token format errors
Quick checks:
- Verify credentials in PBS web interface
- Ensure API token includes both username and token name:
root@pam!backupAutomations - Check for trailing spaces in input fields (script now trims automatically)
Step 3 - Datastore Access:
- Datastore does not exist on server
- User lacks permissions for the datastore
Quick checks:
- Verify datastore name matches exactly (case-sensitive)
- Check permissions in PBS: Configuration → Access Control → Permissions
SSL Certificate Fingerprints
The installer automatically accepts SSL fingerprints during setup. If you need to manually accept:
export PBS_REPOSITORY="root@pam@192.168.1.181:8007:DEAD-BACKUP"
export PBS_PASSWORD="your-password"
proxmox-backup-client login
# Answer 'y' when prompted to accept the fingerprint
Permission Errors
Missing Datastore.Backup Permission
Error:
Error: permission check failed - missing Datastore.Audit|Datastore.Backup
Error: while creating locked backup group
Solution:
Your API token needs backup permissions on the datastore.
Via PBS Web Interface:
- Go to Configuration → Access Control → Permissions
- Click Add → User Permission
- Configure:
- Path:
/datastore/YOUR-DATASTORE-NAME - User:
root@pam!backupAutomations(your token) - Role:
DatastoreBackup(orDatastoreAdminfor full access)
- Path:
- Click Add
Via PBS CLI:
pveum acl modify /datastore/DEAD-BACKUP -token 'root@pam!backupAutomations' -role DatastoreBackup
Required Permissions
The API token needs at least:
- Datastore.Backup - Create new backups
- Datastore.Verify - Verify backup integrity (optional)
- Datastore.Prune - Remove old backups based on retention policy
The DatastoreBackup or DatastoreAdmin role includes all of these.
Installation Issues
Ubuntu 22.04: libssl1.1 Missing
Error:
libssl1.1: not found
Solution:
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 Linux: libfuse3.so.3 Not Found
Error:
error while loading shared libraries: libfuse3.so.3: cannot open shared object file
Solution:
Rebuild the package after fuse3 updates:
yay -S proxmox-backup-client-bin --rebuild
Arch Linux: yay Not Installed
Error:
yay: command not found
Solution:
Install yay AUR helper first:
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
See: https://github.com/Jguer/yay
Backup Issues
Backups Not Running
Check timer and service status:
# Check if timer is enabled and active
sudo systemctl list-timers pbs-backup-default.timer
# Check service status
sudo systemctl status pbs-backup-default.service
# View recent logs
sudo journalctl -u pbs-backup-default.service -n 50
# Follow logs in real-time
sudo journalctl -fu pbs-backup-default.service
"Skip mount point" Messages
Message:
Skip mount point: /boot/efi
This is normal behavior. The script excludes separate mount points by default to avoid issues with mounted filesystems.
To include specific mount points:
Edit /etc/proxmox-backup-client/backup-default.sh and add --include-dev flags:
proxmox-backup-client backup \
root.pxar:/ \
--include-dev /boot/efi \
--repository $PBS_REPOSITORY
Backup Fails with "No space left"
Error:
Error: No space left on device
Possible causes:
- PBS datastore is full
- Local
/tmpis full during backup - Encryption key storage is full
Solutions:
- Check PBS datastore usage in web interface
- Prune old backups:
sudo proxmox-backup-client prune - Clean local temp:
sudo rm -rf /tmp/*
Encryption Key Issues
Error:
Error: unable to open encryption key
Solution:
Ensure encryption key exists and has correct permissions:
ls -la /root/.config/proxmox-backup/encryption-key.json
# Should show: -rw------- (600) owned by root
# If missing, restore from paper backup
sudo mkdir -p /root/.config/proxmox-backup
sudo cp /path/to/saved/encryption-key.json /root/.config/proxmox-backup/
sudo chmod 600 /root/.config/proxmox-backup/encryption-key.json
Multi-Target Issues
Target Connection Tests Fail
Symptom:
default: ✗ Failed
Solution:
Use option 3 (Edit target) from main menu to reconfigure:
- Test connection first with standalone test-connection.sh script
- Verify datastore permissions on PBS server
- Check for typos in server/datastore names
- Ensure API token is still valid (not revoked/expired)
Services Not Found
Error:
Unit pbs-backup-default.timer not found
Solution:
The target may not have been fully configured. Reconfigure it:
sudo PBSClientTool
# Select option 3 (Edit existing target)
# Select option 3 (Full reconfiguration)
Configuration Issues
Whitespace in Configuration
Error:
Error: invalid repository format
Cause:
Previous versions could capture trailing spaces in input fields, breaking the repository string.
Solution:
Current version (1.1.0+) automatically trims all input. If you have an old config, reconfigure the target:
sudo PBSClientTool
# Select option 3 (Edit existing target)
# Select option 1 (Connection only)
# Re-enter connection details (will be auto-trimmed)
Target Shows "Incomplete configuration"
Symptom:
Target: default
Status: ⚠ Incomplete configuration
Action: Use option 3 (Edit target) to reconfigure
Cause:
Essential fields (PBS_SERVER or PBS_DATASTORE) are missing or contain placeholder values.
Solution:
Use option 3 from main menu to edit the target and complete the configuration.
Advanced Troubleshooting
Enable Verbose Backup Logging
Edit /etc/proxmox-backup-client/backup-default.sh and add --verbose:
proxmox-backup-client backup \
root.pxar:/ \
--verbose \
--repository $PBS_REPOSITORY
Test Backup Manually
Run backup script directly to see full output:
sudo /etc/proxmox-backup-client/backup-default.sh
Check PBS Server Logs
On the PBS server:
journalctl -u proxmox-backup.service -f
Verify Repository Format
Check that PBS_REPOSITORY is correctly formatted:
source /etc/proxmox-backup-client/targets/default.conf
echo $PBS_REPOSITORY
# Should look like:
# username@realm!tokenname@server:port:datastore
# OR
# username@realm@server:port:datastore
Network Timeout Issues
If backups are slow or timing out over WAN:
Edit backup script and add rate limiting:
proxmox-backup-client backup \
root.pxar:/ \
--rate-limit 10485760 \
--repository $PBS_REPOSITORY
Rate is in bytes/second (10485760 = 10 MB/s).
Getting Help
Collect Debug Information
When reporting issues, include:
# Script version
sudo PBSClientTool --version
# PBS client version
proxmox-backup-client version
# Target list
sudo PBSClientTool
# Select option 1, screenshot the output
# Service status
sudo systemctl status pbs-backup-default.service
# Recent logs
sudo journalctl -u pbs-backup-default.service -n 100 --no-pager
Where to Get Help
- PBSClientTool issues: https://github.com/zaphod-black/PBSClientTool/issues
- PBS client issues: https://forum.proxmox.com
- PBS documentation: https://pbs.proxmox.com/docs/
Common Misconfigurations
Token Format
❌ Wrong: backupAutomations (token name only)
✅ Correct: root@pam!backupAutomations (full format in permissions)
Datastore Name
❌ Wrong: DEAD-Backup (wrong case)
✅ Correct: DEAD-BACKUP (exact match from PBS)
Repository String
❌ Wrong: root@pam !backupAutomations@... (extra space)
✅ Correct: root@pam!backupAutomations@... (no spaces)
(Note: Current version auto-trims spaces, but good to know the correct format)
Permission Path
❌ Wrong: /datastore/DEAD-BACKUP/ (trailing slash)
✅ Correct: /datastore/DEAD-BACKUP (no trailing slash)