mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2026-02-18 04:26:49 +01:00
534 lines
15 KiB
Markdown
534 lines
15 KiB
Markdown
# Home Directory Management Guide for CyberPanel
|
|
|
|
## Overview
|
|
|
|
The Home Directory Management feature allows CyberPanel administrators to manage multiple home directories across different storage volumes (e.g., `/home`, `/home2`, `/home3`). This enables storage balancing, helps avoid upgrading main volume plans by utilizing cheaper additional volumes, and provides better resource distribution across your server.
|
|
|
|
## Table of Contents
|
|
|
|
1. [Features](#features)
|
|
2. [Getting Started](#getting-started)
|
|
3. [Managing Home Directories](#managing-home-directories)
|
|
4. [User Management](#user-management)
|
|
5. [Website Management Integration](#website-management-integration)
|
|
6. [Storage Balancing](#storage-balancing)
|
|
7. [User Migration](#user-migration)
|
|
8. [Troubleshooting](#troubleshooting)
|
|
9. [Best Practices](#best-practices)
|
|
10. [Advanced Configuration](#advanced-configuration)
|
|
|
|
## Features
|
|
|
|
### Core Capabilities
|
|
- **Multiple Home Directories**: Manage `/home`, `/home2`, `/home3`, etc.
|
|
- **Automatic Detection**: Auto-discover existing home directories
|
|
- **Storage Monitoring**: Real-time space usage and availability tracking
|
|
- **User Distribution**: Balance users across different storage volumes
|
|
- **Website Integration**: Manage home directories directly from website modification
|
|
- **User Migration**: Move users between home directories seamlessly
|
|
- **Storage Analytics**: Detailed usage statistics and recommendations
|
|
|
|
### Benefits
|
|
- **Cost Optimization**: Use cheaper additional volumes instead of upgrading main storage
|
|
- **Performance**: Distribute load across multiple storage devices
|
|
- **Scalability**: Easy expansion as your server grows
|
|
- **Flexibility**: Choose optimal storage for different user types
|
|
- **Monitoring**: Real-time visibility into storage usage
|
|
|
|
## Getting Started
|
|
|
|
### Prerequisites
|
|
- CyberPanel v2.5.5 or higher
|
|
- Administrator access
|
|
- Multiple storage volumes available (optional but recommended)
|
|
- Sufficient disk space for home directories
|
|
|
|
### Initial Setup
|
|
|
|
1. **Access Home Directory Management**
|
|
- Log in to CyberPanel admin panel
|
|
- Navigate to **User Management** → **Home Directory Management**
|
|
|
|
2. **Auto-Detect Existing Directories**
|
|
- Click **"Detect Directories"** button
|
|
- System will automatically find `/home`, `/home2`, `/home3`, etc.
|
|
- Review detected directories and their status
|
|
|
|
3. **Configure Default Settings**
|
|
- Set default home directory (usually `/home`)
|
|
- Configure storage limits and user limits
|
|
- Enable/disable directories as needed
|
|
|
|
### Database Migration (For Developers)
|
|
```bash
|
|
cd /usr/local/CyberCP
|
|
python manage.py makemigrations userManagment
|
|
python manage.py migrate
|
|
```
|
|
|
|
### Technical Implementation Details
|
|
|
|
#### Core Components
|
|
- **Models** (`models.py`): `HomeDirectory` and `UserHomeMapping` models
|
|
- **Management** (`homeDirectoryManager.py`): Core functionality for operations
|
|
- **Utilities** (`homeDirectoryUtils.py`): Helper functions for path resolution
|
|
- **Views** (`homeDirectoryViews.py`): Admin interface and API endpoints
|
|
- **Templates**: Management interfaces and user creation forms
|
|
|
|
#### File Structure
|
|
```
|
|
cyberpanel/userManagment/
|
|
├── models.py # Database models
|
|
├── homeDirectoryManager.py # Core management logic
|
|
├── homeDirectoryUtils.py # Utility functions
|
|
├── homeDirectoryViews.py # API endpoints
|
|
├── templates/userManagment/
|
|
│ ├── homeDirectoryManagement.html
|
|
│ ├── userMigration.html
|
|
│ └── createUser.html (updated)
|
|
└── migrations/
|
|
└── 0001_home_directories.py
|
|
```
|
|
|
|
## Managing Home Directories
|
|
|
|
### Adding New Home Directories
|
|
|
|
#### Method 1: Automatic Detection
|
|
```bash
|
|
# The system automatically detects directories matching pattern /home[0-9]*
|
|
# No manual intervention required
|
|
```
|
|
|
|
#### Method 2: Manual Creation
|
|
1. **Create Directory on Server**
|
|
```bash
|
|
sudo mkdir /home2
|
|
sudo chown root:root /home2
|
|
sudo chmod 755 /home2
|
|
```
|
|
|
|
2. **Detect in CyberPanel**
|
|
- Go to Home Directory Management
|
|
- Click **"Detect Directories"**
|
|
- New directory will appear in the list
|
|
|
|
### Configuring Home Directories
|
|
|
|
#### Basic Configuration
|
|
- **Name**: Display name for the directory
|
|
- **Path**: Full system path (e.g., `/home2`)
|
|
- **Description**: Optional description for identification
|
|
- **Status**: Active/Inactive
|
|
- **Default**: Set as default for new users
|
|
|
|
#### Advanced Settings
|
|
- **Maximum Users**: Limit number of users per directory
|
|
- **Storage Quota**: Set storage limits (if supported by filesystem)
|
|
- **Priority**: Directory selection priority for auto-assignment
|
|
|
|
### Directory Status Management
|
|
|
|
#### Active Directories
|
|
- Available for new user assignments
|
|
- Included in auto-selection algorithms
|
|
- Monitored for storage usage
|
|
|
|
#### Inactive Directories
|
|
- Not available for new users
|
|
- Existing users remain unaffected
|
|
- Useful for maintenance or decommissioning
|
|
|
|
## User Management
|
|
|
|
### Creating Users with Home Directory Selection
|
|
|
|
1. **Navigate to User Creation**
|
|
- Go to **User Management** → **Create User**
|
|
|
|
2. **Select Home Directory**
|
|
- Choose from dropdown list of available directories
|
|
- View real-time storage information
|
|
- Select "Auto-select" for automatic assignment
|
|
|
|
3. **Review Assignment**
|
|
- System shows selected directory details
|
|
- Displays available space and user count
|
|
- Confirms assignment before creation
|
|
|
|
### Auto-Assignment Logic
|
|
|
|
The system automatically selects the best home directory based on:
|
|
- **Available Space**: Prioritizes directories with more free space
|
|
- **User Count**: Balances users across directories
|
|
- **Directory Status**: Only considers active directories
|
|
- **User Limits**: Respects maximum user limits per directory
|
|
|
|
### Manual User Assignment
|
|
|
|
1. **Access User Migration**
|
|
- Go to **User Management** → **User Migration**
|
|
|
|
2. **Select User and Target Directory**
|
|
- Choose user to migrate
|
|
- Select destination home directory
|
|
- Review migration details
|
|
|
|
3. **Execute Migration**
|
|
- System moves user data
|
|
- Updates all references
|
|
- Verifies successful migration
|
|
|
|
## Website Management Integration
|
|
|
|
### Modifying Website Home Directory
|
|
|
|
1. **Access Website Modification**
|
|
- Go to **Websites** → **Modify Website**
|
|
- Select website to modify
|
|
|
|
2. **Change Home Directory**
|
|
- Select new home directory from dropdown
|
|
- View current and available options
|
|
- See real-time storage information
|
|
|
|
3. **Save Changes**
|
|
- System migrates website owner
|
|
- Updates all website references
|
|
- Maintains website functionality
|
|
|
|
### Website Owner Migration
|
|
|
|
When changing a website's home directory:
|
|
- **User Data**: Website owner is migrated to new directory
|
|
- **Website Files**: All website files are moved
|
|
- **Database References**: All database references updated
|
|
- **Permissions**: File permissions maintained
|
|
- **Services**: Email, FTP, and other services updated
|
|
|
|
## Storage Balancing
|
|
|
|
### Monitoring Storage Usage
|
|
|
|
#### Real-Time Statistics
|
|
- **Total Space**: Combined storage across all directories
|
|
- **Available Space**: Free space available
|
|
- **Usage Percentage**: Visual progress bars
|
|
- **User Distribution**: Users per directory
|
|
|
|
#### Storage Alerts
|
|
- **Low Space Warning**: When directory approaches capacity
|
|
- **Full Directory Alert**: When directory reaches maximum users
|
|
- **Performance Impact**: Storage performance recommendations
|
|
|
|
### Balancing Strategies
|
|
|
|
#### Automatic Balancing
|
|
- **New User Assignment**: Distributes users evenly
|
|
- **Space-Based Selection**: Prioritizes directories with more space
|
|
- **Load Distribution**: Spreads load across multiple volumes
|
|
|
|
#### Manual Balancing
|
|
- **User Migration**: Move users between directories
|
|
- **Directory Management**: Enable/disable directories
|
|
- **Capacity Planning**: Monitor and plan for growth
|
|
|
|
## User Migration
|
|
|
|
### Migration Process
|
|
|
|
1. **Pre-Migration Checks**
|
|
- Verify source and destination directories
|
|
- Check available space
|
|
- Validate user permissions
|
|
|
|
2. **Data Migration**
|
|
- Copy user home directory
|
|
- Update system references
|
|
- Verify data integrity
|
|
|
|
3. **Post-Migration Verification**
|
|
- Test user access
|
|
- Verify website functionality
|
|
- Update service configurations
|
|
|
|
### Migration Safety
|
|
|
|
#### Backup Recommendations
|
|
```bash
|
|
# Always backup before migration
|
|
sudo tar -czf /backup/user-backup-$(date +%Y%m%d).tar.gz /home/username
|
|
```
|
|
|
|
#### Rollback Procedures
|
|
- Keep original data until migration verified
|
|
- Maintain backup of system configurations
|
|
- Document all changes made
|
|
|
|
### Migration Commands
|
|
|
|
#### Manual Migration (Advanced Users)
|
|
```bash
|
|
# Stop user services
|
|
sudo systemctl stop user@username
|
|
|
|
# Copy user data
|
|
sudo rsync -av /home/username/ /home2/username/
|
|
|
|
# Update user home in system
|
|
sudo usermod -d /home2/username username
|
|
|
|
# Update CyberPanel database
|
|
# (Use web interface for this)
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
#### 1. Directory Not Detected
|
|
**Problem**: New home directory not appearing in list
|
|
**Solution**:
|
|
```bash
|
|
# Check directory exists and has correct permissions
|
|
ls -la /home2
|
|
sudo chown root:root /home2
|
|
sudo chmod 755 /home2
|
|
|
|
# Refresh detection in CyberPanel
|
|
# Click "Detect Directories" button
|
|
```
|
|
|
|
#### 2. Migration Fails
|
|
**Problem**: User migration fails with errors
|
|
**Solution**:
|
|
- Check available space in destination
|
|
- Verify user permissions
|
|
- Review CyberPanel logs
|
|
- Ensure destination directory is active
|
|
|
|
#### 3. Website Access Issues
|
|
**Problem**: Website not accessible after migration
|
|
**Solution**:
|
|
- Check file permissions
|
|
- Verify web server configuration
|
|
- Update virtual host settings
|
|
- Restart web server services
|
|
|
|
#### 4. Storage Not Updating
|
|
**Problem**: Storage statistics not reflecting changes
|
|
**Solution**:
|
|
- Click "Refresh Stats" button
|
|
- Check filesystem mount status
|
|
- Verify directory accessibility
|
|
- Review system logs
|
|
|
|
### Diagnostic Commands
|
|
|
|
#### Check Directory Status
|
|
```bash
|
|
# List all home directories
|
|
ls -la /home*
|
|
|
|
# Check disk usage
|
|
df -h /home*
|
|
|
|
# Check permissions
|
|
ls -la /home*/username
|
|
```
|
|
|
|
#### Verify User Assignments
|
|
```bash
|
|
# Check user home directories
|
|
getent passwd | grep /home
|
|
|
|
# Check CyberPanel database
|
|
# (Use web interface or database tools)
|
|
```
|
|
|
|
#### Monitor Storage Usage
|
|
```bash
|
|
# Real-time disk usage
|
|
watch -n 5 'df -h /home*'
|
|
|
|
# Directory sizes
|
|
du -sh /home*
|
|
|
|
# User directory sizes
|
|
du -sh /home*/username
|
|
```
|
|
|
|
### Log Files
|
|
|
|
#### CyberPanel Logs
|
|
```bash
|
|
# Main CyberPanel log
|
|
tail -f /usr/local/CyberCP/logs/cyberpanel.log
|
|
|
|
# Home directory specific logs
|
|
grep "home.*directory" /usr/local/CyberCP/logs/cyberpanel.log
|
|
```
|
|
|
|
#### System Logs
|
|
```bash
|
|
# System messages
|
|
tail -f /var/log/messages
|
|
|
|
# Authentication logs
|
|
tail -f /var/log/auth.log
|
|
```
|
|
|
|
## Best Practices
|
|
|
|
### Storage Planning
|
|
|
|
#### Directory Organization
|
|
- **Primary Directory** (`/home`): Default for most users
|
|
- **Secondary Directories** (`/home2`, `/home3`): For specific user groups
|
|
- **Naming Convention**: Use descriptive names (e.g., `/home-ssd`, `/home-hdd`)
|
|
|
|
#### Capacity Management
|
|
- **Monitor Usage**: Regular storage monitoring
|
|
- **Set Alerts**: Configure low-space warnings
|
|
- **Plan Growth**: Anticipate future storage needs
|
|
- **Regular Cleanup**: Remove unused user data
|
|
|
|
### User Management
|
|
|
|
#### Assignment Strategy
|
|
- **New Users**: Use auto-assignment for balanced distribution
|
|
- **Special Cases**: Manually assign users with specific requirements
|
|
- **Regular Review**: Periodically review user distribution
|
|
|
|
#### Migration Planning
|
|
- **Schedule Migrations**: Plan during low-usage periods
|
|
- **Test First**: Verify migration process with test users
|
|
- **Communicate Changes**: Inform users of planned migrations
|
|
|
|
### Security Considerations
|
|
|
|
#### Access Control
|
|
- **Directory Permissions**: Maintain proper file permissions
|
|
- **User Isolation**: Ensure users can only access their directories
|
|
- **System Security**: Regular security updates and monitoring
|
|
|
|
#### Backup Strategy
|
|
- **Regular Backups**: Backup user data regularly
|
|
- **Migration Backups**: Always backup before migrations
|
|
- **Configuration Backups**: Backup CyberPanel configurations
|
|
|
|
## Advanced Configuration
|
|
|
|
### Custom Directory Paths
|
|
|
|
#### Non-Standard Paths
|
|
```bash
|
|
# Create custom home directory
|
|
sudo mkdir /var/home
|
|
sudo chown root:root /var/home
|
|
sudo chmod 755 /var/home
|
|
|
|
# Add to CyberPanel manually
|
|
# (Use web interface to add custom paths)
|
|
```
|
|
|
|
#### Network Storage
|
|
- **NFS Mounts**: Use NFS for network-attached storage
|
|
- **iSCSI**: Configure iSCSI for block-level storage
|
|
- **Cloud Storage**: Integrate with cloud storage solutions
|
|
|
|
### Performance Optimization
|
|
|
|
#### Storage Performance
|
|
- **SSD vs HDD**: Use SSDs for frequently accessed data
|
|
- **RAID Configuration**: Optimize RAID for performance
|
|
- **Caching**: Implement appropriate caching strategies
|
|
|
|
#### Load Balancing
|
|
- **User Distribution**: Balance users across storage devices
|
|
- **I/O Optimization**: Optimize I/O patterns
|
|
- **Monitoring**: Monitor performance metrics
|
|
|
|
### Integration with Other Features
|
|
|
|
#### Backup Integration
|
|
- **Automated Backups**: Include home directories in backup schedules
|
|
- **Incremental Backups**: Use incremental backup strategies
|
|
- **Restore Procedures**: Test restore procedures regularly
|
|
|
|
#### Monitoring Integration
|
|
- **Storage Monitoring**: Integrate with monitoring systems
|
|
- **Alerting**: Set up automated alerts
|
|
- **Reporting**: Generate regular usage reports
|
|
|
|
## API Reference
|
|
|
|
### Home Directory Management API
|
|
|
|
#### Get Home Directories
|
|
```bash
|
|
curl -X POST https://your-server:8090/userManagement/getUserHomeDirectories/ \
|
|
-H "Content-Type: application/json" \
|
|
-d '{}'
|
|
```
|
|
|
|
#### Update Home Directory
|
|
```bash
|
|
curl -X POST https://your-server:8090/userManagement/updateHomeDirectory/ \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"id": 1,
|
|
"description": "Updated description",
|
|
"max_users": 100,
|
|
"is_active": true
|
|
}'
|
|
```
|
|
|
|
#### Migrate User
|
|
```bash
|
|
curl -X POST https://your-server:8090/userManagement/migrateUser/ \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"user_id": 123,
|
|
"new_home_directory_id": 2
|
|
}'
|
|
```
|
|
|
|
### Complete API Endpoints
|
|
|
|
#### Home Directory Management
|
|
- `POST /userManagement/detectHomeDirectories/` - Detect new home directories
|
|
- `POST /userManagement/updateHomeDirectory/` - Update home directory settings
|
|
- `POST /userManagement/deleteHomeDirectory/` - Delete home directory
|
|
- `POST /userManagement/getHomeDirectoryStats/` - Get storage statistics
|
|
|
|
#### User Operations
|
|
- `POST /userManagement/getUserHomeDirectories/` - Get available home directories
|
|
- `POST /userManagement/migrateUser/` - Migrate user to different home directory
|
|
|
|
#### Website Integration
|
|
- `POST /websites/saveWebsiteChanges/` - Save website changes including home directory
|
|
- `POST /websites/getWebsiteDetails/` - Get website details including current home directory
|
|
|
|
## Support and Resources
|
|
|
|
### Documentation
|
|
- **CyberPanel Documentation**: https://cyberpanel.net/docs/
|
|
- **User Management Guide**: This guide
|
|
- **API Documentation**: Available in CyberPanel interface
|
|
|
|
### Community Support
|
|
- **CyberPanel Forums**: https://community.cyberpanel.net
|
|
- **GitHub Issues**: https://github.com/usmannasir/cyberpanel/issues
|
|
- **Discord Server**: https://discord.gg/cyberpanel
|
|
|
|
### Professional Support
|
|
- **CyberPanel Support**: Available through official channels
|
|
- **Custom Implementation**: Contact for enterprise solutions
|
|
|
|
---
|
|
|
|
**Note**: This guide covers the complete Home Directory Management feature in CyberPanel. For the latest updates and additional features, refer to the official CyberPanel documentation and community resources.
|
|
|
|
*Last updated: January 2025*
|