Version 0.9.x
Overview
Version 0.9.x is a major release that introduces a comprehensive User Access Control & Security System. This release transforms duplistatus from an open-access application into a secure, multi-user system with role-based access control, comprehensive audit logging, and enterprise-grade security features. All existing functionality is now protected behind authentication, ensuring that only authorised users can access and manage backup monitoring.
Breaking Changes
Authentication Required
- All pages now require authentication - Users must log in to access the application
- Default admin account is created automatically:
- Username:
admin - Password:
Duplistatus09(must be changed on first login)
- Username:
- Existing sessions are invalidated - All users must log in after upgrade
- API endpoints now require authentication - External integrations must include session cookies or use authenticated requests
All users must log in after upgrading to version 0.9.x. The default admin credentials are admin/Duplistatus09. Change the password immediately after first login.
Database Schema Migration
- Automatic migration from v3.1 to v4.0 for existing installations
- New tables added:
users,sessions,audit_log - Database backup created automatically before migration
- New installations start directly with schema v4.0 (no migration needed)
New Features
User Access Control & Security System
Authentication System
- User login/logout functionality with secure session management
- Password-based authentication with bcrypt hashing (cost factor 12)
- Account lockout mechanism (5 failed attempts, 15-minute lockout)
- Forced password change on first login
- Password policy enforcement:
- Minimum 8 characters
- At least one uppercase letter
- At least one lowercase letter
- At least one number
- Special characters optional
- "Remember me" functionality with username persistence in localStorage
- Session-based authentication with database-backed sessions (replaces in-memory)
- CSRF protection integrated with authentication
- HTTP-only cookies for session security
- IP address and user agent tracking for security monitoring
User Management (Admin Only)
- User creation with automatic temporary password generation
- User list with search, pagination, and filtering
- User editing (username, admin status, password change requirement)
- Password reset functionality with temporary password display
- User deletion with safeguards (prevents deletion of last admin)
- Role-based access control (Admin/User roles)
- Status indicators (Active, Locked, Must Change Password)
- Last login tracking and display
Audit Logging System
- Comprehensive audit trail for all system changes and user actions
- Audit log viewer with advanced filtering:
- Date range filtering
- User filtering
- Action filtering
- Category filtering
- Status filtering
- Export functionality (CSV and JSON formats)
- Audit log statistics and analytics
- Configurable retention period (30-365 days, default: 90 days)
- Automatic cleanup cron job (runs daily at 2 AM UTC)
- Manual cleanup API with dry-run support
- Audit logging for:
- Authentication events (login, logout, password changes, account lockouts)
- User management operations (create, update, delete, password resets)
- Configuration changes (email, NTFY, templates, overdue tolerance, backup settings)
- Backup operations (collection, deletion, cleanup)
- Server management (add, update, delete)
- System operations (migrations, cleanup, notifications)
Settings Page Redesign
- Modern sidebar navigation with collapsible sidebar
- User-specific sidebar state persistence (collapsed/expanded preference saved per user)
- Grouped settings sections:
- Notifications: Backup Notifications, Overdue Monitoring, Templates
- Integrations: NTFY, Email
- System: Servers, Users (admin only), Audit Log
- Sticky sidebar that remains visible while scrolling
- Responsive design with optimised spacing
- Settings icon and "System Settings" title in sidebar header
- Back button integrated into app header
User Interface Enhancements
- Standalone login page with modern design
- "Remember me" checkbox on login form for username persistence
- Show/hide password buttons on login and password change forms
- Change password modal with real-time validation checklist
- User indicator and logout button in app header
- Role-based UI visibility (admin-only features hidden from regular users)
- Status badges and indicators throughout the UI
- User-specific preferences stored in localStorage (e.g., sidebar collapsed state)
Security Features
- Password hashing with bcrypt (industry-standard)
- Sensitive data sanitization in audit logs (passwords, tokens, secrets never logged)
- Rate limiting for login attempts
- Session expiration (24 hours)
- CSRF token validation for all state-changing operations
- Admin recovery CLI tool for password reset if locked out
Developer Tools
- Admin recovery CLI script (
admin-recovery) for easy execution in Docker containers - Works both locally and in Docker with automatic path detection
- Comprehensive TypeScript interfaces (no
anytypes) - Authentication middleware for route protection
- Audit logger utility class with convenience methods
🚀 Migration Notes
From Version 0.8.x
This release introduces authentication and requires all users to log in. When upgrading from version 0.8.x:
- Automatic Database Migration: The application will automatically migrate your database schema from v3.1 to v4.0
- Database Backup: An automatic backup is created before migration
- Default Admin Account: A default admin account is created:
- Username:
admin - Password:
Duplistatus09 - You must change this password on first login
- Username:
- Session Invalidation: All existing sessions are invalidated
- User Login Required: All users must log in after upgrade
- API Authentication: External integrations must be updated to include authentication
Security Considerations
- Change Default Password: Change the default admin password immediately after first login
- Create User Accounts: Create individual user accounts for each person who needs access
- Review Audit Logs: Check audit logs regularly for security monitoring
- Configure Retention: Set appropriate audit log retention period based on your compliance requirements
- Backup Master Key: If upgrading from 0.8.x, ensure the
.duplistatus.keyfile is backed up
First Login Steps
- Log in with default credentials (
admin/Duplistatus09) - Change password when prompted (forced on first login)
- Create user accounts for other users (Settings → Users)
- Configure audit log retention if needed (Settings → Audit Log)
- Review audit logs to verify system is working correctly
🐛 Bug Fixes
- Fixed session persistence issues across server restarts
- Improved error handling for authentication failures
- Enhanced password validation feedback
- Fixed UI inconsistencies in settings page
- Improved audit log filtering performance
API Endpoints
Authentication Endpoints
POST /api/auth/login- User authenticationPOST /api/auth/logout- Session terminationGET /api/auth/me- Current user informationPOST /api/auth/change-password- Password change
User Management Endpoints (Admin Only)
GET /api/users- List usersPOST /api/users- Create userPATCH /api/users/{id}- Update userDELETE /api/users/{id}- Delete user
Audit Log Endpoints
GET /api/audit-log- Query audit logsGET /api/audit-log/download- Export audit logsGET /api/audit-log/stats- Audit statisticsPOST /api/audit-log/cleanup- Manual cleanup (admin only)GET /api/audit-log/retention- Get retention settingPATCH /api/audit-log/retention- Update retention (admin only)
All API endpoints now require authentication. See the API Reference for details on authentication.
Support
Getting Help
- Documentation: User Guide
- API Reference: API Documentation
- Migration Guide: Version Upgrade Migration
- Admin Recovery: Admin Account Recovery
- Community: GitHub Discussions
- Issues: GitHub Issues
Reporting Bugs
When reporting bugs, please include:
- Version: 0.9.x
- Operating system and version
- Docker version
- Error messages and logs
- Steps to reproduce
- User role (admin/user) if relevant
Changelog
Detailed Changes
- Added: Complete authentication and authorisation system
- Added: User management with role-based access control
- Added: Comprehensive audit logging system
- Added: Settings page redesign with collapsible sidebar
- Added: Admin recovery CLI tool
- Added: Password policy enforcement
- Added: Account lockout mechanism
- Added: Session management with database persistence
- Changed: All pages now require authentication
- Changed: Database schema from v3.1 to v4.0
- Changed: Session storage from in-memory to database-backed
- Changed: Settings page layout and navigation
- Fixed: Session persistence across server restarts
- Fixed: Various UI inconsistencies
- Improved: Security posture with comprehensive audit logging
- Improved: User experience with modern login and settings pages
- Improved: Code quality with TypeScript interfaces and DRY principles
License
This project is licensed under the Apache License 2.0.
Copyright © 2025 Waldemar Scudeller Jr.