Add --host flag, listen on 127.0.0.1 by default

The server previously bound to all interfaces with no auth. Default to
loopback so it sits behind a reverse proxy; --host (or JOB_BOARD_HOST)
overrides it. Plain HOST is ignored since some environments set it to
the machine hostname.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-12 21:43:34 +02:00
co-authored by Claude Opus 5.5
parent beac32469c
commit 784c3c5220
3 changed files with 21 additions and 8 deletions
+8 -4
View File
@@ -18,14 +18,14 @@ No runtime dependencies. It uses Bun's built-in SQLite, HTTP server and HTMLRewr
```sh
bun install
bun start # http://localhost:3000
bun start # http://127.0.0.1:3000
bun start --port 8080 # or -p 8080
```
The server scrapes every 24h. On startup it waits out the rest of the 24h since the last scrape (or scrapes right away if none happened in the last 24h).
You can also click **Scrape now** in the UI, or run `bun run scrape` once (e.g. from cron).
Env vars: `PORT` (3000; `--port` overrides it), `SCRAPE_INTERVAL_HOURS` (24), `DB_PATH` (`data/jobs.sqlite`).
Env vars: `PORT` (3000; `--port` overrides it), `JOB_BOARD_HOST` (127.0.0.1; `--host` overrides it), `SCRAPE_INTERVAL_HOURS` (24), `DB_PATH` (`data/jobs.sqlite`).
## Build a binary for a server
@@ -41,11 +41,15 @@ bun run build:linux-arm64 # bin/job-board-linux-arm64 (e.g. Raspberry Pi, ARM
On the server:
```sh
./job-board # web server on :3000, scrapes every 24h
./job-board # http://127.0.0.1:3000, scrapes every 24h
./job-board --port 8080
./job-board --host 0.0.0.0 --port 8080 # listen on all interfaces
./job-board scrape # scrape once and exit (exit code 1 if a scraper failed)
```
It listens on loopback (`127.0.0.1`) only by default, so it's meant to sit behind a reverse proxy
(nginx, Caddy). There is no login: only use `--host 0.0.0.0` on a trusted network.
The database goes to `data/jobs.sqlite` next to the binary (override with `DB_PATH`).
The binaries target glibc Linux; for Alpine use `--target=bun-linux-x64-musl`, and for old CPUs
without AVX2 use `--target=bun-linux-x64-baseline`.
@@ -58,7 +62,7 @@ Description=Job board
After=network-online.target
[Service]
ExecStart=/opt/job-board/job-board --port 3000
ExecStart=/opt/job-board/job-board --host 127.0.0.1 --port 3000
Restart=on-failure
User=jobboard