diff --git a/docker-compose.yml b/docker-compose.yml index ee23063..6362023 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -20,11 +20,12 @@ services: dockerfile: Dockerfile working_dir: /app ports: - - "3000:3000" + - "127.0.0.1:3000:3000" volumes: - .:/app - /app/node_modules environment: + - HOST=0.0.0.0 - DB_USER=${DB_USER} - DB_PASSWORD=${DB_PASSWORD} - DB_NAME=${DB_NAME} diff --git a/src/lib/env.ts b/src/lib/env.ts index 052f019..93ea2ae 100644 --- a/src/lib/env.ts +++ b/src/lib/env.ts @@ -6,6 +6,7 @@ const envSchema = z.object({ DISCORD_GUILD_ID: z.string().optional(), DATABASE_URL: z.string().min(1, "Database URL is required"), PORT: z.coerce.number().default(3000), + HOST: z.string().default("127.0.0.1"), }); const parsedEnv = envSchema.safeParse(process.env); diff --git a/src/web/server.ts b/src/web/server.ts index 87d4bcb..1b8cde6 100644 --- a/src/web/server.ts +++ b/src/web/server.ts @@ -9,7 +9,8 @@ export class WebServer { public static start(port?: number) { this.server = Bun.serve({ - port: port ?? (typeof env.PORT === "string" ? parseInt(env.PORT) : 3000), + port: port ?? env.PORT, + hostname: env.HOST, fetch: (req, server) => { const url = new URL(req.url); if (url.pathname === "/ws") { @@ -38,7 +39,7 @@ export class WebServer { }, }); - console.log(`🌐 Web server listening on http://localhost:${this.server.port}`); + console.log(`🌐 Web server listening on http://${this.server.hostname}:${this.server.port} (Restricted to Local Interface)`); // Start a heartbeat loop this.heartbeatInterval = setInterval(() => {