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

  1. 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)
  2. A terminal window appears in the center of your screen
  3. 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)
  4. 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 summary
  • show running-config — Current configuration
  • show 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 sudo command 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.1 and 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:

  1. Frontendxterm.js v5.5.0 with fit and web-links addons, rendered in the browser
  2. WebSocket Server — A Node.js server (terminal-server.cjs) running on port 7682, bridging xterm.js to real SSH/Telnet sessions via node-pty
  3. 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 library
  • node-pty — Pseudo-terminal bindings
  • SSH client (ssh) and/or Telnet client (telnet) installed on the server