Vinza Store Terminal
Terminal
Free Tools
terminalshellwebsocketcore
Get this app
Free
Available to all users. No license needed.

Terminal puts an xterm.js shell in the browser, proxied over a WebSocket to the root-privileged system agent. The consumer opens a Unix-domain-socket connection to the agent, starts a terminal.stream PTY session and relays keystrokes and output as base64 frames in both directions, forwarding window resizes so the remote shell knows its actual dimensions. The frontend supports multiple tabs, fullscreen, clearing, manual reconnect, and a mobile key bar for the keys a soft keyboard cannot send — Esc, Tab, Ctrl, ^C, arrows, pipe, tilde, slash — along with copy and paste buttons, since a phone has no Ctrl key.

Access requires either the P_TERMINAL permission or a hosting plan with SSH allowed, checked identically in the page view and the WebSocket consumer. Who the shell runs as is decided server-side: super-admins and Django superusers get a root shell, and everyone else runs as their own provisioned Linux user. A non-admin with no Linux user mapping is denied outright rather than falling through to an empty username, which the agent would treat as root. Session open and close are written to the vinza.agent.audit log with the panel user and the account the shell runs as, so a privileged shell is always attributable. This is a direct shell on the panel host through the agent, not an SSH client — it does not connect to other machines, and it depends entirely on the agent socket being reachable.

Min Panel Version
1.0.0
Platform
Ubuntu 20.04+ / 22.04+ / 24.04+
License
Free — no key needed
VinzaPanel handles installation automatically via the Vinza Store. Make sure the panel agent has internet access to download dependencies.
1.0.3 — A hosting account that lives on another node now sees which server it is on and to use SSH there, instead of a terminal that fails with a WebSocket error. 1.0.1 — The WebSocket checks the page's origin (another site can no longer open a shell in a logged-in admin's browser). Open terminals close when the user is deactivated, the session ends, access is withdrawn, or after 30 minutes idle; deleting a user ends their terminal processes. Malformed input no longer leaves a shell behind, the agent's refusal reason is shown, users without a plan get the terminal like SSH, and fast output can no longer arrive out of order. Initial release — xterm.js frontend proxied to agent UDS socket for root shell access.

Use VinzaPanel's REST API to download and install this app programmatically.

Download app files
HTTP
POST /plugins/api/download/terminal/
Content-Type: application/json

{
  "panel_version": "1.0.0"
}
Example response
JSON
{
  "success": true,
  "plugin_id": "terminal",
  "version": "1.0.3",
  "download_url": "..."
}