Files
homelab/apps/harness/server.js
Julia McGhee 58c12a8d77
All checks were successful
CI / lint-and-test (push) Successful in 36s
Deploy Production / deploy (push) Successful in 1m19s
CI / build (push) Successful in 1m51s
Fix harness PTY: bind to 0.0.0.0 instead of HOSTNAME
In K8s, HOSTNAME is set to the pod name, so the server only listened
on that interface. The PTY server's loopback fetch to 127.0.0.1 was
connection-refused. Always bind to 0.0.0.0 so loopback works.
2026-03-21 21:51:18 +00:00

39 lines
1.2 KiB
JavaScript

const { createServer } = require("http");
const path = require("path");
const { parse } = require("url");
const dev = process.env.NODE_ENV !== "production";
// HOSTNAME in K8s is the pod name — always bind to 0.0.0.0
const hostname = "0.0.0.0";
const port = parseInt(process.env.PORT || "3100", 10);
// In production, load the standalone config to avoid webpack dependency
if (!dev) {
try {
const configPath = path.join(__dirname, "next-config.json");
const nextConfig = JSON.parse(require("fs").readFileSync(configPath, "utf8"));
process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(nextConfig);
} catch {
// Config not found (local dev) — next() will load config normally
}
}
const next = require("next");
const { attachPtyWebSocket } = require("./pty-server");
const app = next({ dev, hostname, port, dir: __dirname });
const handle = app.getRequestHandler();
app.prepare().then(() => {
const server = createServer((req, res) => {
const parsedUrl = parse(req.url || "/", true);
handle(req, res, parsedUrl);
});
attachPtyWebSocket(server);
server.listen(port, hostname, () => {
console.log(`> Harness ready on http://${hostname}:${port}`);
});
});