Skip to content

Conversation

@starhound
Copy link

Overview

Short summary of what this PR does

  • Added: ...
  • Updated: ...
  • Removed: ...
  • Fixed: ...

Changes Made

This pull request introduces comprehensive support for Apache Guacamole (RDP, VNC, and Telnet remote desktop protocols) into the application. It adds a Guacamole server integration, secure token-based connection management, new backend API endpoints, Docker service orchestration, and updates to the frontend tab system to enable remote desktop sessions directly in the app.

The most important changes are:

Guacamole Backend Integration:

  • Added a new Guacamole server module (guacamole-server.ts) using guacamole-lite, with secure connection settings, logging, and protocol-specific defaults for RDP, VNC, and Telnet. The server is conditionally initialized based on the ENABLE_GUACAMOLE environment variable. [1] [2]
  • Implemented a secure token service (token-service.ts) for encrypting/decrypting connection settings, supporting different protocols and using environment-based or derived encryption keys.
  • Created new backend API routes (routes.ts) for generating Guacamole tokens and checking the status of the Guacamole server and guacd backend. These routes are protected by authentication middleware.
  • Registered the new /guacamole routes in the main backend application. [1] [2]
  • Added a dedicated logger for Guacamole operations.

Docker and Deployment:

  • Added a docker-compose.yml file defining services for the application (termix) and the Guacamole daemon (guacd), including health checks, networking, and persistent storage.
  • Updated Nginx configurations (nginx.conf and nginx-https.conf) to support Guacamole WebSocket and REST API proxying for remote desktop connections. [1] [2]

Dependencies:

  • Added guacamole-common-js and guacamole-lite packages, along with their type definitions, to the project dependencies. [1] [2]

Frontend/Types:

  • Extended the TabContextTab interface to support new tab types (rdp, vnc) and their connection configurations, enabling remote desktop session tabs in the UI.
  • Updated the desktop app logic to recognize and render RDP/VNC tabs as terminal views.
  • Added UI imports for Guacamole testing and monitoring in the dashboard.

These changes collectively enable secure, token-based remote desktop access through the application, with full backend, frontend, and deployment support.

Screenshots / Demos

(Optional: add before/after screenshots, GIFs, or console output)

Checklist

  • Code follows project style guidelines
  • Supports mobile and desktop UI/app (if applicable)
  • I have read Contributing.md

- Implemented WebSocket support for Guacamole in Nginx configuration.
- Added REST API endpoints for generating connection tokens and checking guacd status.
- Created Guacamole server using guacamole-lite for handling connections.
- Developed frontend components for testing RDP/VNC connections and displaying the remote session.
- Updated package dependencies to include guacamole-common-js and guacamole-lite.
- Enhanced logging for Guacamole operations.
@ZacharyZcR ZacharyZcR added the enhancement New feature or request label Dec 18, 2025
LukeGus and others added 7 commits December 18, 2025 13:50
- Introduced connectionType field to differentiate between SSH, RDP, VNC, and Telnet in host data structures.
- Updated backend routes to handle RDP/VNC specific fields: domain, security, and ignoreCert.
- Enhanced the HostManagerEditor to include RDP/VNC specific settings and authentication options.
- Implemented token retrieval for RDP/VNC connections using Guacamole API.
- Updated UI components to reflect connection type changes and provide appropriate connection buttons.
- Removed the GuacamoleTestDialog component as its functionality is integrated into the HostManagerEditor.
- Adjusted the TopNavbar and Host components to accommodate new connection types and their respective actions.
- Added detailed Guacamole configuration interface for RDP/VNC/Telnet connections, including display, audio, performance, and session settings.
- Implemented logging for token requests and received options for better debugging.
- Updated HostManagerEditor to support new Guacamole configuration fields with validation and default values.
- Integrated Guacamole configuration parsing in HostManagerViewer and Host components.
- Enhanced API requests to include extended Guacamole configuration parameters in the token request.
- Refactored code to convert camelCase configuration keys to kebab-case for compatibility with Guacamole API.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants