deadRabbit 42c63a5f2d Fix FreeRDP crash: echo VERSION param + upgrade guacd to latest
- rdp.ts: dynamically acknowledge guacd's VERSION_x_y_z parameter by
  echoing it back in the connect instruction. Without this, guacd 1.5+
  runs in legacy mode which crashes FreeRDP on modern Windows targets.
  Also add disable-glyph-caching and resize-method params.
- docker-compose: upgrade guacd from 1.5.4 to latest to get FreeRDP 3.x
  which fixes known crash bugs with Windows 11 22H2+ / Server 2022

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 14:16:18 +01:00
2026-02-22 12:37:04 +01:00

mRemotify

A browser-based remote connection manager — open-source alternative to mRemoteNG.

Manage SSH and RDP connections through a clean web UI with a familiar tree-based layout and tabbed session view.

Stack

Layer Tech
Frontend React 18 · TypeScript · Vite · Ant Design 5
Backend Fastify · TypeScript · Prisma · PostgreSQL
SSH ssh2 (Node.js) proxied over WebSocket
RDP Apache Guacamole (guacd) + guacamole-common-js
Auth JWT · bcryptjs · AES-256 password encryption
Infra Docker Compose · pnpm workspaces

Features

  • Connection tree — folders with drag-and-drop, Linux / Windows icons per connection
  • Tabbed sessions — each opened connection gets its own tab
  • SSH sessions — full xterm.js terminal over WebSocket
  • RDP sessions — Guacamole-based remote desktop in the browser
  • Encrypted storage — passwords stored AES-256 encrypted at rest
  • JWT auth — login-protected, all API + WebSocket routes secured

Quick start (Docker Compose)

# 1. Clone & enter
git clone https://github.com/yourname/mremotify.git
cd mremotify

# 2. Configure environment
cp .env.example .env
# Edit .env: set ENCRYPTION_KEY (32 chars), JWT_SECRET, ADMIN_PASSWORD

# 3. Start everything
docker compose up -d

# 4. Open in browser
open http://localhost

Default login: admin / admin123 (change via ADMIN_USER / ADMIN_PASSWORD in .env before first start).

Development (without Docker)

Prerequisites: Node.js >= 20, pnpm >= 9, PostgreSQL running locally.

# Install all workspace dependencies
pnpm install

# Copy and fill in env
cp .env.example .env
# Set POSTGRES_URL to your local DB, etc.

# Run DB migrations + seed
cd backend && npx prisma migrate dev && npx prisma db seed && cd ..

# Start backend + frontend in parallel
pnpm dev

Frontend dev server: http://localhost:5173 Backend API: http://localhost:3000

Project structure

mremotify/
  frontend/           React + Vite app
  backend/            Fastify API + WebSocket proxies
  docker/             Dockerfiles + nginx config
  docker-compose.yml
  .env.example
  pnpm-workspace.yaml

Environment variables

Variable Description
POSTGRES_URL PostgreSQL connection string
ENCRYPTION_KEY 32-character key for AES-256 password crypto
JWT_SECRET Secret for signing JWT tokens
ADMIN_USER Initial admin username
ADMIN_PASSWORD Initial admin password
GUACD_HOST Hostname of guacd service
GUACD_PORT Port of guacd service (default: 4822)
PORT Backend port (default: 3000)
Description
No description provided
Readme 234 KiB
Languages
TypeScript 72.1%
Rust 25.6%
Dockerfile 1.6%
CSS 0.4%
HTML 0.3%