Skip to content

Conversation

@sprinteroz
Copy link

  • Add port conflict detection in Prerequisites UI (SetupUI.vue)
  • Implement checkRDPPort() function to detect xrdp and port usage (specs.ts)
  • Update Specs type to include rdpPortAvailable and xrdpRunning fields (types.ts)
  • Add comprehensive TROUBLESHOOTING.md with xrdp conflict solutions
  • Add PORT_CONFLICT_FIX.md technical documentation for contributors
  • Update FIX_WINBOAT.sh with port conflict checks and xrdp handling
  • Update INSTALL_WINBOAT.sh with interactive xrdp resolution options
  • Update setup_winboat_docker.sh with port conflict detection
  • Add INSTALL_WINBOAT_1CLICK.sh: comprehensive installer with automatic conflict resolution

This addresses GitHub issue about port 3389 conflicts on Ubuntu 24.04 LTS with xrdp. Users are now proactively warned and guided to resolve conflicts before installation fails.

Fixes: Port 3389 'address already in use' error during WinBoat installation

- Add port conflict detection in Prerequisites UI (SetupUI.vue)
- Implement checkRDPPort() function to detect xrdp and port usage (specs.ts)
- Update Specs type to include rdpPortAvailable and xrdpRunning fields (types.ts)
- Add comprehensive TROUBLESHOOTING.md with xrdp conflict solutions
- Add PORT_CONFLICT_FIX.md technical documentation for contributors
- Update FIX_WINBOAT.sh with port conflict checks and xrdp handling
- Update INSTALL_WINBOAT.sh with interactive xrdp resolution options
- Update setup_winboat_docker.sh with port conflict detection
- Add INSTALL_WINBOAT_1CLICK.sh: comprehensive installer with automatic conflict resolution

This addresses GitHub issue about port 3389 conflicts on Ubuntu 24.04 LTS with xrdp.
Users are now proactively warned and guided to resolve conflicts before installation fails.

Fixes: Port 3389 'address already in use' error during WinBoat installation
Darryl added 16 commits November 5, 2025 23:49
- Add INSTALL_WINBOAT_1CLICK_PODMAN.sh: Complete Podman installer (556 lines)
  - Supports Fedora, Ubuntu, Arch distributions
  - Automatic xrdp conflict detection and resolution
  - Rootless Podman configuration
  - podman-compose and podman-docker installation
  - FreeRDP installation
  - Firewall configuration (UFW and firewalld)
  - Desktop shortcut creation

- Add PODMAN_SETUP.md: Comprehensive Podman documentation
  - Complete setup guide for all supported distributions
  - Networking configuration for guest server (port 7148)
  - Three methods to resolve networking issues
  - Troubleshooting section for common Podman problems
  - Known limitations and workarounds
  - FAQ section
  - SELinux, permissions, and rootless configuration

- Update TROUBLESHOOTING.md: Add Podman-specific section
  - Guest server unreachable solutions
  - Podman permission issues
  - SELinux configuration for Fedora
  - Links to detailed PODMAN_SETUP.md

Features:
- Full rootless Podman support
- Bazzite/Fedora Atomic compatibility
- Network configuration for slirp4netns
- Port conflict detection (xrdp)
- Multi-distro support (Fedora, Ubuntu, Arch)

Addresses: GitHub Issue #12 (87+ user requests)
Related: Port range 47300-47309, slirp4netns networking
Testing: Requires Fedora/Bazzite user testing

---
3 files: 1 installer (24KB), 1 guide, 1 troubleshooting update
- Removed misplaced <template> block inside Add Custom App dialog
- This was creating an invisible overlay preventing app launches
- Only Windows Desktop worked before (launched from Home tab)
- Now all apps in Apps tab should be clickable

