nterminal 1.2.9 → 1.2.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # NTerminal
2
2
 
3
- <img src="https://cdn.jsdelivr.net/npm/nterminal@1.2.4/public/icons/app-icon-1024.png?v=readme-1.2.9" alt="NTerminal app icon" width="96" height="96">
3
+ <img src="https://cdn.jsdelivr.net/npm/nterminal@1.2.11/public/icons/app-icon-1024.png?v=readme-1.2.11" alt="NTerminal app icon" width="96" height="96">
4
4
 
5
5
  NTerminal turns your own machines into one secure browser workspace for real shells, Codex, Claude, files, and long-running terminal sessions.
6
6
 
7
- <img src="https://cdn.jsdelivr.net/npm/nterminal@1.2.4/assets/screenshot/scr.png?v=readme-1.2.9" alt="NTerminal workspace with split terminal panes" width="100%">
7
+ <img src="https://cdn.jsdelivr.net/npm/nterminal@1.2.11/assets/screenshot/scr.png?v=readme-1.2.11" alt="NTerminal workspace with split terminal panes" width="100%">
8
8
 
9
9
  NTerminal is a single-owner web terminal for machines you control. It is not a hosted shell product, not a SaaS app, and not a multi-user IDE.
10
10
 
@@ -29,7 +29,7 @@ npm install -g nterminal
29
29
  nterminal onboarding
30
30
  ```
31
31
 
32
- Choose `main`. Onboarding installs dependencies, writes `.env`, creates secrets, sets your password and TOTP, and can build/start the service.
32
+ Choose `main`. Onboarding writes `.env`, creates secrets, sets your password and TOTP, and can start the service.
33
33
 
34
34
  To add another machine, install NTerminal there and run the same command:
35
35
 
@@ -124,7 +124,13 @@ Package installs keep runtime config and state under `~/.nterminal` so package u
124
124
  - Native build tools required by `node-pty`.
125
125
  - Optional `tmux` for PTY persistence across Node restarts.
126
126
 
127
- If PTY creation fails after install, rebuild the native module:
127
+ If PTY creation fails after a package install, rebuild the native module inside the global package:
128
+
129
+ ```bash
130
+ npm explore -g nterminal -- npm rebuild node-pty --build-from-source
131
+ ```
132
+
133
+ For source checkouts, run:
128
134
 
129
135
  ```bash
130
136
  npm rebuild node-pty --build-from-source
@@ -152,7 +158,7 @@ npm test
152
158
  npm run build
153
159
  ```
154
160
 
155
- For production-style local operation, `npm run ctl -- <command>` wraps `scripts/nterminalctl` and manages the built server, PID file, logs, health checks, and restarts.
161
+ For production-style local operation from a source checkout, `npm run ctl -- <command>` wraps `scripts/nterminalctl` and manages the built server, PID file, logs, health checks, and restarts.
156
162
 
157
163
  ## Documentation
158
164
 
@@ -170,7 +176,6 @@ For production-style local operation, `npm run ctl -- <command>` wraps `scripts/
170
176
  - No recovery of live PTYs after an OS reboot.
171
177
  - No Node-restart PTY persistence on hosts without `tmux`.
172
178
  - No VS Code extension host, debugger, task runner, or Git UI.
173
- - No package-manager distribution is published yet.
174
179
 
175
180
  ## Publication Notes
176
181
 
@@ -185,7 +190,7 @@ Keep local runtime files out of source control:
185
190
  - `test-results/`
186
191
  - `playwright-report/`
187
192
 
188
- The package metadata is prepared for npm publication. The source code is licensed under GPL-3.0-only.
193
+ The npm package is constrained by `package.json` `files` and `npm run pack:check`. The source code is licensed under GPL-3.0-only.
189
194
 
190
195
  ## Acknowledgements
191
196
 
