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 +12 -7
- package/SECURITY.md +66 -0
- package/bin/nterminal.js +3 -3
- package/dist/scripts/onboarding.js +185 -38
- package/dist/scripts/onboarding.js.map +1 -1
- package/docs/configuration.md +1 -1
- package/docs/onboarding.md +2 -2
- package/docs/operations.md +22 -4
- package/package.json +2 -1
- package/scripts/nterminalctl +38 -11
package/README.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# NTerminal
|
|
2
2
|
|
|
3
|
-
<img src="https://cdn.jsdelivr.net/npm/nterminal@1.2.
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
102
|
-
deploy
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
272
|
-
const
|
|
273
|
-
|
|
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
|
-
|
|
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)
|
|
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
|
|
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
|
|
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}
|
|
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}
|
|
554
|
+
console.log(`Port: ${resolved.value} ${colorText(`(${note})`, '2', shouldUseColor())}`);
|
|
451
555
|
}
|
|
452
556
|
async function onboardMain(p) {
|
|
453
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
620
|
-
//
|
|
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
|
-
|
|
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
|
-
{
|
|
649
|
-
|
|
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
|
|
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
|
-
'
|
|
777
|
-
|
|
778
|
-
'
|
|
922
|
+
dim(' browser'),
|
|
923
|
+
dim(' │ https'),
|
|
924
|
+
dim(' ▼'),
|
|
779
925
|
' ┌───────────┐',
|
|
780
|
-
|
|
926
|
+
` │ main │${dim(' ← password + TOTP, fronts everything')}`,
|
|
781
927
|
' └─────┬─────┘',
|
|
782
|
-
|
|
783
|
-
|
|
928
|
+
dim(' │ agent token over LAN/VPN'),
|
|
929
|
+
dim(' ▼'),
|
|
784
930
|
' ┌───────────┐',
|
|
785
|
-
|
|
786
|
-
'
|
|
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:
|
|
798
|
-
{ label:
|
|
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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"}
|
package/docs/configuration.md
CHANGED
|
@@ -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` |
|
|
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. |
|
package/docs/onboarding.md
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
package/docs/operations.md
CHANGED
|
@@ -2,7 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
## Local Service Management
|
|
4
4
|
|
|
5
|
-
For production-style local operation, use the
|
|
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
|
|
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
|
-
|
|
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.
|
|
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/",
|
package/scripts/nterminalctl
CHANGED
|
@@ -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 "
|
|
119
|
+
[[ -f "$ENV_FILE" ]] || die "$(missing_env_message)"
|
|
108
120
|
}
|
|
109
121
|
|
|
110
122
|
ensure_runtime() {
|
|
111
|
-
[[ -f "$RUNTIME_ENTRY" ]]
|
|
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
|
-
|
|
392
|
+
elif is_source_checkout; then
|
|
370
393
|
"$NPM_BIN" install
|
|
371
394
|
fi
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
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
|
|
552
|
-
deploy
|
|
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.
|