← All utilities

NSTerm

Version 26.1 (build 348) 30-day trial
NSTerm
Contents

What is NSTerm

nsterm (NSTerm) is a multi-session web terminal in a single Go binary: administrators publish applications (a command + args + working dir + environment + size), users open them in tabbed terminals over WebSocket (xterm), and every process is tracked as a session (app, user, PID, start, duration, children) that can be monitored and killed. Group-based access with per-user simultaneous-session quotas, audit log, and licensed with a 30-day trial.

Commands, apps, and users in the examples are fictional.

Use cases

1. Publish the corporate shell and open it in the browser

Create the shell app (/bin/bash) and open it with tabs, reconnect, and fullscreen.

nsterm init ./myterm
nsterm start --config ./myterm
nsterm status

Web flow: login → Administration → Applications → create (ID, name, command /bin/bash, args [], working dir, cols/rows, color scheme, env {"TERM":"xterm-256color"}, expand to container) → Dashboard → Open → terminal with new tab (+), reconnect, disconnect, fullscreen.

2. Give a team limited access to one app with a quota

The operators group may use prod-console with at most 2 simultaneous sessions per user.

Web flow: Users → create user → assign the operators group → Groups → assign the app to the group (max limit per user) → the user only sees their apps on the Dashboard; past the quota they get the session-limit notice.

3. Monitor and kill active sessions

See who runs what, inspect child processes, and kill a session with a reason.

Web flow: Sessions (app, user, PID, start, duration, children, live WebSocket updates) → Kill session (asks for a reason) → recorded in the audit log. The Dashboard shows the same active-session summary with open/kill actions.

4. Review who did what

Search the audit log for logins, app creations, and session kills.

Web flow: Audit Log → search/filter (time, user, action, detail, IP) → refresh. CLI: nsterm status and nsterm license for state and trial.

Interface

Terminal sessions

Reference

CLI commands

CommandDescription
nsterm init [dir]Creates the environment (config.yaml + db/ + logs, admin/admin123)
nsterm start [dir]Starts the server in the background
nsterm stopStops the server
nsterm statusRunning state, PID, address
nsterm licenseLicense/trial status and fingerprint
Global flags--config <dir> (alias: positional dir), --port N (override), --debug, --version

There are no management subcommands: users, groups, apps, and sessions are managed from the web (/api/admin/* routes).

Main configuration (config.yaml)

KeyDescription
server.host / server.portListen address (default 0.0.0.0:8200)
database.pathSQLite (./db/nsterm.db)
auth.jwtSecret / jwtExpiryMin / cookieNameSession (nsterm_session, 480 min)
license.trialDaysTrial (30)
logging.dir / maxSizeMB / maxAgeDays / maxBackups / compressLog rotation (./logs, 10 MB, 30 days, 10 backups, compressed)

Web UI areas

Dashboard (available apps + active sessions) · terminals (tabs, /terminal/:appId, pre-open limit check, WebSocket /api/terminal/:appId/ws) · sessions (live list, children, kill with reason) · administration · users (create/edit, alias, groups) · groups (role, assigned apps, per-user max quota) · applications (command, args, working dir, icon/logo, color, cols/rows, color scheme, environment, expand, active) · audit log (search, time/user/action/detail/IP) · login, password recovery, themes and language (EN/ES).

Commented examples

# 1. New environment on a custom port
nsterm init /opt/nsterm-prod
nsterm start --config /opt/nsterm-prod --port 8200
nsterm status
nsterm license

# 2. Positional directory as --config alias
nsterm start /opt/nsterm-prod
nsterm stop

# 3. Temporary debug
nsterm start --config ./myterm --debug
# Pre-open check before launching a terminal (with session cookie)
curl -b cookie.txt http://localhost:8200/api/terminal/shell/check

# Active sessions via API
curl -b cookie.txt http://localhost:8200/api/sessions

FAQ

What are the first-login credentials? admin / admin123 (change after first login); further users and groups are managed via the web.

How do I limit sessions per user? In Groups → assign app → max field (0 = unlimited); past the limit the terminal shows the limit notice.

Is the kill reason recorded? Yes: killing asks for a reason, stored in the audit log with logins, app creations, and group changes.

Which terminal is emulated? xterm with TERM=xterm-256color recommended in the app env; fixed cols/rows or expand-to-container (font adapts).

Also available in: es