Self-hosted SSH + SFTP + RDP in a browser — MobaXterm replacement
Go to file
Vantz Stockwell 5d75869bb4 feat: RDP backend — Guacamole TCP tunnel to guacd over WebSocket
- guacamole.service.ts: raw TCP client to guacd on GUACD_HOST:GUACD_PORT.
  Performs SELECT rdp → CONNECT handshake with full RDP parameter set.
  Provides encode/decode helpers for length-prefixed Guacamole wire format.
- rdp.gateway.ts: WebSocket gateway at /ws/rdp. JWT auth via WsAuthGuard.
  Handles connect (host lookup, credential decrypt, guacd tunnel open) and
  guac (bidirectional instruction forwarding). Updates lastConnectedAt and
  creates ConnectionLog on connect (same pattern as SSH gateway).
- rdp.module.ts: imports VaultModule, ConnectionsModule, AuthModule.
- app.module.ts: registers RdpModule.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 17:27:09 -04:00
backend feat: RDP backend — Guacamole TCP tunnel to guacd over WebSocket 2026-03-12 17:27:09 -04:00
docs/superpowers fix: plan — async host key verification via ssh2 verify callback 2026-03-12 17:02:20 -04:00
frontend feat: Phase 2 — SSH terminal + SFTP sidebar in browser 2026-03-12 17:21:11 -04:00
.env.example feat: project scaffold — Docker, NestJS, Nuxt 3, Prisma config 2026-03-12 17:05:37 -04:00
.gitignore feat: project scaffold — Docker, NestJS, Nuxt 3, Prisma config 2026-03-12 17:05:37 -04:00
docker-compose.yml feat: project scaffold — Docker, NestJS, Nuxt 3, Prisma config 2026-03-12 17:05:37 -04:00
Dockerfile feat: project scaffold — Docker, NestJS, Nuxt 3, Prisma config 2026-03-12 17:05:37 -04:00
README.md feat: project scaffold — Docker, NestJS, Nuxt 3, Prisma config 2026-03-12 17:05:37 -04:00
Remote-Spec.md docs: Wraith spec + implementation plan 2026-03-12 16:59:34 -04:00

Wraith

Self-hosted MobaXterm replacement — SSH + SFTP + RDP in a browser.

Stack

  • Backend: NestJS 10, Prisma 6, PostgreSQL 16, ssh2, guacd
  • Frontend: Nuxt 3 (SPA), PrimeVue 4, Tailwind CSS, xterm.js 5

Quick Start

cp .env.example .env
# Edit .env with real secrets

docker compose up -d

Default credentials: admin@wraith.local / wraith

Development

# Backend
cd backend && npm install && npm run dev

# Frontend
cd frontend && npm install && npm run dev