Makes a fresh deploy (especially Docker) work with no manual steps and behave well on real-world hosts.
Changes
Auto-scan skips oversized subnets (>/20, e.g. a docker 172.17.0.0/16). Previously AUTO discovery scanned 65k hosts and stalled startup on any Docker host. Manual scan shares the same MIN_SCAN_PREFIX.
Docker first-run just works: docker-entrypoint.sh auto-seeds config.json from config.json.example, persisted on a ./data directory mount — removes the single-file bind-mount footgun and the manual cp step.
ADSBIT_CONFIG env var overrides the config path (bare metal unchanged; container uses /app/data/config.json).
Clean shutdown on SIGTERM/SIGINT (docker stop, systemctl stop) — no traceback.
.gitignore/.dockerignore exclude the data/ config volume. README/CLAUDE.md updated. VERSION → 1.1.1.
Verification
Image builds; a fresh docker run with an empty volume seeds config, starts, skips the in-container /16, serves /health, and reports Docker health healthy. Bare-metal: ADSBIT_CONFIG override, oversized-subnet skip, /health, version 1.1.1, and graceful SIGTERM shutdown all confirmed.
Makes a fresh deploy (especially Docker) work with no manual steps and behave well on real-world hosts.
## Changes
- **Auto-scan skips oversized subnets** (>/20, e.g. a docker `172.17.0.0/16`). Previously AUTO discovery scanned 65k hosts and stalled startup on any Docker host. Manual scan shares the same `MIN_SCAN_PREFIX`.
- **Docker first-run just works**: `docker-entrypoint.sh` auto-seeds `config.json` from `config.json.example`, persisted on a `./data` directory mount — removes the single-file bind-mount footgun and the manual `cp` step.
- **`ADSBIT_CONFIG`** env var overrides the config path (bare metal unchanged; container uses `/app/data/config.json`).
- **`/health`** endpoint (status/version/receivers/flights) + Docker `HEALTHCHECK`.
- **Clean shutdown** on SIGTERM/SIGINT (`docker stop`, `systemctl stop`) — no traceback.
- `.gitignore`/`.dockerignore` exclude the `data/` config volume. README/CLAUDE.md updated. VERSION → 1.1.1.
## Verification
Image builds; a fresh `docker run` with an empty volume seeds config, starts, skips the in-container `/16`, serves `/health`, and reports Docker health `healthy`. Bare-metal: `ADSBIT_CONFIG` override, oversized-subnet skip, `/health`, version `1.1.1`, and graceful SIGTERM shutdown all confirmed.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Make a fresh deploy (especially Docker) work with no manual steps and behave
well on real-world hosts:
- Auto-scan skips subnets larger than /20 (e.g. a docker bridge 172.17.0.0/16
= 65k hosts) so AUTO discovery no longer stalls startup or hammers the
network on any host with Docker. Manual scan shares the same MIN_SCAN_PREFIX.
- Docker: config.json is auto-seeded from config.json.example by a new
docker-entrypoint.sh and persisted on a ./data directory mount — no more
single-file bind-mount footgun, no manual cp before first run.
- Config path is overridable via ADSBIT_CONFIG (defaults to ./config.json for
bare metal; /app/data/config.json in the container).
- New /health endpoint (status/version/receivers/flights) + Docker HEALTHCHECK.
- Clean SIGTERM/SIGINT shutdown (docker stop / systemctl stop) — no traceback.
- .gitignore/.dockerignore exclude the data/ config volume.
- README/CLAUDE.md updated; VERSION bumped to 1.1.1.
Verified: image builds, fresh `docker run` seeds config and reports healthy,
oversized subnets skipped in-container, /health responds, graceful shutdown.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
allen
merged commit 2551f8748d into main2026-06-10 09:32:54 -07:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Makes a fresh deploy (especially Docker) work with no manual steps and behave well on real-world hosts.
Changes
172.17.0.0/16). Previously AUTO discovery scanned 65k hosts and stalled startup on any Docker host. Manual scan shares the sameMIN_SCAN_PREFIX.docker-entrypoint.shauto-seedsconfig.jsonfromconfig.json.example, persisted on a./datadirectory mount — removes the single-file bind-mount footgun and the manualcpstep.ADSBIT_CONFIGenv var overrides the config path (bare metal unchanged; container uses/app/data/config.json)./healthendpoint (status/version/receivers/flights) + DockerHEALTHCHECK.docker stop,systemctl stop) — no traceback..gitignore/.dockerignoreexclude thedata/config volume. README/CLAUDE.md updated. VERSION → 1.1.1.Verification
Image builds; a fresh
docker runwith an empty volume seeds config, starts, skips the in-container/16, serves/health, and reports Docker healthhealthy. Bare-metal:ADSBIT_CONFIGoverride, oversized-subnet skip,/health, version1.1.1, and graceful SIGTERM shutdown all confirmed.🤖 Generated with Claude Code