WIP: Guacd, RDP, Docker-Compose #451

Closed
starhound wants to merge 9 commits from starhound/guacd-docker-compose into dev-1.10.0
starhound commented 2025-12-18 00:17:23 +00:00 (Migrated from github.com)

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
# Overview _Short summary of what this PR does_ - [x] 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]](diffhunk://#diff-3afbafef6636839a74560ad0383e05a831dc24eaa34b459549b93ecdbd005a8eR1-R108) [[2]](diffhunk://#diff-a410618f3b3e83d0f5bad4e08c47543230655e35c8b972242354685b39351706R107-R119) * 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]](diffhunk://#diff-6680f7455745a42fda0842aa2b07435c7a7f377670c8cbae0a4d2eba1401260cR11) [[2]](diffhunk://#diff-6680f7455745a42fda0842aa2b07435c7a7f377670c8cbae0a4d2eba1401260cR1440) * 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]](diffhunk://#diff-fe579aa58b5146f19eeb285be0d8f90e9498ef94194c7e62cf6fdc6c6cccaf2eR203-R237) [[2]](diffhunk://#diff-0e19ebe58a90702d95f0eb02382acd630f30bbb2aac3c0e85d564a1d35982115R206-R240) **Dependencies:** * Added `guacamole-common-js` and `guacamole-lite` packages, along with their type definitions, to the project dependencies. [[1]](diffhunk://#diff-7ae45ad102eab3b6d7e7896acd08c427a9b25b346470d7bc6507b6481575d519R55) [[2]](diffhunk://#diff-7ae45ad102eab3b6d7e7896acd08c427a9b25b346470d7bc6507b6481575d519R80-R81) **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 - [x] Code follows project style guidelines - [ ] Supports mobile and desktop UI/app (if applicable) - [x] I have read [Contributing.md](https://github.com/Termix-SSH/Termix/blob/main/CONTRIBUTING.md)
LukeGus commented 2026-01-01 06:02:20 +00:00 (Migrated from github.com)

Can you reopen this PR under the main branch? I deleted the old one and forgot that it would close the PR.

Can you reopen this PR under the main branch? I deleted the old one and forgot that it would close the PR.

Pull request closed

Sign in to join this conversation.