Fixes issue where functional buttons were hidden behind overlay
- Comprehensive uninstallation script for complete cleanup
- Stops and removes all WinBoat containers
- Removes Docker images, volumes, and networks
- Cleans configuration files and cache
- Removes binaries and AppImages
- Interactive prompts for safety
- Prepares system for fresh WinBoat installation
- Added INSTALL_WINBOAT_STAGE2.sh: Auto-runs after reboot
  * Waits 30 seconds for desktop to load
  * Updates system (apt update && upgrade)
  * Installs all dependencies (Docker, Node.js v23, FreeRDP)
  * Clones from sprinteroz/winboat (testing version)
  * Installs npm dependencies and launches WinBoat
  * Creates desktop shortcut and launch scripts
  * Self-destructs systemd service after completion

- Updated COMPLETE_REMOVAL_WINBOAT.sh:
  * Sets up systemd user service for Stage 2
  * Automatically reboots system after removal
  * Stage 2 runs automatically 30 seconds after login

Testing workflow:
1. Run COMPLETE_REMOVAL_WINBOAT.sh
2. System reboots
3. Login -> Stage 2 auto-starts
4. Fresh WinBoat installation from fork

Note: Before PR, change REPO_URL in INSTALL_WINBOAT_STAGE2.sh
from sprinteroz/winboat to TibixDev/winboat
- Updated systemd service to use gnome-terminal
- Allows user to enter sudo password for apt operations
- Terminal stays open until user presses Enter
- Fixes authentication failure issue
- Detects failed previous installation attempts via lock file
- Shows clear warning explaining what happened (password cancelled, Ctrl+C, etc)
- Auto-cleans up after 10-second countdown:
  * Removes lock file
  * Removes partial installation
  * Archives old log
  * Removes root-owned directories
- Continues with fresh installation automatically
- Users no longer need to manually clean up failed installs
Major improvements to Step 4 (Node.js installation):

1. Detection & Removal:
   - Detects Node.js location (apt vs nvm)
   - Removes apt-installed nodejs/npm if version < 23
   - Cleans up with apt autoremove

2. Error Handling:
   - Timeout for nvm download (30s connect, 120s max)
   - Verifies nvm loaded successfully
   - Checks if Node.js 23 already installed
   - Error messages with recovery suggestions

3. User Experience:
   - Progress indicators (1-2 min for nvm, 2-5 min for Node.js)
   - Shows download size (~20MB for Node.js 23)
   - Visible download progress (not hidden in log file)
   - Final verification with version output

4. Fixes Issue:
   - Resolves hang when trying to install v23 over apt v18
   - Prevents silent failures in nvm installation
   - Ensures Node.js 23 is properly activated

Tested resolution for the hang at 'Installing Node.js v23 via nvm...'
BUG FIX: Line 71 was checking wrong variable
- Was: if [ -n "$CONTAINERS" ]
- Now: if [ -n "$WINDOWS_CONTAINERS" ]

This caused running containers to not be stopped/removed.

Improvements:
- Check both 'winboat' and 'WinBoat' container names (case-insensitive)
- Force remove containers with -f flag
- Properly trim whitespace from container lists
- Now correctly stops ALL running WinBoat/Windows containers

Tested: Manually removed running 'WinBoat' container - worked correctly
This fix will prevent port 3389 conflicts from old containers.
Fixes the SUID sandbox error that appeared after npm install:
'The SUID sandbox helper binary was found, but is not configured correctly'

Changes:
- Automatically sets chrome-sandbox ownership to root
- Sets permissions to 4755 (setuid)
- Runs after npm install completes
- Includes safety check (verifies file exists)
- Adds clear logging of the fix

This makes the installation 100% automatic - users will never see
the Electron sandbox error. WinBoat will launch successfully on
first run without manual intervention.

Tested scenario: Full reinstall with this fix should complete
without any errors.
CRITICAL BUG FIX: Config.vue crashed when no compose file exists

Problem:
- User opens Configuration tab before installing Windows VM
- assignValues() tries to read non-existent compose file
- portMapper tries to read port from undefined, returns NaN
- User cannot proceed with installation

