From c07e4dc083e649984be99fd8fa87d9a440ab250f Mon Sep 17 00:00:00 2001 From: seb Date: Sun, 25 Oct 2026 12:13:29 +0100 Subject: [PATCH] u --- .env.example | 2 ++ src/api/index.js | 10 +++++----- src/backendmonitor/server.js | 6 +++--- src/config/env.js | 1 + 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/.env.example b/.env.example index b9194ab..41d9b4b 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,6 @@ # Server +# Host interface to listen on (defaults to 127.0.0.1 for local only, use 0.0.0.0 for all network interfaces) +HOST=127.0.0.1 PORT=4208 # HTTPS server port (defaults to 8443, set to 0 or false to disable) HTTPS_PORT=8443 diff --git a/src/api/index.js b/src/api/index.js index 7831db9..d8872e6 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -182,7 +182,7 @@ export async function buildApiApp() { return app; } -function listenOnPort(instance, port, protocol) { +function listenOnPort(instance, port, protocol, host = env.host) { return new Promise((resolve, reject) => { instance.once('listening', () => { resolve(); @@ -197,14 +197,14 @@ function listenOnPort(instance, port, protocol) { } catch { // lsof unavailable or no match } - apiLog.error(`Port ${port} (${protocol}) is already in use${detail}. Check with: lsof -i :${port}`); + apiLog.error(`Port ${port} (${protocol}) on ${host} is already in use${detail}. Check with: lsof -i :${port}`); } else { apiLog.error(`${protocol} server error:`, err.message); } reject(err); }); - instance.listen(port); + instance.listen(port, host); }); } @@ -225,7 +225,7 @@ export async function startApi() { const httpInstance = http.createServer(app); await listenOnPort(httpInstance, env.port, 'HTTP'); server = httpInstance; - apiLog.info(`API listening on port ${env.port} (HTTP)`); + apiLog.info(`API listening on ${env.host}:${env.port} (HTTP)`); if (env.httpsPort) { try { @@ -233,7 +233,7 @@ export async function startApi() { const httpsInstance = https.createServer(tls, app); await listenOnPort(httpsInstance, env.httpsPort, 'HTTPS'); httpsServer = httpsInstance; - apiLog.info(`API listening on port ${env.httpsPort} (HTTPS self-signed)`); + apiLog.info(`API listening on ${env.host}:${env.httpsPort} (HTTPS self-signed)`); } catch (err) { apiLog.error('Failed to start HTTPS server:', err.message); } diff --git a/src/backendmonitor/server.js b/src/backendmonitor/server.js index dee97e0..9475e47 100644 --- a/src/backendmonitor/server.js +++ b/src/backendmonitor/server.js @@ -152,14 +152,14 @@ export async function startBackendMonitor() { await new Promise((resolve, reject) => { serverInstance.once('listening', () => resolve()); serverInstance.once('error', (err) => { - monitorLog.error(`Failed to listen on port ${env.monitorPort}:`, err.message); + monitorLog.error(`Failed to listen on ${env.host}:${env.monitorPort}:`, err.message); reject(err); }); - serverInstance.listen(env.monitorPort); + serverInstance.listen(env.monitorPort, env.host); }); monitorServer = serverInstance; - monitorLog.info(`Backend Monitor Interface running on http://localhost:${env.monitorPort} (dev mode, no auth)`); + monitorLog.info(`Backend Monitor Interface running on http://${env.host}:${env.monitorPort} (dev mode, no auth)`); return monitorServer; } diff --git a/src/config/env.js b/src/config/env.js index 4849dac..f84a693 100644 --- a/src/config/env.js +++ b/src/config/env.js @@ -13,6 +13,7 @@ function parseHttpsPort(val) { } export default { + host: process.env.HOST || '127.0.0.1', port: Number(process.env.PORT) || 4208, httpsPort: parseHttpsPort(process.env.HTTPS_PORT), monitorPort: Number(process.env.MONITOR_PORT || process.env.SQL_STUDIO_PORT) || 4210,