Troubleshooting Guide
Solve common issues with backups, SSH connections, caching, and system errors.Authentication Issues
Cannot login - Invalid credentials
Cannot login - Invalid credentials
Symptom: Login fails with “Could not validate credentials” error.Possible causes:Then recreate admin user via first-run mechanism:Check JWT secret key:
- Wrong username or password
- User account deactivated
- Database corruption
- JWT token issues
Proxy authentication not working
Proxy authentication not working
Symptom: With Check reverse proxy headers:Common issues:Missing header from reverse proxy:Wrong header name:Security: Borg UI accessible without proxy:Supported headers (from
DISABLE_AUTHENTICATION=true, still prompted for login.Diagnosis:Check environment variables:app/core/security.py:109-120):X-Forwarded-User(default)X-Remote-UserRemote-UserX-authentik-username
SSH Connection Issues
Permission denied (publickey)
Permission denied (publickey)
Symptom: SSH connection test fails with “Permission denied (publickey)”.Diagnosis:Common causes:1. Public key not deployed to remote server:2. Wrong username or hostname:3. SSH key file missing:4. Remote server permissions incorrect:5. SELinux blocking (CentOS/RHEL):
SSH host key verification failed
SSH host key verification failed
Symptom: Connection fails with “Host key verification failed”.Solution:
SSH connection timeout
SSH connection timeout
Symptom: Connection test hangs or times out.Diagnosis:Common causes:Firewall blocking SSH port:Wrong port:Network unreachable:
Backup Failures
Repository lock timeout
Repository lock timeout
Symptom: Backup fails with “Failed to create/acquire the lock” or “Timeout waiting for lock”.Cause: Another Borg process is using the repository, or stale lock file exists.Solutions:Wait for other operation to complete:Break stale lock (if no operation is running):Configure bypass lock (for read operations):This allows browsing archives while backups are running (from migration
061_add_bypass_lock_on_info.py and 069_add_bypass_lock_on_list.py).Backup timeout - Operation exceeded timeout
Backup timeout - Operation exceeded timeout
Symptom: Backup fails with timeout error after running for configured duration.Solutions:Increase backup timeout:Check for stuck operations:Optimize backup performance:
- Use faster compression:
--compression lz4 - Exclude unnecessary files:
--exclude '*.tmp' - Check network speed for remote repositories
Out of space errors
Out of space errors
Symptom: Backup fails with “No space left on device”.Diagnosis:Solutions:Run compact to reclaim space:Run prune to delete old archives:Increase repository volume size:
Pre/Post backup scripts failing
Pre/Post backup scripts failing
Symptom: Backup fails during pre-backup or post-backup script execution.Diagnosis:Common issues:Script timeout:Missing dependencies:Incorrect permissions:Script errors:
Cache Issues
Cache not working - Still slow after first browse
Cache not working - Still slow after first browse
Symptom: Archive browsing is slow even after first load.Diagnosis:Solutions:Redis not running:Redis connection failed:Fallback to in-memory cache:Cache cleared or expired:
Redis connection refused
Redis connection refused
Symptom: Logs show “Failed to connect to Redis” or “Connection refused”.Solutions:Check Redis is listening:Check network connectivity:For external Redis:Verify Redis URL format:
Cache showing old data after repository changes
Cache showing old data after repository changes
Symptom: Archive list or contents show outdated data after backup/prune.Solution:Auto-clear cache after operations:
- Cache is automatically cleared for a repository after prune/compact operations
- Implementation:
await cache_service.clear_repository(repo_id)
Repository Issues
Repository not found or inaccessible
Repository not found or inaccessible
Symptom: “Repository does not exist” or “Permission denied” when accessing repository.For local repositories:For SSH repositories:Common causes:
- Typo in repository path - Check path spelling
- Missing volume mount - Ensure path is mounted in docker-compose.yml
- Wrong permissions - Repository not readable by container user (UID 1000)
- SSH key not deployed - For remote repositories
Corrupt repository or index
Corrupt repository or index
Symptom: Borg errors mentioning “corrupted” or “integrity check failed”.Solutions:Run repository check:Repair repository:Rebuild index:
Performance Issues
Slow archive browsing (>30 seconds)
Slow archive browsing (>30 seconds)
Expected performance:Increase Redis memory:Increase cache size:Check cache hit rate:
- First browse: Depends on archive size (1-90 seconds)
- Subsequent browses: 100ms with Redis cache
High memory usage
High memory usage
Symptom: Container using excessive memory (>4GB).Diagnosis:Solutions:Limit Redis memory:Limit container memory:Reduce cache size:Clear cache:
System Errors
Container fails to start
Container fails to start
Diagnosis:Common causes:Port already in use:Volume mount permission error:Database migration failed:
Database locked errors
Database locked errors
Symptom: “Database is locked” errors in logs.Cause: Multiple processes trying to write to SQLite simultaneously (rare with WAL mode).Solutions:
Getting Help
When reporting issues, include:- GitHub Issues: Report bugs and request features
- Discussions: Ask questions and share tips
Related Documentation
Security
Authentication and SSH troubleshooting
Performance
Cache and timeout optimization
Maintenance
Database and log cleanup
SSH Keys Guide
SSH connection setup