Skip to content

kotoxie/Gatwy

Repository files navigation

Gatwy

alt text

Self-host your entire remote access stack in one Docker container — 9 protocols, one interface: RDP, SSH, VNC, Telnet, SMB, SFTP, FTP, MySQL & PostgreSQL.

License: MIT Image Size Latest Release Docker Image

No middleware. No Java. No server relay. WebAssembly-native RDP running directly in your browser — zero overhead across all 9 protocols.

Website · Documentation · Gatwy vs Guacamole


🚀 Why Gatwy?

Most browser-based remote access tools relay your display through a server-side engine, adding latency and complexity. Gatwy's RDP client runs entirely in your browser using WebAssembly — pixel-perfect, low-latency RDP with no middleware, no Java, and no extra containers.

One container. Zero dependencies. Open your browser and connect.


✨ Highlights

  • 9 protocols — RDP (WebAssembly), SSH, VNC, Telnet, SMB, SFTP, FTP, PostgreSQL, MySQL
  • Split-pane workspace — unlimited sessions side by side with drag-and-drop tabs
  • Session recording & audit — encrypted RDP video, SSH asciinema, command-level audit log with auto-redacted passwords, file activity tracking
  • Granular RBAC — 27 fine-grained permissions, custom roles, per-connection sharing, protocol-level access control
  • Auth flexibility — local accounts, LDAP/AD, OpenID Connect (SSO), MFA (TOTP), IP access rules
  • Alerting — SMTP, Telegram, Slack, Webhook channels with a no-code rule builder
  • Encrypted backup & restore — single-file .geb backup with AES-256 encryption

👉 Full feature list →


🐳 Quick Start

# docker-compose.yml
services:
  gatwy:
    image: ghcr.io/kotoxie/gatwy:latest
    container_name: gatwy
    restart: unless-stopped
    ports:
      - '7443:7443'
    volumes:
      - ./data:/app/data
    environment:
      - GATWY_ENCRYPTION_KEY=your-64-char-hex-key  # openssl rand -hex 32
docker compose up -d

Open https://<YOUR_IP>:7443 — on first launch you'll be prompted to create an admin account.

⚠️ The browser will warn about the self-signed certificate. Accept the exception to proceed, or bring your own cert.


⚙️ Configuration

Variable Default Description
GATWY_ENCRYPTION_KEY (auto-generated file) 64-char hex AES-256 key. Set this in production. Generate with openssl rand -hex 32
PORT 7443 HTTPS port
TLS_CERT_PATH / TLS_KEY_PATH (auto) Custom TLS certificate & key paths
DATA_DIR /app/data Database, certs, recordings, and logs

⚠️ If no encryption key env var is set, Gatwy auto-generates one at /app/data/encryption.key with a warning banner. Fine for home-lab — not recommended for production.

👉 Full configuration reference →


🔄 Updating

docker compose pull && docker compose up -d

🛠️ Building from Source

git clone https://github.com/kotoxie/gatwy && cd Gatwy/

# With Docker
docker compose up --build -d

# Without Docker (Node.js 20+)
npm install && npm run build && npm start

📄 License

MIT

About

Browser-based remote access — RDP, SSH, SMB, SFTP, DB Browser. Single Docker container.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages