276 lines
8.8 KiB
Markdown
276 lines
8.8 KiB
Markdown
# Dev Launcher - Platform Support Roadmap
|
||
|
||
**Goal**: Build comprehensive **automatic platform detection** that collects all system data during launcher startup and stores in reference database (`.sysref.beta`).
|
||
|
||
**Key Principle**: Launcher runs on startup, collects ALL data automatically, displays findings, stores in reference DB. No interactive menus - modules use the detected/stored data.
|
||
|
||
---
|
||
|
||
## Phase 1: Comprehensive Automatic Detection (CURRENT)
|
||
**Status**: 🔄 In Progress
|
||
|
||
### Step 1: System Detection at Startup ✅ DONE
|
||
- [x] System info display at startup (show_system_overview)
|
||
- [x] Control panel detection (cPanel, Plesk, InterWorx, Standalone)
|
||
- [x] OS detection (CentOS, AlmaLinux, Rocky, CloudLinux, Ubuntu, Debian)
|
||
- [x] Web server detection (Apache, Nginx, LiteSpeed, OpenLiteSpeed)
|
||
- [x] Database detection (MySQL, MariaDB)
|
||
- [x] PHP version detection (default + EA4 + Plesk + alt-php)
|
||
- [x] Firewall detection (CSF, firewalld, UFW, iptables)
|
||
|
||
### Step 2: Automatic Data Collection & Storage (NEXT)
|
||
- [ ] **Enhance reference-db.sh** to collect platform compatibility data
|
||
- Add PLATFORM record type to .sysref:
|
||
```
|
||
PLATFORM|control_panel|cpanel|120.0|ok
|
||
PLATFORM|os|almalinux|9|supported
|
||
PLATFORM|web_server|apache|2.4.57|ok
|
||
PLATFORM|php_version|8.1|available
|
||
PLATFORM|compatibility|cpanel_almalinux|ok
|
||
```
|
||
- Add health status for each component
|
||
- Add package status (installed/missing/conflict)
|
||
|
||
- [ ] **Enhance startup_detection()** to:
|
||
- Run comprehensive detection automatically
|
||
- Call platform health checks (store results, don't display menu)
|
||
- Run OS compatibility checks (store results)
|
||
- Populate PLATFORM records in .sysref.beta
|
||
- Show summary at startup (what was detected, any issues)
|
||
|
||
### Step 3: Store Platform Data in Reference DB
|
||
- [ ] Extend .sysref format to include:
|
||
- Control panel status and features
|
||
- OS compatibility status
|
||
- Package installation status
|
||
- Service health status
|
||
- Known issues found
|
||
|
||
- [ ] Create functions to query this data:
|
||
- `db_get_platform_status()` - Get overall platform health
|
||
- `db_get_compatibility_issues()` - Get known incompatibilities
|
||
- `db_get_missing_packages()` - Get required packages not installed
|
||
|
||
### Step 4: Display Findings at Startup
|
||
- [ ] Show platform detection summary during initialization
|
||
- [ ] List any critical issues found
|
||
- [ ] List recommendations (upgrades, package installs, fixes)
|
||
- [ ] Cache expires with .sysref (1 hour)
|
||
|
||
---
|
||
|
||
## Phase 2: Automatic OS Compatibility Detection
|
||
**Status**: ⏳ Planned
|
||
|
||
### Auto-Collect for Each OS
|
||
- [ ] **Package Manager State** - YUM, DNF, or APT status
|
||
- [ ] **Required Packages** - Verify installed (httpd, apache2, mysql, etc.)
|
||
- [ ] **Service Manager** - Detect systemd vs init
|
||
- [ ] **Apache Binary** - Detect httpd vs apache2
|
||
- [ ] **MySQL Socket** - Detect correct socket path
|
||
- [ ] **Firewall Type** - Auto-detect running firewall
|
||
- [ ] **PHP Installation** - Detect all available PHP versions
|
||
- [ ] **Repository Config** - Detect EPEL, Remi, Ondrej PPAs
|
||
|
||
### Store Results in .sysref
|
||
- Package installation status per OS
|
||
- Service availability status
|
||
- Path configuration status
|
||
- Version support timeline
|
||
- Known incompatibilities
|
||
|
||
---
|
||
|
||
## Phase 3: Control Panel Feature Auto-Discovery
|
||
**Status**: ⏳ Planned
|
||
|
||
### Auto-Detect & Store for Each Panel
|
||
|
||
**cPanel**:
|
||
- [ ] Installed EA4 modules
|
||
- [ ] Installed plugins (AutoSSL, Immuify, etc.)
|
||
- [ ] cPanel API version
|
||
- [ ] License status
|
||
|
||
**Plesk**:
|
||
- [ ] Installed extensions (Qmail, Nginx, etc.)
|
||
- [ ] Module status (mail, web, dns, etc.)
|
||
- [ ] License information
|
||
- [ ] Version-specific features
|
||
|
||
**InterWorx**:
|
||
- [ ] Installed modules
|
||
- [ ] NodeWorx API availability
|
||
- [ ] Custom plugins
|
||
|
||
**CloudLinux**:
|
||
- [ ] LVE limits per account
|
||
- [ ] alt-php selector availability
|
||
- [ ] CloudLinux tools availability
|
||
|
||
### Store in .sysref as PLATFORM records
|
||
|
||
---
|
||
|
||
## Phase 4: Database & PHP Auto-Discovery
|
||
**Status**: ⏳ Planned
|
||
|
||
### Automatic Database Data Collection
|
||
- [ ] MySQL/MariaDB version and type
|
||
- [ ] Percona Server detection
|
||
- [ ] Database cluster detection (Galera)
|
||
- [ ] Replication status
|
||
- [ ] Backup tools detection (Acronis, Bacula)
|
||
- [ ] Store database inventory in .sysref (already have DB records)
|
||
|
||
### Automatic PHP Detection (Already Partial)
|
||
- [ ] All installed PHP versions (default + EA4 + Plesk + alt-php)
|
||
- [ ] PHP module availability per version
|
||
- [ ] PHP-FPM pool detection
|
||
- [ ] OPcache status per version
|
||
- [ ] Per-domain PHP version mapping (query from configs)
|
||
|
||
### Store PHP Data in .sysref
|
||
- [ ] PHP versions available
|
||
- [ ] Default PHP version
|
||
- [ ] PHP modules per version
|
||
- [ ] PHP-FPM pool count
|
||
|
||
---
|
||
|
||
## Phase 5: Service Status Auto-Collection
|
||
**Status**: ⏳ Planned
|
||
|
||
### Automatic Service Health Check
|
||
- [ ] Essential services (Apache/Nginx, MySQL, PHP-FPM, SSH)
|
||
- [ ] Control panel services (cpanel, sw-engine, iworx)
|
||
- [ ] Mail service (Exim/Postfix)
|
||
- [ ] Firewall service
|
||
- [ ] Store status in .sysref as SERVICE records:
|
||
```
|
||
SERVICE|apache|running|ok
|
||
SERVICE|mysql|running|ok
|
||
SERVICE|php-fpm|running|warning
|
||
SERVICE|firewall|active|ok
|
||
```
|
||
|
||
### Automatic Issue Detection
|
||
- [ ] Missing critical services
|
||
- [ ] Services that should be running but aren't
|
||
- [ ] Port conflicts (multiple web servers on port 80)
|
||
- [ ] Store findings as ISSUE records
|
||
|
||
---
|
||
|
||
## Phase 6: Reference Database Queries
|
||
**Status**: ⏳ Planned
|
||
|
||
### Add Query Functions to reference-db.sh
|
||
- [ ] `db_get_platform_info()` - Get all platform data
|
||
- [ ] `db_get_compatibility_issues()` - Get known issues
|
||
- [ ] `db_get_service_status()` - Get service states
|
||
- [ ] `db_get_missing_packages()` - Get uninstalled packages
|
||
- [ ] `db_get_recommendations()` - Get suggested actions
|
||
|
||
### Modules Use These to Make Decisions
|
||
Instead of detecting themselves, modules query the data:
|
||
- Modules call `db_get_platform_info()` to know the platform
|
||
- Modules call `db_get_service_status()` before running
|
||
- Modules check `db_get_missing_packages()` to suggest installs
|
||
- Modules suggest actions based on `db_get_recommendations()`
|
||
|
||
---
|
||
|
||
## Implementation Priority
|
||
|
||
### IMMEDIATE (Phase 1 - Step 2-4)
|
||
1. ⏳ Enhance reference-db.sh to collect platform data automatically
|
||
2. ⏳ Add PLATFORM record type to .sysref format
|
||
3. ⏳ Update startup_detection() to run comprehensive checks
|
||
4. ⏳ Display platform findings during initialization
|
||
|
||
### NEAR TERM (Phase 2-3)
|
||
5. ⏳ Add OS compatibility data collection to startup
|
||
6. ⏳ Add control panel feature auto-discovery
|
||
7. ⏳ Store all findings in .sysref.beta
|
||
|
||
### MEDIUM TERM (Phase 4-5)
|
||
8. ⏳ Database & PHP data collection
|
||
9. ⏳ Service status auto-detection
|
||
10. ⏳ Issue detection and storage
|
||
|
||
### LONG TERM (Phase 6)
|
||
11. ⏳ Query functions in reference-db.sh
|
||
12. ⏳ Modules refactored to use cached data
|
||
|
||
---
|
||
|
||
## Testing Strategy
|
||
|
||
### By Control Panel
|
||
- [ ] Test on cPanel/RHEL
|
||
- [ ] Test on Plesk/Ubuntu
|
||
- [ ] Test on InterWorx/Rocky
|
||
- [ ] Test on Standalone/Debian
|
||
|
||
### By OS
|
||
- [ ] CentOS 7/8/9
|
||
- [ ] AlmaLinux 8/9
|
||
- [ ] Rocky Linux 8/9
|
||
- [ ] CloudLinux 7/8/9
|
||
- [ ] Ubuntu 20.04/22.04/24.04
|
||
- [ ] Debian 11/12
|
||
|
||
### Coverage Matrix
|
||
- All 4 control panels × 6 OSes = 24 test combinations
|
||
- Plus 4 web servers, 2 DB types, multiple PHP versions
|
||
|
||
---
|
||
|
||
## Success Criteria
|
||
|
||
1. ✅ Launcher detects all 4 control panels automatically
|
||
2. ✅ Launcher detects all 6 OS types automatically
|
||
3. ✅ All platform data stored in .sysref.beta on startup
|
||
4. ✅ Platform summary displayed during initialization
|
||
5. ✅ Critical issues flagged (missing packages, incompatibilities)
|
||
6. ✅ Modules query cached data instead of re-detecting
|
||
7. ✅ No interactive menus - launcher is pure data collection
|
||
|
||
---
|
||
|
||
## Files to Create/Modify
|
||
|
||
### Enhanced Files
|
||
- `lib/reference-db.sh` - Add PLATFORM record collection and queries
|
||
- `lib/system-detect.sh` - Comprehensive automatic detection
|
||
- `launcher.sh` - Enhanced startup_detection() to store all findings
|
||
|
||
### New Functions in reference-db.sh
|
||
- `collect_platform_data()` - Gather all platform info
|
||
- `db_get_platform_info()` - Query platform data
|
||
- `db_get_compatibility_issues()` - Query issues found
|
||
- `db_get_service_status()` - Query service states
|
||
- `db_get_missing_packages()` - Query missing packages
|
||
|
||
### Standalone Diagnostic Modules (Optional)
|
||
- `modules/diagnostics/platform-health-check.sh` - For manual health checks
|
||
- `modules/diagnostics/os-compatibility-check.sh` - For manual compatibility checks
|
||
- Note: These are optional modules for users to run manually, not part of launcher
|
||
|
||
---
|
||
|
||
## Knowledge Base Integration
|
||
|
||
This roadmap uses the comprehensive knowledge base at `/root/.claude/knowledge-base/`:
|
||
- `control-panels/*/` - Platform-specific implementation details
|
||
- `operating-systems/*/` - OS-specific configuration and differences
|
||
- `databases/*/` - Database detection and management
|
||
- `shared-systems/php-version-detection.md` - PHP multi-version handling
|
||
|
||
---
|
||
|
||
**Last Updated**: 2026-03-19
|
||
**Created By**: Claude Code - Dev Session
|
||
**Status**: Active Development
|