package/SECURITY.md ADDED
@@ -0,0 +1,66 @@
1
+ # Security Policy
2
+
3
+ ## Supported Use
4
+
5
+ NTerminal is supported as a single-owner personal web terminal for localhost, private machines, private VPNs, SSH tunnels, or HTTPS reverse proxies with a real access boundary.
6
+
7
+ NTerminal is not currently supported as:
8
+
9
+ - a public internet shell service
10
+ - a hosted multi-user product
11
+ - a shared team terminal
12
+ - a replacement for SSO, OAuth, RBAC, or hardened bastion access
13
+
14
+ If you expose NTerminal outside localhost or a private network, put it behind HTTPS and a separate access-control layer before relying on it.
15
+
16
+ ## Reporting Vulnerabilities
17
+
18
+ Do not post exploit details, host access details, secrets, or proof-of-compromise material in a public issue.
19
+
20
+ Preferred reporting path:
21
+
22
+ 1. Use GitHub private vulnerability reporting if it is enabled for the repository.
23
+ 2. If private reporting is not enabled, open a minimal public issue asking for a private contact path. Do not include sensitive details in that issue.
24
+
25
+ Please include:
26
+
27
+ - affected version or commit
28
+ - deployment shape, such as localhost, VPN, or reverse proxy
29
+ - reproduction steps
30
+ - expected impact
31
+ - whether real host shell access, session cookies, stored state, or PTY lifecycle is involved
32
+
33
+ ## Security Boundary
34
+
35
+ NTerminal opens a real shell on the host account running the server. A vulnerability can therefore affect the host machine, not only the browser UI.
36
+
37
+ The intended defense-in-depth layers are:
38
+
39
+ - bind to `127.0.0.1` by default
40
+ - keep remote access behind VPN, SSH tunnel, or reverse proxy access control
41
+ - use HTTPS with `NTERMINAL_COOKIE_SECURE=true` when remote
42
+ - set precise `NTERMINAL_ALLOWED_ORIGINS`
43
+ - require TOTP two-factor at login (set up during first-run after the password)
44
+ - single active session: a new login or re-auth revokes the previous session
45
+ - sessions are bound to the client IP; a session presented from a different,
46
+ non-whitelisted IP is rejected and must re-authenticate
47
+ - trusted devices may re-authenticate with a TOTP code only (no password) for 30 days
48
+ - trusted networks (exact IPs or CIDRs) skip the re-auth prompt
49
+ - keep `.env`, `.nterminal/`, logs, and state files out of source control
50
+
51
+ ### Session IP binding behind a proxy
52
+
53
+ Session IP binding needs the real client IP. Behind a reverse proxy, set
54
+ `NTERMINAL_TRUST_PROXY` so NTerminal reads `X-Forwarded-For`. Only enable this when a
55
+ proxy you control sits in front of NTerminal — if the server is directly reachable,
56
+ a client can spoof `X-Forwarded-For` and defeat IP binding.
57
+
58
+ ## Out Of Scope For Current Reports
59
+
60
+ The following are known product limitations unless they bypass the documented boundary:
61
+
62
+ - no multi-user roles
63
+ - no public internet hardening
64
+ - no terminal recovery after an OS reboot
65
+ - no Node-restart PTY persistence on hosts without `tmux`
66
+ - no container isolation for spawned shells
package/bin/nterminal.js CHANGED
@@ -58,7 +58,7 @@ function scriptEntrypoint(name) {
58
58
  function runScript(name, runArgs) {
59
59
  const entrypoint = scriptEntrypoint(name);
60
60
  if (!entrypoint) {
61
- console.error(`error: ${name} entrypoint not found; run npm run build first`);
61
+ console.error(`error: ${name} entrypoint not found; reinstall the package or run npm run build from a source checkout`);
62
62
  process.exit(1);
63
63
  }
64
64
  if (entrypoint.type === 'node') {
@@ -98,8 +98,8 @@ Commands:
98
98
  start Start the built server.
99
99
  stop Stop the managed server.
100
100
  restart Restart the managed server.
101
- build Build the app.
102
- deploy npm install/ci, typecheck, build, then restart.
101
+ build Build source checkouts. Package installs use bundled dist.
102
+ deploy Build source checkouts when needed, then restart.
103
103
  clean --force Remove local runtime state.
104
104
  logs [N] Show recent logs.
105
105
  logs -f [N] Follow logs.
@@ -90,7 +90,84 @@ export function writeEnvFile(envPath, updates) {
90
90
  }
91
91
  export function formatPrompt(question, fallback) {
92
92
  const suffix = fallback ? ` [${fallback}] (Enter = default)` : '';
93
- return `${question}${suffix}: `;
93
+ return `> ${question}${suffix}: `;
94
+ }
95
+ export function formatStepHeader(current, total, title) {
96
+ const safeTotal = Math.max(1, Math.floor(total));
97
+ const safeCurrent = Math.min(safeTotal, Math.max(1, Math.floor(current)));
98
+ const width = 12;
99
+ const filled = Math.max(1, Math.min(width, Math.round((safeCurrent / safeTotal) * width)));
100
+ return `[${safeCurrent}/${safeTotal}] ${'#'.repeat(filled)}${'-'.repeat(width - filled)} ${title}`;
101
+ }
102
+ export function formatProgressBar(current, total, width = 24) {
103
+ const safeTotal = Math.max(1, Math.floor(total));
104
+ const safeCurrent = Math.min(safeTotal, Math.max(1, Math.floor(current)));
105
+ const safeWidth = Math.max(8, Math.floor(width));
106
+ const filled = Math.max(1, Math.min(safeWidth, Math.round((safeCurrent / safeTotal) * safeWidth)));
107
+ return `[${'='.repeat(filled)}${'-'.repeat(safeWidth - filled)}]`;
108
+ }
109
+ export function formatWizardPanel(section, current, total, title, detail, width = 78, color = false) {
110
+ const panelWidth = Math.max(44, Math.floor(width));
111
+ const innerWidth = panelWidth - 4;
112
+ const safeTotal = Math.max(1, Math.floor(total));
113
+ const safeCurrent = Math.min(safeTotal, Math.max(1, Math.floor(current)));
114
+ const percent = Math.round((safeCurrent / safeTotal) * 100);
115
+ const progressWidth = Math.max(8, Math.min(24, innerWidth - 6));
116
+ const detailLines = wrapPanelText(detail ?? '', innerWidth).map((line) => colorImportantPanelLine(line, color));
117
+ const lines = [
118
+ `${colorText(section, '36', color)} - ${colorText(`Step ${safeCurrent} of ${safeTotal}`, '1', color)}`,
119
+ colorText(title, '1', color),
120
+ `${colorText(formatProgressBar(safeCurrent, safeTotal, progressWidth), '32', color)} ${colorText(`${percent}%`, '1', color)}`,
121
+ ...detailLines
122
+ ];
123
+ const label = ' NTerminal Onboarding ';
124
+ const top = `┌─${label}${'─'.repeat(Math.max(0, panelWidth - label.length - 3))}┐`;
125
+ const bottom = `└${'─'.repeat(panelWidth - 2)}┘`;
126
+ return [top, ...lines.map((line) => `│ ${padVisible(line, innerWidth)} │`), bottom].join('\n');
127
+ }
128
+ function colorImportantPanelLine(line, enabled) {
129
+ if (/\b(required|must|password|2FA|token|firewall|HTTPS|public domain|proxy)\b/i.test(line)) {
130
+ return colorText(line, '33', enabled);
131
+ }
132
+ return line;
133
+ }
134
+ function colorText(text, code, enabled) {
135
+ return enabled ? `\x1b[${code}m${text}\x1b[0m` : text;
136
+ }
137
+ function padVisible(text, width) {
138
+ const visible = stripAnsi(text).length;
139
+ return `${text}${' '.repeat(Math.max(0, width - visible))}`;
140
+ }
141
+ function wrapPanelText(text, width) {
142
+ const trimmed = text.trim();
143
+ if (!trimmed)
144
+ return [];
145
+ const lines = [];
146
+ let current = '';
147
+ for (const word of trimmed.split(/\s+/)) {
148
+ if (word.length > width) {
149
+ if (current) {
150
+ lines.push(current);
151
+ current = '';
152
+ }
153
+ for (let idx = 0; idx < word.length; idx += width) {
154
+ lines.push(word.slice(idx, idx + width));
155
+ }
156
+ continue;
157
+ }
158
+ const next = current ? `${current} ${word}` : word;
159
+ if (next.length > width) {
160
+ lines.push(current);
161
+ current = word;
162
+ }
163
+ else {
164
+ current = next;
165
+ }
166
+ }
167
+ if (current) {
168
+ lines.push(current);
169
+ }
170
+ return lines;
94
171
  }
95
172
  /** Replace targeted keys in an existing .env, preserving comments, blanks, and unrelated keys. Appends new keys. */
96
173
  export function mergeEnv(existing, updates) {
@@ -259,6 +336,7 @@ function serverModuleUrl(modulePath) {
259
336
  async function pickFromList(prompt, options, initialIndex = 0) {
260
337
  const stdout = process.stdout;
261
338
  let index = Math.max(0, Math.min(initialIndex, options.length - 1));
339
+ const color = shouldUseColor();
262
340
  const lines = options.length + 1;
263
341
  let rendered = false;
264
342
  const render = () => {
@@ -266,11 +344,13 @@ async function pickFromList(prompt, options, initialIndex = 0) {
266
344
  // Move the cursor back to the prompt line so we can rewrite the block.
267
345
  readline.moveCursor(stdout, 0, -lines);
268
346
  }
269
- stdout.write(`? ${prompt} (↑/↓ then Enter)\n`);
347
+ readline.clearLine(stdout, 0);
348
+ stdout.write(`? ${prompt} ${colorText('(↑/↓ then Enter)', '2', color)}\n`);
270
349
  for (const [i, opt] of options.entries()) {
271
- const marker = i === index ? '›' : ' ';
272
- const label = i === index ? `${opt.label}` : opt.label;
273
- stdout.write(`${marker} ${label}\n`);
350
+ readline.clearLine(stdout, 0);
351
+ const marker = i === index ? colorText('›', '36', color) : ' ';
352
+ const label = i === index ? colorText(opt.label, '1', color) : opt.label;
353
+ stdout.write(`${marker} ${label}\n`);
274
354
  }
275
355
  rendered = true;
276
356
  };
@@ -369,9 +449,21 @@ function existingEnvValue(key) {
369
449
  }
370
450
  return parseEnvValue(readFileSync(ENV_PATH, 'utf8'), key);
371
451
  }
372
- async function askUrl(p, question, fallback) {
452
+ function printStep(section, current, total, title, detail) {
453
+ const columns = typeof process.stdout.columns === 'number' && process.stdout.columns > 0 ? process.stdout.columns : 80;
454
+ const width = Math.max(44, Math.min(78, columns - 2));
455
+ console.log(`\n${formatWizardPanel(section, current, total, title, detail, width, shouldUseColor())}`);
456
+ }
457
+ function shouldUseColor() {
458
+ return Boolean(process.stdout.isTTY && process.env.NO_COLOR === undefined && process.env.NTERMINAL_COLOR !== '0');
459
+ }
460
+ async function askUrl(p, question, fallback, defaultProtocol = 'https') {
373
461
  for (;;) {
374
- const value = (await p.ask(question, fallback)).replace(/\/$/, '');
462
+ const value = normalizeUrlInput(await p.ask(question, fallback), defaultProtocol);
463
+ if (!value) {
464
+ console.log('A URL is required. Try again.');
465
+ continue;
466
+ }
375
467
  let parsed;
376
468
  try {
377
469
  parsed = new URL(value);
@@ -398,13 +490,25 @@ export function normalizeDeploymentUrlInput(raw) {
398
490
  return trimmed;
399
491
  return /^[a-z][a-z0-9+.-]*:\/\//i.test(trimmed) ? trimmed : `https://${trimmed}`;
400
492
  }
493
+ export function normalizeUrlInput(raw, defaultProtocol = 'https') {
494
+ const trimmed = raw.trim().replace(/\/$/, '');
495
+ if (!trimmed)
496
+ return trimmed;
497
+ return /^[a-z][a-z0-9+.-]*:\/\//i.test(trimmed) ? trimmed : `${defaultProtocol}://${trimmed}`;
498
+ }
401
499
  // Stricter version for the main's public URL: forces https:// + a real
402
500
  // domain because the security model requires Let's Encrypt-issued TLS in
403
501
  // front (no raw IPs, no localhost, no .local). Reasons are echoed back so
404
502
  // the operator knows why their value was rejected.
405
- async function askDeploymentUrl(p, question, fallback) {
503
+ async function askDeploymentUrl(p, question) {
504
+ const suggestion = suggestDeploymentUrl();
505
+ if (suggestion !== 'https://your-domain.example.com') {
506
+ console.log(`Detected hostname candidate: ${suggestion}`);
507
+ console.log('Type it explicitly if this is the public domain you want to use.');
508
+ }
509
+ console.log('Enter without a value will ask again; this prevents accidentally accepting a placeholder domain.');
406
510
  for (;;) {
407
- const value = normalizeDeploymentUrlInput(await p.ask(question, fallback));
511
+ const value = normalizeDeploymentUrlInput(await p.ask(question));
408
512
  if (!value) {
409
513
  console.log('A domain is required. Try again.');
410
514
  continue;
@@ -439,7 +543,7 @@ function runDeploy() {
439
543
  }
440
544
  function printResolvedBindHost(resolved, detectedNote) {
441
545
  const note = resolved.origin === 'env' ? 'preserved from .env' : detectedNote;
442
- console.log(`Bind host: ${resolved.value} \x1b[2m(${note})\x1b[0m`);
546
+ console.log(`Bind host: ${resolved.value} ${colorText(`(${note})`, '2', shouldUseColor())}`);
443
547
  }
444
548
  function printResolvedBindPort(resolved) {
445
549
  const note = resolved.origin === 'env'
@@ -447,10 +551,14 @@ function printResolvedBindPort(resolved) {
447
551
  : resolved.origin === 'default'
448
552
  ? 'default 3107 is free'
449
553
  : 'default 3107 was busy; picked an ephemeral port';
450
- console.log(`Port: ${resolved.value} \x1b[2m(${note})\x1b[0m`);
554
+ console.log(`Port: ${resolved.value} ${colorText(`(${note})`, '2', shouldUseColor())}`);
451
555
  }
452
556
  async function onboardMain(p) {
453
- console.log('\n=== Main server setup ===\n');
557
+ const totalSteps = 7;
558
+ let currentStep = 0;
559
+ const section = 'Main server setup';
560
+ const step = (title, detail) => printStep(section, ++currentStep, totalSteps, title, detail);
561
+ console.log(`\n=== ${section} ===`);
454
562
  // Main MUST bind to 127.0.0.1 — the nginx reverse proxy set up in
455
563
  // `setupNginxProxy` below hard-codes 127.0.0.1 as its upstream, and
456
564
  // binding wider would let clients bypass TLS by hitting the server's
@@ -464,6 +572,7 @@ async function onboardMain(p) {
464
572
  // still preserves any explicit value, otherwise picks the first free
465
573
  // port (preferring 3107) — the port itself has no security implication
466
574
  // once the bind is loopback.
575
+ step('Bind local server', 'NTerminal binds to loopback; nginx handles public HTTPS traffic.');
467
576
  const existingHost = existingEnvValue('NTERMINAL_HOST');
468
577
  if (existingHost && existingHost !== '127.0.0.1') {
469
578
  console.log(`Overriding NTERMINAL_HOST=${existingHost} from .env → 127.0.0.1 (loopback is required behind the reverse proxy). The running process keeps the old bind until you redeploy below.`);
@@ -479,9 +588,11 @@ async function onboardMain(p) {
479
588
  // password + session cookies on whatever network the browser uses.
480
589
  // NTERMINAL_COOKIE_SECURE and NTERMINAL_TRUST_PROXY are therefore both
481
590
  // set to true unconditionally.
482
- const publicUrl = await askDeploymentUrl(p, 'Public domain or URL for this main (https:// is added if you omit it)', suggestDeploymentUrl());
591
+ step('Choose public domain', 'Required. Type the real DNS name for this main server.');
592
+ const publicUrl = await askDeploymentUrl(p, 'Public domain or URL for this main (required, https:// is added if you omit it)');
483
593
  // Preserve an existing session secret: the password hash is peppered with it, so rotating
484
594
  // it on a re-run would lock out the already-stored password.
595
+ step('Write runtime config', `Writing ${ENV_PATH}.`);
485
596
  const sessionSecret = existingEnvValue('NTERMINAL_SESSION_SECRET') ?? generateSessionSecret();
486
597
  const reusedSecret = Boolean(existingEnvValue('NTERMINAL_SESSION_SECRET'));
487
598
  writeEnv({
@@ -504,6 +615,7 @@ async function onboardMain(p) {
504
615
  const store = new FileStore(config.statePath);
505
616
  await store.init();
506
617
  const auth = new AuthService(config, store, { totpService: new TotpService('NTerminal') });
618
+ step('Set password and 2FA', 'Existing credentials are preserved; new installs create password + authenticator setup.');
507
619
  const existing = await store.read();
508
620
  if (existing.passwordCredential) {
509
621
  console.log('\nA password is already set for this server — skipping password/2FA setup.');
@@ -547,6 +659,7 @@ async function onboardMain(p) {
547
659
  // Clear it so the operator's first real browser login establishes the trusted device.
548
660
  await store.update((current) => ({ ...current, trustedDevices: [] }));
549
661
  }
662
+ step('Build and start', 'Package installs restart the bundled dist build; source checkouts build from source.');
550
663
  const deploy = await p.confirm('\nBuild and start the server now?', true);
551
664
  const deployed = deploy ? runDeploy() : false;
552
665
  if (deploy && !deployed) {
@@ -560,6 +673,7 @@ async function onboardMain(p) {
560
673
  // still finish (or verify) the nginx + TLS half. If NTerminal happens to be
561
674
  // stopped, the curl verification inside setupNginxProxy will surface a 502
562
675
  // and tell them to run nterminalctl start.
676
+ step('Configure HTTPS proxy', 'nginx and TLS are checked against the public domain.');
563
677
  const proxyResult = await setupNginxProxy({
564
678
  domain: new URL(publicUrl).hostname,
565
679
  port: Number(port.value),
@@ -574,7 +688,8 @@ async function onboardMain(p) {
574
688
  // ✓ TLS-ready line, which was contradictory on re-runs where NTerminal was
575
689
  // already up from an earlier session.
576
690
  if (proxyResult.httpsReady) {
577
- printSummaryBox('\x1b[32m✓\x1b[0m Main is ready', [
691
+ step('Finish', 'Public HTTPS is verified.');
692
+ printSummaryBox(`${colorText('✓', '32', shouldUseColor())} Main is ready`, [
578
693
  { label: 'Public URL', value: publicUrl },
579
694
  { label: 'Internal', value: `${host.value}:${port.value}` }
580
695
  ], [
@@ -585,42 +700,53 @@ async function onboardMain(p) {
585
700
  return;
586
701
  }
587
702
  if (!deploy) {
703
+ step('Finish', 'Config is written, but public HTTPS is not verified yet.');
588
704
  console.log(`\nConfig written but not deployed, and the proxy step couldn't verify NTerminal is reachable on 127.0.0.1:${port.value}. Run \`scripts/nterminalctl deploy\` (or restart if already running) and re-run onboarding.`);
589
705
  return;
590
706
  }
591
707
  // deploy succeeded but httpsReady is false — proxy or cert step was
592
708
  // skipped or failed verification.
593
- console.log(`\n\x1b[33m⚠\x1b[0m NTerminal itself is running on 127.0.0.1:${port.value}, but the public URL is not verified yet — the reverse-proxy or TLS step above was skipped or did not pass its check.`);
709
+ step('Finish', 'NTerminal is running locally; finish proxy/TLS before using the public URL.');
710
+ console.log(`\n${colorText('⚠', '33', shouldUseColor())} NTerminal itself is running on 127.0.0.1:${port.value}, but the public URL is not verified yet — the reverse-proxy or TLS step above was skipped or did not pass its check.`);
594
711
  console.log(`Finish the remaining commands shown above, then re-run \`npm run onboarding\` to re-verify ${publicUrl}.`);
595
712
  }
596
713
  async function onboardSecondary(p) {
597
- console.log('\n=== Secondary (agent) server setup ===\n');
714
+ const totalSteps = 7;
715
+ let currentStep = 0;
716
+ const section = 'Secondary server setup';
717
+ const step = (title, detail) => printStep(section, ++currentStep, totalSteps, title, detail);
718
+ console.log(`\n=== ${section} ===`);
598
719
  // Secondary listens on all interfaces by default so the main can reach it
599
720
  // across hosts. Existing .env value wins — same preservation rule as main.
721
+ step('Bind local agent', 'The main server must be able to reach this host and port.');
600
722
  const host = resolveBindHost(existingEnvValue('NTERMINAL_HOST'), () => '0.0.0.0');
601
723
  printResolvedBindHost(host, 'listens on all interfaces so the main can reach this server');
602
724
  const port = await resolveBindPort(existingEnvValue('NTERMINAL_PORT'), host.value);
603
725
  printResolvedBindPort(port);
726
+ step('Name and advertise this server', 'Use the URL the main can reach from its network, not necessarily this shell prompt.');
604
727
  const suggestedUrl = detectAgentUrl(os.networkInterfaces(), Number(port.value));
605
- const selfUrl = await p.ask('URL the MAIN will use to reach THIS server', suggestedUrl);
728
+ const selfUrl = await askUrl(p, 'URL the MAIN will use to reach THIS server', suggestedUrl, 'http');
606
729
  const name = await p.ask('Name shown in the main', os.hostname());
607
730
  // Preserve existing secret/token on re-run so a re-registration keeps the same agent identity.
731
+ step('Write runtime config', `Writing ${ENV_PATH}.`);
608
732
  const sessionSecret = existingEnvValue('NTERMINAL_SESSION_SECRET') ?? generateSessionSecret();
609
733
  const agentToken = existingEnvValue('NTERMINAL_AGENT_TOKEN') ?? generateAgentToken();
610
- const reused = Boolean(existingEnvValue('NTERMINAL_SESSION_SECRET'));
734
+ const reusedSessionSecret = Boolean(existingEnvValue('NTERMINAL_SESSION_SECRET'));
735
+ const reusedAgentToken = Boolean(existingEnvValue('NTERMINAL_AGENT_TOKEN'));
611
736
  writeEnv({
612
737
  NTERMINAL_SESSION_SECRET: sessionSecret,
613
738
  NTERMINAL_AGENT_TOKEN: agentToken,
614
739
  NTERMINAL_HOST: host.value,
615
740
  NTERMINAL_PORT: port.value
616
741
  });
617
- console.log(`\nWrote ${ENV_PATH} (session secret + agent token ${reused ? 'preserved' : 'generated'}).`);
742
+ console.log(`\nWrote ${ENV_PATH} (session secret ${reusedSessionSecret ? 'preserved' : 'generated'}, agent token ${reusedAgentToken ? 'preserved' : 'generated'}).`);
618
743
  // Firewall: when the agent is publicly bound, the main can only reach it
619
- // if the host firewall lets the bind port in. Loopback / private binds
620
- // never need this so we skip the prompt entirely there. Onboarding used
744
+ // if the host firewall lets the bind port in. Loopback binds never need
745
+ // this so we skip the prompt entirely there. Onboarding used
621
746
  // to leave this manual and the symptom was always the same — main says
622
747
  // "unreachable", the operator forgets ufw is even on, and debugging
623
748
  // burns a half hour before someone runs `ufw status`.
749
+ step('Check firewall access', 'Skipped automatically only for loopback binds.');
624
750
  if (isPubliclyBoundHost(host.value)) {
625
751
  const portNumber = Number(port.value);
626
752
  if (Number.isFinite(portNumber)) {
@@ -628,13 +754,16 @@ async function onboardSecondary(p) {
628
754
  await ensureFirewallAllowsPort(portNumber, p, sudoMode);
629
755
  }
630
756
  }
757
+ step('Register with main', 'Optional, but registration lets the main sidebar show this server immediately.');
631
758
  const wantRegister = await p.confirm('\nRegister this server with a main now?', true);
759
+ let registeredWithMain = false;
632
760
  if (wantRegister) {
633
- await registerWithMain(p, { name, selfUrl, agentToken });
761
+ registeredWithMain = await registerWithMain(p, { name, selfUrl, agentToken });
634
762
  }
635
763
  else {
636
764
  console.log('Skipped registration. Add it later from the main sidebar (URL + the agent token in this .env).');
637
765
  }
766
+ step('Build and start', 'Package installs restart the bundled dist build; source checkouts build from source.');
638
767
  const deploy = await p.confirm('\nBuild and start this server now?', true);
639
768
  p.close();
640
769
  if (deploy && !runDeploy()) {
@@ -642,32 +771,41 @@ async function onboardSecondary(p) {
642
771
  process.exitCode = 1;
643
772
  return;
644
773
  }
645
- printSummaryBox(`\x1b[32m✓\x1b[0m Secondary "${name}" is ready`, [
774
+ step('Finish', registeredWithMain ? 'Registered secondary is ready.' : 'Secondary is ready for manual registration.');
775
+ printSummaryBox(`${colorText('✓', '32', shouldUseColor())} Secondary "${name}" is ready`, [
646
776
  { label: 'Reachable at', value: selfUrl },
647
777
  { label: 'Bind', value: `${host.value}:${port.value}` },
648
- { label: 'Registered', value: wantRegister ? 'yes (logged into the main)' : 'no — paste the agent token in the main sidebar later' }
649
- ], wantRegister
778
+ {
779
+ label: 'Registered',
780
+ value: registeredWithMain
781
+ ? 'yes (logged into the main)'
782
+ : wantRegister
783
+ ? 'no — registration did not complete'
784
+ : 'no — paste the agent token in the main sidebar later'
785
+ }
786
+ ], registeredWithMain
650
787
  ? [
651
788
  'On the main, the Servers list should now show this agent',
652
789
  'Re-login on the main in your browser (CLI login revoked any active session)'
653
790
  ]
654
791
  : [
655
792
  `In the main sidebar, add a server with URL ${selfUrl}`,
656
- 'Paste the agent token from this server\'s .env'
793
+ 'Paste the agent token from this server\'s .env',
794
+ ...(wantRegister ? ['Or fix the registration error above and re-run onboarding on this secondary'] : [])
657
795
  ]);
658
796
  }
659
797
  async function registerWithMain(p, agent) {
660
798
  let mainUrl = '';
661
799
  let mainOrigin = '';
662
800
  for (;;) {
663
- mainUrl = await askUrl(p, 'Main server URL', 'https://nterminal.example.com');
801
+ mainUrl = await askUrl(p, 'Main server URL (required, e.g. https://cli.example.com)');
664
802
  mainOrigin = originOf(mainUrl);
665
803
  try {
666
804
  const res = await fetch(`${mainUrl}/api/auth/session`, { signal: AbortSignal.timeout(8000) });
667
805
  const status = (await res.json());
668
806
  if (!status.passwordSet) {
669
807
  console.log('That main has no password set yet. Onboard the MAIN first, then re-run this on the secondary.');
670
- return;
808
+ return false;
671
809
  }
672
810
  break;
673
811
  }
@@ -699,6 +837,7 @@ async function registerWithMain(p, agent) {
699
837
  }
700
838
  }
701
839
  const payload = buildAgentRegisterPayload(agent.name, agent.selfUrl, agent.agentToken);
840
+ let registered = false;
702
841
  try {
703
842
  // Remove any existing agent pointing at the same URL to avoid duplicates.
704
843
  try {
@@ -731,9 +870,13 @@ async function registerWithMain(p, agent) {
731
870
  console.log(`Registration failed (${body.error ?? regRes.status}).`);
732
871
  }
733
872
  else {
873
+ registered = true;
734
874
  console.log(`Registered with main as "${payload.name}".`);
735
875
  }
736
876
  }
877
+ catch (error) {
878
+ console.log(`Registration error: ${errorText(error)}.`);
879
+ }
737
880
  finally {
738
881
  // Always clean up the CLI session + the trusted-device record it created on the main,
739
882
  // even if registration threw.
@@ -745,6 +888,7 @@ async function registerWithMain(p, agent) {
745
888
  }
746
889
  console.log('\nNote: logging into the main from this CLI revoked any active browser session on the main');
747
890
  console.log(' (single active session policy). Re-login in your browser.');
891
+ return registered;
748
892
  }
749
893
  function collectCookies(headers) {
750
894
  // Node fetch exposes combined set-cookie via getSetCookie()
@@ -772,18 +916,20 @@ function printTopology() {
772
916
  // the operator is installing — first-time users often don't know whether
773
917
  // they want main or secondary, and a name + one-line description fits in
774
918
  // the picker but doesn't show how the pieces connect.
919
+ const color = shouldUseColor();
920
+ const dim = (text) => colorText(text, '2', color);
775
921
  const lines = [
776
- '\x1b[2m browser\x1b[0m',
777
- "\x1b[2m │ https\x1b[0m",
778
- '\x1b[2m ▼\x1b[0m',
922
+ dim(' browser'),
923
+ dim(' │ https'),
924
+ dim(' '),
779
925
  ' ┌───────────┐',
780
- ' │ main │\x1b[2m ← password + TOTP, fronts everything\x1b[0m',
926
+ ` │ main │${dim(' ← password + TOTP, fronts everything')}`,
781
927
  ' └─────┬─────┘',
782
- "\x1b[2m │ agent token over LAN/VPN\x1b[0m",
783
- "\x1b[2m ▼\x1b[0m",
928
+ dim(' │ agent token over LAN/VPN'),
929
+ dim(' ▼'),
784
930
  ' ┌───────────┐',
785
- ' │ secondary │\x1b[2m ← additional shell hosts, registered with the main\x1b[0m',
786
- ' └───────────┘\x1b[2m (zero or more; optional)\x1b[0m'
931
+ ` │ secondary │${dim(' ← additional shell hosts, registered with the main')}`,
932
+ ` └───────────┘${dim(' (zero or more; optional)')}`
787
933
  ];
788
934
  console.log('Topology:');
789
935
  for (const line of lines) {
@@ -793,9 +939,10 @@ function printTopology() {
793
939
  }
794
940
  async function chooseRole() {
795
941
  if (process.stdin.isTTY) {
942
+ const color = shouldUseColor();
796
943
  return pickFromList('Install as', [
797
- { label: 'main — orchestrates secondaries; password + 2FA gate', value: 'main' },
798
- { label: 'secondary — agent that registers with a main', value: 'secondary' }
944
+ { label: `main ${colorText('— orchestrates secondaries; password + 2FA gate', '2', color)}`, value: 'main' },
945
+ { label: `secondary ${colorText('— agent that registers with a main', '2', color)}`, value: 'secondary' }
799
946
  ]);
800
947
  }
801
948
  // Non-TTY (piped/automation): keep a one-line text prompt so scripted runs
@@ -1 +1 @@
1
- {"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../scripts/onboarding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../scripts/onboarding.ts"],"names":[],"mappings":"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"}
@@ -39,7 +39,7 @@ Onboarding writes `.env` for you.
39
39
  | --- | --- | --- |
40
40
  | `NTERMINAL_HOST` | `127.0.0.1` | Bind host. Keep the main server local unless a separate access boundary is in front. |
41
41
  | `NTERMINAL_PORT` | `3107` | HTTP server port. |
42
- | `NTERMINAL_WORKSPACE_ROOT` | launch directory | Startup directory for new terminal tabs. |
42
+ | `NTERMINAL_WORKSPACE_ROOT` | home directory | Startup directory for new terminal tabs. |
43
43
  | `NTERMINAL_SHELL` | `$SHELL`, then `/bin/bash` | Shell path for new PTYs. |
44
44
  | `NTERMINAL_STATE_PATH` | `.nterminal/state.json` | Local state file for password and layout data. |
45
45
  | `NTERMINAL_SESSION_SECRET` | required | Server secret for password hashing and session cookies. |
@@ -35,7 +35,7 @@ The main setup flow:
35
35
  2. Requires a public `https://<domain>` URL for the proxy setup path. Raw IPs, `http://`, `localhost`, and `.local` URLs are rejected in that path.
36
36
  3. Writes `.env`, including a generated `NTERMINAL_SESSION_SECRET`.
37
37
  4. Sets the login password and enables TOTP headlessly. The CLI prints a terminal QR code, base32 secret, and `otpauth://` URI, then verifies the 6-digit code.
38
- 5. Optionally builds and starts the server with `scripts/nterminalctl deploy`.
38
+ 5. Optionally starts the bundled package build, or builds and starts a source checkout, with `scripts/nterminalctl deploy`.
39
39
  6. Optionally provisions nginx, DNS verification, firewall rules, and Let's Encrypt TLS.
40
40
 
41
41
  The final summary prints the public URL, internal bind, and next steps.
@@ -58,7 +58,7 @@ The secondary setup flow:
58
58
  4. Generates a session secret and `NTERMINAL_AGENT_TOKEN`, then writes `.env`.
59
59
  5. Prompts for the main server URL, password, and authenticator code.
60
60
  6. Registers this secondary server with the main server automatically.
61
- 7. Optionally builds and starts the server.
61
+ 7. Optionally starts the bundled package build, or builds and starts a source checkout.
62
62
 
63
63
  Onboard the main server first. The main must already have password and TOTP configured before a secondary server can register itself.
64
64
 
@@ -2,7 +2,18 @@
2
2
 
3
3
  ## Local Service Management
4
4
 
5
- For production-style local operation, use the bundled control script through npm.
5
+ For production-style local operation from an npm package install, use the `nterminal` command:
6
+
7
+ ```bash
8
+ nterminal doctor
9
+ nterminal start
10
+ nterminal status
11
+ nterminal logs
12
+ nterminal restart
13
+ nterminal stop
14
+ ```
15
+
16
+ For source checkouts, use the bundled control script through npm:
6
17
 
7
18
  ```bash
8
19
  npm run ctl -- doctor
@@ -18,7 +29,7 @@ The script starts the built server in the background, writes a PID file, appends
18
29
 
19
30
  Source checkouts keep runtime files in the repository's `.nterminal/` directory by default. npm package installs launched through `nterminal` keep runtime files under `~/.nterminal`.
20
31
 
21
- One-command local deploy:
32
+ One-command source checkout deploy:
22
33
 
23
34
  ```bash
24
35
  npm run deploy:local
@@ -56,10 +67,11 @@ Notes:
56
67
  To clean a local install before reinstalling:
57
68
 
58
69
  ```bash
59
- scripts/nterminalctl clean --force --env
70
+ nterminal clean --force --env
60
71
  ```
61
72
 
62
73
  This stops the managed server, kills NTerminal tmux sessions, removes `.nterminal/`, and removes `.env`.
74
+ In a source checkout, run the same command as `npm run ctl -- clean --force --env`.
63
75
 
64
76
  Options:
65
77
 
@@ -96,7 +108,13 @@ Manual smoke test:
96
108
 
97
109
  ## Troubleshooting
98
110
 
99
- If native PTY install or startup fails:
111
+ If native PTY install or startup fails for a package install:
112
+
113
+ ```bash
114
+ npm explore -g nterminal -- npm rebuild node-pty --build-from-source
115
+ ```
116
+
117
+ For source checkouts:
100
118
 
101
119
  ```bash
102
120
  npm rebuild node-pty --build-from-source
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nterminal",
3
- "version": "1.2.9",
3
+ "version": "1.2.11",
4
4
  "license": "GPL-3.0-only",
5
5
  "type": "module",
6
6
  "packageManager": "npm@10.9.7",
@@ -15,6 +15,7 @@
15
15
  ".env.example",
16
16
  "LICENSE",
17
17
  "README.md",
18
+ "SECURITY.md",
18
19
  "assets/",
19
20
  "bin/",
20
21
  "dist/",
@@ -103,12 +103,30 @@ ensure_app_dir() {
103
103
  [[ -d "$APP_DIR" ]] || die "app directory not found: $APP_DIR"
104
104
  }
105
105
 
106
+ is_source_checkout() {
107
+ [[ -f "$APP_DIR/tsconfig.server.json" && -d "$APP_DIR/src" ]]
108
+ }
109
+
110
+ missing_env_message() {
111
+ if is_source_checkout; then
112
+ printf '.env not found at %s; copy .env.example and run npm run generate:secrets' "$ENV_FILE"
113
+ else
114
+ printf '.env not found at %s; run nterminal onboarding' "$ENV_FILE"
115
+ fi
116
+ }
117
+
106
118
  ensure_env_file() {
107
- [[ -f "$ENV_FILE" ]] || die ".env not found at $ENV_FILE; copy .env.example and run npm run generate:secrets"
119
+ [[ -f "$ENV_FILE" ]] || die "$(missing_env_message)"
108
120
  }
109
121
 
110
122
  ensure_runtime() {
111
- [[ -f "$RUNTIME_ENTRY" ]] || die "dist/server/index.js not found; run scripts/nterminalctl build first"
123
+ if [[ -f "$RUNTIME_ENTRY" ]]; then
124
+ return 0
125
+ fi
126
+ if is_source_checkout; then
127
+ die "dist/server/index.js not found; run scripts/nterminalctl build first"
128
+ fi
129
+ die "dist/server/index.js not found; reinstall nterminal"
112
130
  }
113
131
 
114
132
  ensure_directories() {
@@ -353,6 +371,11 @@ cmd_restart() {
353
371
 
354
372
  cmd_build() {
355
373
  ensure_app_dir
374
+ if ! is_source_checkout; then
375
+ ensure_runtime
376
+ info "Package install uses bundled dist; no build needed."
377
+ return 0
378
+ fi
356
379
  (
357
380
  cd "$APP_DIR"
358
381
  "$NPM_BIN" run build
@@ -364,16 +387,20 @@ cmd_deploy() {
364
387
  ensure_env_file
365
388
  (
366
389
  cd "$APP_DIR"
367
- if [[ -f package-lock.json ]]; then
390
+ if is_source_checkout && [[ -f package-lock.json ]]; then
368
391
  "$NPM_BIN" ci
369
- else
392
+ elif is_source_checkout; then
370
393
  "$NPM_BIN" install
371
394
  fi
372
- "$NPM_BIN" run typecheck
373
- # node-pty's install script always compiles from source (no prebuilt
374
- # download); ask npm to rebuild it explicitly after dependency updates.
375
- "$NPM_BIN" rebuild node-pty --build-from-source
376
- "$NPM_BIN" run build
395
+ if is_source_checkout; then
396
+ "$NPM_BIN" run typecheck
397
+ # node-pty's install script always compiles from source (no prebuilt
398
+ # download); ask npm to rebuild it explicitly after dependency updates.
399
+ "$NPM_BIN" rebuild node-pty --build-from-source
400
+ "$NPM_BIN" run build
401
+ else
402
+ ensure_runtime
403
+ fi
377
404
  )
378
405
  cmd_restart
379
406
  }
@@ -548,8 +575,8 @@ Commands:
548
575
  start Start the built server in the background.
549
576
  stop Stop the managed server with SIGTERM, then SIGKILL after timeout.
550
577
  restart Stop and start the server.
551
- build Run npm run build.
552
- deploy npm ci/install, typecheck, rebuild node-pty, build, then restart.
578
+ build Build source checkouts. Package installs use bundled dist.
579
+ deploy Build source checkouts when needed, then restart.
553
580
  clean --force Stop server, kill NTerminal tmux sessions, and remove local state/log/pid files.
554
581
  Add --env to also remove .env. Add --keep-tmux to preserve live panes.
555
582
  logs [N] Show the last N log lines. Default: 100.