Summary
This release introduces significant improvements to FluxOS including enhanced daemon health monitoring, boot-time hardware validation, datacenter/enterprise app support, improved geolocation services with static IP detection, and several critical bug fixes for app lifecycle management.
Major Features
- Daemon Health Monitoring & Automatic App Cleanup
- Implements a two-threshold monitoring system for daemon health
- Startup threshold: 15 minutes grace period for initial sync
- Runtime threshold: 2 hours for established connections
- Performs periodic health checks every 15 minutes
- Validates RPC freshness with 10-block/300-second timeout in isDaemonSynced()
- Triggers automatic removal of all applications when daemon is unhealthy ("nuclear" cleanup)
- Boot-Time Hardware Validation
- Validates CPU, RAM, and HDD requirements against node specifications at boot
- Calculates cumulative resource usage across all running applications
- Removes incompatible apps sorted by blockchain height (newest first) when resources are insufficient
- Prevents resource over-commitment scenarios
- App Update Race Condition Handling
- Implements a queue system for app updates that arrive before registration completes
- Queue entries expire after 30 minutes with a maximum of 200 entries
- Fixes zombie app cleanup from expired temporary messages
- Adds guards for missing specifications in temp messages
- Corrects else block pairing for expired app cleanup logic
- Enterprise/Datacenter App Support
- Adds datacenter property to v8 application specifications
- Only known enterprise clients (whitelisted addresses) can set datacenter: true
- Datacenter nodes delay installation of non-datacenter apps (recheck after 27 minutes)
- New configuration: enterpriseAppOwners whitelist in default.js
- New API endpoint: /flux/enterpriseappowners to retrieve enterprise app owners
- Enhanced Geolocation Service
- Improved data information collection for node geolocation
- Static IP detection and tracking
- IP change history monitoring
- Existing nodes without IP change history are not penalized (immediately considered static)
- Removed fallback mechanism from hasPublicIpOnInterface() for more accurate detection
- Vetted Apps & Repositories
- Added vetted app repositories list (helpers/vettedrepositories.json)
- Vetted apps bypass user-blocked ports validation
- Only app owners or Flux Team can uninstall vetted applications
- Enhanced protection for enterprise deployments
Bug Fixes
- Zombie app cleanup: Fixed race condition where apps could become orphaned during updates
- RPC freshness: isDaemonSynced() now verifies data freshness with timeout checks
- Duplicate require: Removed duplicate messageStore import
- Specification scope: Fixed conditional block scoping issues for app specs
- Scanned height: Ensures only one scanned height record (highest) is retained
Code Cleanup & Refactoring
- Fractus removal: Removed all Fractus-specific conditions from source code (no longer needed)
- Port mapping reorder: Ports are now mapped before Docker image download (improves reliability)
- Function signature update: validateApplicationUpdateCompatibility() now accepts pre-fetched previous specs directly
- Error handling: getPreviousAppSpecifications() returns null instead of throwing errors
New API Endpoints
┌───────────────────────────────┬────────┬────────────────────────────────────────────────┐
│ Endpoint │ Cache │ Description │
├───────────────────────────────┼────────┼────────────────────────────────────────────────┤
│ /flux/enterpriseappowners │ 1 hour │ Returns list of enterprise app owner addresses │
├───────────────────────────────┼────────┼────────────────────────────────────────────────┤
│ /benchmark/getstoredbenchmark │ 1 hour │ Returns stored benchmark data │
└───────────────────────────────┴────────┴────────────────────────────────────────────────┘
Documentation
- Added new documentation: docs/flux-node-service.md for Flux node service setup and configuration
Files Modified
Core Services:
- advancedWorkflows.js - App specification handling improvements
- appInstaller.js - Port mapping reorder, Fractus removal
- appSpawner.js - Datacenter logic, vetted app bypass
- appUninstaller.js - Vetted app protection
- geolocationService.js - Static IP detection
- benchmarkService.js - New stored benchmark API
- fluxService.js - Enterprise app owner endpoints
New Services:
- daemonHealthMonitor.js - Health monitoring and cleanup
- hardwareValidationService.js - Boot-time validation
Configuration:
- ZelBack/config/default.js - Enterprise owners whitelist
- ZelBack/src/routes.js - New endpoints
- helpers/vettedrepositories.json - Vetted repos list
- package.json - Version bump to 8.5.0