Solution:
- Added null check in assignValues() function
- When compose file doesn't exist, set safe defaults:
  * freerdpPort: 3389 (standard RDP port)
  * numCores: 4, ramGB: 8 (reasonable defaults)
  * Exit early before trying to read from compose
- Changed fallback from GUEST_RDP_PORT to explicit 3389
- Added optional chaining (?.) for portMapper access

Result:
✅ Port shows '3389' instead of 'NaN'
✅ User can navigate Configuration tab without errors
✅ After Windows installs, real values load from compose
✅ No breaking changes to existing installations

Fixes networking issues that prevented Windows installation.
Improvement: Initialize freerdpPort ref with 3389 instead of 0

Before:
- const freerdpPort = ref(0)
- Port field showed empty until user typed value

After:
- const freerdpPort = ref(3389)
- Port field shows 3389 immediately on load
- User can edit if needed

This provides a better UX - users see the standard RDP port
right away instead of an empty field, making it clear what
the default value is.
ROOT CAUSE OF ALL ISSUES:
- Stage 2 was cloning from 'main' branch (only 1 commit)
- All 13 fixes are on 'fix/port-3389-xrdp-conflict' branch
- Users were getting old code without any fixes!

Changed:
- REPO_BRANCH from 'main' to 'fix/port-3389-xrdp-conflict'

This ensures users get ALL fixes when running the installer:
✅ Port 3389 detection
✅ Apps tab overlay fix
✅ Podman support
✅ Auto-recovery
✅ Node.js fix
✅ Container removal fix
✅ Electron sandbox fix
✅ FreeRDP Port NaN fix
✅ All 13 commits

Now the automated installer will work 100% correctly!
SAFETY IMPROVEMENT: Users must now explicitly consent to Node.js removal

Added comprehensive warning that shows:
✅ Exactly what will be removed (/usr/bin/node, npm, global packages)
✅ Where new Node.js will be installed (~/.nvm/)
✅ Impact on other programs
✅ Requires user to type 'yes' to proceed
✅ Option to cancel and exit gracefully

If user types 'no' or anything else:
- Script exits cleanly
- Provides instructions to manually upgrade Node.js first
- No files are removed without consent

This gives users full control and informed decision-making
about system changes, preventing unexpected issues.
ISSUE: Stage 2 tried to auto-launch WinBoat from systemd service
RESULT: X server error - systemd has no DISPLAY access

FIX: Removed automatic npm run dev at end of script

Changes:
- Removed auto-launch section (npm run dev)
- Added clear instructions for manual launch
- Window closes cleanly after 10 seconds
- No more X server/DISPLAY errors

User now launches WinBoat manually by:
- Double-clicking Desktop icon, OR
- Running ~/start-winboat-dev.sh

Installation completes 100% successfully without errors!
IMPROVEMENT: Now removes entire WinBoat installation directory

Problem:
- Removal script left ~/winboat-dev intact
- Hidden files (.git, .cache, node_modules, etc.) remained
- Could cause conflicts on reinstall
- Old config files could corrupt new installation

Solution:
Added new section that removes:
✅ ~/winboat-dev (main install location)
✅ ~/winboat (alternative location)
✅ ~/.winboat (hidden config)
✅ All hidden files and folders
✅ node_modules, .git, build artifacts
✅ Any other *winboat* directories (with confirmation)

Safety:
- Excludes winboat-repo (development folder)
- Asks before removing unexpected winboat directories
- Uses rm -rf for complete removal

Result:
- 100% clean uninstall
- No leftover files to cause conflicts
- Fresh slate for reinstallation
- No hidden file corruption issues
@sprinteroz
Copy link
Author

sprinteroz commented Nov 8, 2025

Tested and fully running
Complete List of Improvements in PR #458
Installation & Setup Fixes

