This commit is contained in:
seb
2026-10-25 12:13:29 +01:00
parent 369fbb2a70
commit c07e4dc083
4 changed files with 11 additions and 8 deletions

View File

@@ -1,4 +1,6 @@
# Server # 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 PORT=4208
# HTTPS server port (defaults to 8443, set to 0 or false to disable) # HTTPS server port (defaults to 8443, set to 0 or false to disable)
HTTPS_PORT=8443 HTTPS_PORT=8443

View File

@@ -182,7 +182,7 @@ export async function buildApiApp() {
return app; return app;
} }
function listenOnPort(instance, port, protocol) { function listenOnPort(instance, port, protocol, host = env.host) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
instance.once('listening', () => { instance.once('listening', () => {
resolve(); resolve();
@@ -197,14 +197,14 @@ function listenOnPort(instance, port, protocol) {
} catch { } catch {
// lsof unavailable or no match // 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 { } else {
apiLog.error(`${protocol} server error:`, err.message); apiLog.error(`${protocol} server error:`, err.message);
} }
reject(err); reject(err);
}); });
instance.listen(port); instance.listen(port, host);
}); });
} }
@@ -225,7 +225,7 @@ export async function startApi() {
const httpInstance = http.createServer(app); const httpInstance = http.createServer(app);
await listenOnPort(httpInstance, env.port, 'HTTP'); await listenOnPort(httpInstance, env.port, 'HTTP');
server = httpInstance; server = httpInstance;
apiLog.info(`API listening on port ${env.port} (HTTP)`); apiLog.info(`API listening on ${env.host}:${env.port} (HTTP)`);
if (env.httpsPort) { if (env.httpsPort) {
try { try {
@@ -233,7 +233,7 @@ export async function startApi() {
const httpsInstance = https.createServer(tls, app); const httpsInstance = https.createServer(tls, app);
await listenOnPort(httpsInstance, env.httpsPort, 'HTTPS'); await listenOnPort(httpsInstance, env.httpsPort, 'HTTPS');
httpsServer = httpsInstance; 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) { } catch (err) {
apiLog.error('Failed to start HTTPS server:', err.message); apiLog.error('Failed to start HTTPS server:', err.message);
} }

View File

@@ -152,14 +152,14 @@ export async function startBackendMonitor() {
await new Promise((resolve, reject) => { await new Promise((resolve, reject) => {
serverInstance.once('listening', () => resolve()); serverInstance.once('listening', () => resolve());
serverInstance.once('error', (err) => { 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); reject(err);
}); });
serverInstance.listen(env.monitorPort); serverInstance.listen(env.monitorPort, env.host);
}); });
monitorServer = serverInstance; 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; return monitorServer;
} }

View File

@@ -13,6 +13,7 @@ function parseHttpsPort(val) {
} }
export default { export default {
host: process.env.HOST || '127.0.0.1',
port: Number(process.env.PORT) || 4208, port: Number(process.env.PORT) || 4208,
httpsPort: parseHttpsPort(process.env.HTTPS_PORT), httpsPort: parseHttpsPort(process.env.HTTPS_PORT),
monitorPort: Number(process.env.MONITOR_PORT || process.env.SQL_STUDIO_PORT) || 4210, monitorPort: Number(process.env.MONITOR_PORT || process.env.SQL_STUDIO_PORT) || 4210,