tar1090
Containerized tar1090 — improved ADS-B web interface for readsb/dump1090-fa with maps & history.
10K+
LinuxServer.io-style containerized build of tar1090, an improved, fast ADS-B web interface for readsb/dump1090-fa with maps, history, filters, and multi-instance support.
Sponsored and maintained by Blackout Secure.
Important
This repository is not an official LinuxServer.io image release. Want to help make it an officially supported LinuxServer.io Community image? Add your support in [linuxserver/discussions/111](https://github.com/orgs/linuxserver/discussions/111).
LinuxServer.io-style containerized build of tar1090, an improved, fast ADS-B web interface for readsb/dump1090-fa with maps, history, filters, and multi-instance support.
Quick links:
5-minute web UI setup (with sample data):
docker compose up -d
Open http://localhost:8080.
With a running decoder (e.g., readsb outputting JSON to a host directory):
docker run -d \
--name=tar1090 \
--restart unless-stopped \
-e TZ=Etc/UTC \
-e TAR1090_SOURCE_DIR=/data/readsb \
-p 8080:8080 \
-v tar1090-config:/config \
-v /path/to/readsb/json:/data/readsb:ro \
blackoutsecure/tar1090:latest
Access the web interface at http://<host-ip>:8080.
For compose files, balena, and more examples, see Usage below.
Docker Hub (Recommended):
docker pull blackoutsecure/tar1090:latest# Pull latest
docker pull blackoutsecure/tar1090
# Pull by upstream version (from version file)
docker pull blackoutsecure/tar1090:3.14.1801
# Pull by upstream commit (tracks exact source)
docker pull blackoutsecure/tar1090:upstream-2bf25135a665
tar1090 is an improved aircraft map and tracking web interface for ADS-B decoder outputs.
It is not an ADS-B decoder. It reads JSON data produced by an existing decoder such as readsb, dump1090-fa, or another compatible source, and renders an interactive aircraft map in the browser.
Author and maintenance credits (upstream):
This image is published as a multi-arch manifest. Pulling blackoutsecure/tar1090:latest retrieves the correct image for your host architecture.
The architectures supported by this image are:
| Architecture | Tag |
|---|---|
| x86-64 | amd64-latest |
| arm64 | arm64v8-latest |
---
services:
tar1090:
image: blackoutsecure/tar1090:latest
container_name: tar1090
environment:
- TZ=Etc/UTC
- TAR1090_SOURCE_DIR=/data/readsb
volumes:
- /path/to/tar1090/config:/config
- /path/to/readsb/json:/data/readsb:ro
ports:
- 8080:8080
restart: unless-stopped
tmpfs:
- /tmp
- /run:exec
---
services:
readsb:
image: blackoutsecure/readsb:latest
container_name: readsb
environment:
- TZ=Etc/UTC
- READSB_ARGS=--net --device-type rtlsdr
volumes:
- readsb-config:/config
- readsb-json:/run/readsb
devices:
- /dev/bus/usb:/dev/bus/usb
restart: unless-stopped
tmpfs:
- /tmp
- /run
tar1090:
image: blackoutsecure/tar1090:latest
container_name: tar1090
environment:
- TZ=Etc/UTC
- TAR1090_SOURCE_DIR=/data/readsb
volumes:
- tar1090-config:/config
- readsb-json:/data/readsb:ro
ports:
- 8080:8080
depends_on:
- readsb
restart: unless-stopped
tmpfs:
- /tmp
- /run:exec
volumes:
readsb-config:
readsb-json:
tar1090-config:
docker run -d \
--name=tar1090 \
-e TZ=Etc/UTC \
-e TAR1090_SOURCE_DIR=/data/readsb \
-p 8080:8080 \
-v /path/to/tar1090/config:/config \
-v /path/to/readsb/json:/data/readsb:ro \
--restart unless-stopped \
blackoutsecure/tar1090:latest
This image can be deployed to Balena-powered IoT devices using the included docker-compose.yml file (which contains the required Balena labels):
balena push <your-app-slug>
For deployment via the web interface, use the deploy button in this repository. See Balena documentation for details.
| Parameter | Function |
|---|---|
-p 8080:8080 | tar1090 web UI (HTTP) |
| Parameter | Function | Required |
|---|---|---|
-e TZ=Etc/UTC | Timezone (TZ database) | Optional |
-e TAR1090_SOURCE_DIR=/data/readsb | Directory tar1090 reads decoder JSON from | Recommended |
-e TAR1090_PORT=8080 | HTTP port for the web UI | Optional |
-e TAR1090_USER=abc | Runtime user selection | Optional |
-e PUID=911 | User ID for non-root operation | Optional |
-e PGID=911 | Group ID for non-root operation | Optional |
| Parameter | Function | Required |
|---|---|---|
-v /config | Configuration and persistent data | Recommended |
-v /data/readsb | Mounted decoder JSON directory (read-only recommended) | Recommended |
The container uses two volumes for data persistence and input:
/config — Configuration & Persistence-v /path/to/tar1090/config:/config or -v tar1090-config:/config/data/readsb — Decoder JSON Inputaircraft.json (current aircraft positions and data)receiver.json (receiver stats and information)-v /path/to/readsb/json:/data/readsb:ro or shared volume with readsb container/data/readsb as read-only (:ro) when another container owns the decoder output/config to preserve state between container restartsNamed volumes (recommended for single-host deployments):
volumes:
- config:/config
- readsb-json:/data/readsb:ro
Host paths (for direct file access):
volumes:
- /var/lib/tar1090/config:/config
- /var/lib/readsb/json:/data/readsb:ro
Environment variables are set using -e flags in docker run or the environment: section in docker-compose.
tar1090 web interface customization is generally performed through upstream configuration such as config.js in the served HTML assets. This container ships the upstream defaults.
Useful upstream documentation:
Examples of upstream URL-driven behavior include:
/?pTracks for history display/?icao=abc123 to select a specific aircraft/?zoom=9&enableLabels&extendedLabels=2 for display tuning/?heatmap=200000 when compatible heatmap data is availableBy default, this container runs with the abc user (uid 911) via LinuxServer.io s6-overlay patterns.
Default mode:
TAR1090_USER=abc with PUID=911 / PGID=911Custom user mode (advanced):
TAR1090_USER to your usernamePUID and PGID valuesThe container runs tar1090 through nginx and expects decoder JSON input from a mounted directory.
?pTracks support when decoder provides history snapshotsSome tar1090 features depend on the decoder providing additional data:
?pTracks requires history snapshots from the decoderThis container fetches aircraft.csv.gz from wiedehopf/tar1090-db during build so the web UI has the upstream database artifact available.
Check logs:
docker logs tar1090
docker logs tar1090 --tail 50 -f # Follow last 50 lines
Common causes:
Check that decoder JSON is available:
docker exec tar1090 ls -la /data/readsb
docker exec tar1090 cat /data/readsb/aircraft.json | head -c 200
If aircraft.json is missing or stale, the problem is upstream of tar1090 — fix it in the decoder container or host service.
Check logs:
docker logs tar1090 --tail 100
Change the host-side port mapping:
docker run ... -p 8081:8080 ...
For filter syntax, query parameters, ?pTracks, heatmaps, and multi-instance behavior, use the upstream tar1090 documentation as those are application-level features.
docker logs -f tar1090This project tracks two independent values from the upstream wiedehopf/tar1090 master branch:
| What | Source | Example | Changes when |
|---|---|---|---|
| Upstream Version | version file | 3.14.1801 | Upstream maintainer bumps it |
| Upstream Commit | Latest commit on master | 2bf25135a665 | Every upstream push |
These are two different things: the commit changes frequently with every push, while the version only changes when the upstream maintainer explicitly increments it. Both are tracked and published.
Every build produces multiple tags so you can pin at the granularity you need:
| Tag | Example | Description |
|---|---|---|
latest | blackoutsecure/tar1090:latest | Always points to the most recent build |
<version> | blackoutsecure/tar1090:3.14.1801 | Matches the upstream version file |
<major>.<minor> | blackoutsecure/tar1090:3.14 | Semver major.minor from upstream version |
<major> | blackoutsecure/tar1090:3 | Semver major from upstream version |
upstream-<commit> | blackoutsecure/tar1090:upstream-2bf25135a665 | Exact upstream commit hash |
Release plumbing is handled by a thin caller for the Blackout Secure Launchpad reusable workflow, defined in .github/workflows/bos-launchpad-release.yml. On a 6-hour cron (and on manual dispatch) it runs three stages end-to-end:
version file at the head of wiedehopf/tar1090@master, compares against .github/upstream/tar1090-master.json, and commits the tracking file when upstream moves.latest, <version>, <major>.<minor>, <major>, upstream-<commit>, and sha-<run-sha> on Docker Hub, then refreshes the Docker Hub description from this README and runs a Docker Scout scan.balena.yml dynamically from the launchpad inputs and publishes the tar1090 block release. This repo opts out of automated GitHub Releases (github_release: false).# Check the upstream version baked into the image
docker inspect -f '{{ index .Config.Labels "org.opencontainers.image.version" }}' blackoutsecure/tar1090:latest
# Check the upstream commit baked into the image
docker inspect -f '{{ index .Config.Labels "io.tar1090.upstream.commit" }}' blackoutsecure/tar1090:latest
# Check the full build version string
docker inspect -f '{{ index .Config.Labels "build_version" }}' blackoutsecure/tar1090:latest
Update to latest:
docker pull blackoutsecure/tar1090:latest
docker-compose up -d # if using compose
Get help:
docker logs tar1090 # View container logs
docker exec -it tar1090 /bin/bash # Access container shell
docker inspect blackoutsecure/tar1090 # Check image details
Sponsored and maintained by Blackout Secure
Upstream project: wiedehopf/tar1090 Container patterns: LinuxServer.io
| Resource | Link |
|---|---|
| Docker Hub | blackoutsecure/tar1090 |
| Balena Block | tar1090 |
| GitHub Issues | Report bugs or request features |
| Project | Link |
|---|---|
| tar1090 | wiedehopf/tar1090 |
| tar1090-db | wiedehopf/tar1090-db |
| readsb | wiedehopf/readsb |
| LinuxServer.io | linuxserver.io |
This project is licensed under the GNU General Public License v2.0 or later - see the LICENSE file for details.
The tar1090 application itself i
Content type
Image
Digest
sha256:8e3d544de…
Size
34.4 MB
Last updated
about 2 months ago
docker pull blackoutsecure/tar1090:sha-c5040c80877b1d63815be42d1bcca7964ec93494