MuxTerm is a web-based workspace that combines local terminals, SSH, RDP, VNC, and SFTP in a single interface. Access and manage all your servers from any browser with persistent sessions and multi-user support.
- Local Terminals - Split workspace into multiple terminal panels powered by tmux + ttyd
- SSH Connections - Connect to remote servers via SSH with password or key authentication
- RDP (Remote Desktop) - Connect to Windows machines via Apache Guacamole (guacd)
- VNC - Control remote desktops via VNC protocol through the same Guacamole stack
- SFTP File Browser - Visual file manager for uploading, downloading, and managing remote files
- Bitwarden/Vaultwarden Integration - Pull SSH, RDP, VNC, and SFTP credentials directly from your vault
- Persistent Sessions - Terminal sessions survive server restarts via tmux
- Multi-User with Admin Panel - User management with admin roles, password reset, promote/demote
- Mobile Friendly - Responsive design with touch trackpad for RDP, special keys toolbar, pill navigator
- HTTPS - Auto-detection of mkcert certificates
- Auto-Update - Checks GitHub Releases for new versions with one-click update
- Docker Support - Full Dockerfile with multi-stage build
curl -fsSL https://raw.githubusercontent.com/tecnologicachile/muxterm/main/install.sh | bashMuxTerm starts automatically at https://localhost:3002
Default credentials: admin / admin (password change required on first login)
Note: Native installation is recommended over Docker. With native install, terminal sessions (tmux) persist across updates and restarts. Docker containers lose tmux sessions when recreated.
git clone https://github.com/tecnologicachile/muxterm.git
cd muxterm
docker build -t muxterm:latest .
docker run -d --name muxterm \
-e NODE_ENV=production \
-p 3002:3002 -p 4823:4823 \
-v muxterm-db:/app/db \
-v muxterm-data:/app/data \
-v muxterm-logs:/app/logs \
muxterm:latestOr with Docker Compose:
docker-compose up -dgit clone https://github.com/tecnologicachile/muxterm.git
cd muxterm
npm install
cd client && npm install && npm run build && cd ..
npm start| Component | Technology | Purpose |
|---|---|---|
| Frontend | React + Material-UI | Single-page workspace UI |
| Backend | Node.js + Express | API, auth, terminal management |
| Terminals | tmux + ttyd | Persistent local/SSH shell sessions |
| RDP/VNC | guacd + guacamole-lite | Remote desktop protocol proxy |
| SFTP | ssh2-sftp-client | File transfer over SSH |
| Database | SQLite (better-sqlite3) | Users, connections, workspace layouts |
| Real-time | Socket.IO | WebSocket communication |
| Auth | JWT + bcrypt | Token-based authentication |
| Vault | Bitwarden CLI (bw) | Credential management |
| HTTPS | mkcert | Local SSL certificates |
| Port | Service |
|---|---|
| 3002 | MuxTerm web server (HTTP/HTTPS) |
| 4822 | guacd (internal, RDP/VNC proxy daemon) |
| 4823 | Guacamole WebSocket proxy (WSS) |
After login, MuxTerm opens your workspace. Each user has one workspace with unlimited panels:
- Click + Terminal to add a new panel (Local, SSH, RDP, VNC, or SFTP)
- Drag panel borders to resize
- Use the sidebar (Ctrl+B or hover left edge) to navigate panels
- Minimize panels to keep them running in background
- Open Settings (gear icon)
- Enter your Vaultwarden/Bitwarden server URL, email, and master password
- Select your organization and the "Remote Access" collection
- When creating connections, search your vault credentials directly from the dialog
Credentials with ssh://, rdp://, vnc://, or sftp:// URIs are automatically recognized.
- Swipe between panels
- Pill indicator at bottom shows active panel
- Special keys toolbar adapts per panel type (terminal shortcuts vs RDP keysyms)
- Touch trackpad for RDP: drag to move cursor, tap to click, long-press for right-click
The first user created is admin. From Settings > User Management, admins can:
- List all users
- Reset passwords
- Promote/demote admin roles
- Delete users
Emergency CLI: node scripts/reset-password.js <username> <password>
MuxTerm auto-detects SSL certificates in the certs/ directory:
# Install mkcert
mkcert -install
mkcert -cert-file certs/cert.pem -key-file certs/key.pem localhost 127.0.0.1 YOUR_IPPORT=3002
NODE_ENV=production
JWT_SECRET=auto-generated-on-first-run
GUAC_SECRET=auto-generated-on-first-run
SESSION_SECRET=auto-generated-on-first-run
VAULTWARDEN_URL=https://vault.example.comSecrets are auto-generated on first run if not provided.
SQLite database at db/webssh.db stores users, connections, and workspace layouts. Persisted across updates.
MuxTerm checks GitHub Releases automatically. When an update is available:
- A notification appears in the header
- Click the version chip to see changelog
- Click Update Now or run manually:
cd /path/to/muxterm
git pull origin main
npm install
cd client && npm install && npm run build && cd ..
# Restart the serverTerminal sessions (tmux) survive updates.
- OS: Ubuntu/Debian 20.04+, Fedora, CentOS, Arch Linux, or WSL
- Memory: 1GB minimum (2GB recommended)
- Node.js: 18+
- Dependencies: tmux, ttyd, guacd (for RDP/VNC)
- Passwords hashed with bcrypt
- JWT tokens with auto-generated secrets
- AES-256-CBC encryption for Guacamole tokens
- Per-user session isolation
- Bitwarden credentials fetched on demand, never stored locally
- Admin role system with root protection
MIT License - see LICENSE for details.
- GitHub Issues for bugs and feature requests
- Star the project if you find it useful!