Server Manager Module
Purpose
The server_manager module provides a comprehensive, enterprise-grade interface for discovering, monitoring, and managing Doh web applications (sites) running on local server infrastructure. It serves as a centralized management hub for server administrators to oversee multiple Doh installations with advanced security controls and detailed operational insights.
Key Features
🔍 Advanced Site Discovery
- Filesystem Scanning: Automatically discovers Doh sites by scanning configured directories
- Self-Detection: Automatically includes the manager server itself in the site inventory
- Real-time Status Monitoring: Continuous health checks with fingerprint verification
- Duplicate Prevention: Intelligent handling of sites found in multiple scan locations
🔐 Enterprise Permission System
- Role-Based Access Control: Granular permissions for different administrative roles
- Contextual Authorization: Permission checks based on specific server instances and actions
- Built-in Security Groups:
server_admin: Full administrative control over all server instances
server_operator: Operational control with limited administrative access
server_instance_manager: Contextual access to specific server instances
- Hardware-Level Security: Designed for server hardware administration contexts
🎨 Modern Administrative Interface
- Tabbed Detail View: Comprehensive information organized across multiple tabs:
- Overview: Status dashboard with performance metrics and quick actions
- Configuration: Complete pod and Express server configuration details
- Cloud: Cloud connection status and management (when available)
- Security: SSL configuration and security headers
- Modules: Module information and management (coming soon)
- Logs: Server log access (coming soon)
- Resizable Sidebar: Adjustable interface layout for optimal workflow
- Advanced Search: Real-time filtering across site names, paths, and configurations
- State Persistence: Remembers selected sites and tabs across sessions
☁️ Cloud Integration
- Cloud Status Monitoring: Real-time connection status for cloud-enabled sites
- Fingerprint Management: Tracks both build and cloud fingerprints for site identity
- Cloud Connect Integration: Direct access to cloud connection and management interfaces
- Multi-Cloud Support: Compatible with various cloud deployment configurations
📊 Performance Monitoring
- Real-time Metrics: CPU usage, memory consumption, and process information
- System Statistics: Module counts, last update timestamps, and operational data
- Health Indicators: Visual status indicators with detailed error reporting
- Process Tracking: PID monitoring and system resource usage
Dependencies
Required Modules
- Core Doh Infrastructure:
express_router, fs, path, yaml, user_host
- UI Components:
html pattern, CSS framework, Font Awesome icons
- Permission System: Doh's built-in permission framework
Recommended Modules
managed_site: Required on target sites for comprehensive status checking and cloud integration
- Cloud Modules: For full cloud management capabilities
Configuration
Basic Configuration
Doh.Pod('server_manager', {
server_manager: {
// Required: Directories to scan for Doh sites
scan: [
'../', // Scan sibling directories
'/srv/doh_sites', // Shared sites directory
'/var/www/doh_apps' // Additional deployment location
],
// Security settings
permission_checks_enabled: true,
default_admin_groups: ['server_admin']
}
});
Advanced Configuration Options
scan (Array, Required): Filesystem paths to scan for Doh installations
permission_checks_enabled (Boolean): Enable/disable permission verification
default_admin_groups (Array): Default groups with administrative access
Permission System Setup
The module automatically defines the following permission contexts and groups:
Permission Contexts
server_instance: Validates server instance objects for administration
server_dashboard: Controls access to the management dashboard
Permission Groups
server_admin: Assignable group with full control (*:server_instance, *:server_dashboard)
server_operator: Operational control with dashboard access and limited instance management
server_instance_manager: Dynamic group providing contextual server access
Permission Actions
read:server_instance: View server instance information
update:server_instance: Manage server settings and files
delete:server_instance: Remove/disconnect server instances
command:server_instance: Send commands to server instances
restart:server_instance: Restart server instances
read:server_dashboard: Access the management dashboard
admin:server_dashboard: Full administrative dashboard access
API Endpoints
/api/server_manager/sites
- Method: GET
- Authentication: Required
- Permissions:
read:server_dashboard
- Returns: Complete site inventory with status and configuration data
/admin/server_manager
- Method: GET
- Authentication: Required
- Permissions:
read:server_dashboard
- Returns: Administrative interface HTML
Site Detection Requirements
For optimal functionality, target sites should include:
.doh/compiled.pod.yaml: Required for site detection
managed_site module: Required for status checking and cloud features
- Proper
express_config: For accurate URL generation
- Unique fingerprints: For reliable site identification
Security Model
The Server Manager operates with privileged filesystem access to scan and read configuration files from sibling Doh installations. This design requires robust security controls:
- Role-Based Access: Access is determined by user roles rather than site ownership
- Contextual Permissions: Fine-grained authorization based on specific server instances
- Hardware Administration Focus: Designed for server infrastructure management
- Fingerprint Verification: Ensures communication with correct site instances
Usage
Accessing the Interface
Navigate to /admin/server_manager on the Doh site where the module is installed.
User Workflow
- Site Selection: Browse discovered sites in the expandable directory tree
- Status Overview: View real-time status, performance metrics, and quick actions
- Configuration Review: Examine detailed pod and server configurations
- Cloud Management: Monitor and manage cloud connections (if available)
- Security Audit: Review SSL settings and security configurations
- Direct Access: Launch sites or admin panels with one-click access
Administrative Tasks
- Site Monitoring: Track operational status across multiple deployments
- Configuration Management: Review and compare site configurations
- Cloud Operations: Manage cloud connections and monitor status
- Security Auditing: Verify SSL configurations and security settings
- Performance Monitoring: Track resource usage and system health
Advanced Features
Fingerprint Verification
The system uses two types of fingerprints for site identification:
- Build Fingerprint: Changes with each deployment/update
- Cloud Fingerprint: Persistent identifier for cloud-connected sites
State Management
- Session Persistence: Remembers selected sites and active tabs
- Auto-refresh: Real-time updates with manual refresh capability
- Responsive Layout: Adapts to different screen sizes and preferences
Cloud Integration
- Connection Monitoring: Real-time cloud connection status
- Multi-Cloud Support: Compatible with various cloud providers
- Direct Management: One-click access to cloud management interfaces
Troubleshooting
Common Issues
- Sites Not Detected: Verify
.doh/compiled.pod.yaml exists and scan paths are correct
- Status Offline: Ensure target sites have
managed_site module installed
- Permission Denied: Check user groups and permission assignments
- Cloud Status Missing: Verify
managed_site module is properly configured
Performance Optimization
- Configure scan paths to minimize filesystem operations
- Use specific directory paths rather than broad filesystem scans
- Regular cleanup of old site data and cached information
Migration from Previous Versions
If upgrading from an earlier version:
- Review and update pod configuration with new options
- Assign appropriate permission groups to existing users
- Verify
managed_site module installation on target sites
- Test permission system functionality with different user roles