Port 3389 Conflict Detection & Resolution - Proactively detects xrdp conflicts before installation fails, providing clear resolution steps
FreeRDP Port Default Value - Sets proper default (3389) instead of showing "NaN" before Windows installation
Automatic Electron Sandbox Permission Fix - Stage 2 installer automatically handles permission issues
Node.js Installation Handler - Properly manages apt-installed Node.js versions, preventing conflicts
Interactive Node.js Removal Warning - Users get informed choice instead of automatic removal

Podman Support (Major Feature)

Comprehensive Podman Support - Full alternative to Docker (addresses Issue #12), expanding WinBoat compatibility to systems without Docker

Two-Stage Uninstall/Reinstall System

Complete WinBoat Removal Script - Clean uninstallation that removes all traces
Two-Stage Uninstall/Reinstall System - Sophisticated recovery mechanism for broken installations
Stage 2 Terminal Password Input - Proper sudo authentication during reinstall process
Stage 2 Automatic Error Recovery - Handles installation errors gracefully and continues
Stage 2 Clones All 13 Commits - Critical fix ensuring complete installation from fix branch
Installation Directory Removal - Completes clean uninstall by removing all installation directories
Removed Auto-Launch from Stage 2 - Fixes X server errors that caused crashes after reinstall

Container Management

Container Removal Bug Fix - Properly stops running containers before removal, preventing orphaned processes

UI/UX Fixes

Apps Tab Click-Through Fix - Removes duplicate apps grid that was blocking user interactions

Maintenance

Updated package-lock.json - Ensures dependency consistency

Summary of Benefits
For Users:

No more failed installations due to port conflicts
Complete recovery system if WinBoat breaks
Choice between Docker and Podman
Cleaner uninstalls and reinstalls
Fixed UI blocking issues
Better error handling throughout installation

For WinBoat Project:

Addresses critical installation blockers (Issue #455, Issue #12)
Adds enterprise-grade uninstall/reinstall system
Expands platform compatibility (Podman support)
Reduces support burden with automatic conflict detection
Professional-grade installation recovery tools

Technical Improvements:

17 distinct fixes and features
Complete two-stage installation system
Automated permission handling
Comprehensive error recovery

@sprinteroz sprinteroz mentioned this pull request Nov 8, 2025
@sprinteroz sprinteroz closed this Nov 8, 2025
@sprinteroz sprinteroz reopened this Nov 8, 2025
@Levev
Copy link
Collaborator

Levev commented Nov 8, 2025

Thanks for pouring your free time into the project, we really appreciate your contributions!

There are a few issues with this PR though.
First and foremost, you've introduced numerous shell scripts, which go against our contribution guidelines.
You've also introduced guides, which are a welcome addition, but please do so in a separate PR. Keeping changes logically grouped in separate PR's helps us maintainers skim through and decide on how to proceed faster!

That being said, you should check out the current state of main and #463. WinBoat now maps the necessary container ports to either a port in the range of 42720-47370 or to whatever free port is available(in case the container is running under podman).

@Levev Levev closed this Nov 8, 2025
@sprinteroz sprinteroz deleted the fix/port-3389-xrdp-conflict branch November 8, 2025 22:54
@sprinteroz
Copy link
Author

sprinteroz commented Nov 9, 2025

@Levev @fat0troll @fukumen @Tsedd @TibixDev
I apologize for this PR. I introduced scripts to address multiple issues I identified, but I now understand your contribution guidelines specifically prohibit adding scripts to the project.
While I was trying to solve real problems, I should have reviewed your contribution policy before submitting. The approach was wrong for this project's standards.
I've closed the PR and deleted the branch. I won't be introducing scripts in future contributions.

Please: "Can you delete this PR?
Reason being: It doesn't meet contribution standards and I'd like it removed from the repo history"

If you're keeping this PR open, note that this guides/ code remains under my copyright. If any of these solutions appear in future commits, I expect attribution."

@sprinteroz sprinteroz changed the title Fix port 3389 conflict with xrdp - Add detection and resolution closed Nov 9, 2025
@sprinteroz sprinteroz changed the title closed 0 Nov 10, 2025
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.

2 participants