Ready Terminal
Overview
The Ready Terminal is a browser-based SSH and Telnet client built into ISPBills. It allows network operators to open interactive terminal sessions to routers, switches, OLTs, and other network devices directly from the ISPBills interface — without needing a separate SSH client like PuTTY or a local terminal application.
The Ready Terminal is available to both Group Admin and NOC users.
Features
- Multi-tab sessions — Open multiple terminal connections simultaneously, each in its own tab
- SSH and Telnet — Connect via SSH (port 22) or Telnet (port 23) to any network device
- Draggable and resizable — Position and size the terminal window to suit your workflow
- Minimize / restore — Minimize the terminal to a small bar at the bottom of the screen while working on other tasks
- Command hints — Quick-access buttons for common RouterOS and Cisco IOS commands
- Clipboard support — Copy and paste with
Ctrl+Shift+C/Ctrl+Shift+V - Dark theme — GitHub-style dark terminal UI optimized for readability
- Auto-fit — Terminal automatically adjusts columns and rows when you resize the window
Opening a Terminal Session
- Hover over or click the Terminal icon in the interface (typically found in the router or device detail pages, or in the NOC panel toolbar)
- A terminal window appears in the center of your screen
- Enter the connection details:
- Host — IP address or hostname of the device
- Protocol — SSH or Telnet
- Port — Defaults to 22 for SSH, 23 for Telnet
- Username — Login username (defaults to
admin)
- Click Connect
The terminal establishes a real-time WebSocket connection to the device through the ISPBills server.
Working with Multiple Tabs
- Click the + button in the tab bar to open a new terminal session
- Each tab maintains its own independent connection
- Click a tab to switch between active sessions
- Click the × on a tab to close that session
- Tabs display the host they are connected to for easy identification
Command Hints
The terminal includes a hints panel with commonly used commands:
MikroTik RouterOS Commands
/interface print— List all interfaces/ip address print— Show IP addresses/system resource print— Display system resources/ppp active print— Show active PPPoE sessions/queue simple print— List queue rules
Cisco IOS Commands
show ip interface brief— Interface summaryshow running-config— Current configurationshow version— Device version information
Click any hint to automatically type it into the terminal.
Keyboard Shortcuts
| Shortcut | Action |
|---|---|
Ctrl+Shift+C |
Copy selected text |
Ctrl+Shift+V |
Paste from clipboard |
Security
The Ready Terminal implements several security measures:
- Token-based authentication — Each terminal session requires a one-time authentication token that expires after 5 minutes
- Session isolation — Each WebSocket connection is tied to the authenticated user
- sudo blocking — The
sudocommand is blocked in NOC terminal sessions to prevent privilege escalation - Localhost-only server — The terminal WebSocket server (port 7682) listens only on
127.0.0.1and is not directly accessible from the internet - CSRF protection — Token requests are protected against cross-site request forgery
Architecture
The Ready Terminal uses the following components:
- Frontend — xterm.js v5.5.0 with fit and web-links addons, rendered in the browser
- WebSocket Server — A Node.js server (
terminal-server.cjs) running on port 7682, bridging xterm.js to real SSH/Telnet sessions vianode-pty - Token Endpoint — A Laravel route that generates one-time authentication tokens stored in
/tmp/noc-terminal-tokens/
Browser (xterm.js) ←→ WebSocket (port 7682) ←→ node-pty ←→ SSH/Telnet → Network Device
Troubleshooting
| Issue | Solution |
|---|---|
| "Authentication timeout" | Token expired — close and reopen the terminal |
| Cannot connect to device | Verify the device IP is reachable from the ISPBills server |
| Terminal appears blank | Check that the terminal WebSocket server is running on port 7682 |
| "Connection refused" | Ensure SSH/Telnet is enabled on the target device |
| Text not displaying correctly | Try resizing the terminal window to trigger a re-fit |
Requirements
The terminal WebSocket server requires the following packages on the ISPBills server:
- Node.js (for the WebSocket bridge)
ws— WebSocket librarynode-pty— Pseudo-terminal bindings- SSH client (
ssh) and/or Telnet client (telnet) installed on the server