Guacd, RDP, Docker-Compose #451
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
Short summary of what this PR does
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:
guacamole-server.ts) usingguacamole-lite, with secure connection settings, logging, and protocol-specific defaults for RDP, VNC, and Telnet. The server is conditionally initialized based on theENABLE_GUACAMOLEenvironment variable. [1] [2]token-service.ts) for encrypting/decrypting connection settings, supporting different protocols and using environment-based or derived encryption keys.routes.ts) for generating Guacamole tokens and checking the status of the Guacamole server andguacdbackend. These routes are protected by authentication middleware./guacamoleroutes in the main backend application. [1] [2]Docker and Deployment:
docker-compose.ymlfile defining services for the application (termix) and the Guacamole daemon (guacd), including health checks, networking, and persistent storage.nginx.confandnginx-https.conf) to support Guacamole WebSocket and REST API proxying for remote desktop connections. [1] [2]Dependencies:
guacamole-common-jsandguacamole-litepackages, along with their type definitions, to the project dependencies. [1] [2]Frontend/Types:
TabContextTabinterface to support new tab types (rdp,vnc) and their connection configurations, enabling remote desktop session tabs in the UI.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