finds.dev← search

// the find

sdr-enthusiasts/docker-adsb-ultrafeeder

★ 552 · Shell · GPL-3.0 · updated Aug 2026

ADSB-Ultrafeeder is an all-in-one ADSB container with readsb, tar1090, graphs1090, autogain, multi-feeder, and mlat-hub built in

A Docker container that bundles readsb, tar1090, graphs1090, mlat-client, and an mlat-hub into a single deployable unit for ADS-B aircraft tracking. Targets hobbyists running RTL-SDR dongles on Raspberry Pi or x86 hardware who want to receive, display, and feed aircraft position data to aggregators like FlightAware, ADSBExchange, or adsb.lol. Actively maintained with multi-arch support (amd64, armv7, arm64).

- The ULTRAFEEDER_CONFIG single-env-var approach for configuring multiple ADSB feeds and MLAT clients is genuinely well-designed — one semicolon-delimited string replaces what would otherwise be a rats nest of individual variables per aggregator.

- Multi-arch image built for amd64/arm64/armv7 with hot-plug USB recovery via device_cgroup_rules instead of hardcoded device paths — this is the right way to handle SDR dongles in Docker.

- Built-in mlat-hub consolidates MLAT return data from multiple aggregators into a single feed, which avoids the duplicate position problem that plagues naive multi-feeder setups.

- Active CI with lint (hadolint, markdownlint), test builds, and Renovate for dependency updates — this isn't a set-it-and-forget-it abandoned hobby project.

- The container is a shell-script monolith under s6-overlay — all configuration logic lives in bash scripts that parse the ULTRAFEEDER_CONFIG string with string splitting. If your feed string contains edge-case characters or you misplace a comma, you get silent failures or confusing behavior with no schema validation.

- No health check defined in the Dockerfile or compose file by default, so Docker has no way to know if readsb has crashed internally while the container stays 'Up' — you need to wire up external monitoring yourself.

- Bundling readsb, tar1090, graphs1090, autogain, and mlat-hub into one image means you can't update any single component independently without rebuilding or waiting for a new image release; if wiedehopf pushes a tar1090 fix you care about, you're stuck until the maintainers cut a new build.

- Documentation is extensive but organized as one enormous README with 30+ sections — there's no quick-start that gets you from zero to working in under 10 commands without reading deeply; the .env file approach helps but the sheer volume of knobs makes initial setup intimidating.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →