Skip to content

Add Fedora support and performance improvements - #314

Open
DigitalCyberSoft wants to merge 22 commits into
ronivay:masterfrom
DigitalCyberSoft:master
Open

Add Fedora support and performance improvements#314
DigitalCyberSoft wants to merge 22 commits into
ronivay:masterfrom
DigitalCyberSoft:master

Conversation

@DigitalCyberSoft

Copy link
Copy Markdown

Summary

This PR adds experimental support for Fedora (41, 42, 43, and rawhide) along with significant performance and functionality improvements that benefit all supported operating systems.

Fedora Support

  • Added support for Fedora 41, 42, 43, and rawhide
  • Proper handling of valkey (Redis replacement in Fedora 41+)
  • Integration with reversejames/libvhdi COPR repository for VHD support
  • Uses Fedora's native yarnpkg and Node.js packages

Performance Improvements (All OS)

  • 90%+ faster git operations: Shallow clones (--depth 1) dramatically reduce clone time
  • Robust git clone: Automatic retry logic with cleanup of failed attempts
  • Build process improvements: Separated xo-server and xo-web builds with progress monitoring
  • Real-time progress indicators: Visual feedback for long-running operations

Security Enhancements (All OS)

  • Enhanced credential management system
  • Secure password generation and masked input
  • Email validation for admin users
  • Automatic removal of default insecure credentials

General Improvements (All OS)

  • Comprehensive uninstall option with data preservation
  • Better error handling and recovery
  • Improved path safety checks
  • Cleaner terminal output formatting

Notes

  • Fedora support is marked as experimental/unofficial
  • All improvements maintain backward compatibility
  • Non-Fedora users benefit from the performance and security enhancements

This represents collaborative work to expand platform support while improving the installer for everyone.

User added 21 commits February 16, 2026 15:57
- Add Fedora to supported OS list
- Correctly detect and use valkey instead of redis for Fedora 40+
- Skip EPEL repository installation on Fedora
- Handle libvhdi-tools gracefully (inform if not available)
- Special handling for Fedora Rawhide detection
- Changed supported versions from 40/41/42 to 41/42/43 plus rawhide
- Fedora 41+ uses valkey (not 40+)
- Use reversejames/libvhdi COPR for Fedora
- Keep bnerickson/libvhdi COPR for RHEL-based systems
- Updated documentation to reflect correct versions and COPR usage
- Use yarnpkg from Fedora repos instead of external yarn repository
- Add warning that XO doesn't officially support Fedora
- Update documentation to clarify experimental status
- Follows Fedora packaging best practices by using native packages
Define printwarning function conditionally if not already available as system command
- Fedora ships with Node.js 22 natively, no need for external repository
- Updated both initial installation and UpdateNodeYarn function
- Maintains NodeSource for RHEL-based systems that need it
- Implements git_clone_robust function with 3 retry attempts
- First attempts shallow clone (depth=1) for better performance
- Falls back to deeper clone (depth=100) then full clone if needed
- Adds 5-second delay between retry attempts
- Helps resolve timeout issues when cloning large repositories
- Applied to both main XO repository and plugin clones
- Validate XO_SRC_DIR path to prevent accidental removal of wrong directories
- Check if existing directories are valid git repositories before updating
- Only remove empty directories automatically
- Require manual intervention for non-empty, non-git directories
- Apply same logic to plugin directory handling
- Fixes issue where script tried git commands on non-git directories
- Remove unnecessary full clone fallback
- Always use depth=1 for efficiency
- Installation doesn't need git history
- Reduces download size and time significantly
- Keeps retry logic for network reliability
- Created run_yarn_build function with live progress indicator
- Shows spinner, elapsed time counter during build
- Separates dependency installation from build phase
- Applied to both xo-server/xo-web and xo-proxy builds
- Provides better user feedback during long build operations
- Build times are now visible to users
- New UninstallXO function with comprehensive safety checks
- Validates paths before any deletion to prevent accidental removal
- Stops and disables systemd services (xo-server, xo-proxy)
- Removes service files from /etc/systemd/system/
- Removes build directories, source code, and symlinks
- Optionally removes configuration and data files
- Cleans up sudoers file if present
- Added as option 6 in the main menu
- Preserves log files for troubleshooting
- Clarified initial prompt to show config/data requires separate confirmation
- Added explicit warning that config/data deletion cannot be undone
- Requires typing 'DELETE' to confirm permanent removal of config/data
- Shows exact locations of config and data directories
- Makes it clear these contain user settings and database
- Prevents accidental deletion of important user data
- Split monolithic build into separate xo-server and xo-web builds
- Uses Turbo's --filter flag to build specific packages
- xo-server builds first with its plugins (xo-server-*)
- xo-web builds separately after server
- xo-proxy now only builds proxy package, not the web UI
- Users can see which component is currently building
- Maintains TURBO_TELEMETRY_DISABLED for privacy
- Add interactive credential setup during initial installation
- Create new admin users and delete default admin@admin.net for security
- Add password generation function for secure auto-generated passwords
- Add comprehensive credential management menu option (option 6)
- Support creating, updating, and deleting admin users
- Add email validation and password strength requirements
- Prevent deletion of last admin user for safety
- Show clear security warnings when using default credentials

This enhancement significantly improves security by:
1. Prompting users to change default credentials during installation
2. Removing the well-known default admin@admin.net user when custom credentials are set
3. Providing easy-to-use tools for credential management post-installation
- Remove carriage return from printok function to fix newline issues
- Add missing COLOR_YELLOW variable definition
- Replace complex 4-option menu with simple email/password prompts
- Default values shown in brackets, press Enter to use defaults
- Automatic validation and fallback to defaults on invalid input
- Clearer flow: just two questions instead of menu navigation
- Fix printok function to properly clear progress indicator lines
- Add retry loop for password entry when using custom email
- Require valid password (min 6 chars) for new admin users
- Keep prompting until valid password is entered and confirmed
- Prevent fallback to default 'admin' password for custom emails
- Maintain current behavior for default email (admin@admin.net)
- Add show_password parameter to ChangeAdminCredentials function
- Only display auto-generated passwords, never user-entered ones
- Show "Password set successfully" message for user-provided passwords
- Update all callers to pass appropriate show_password flag
- Improves security by preventing passwords from being visible on screen
- Check if default admin user exists before attempting deletion
- Show success message if user already deleted or never existed
- Only show warning if user exists but can't be deleted
- Prevents false warnings about missing users
- Check if custom email user already exists before creation
- Update password for existing users instead of failing
- Fix exit code capture in user creation command
- Remove all debug logging of sensitive information
- Handle user creation errors properly with clear messages

This fixes the issue where creating a user with an email that already
exists would silently fail while reporting success, leaving the old
password unchanged.
- Add INCLUDE_V6 default initialization to fix unbound variable crash
- Guard v6 symlink creation with INCLUDE_V6 check
- Add INCLUDE_V6 option to sample config
- Upgrade NODEVERSION from 22 to 24 (upstream 186218f)
- Drop EOL OS support: Debian 10, Ubuntu 20, CentOS 8 (upstream 3a30b75)
- Add yarn repository key refresh for deb systems (upstream 40bd192)
Upstream xen-orchestra renamed sample.config.toml to config.toml,
causing all installer config sed commands to silently fail. Also, v6
is now the default web UI served at /, so it must always be built.

- Detect config template filename (sample.config.toml or config.toml)
- Use $CONFIG_TEMPLATE variable instead of hardcoded filename
- Remove INCLUDE_V6 conditional - always build v6 and symlink it
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant