Sign inSign up

blackoutsecure/tar1090

By blackoutsecure

•Updated 4 months ago

Containerized tar1090 — improved ADS-B web interface for readsb/dump1090-fa with maps & history.

Image
Networking
Internet of things
Monitoring & observability
0

10K+

blackoutsecure/tar1090 repository overview

tar1090 logo

⁠blackoutsecure/tar1090

GitHub Stars Docker Pulls GitHub Release Balena Hub Blackout Secure Launchpad License: GPL v2 Made by BlackoutSecure

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).

⁠Overview

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:


⁠Table of Contents


⁠Quick Start

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.


⁠Image Availability

Docker Hub (Recommended):

  • All images published to Docker Hub⁠
  • Simple pull command: docker pull blackoutsecure/tar1090:latest
  • Multi-arch support: amd64, arm64
  • No registry prefix needed (defaults to Docker Hub)
# 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

⁠About The tar1090 Application

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):


⁠Supported Architectures

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:

ArchitectureTag
x86-64amd64-latest
arm64arm64v8-latest

⁠Usage

---
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
⁠docker-compose with paired readsb container
---
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-cli (click here for more info⁠)
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
⁠Balena Deployment

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.

⁠Parameters

⁠Ports
ParameterFunction
-p 8080:8080tar1090 web UI (HTTP)
⁠Environment Variables
ParameterFunctionRequired
-e TZ=Etc/UTCTimezone (TZ database⁠)Optional
-e TAR1090_SOURCE_DIR=/data/readsbDirectory tar1090 reads decoder JSON fromRecommended
-e TAR1090_PORT=8080HTTP port for the web UIOptional
-e TAR1090_USER=abcRuntime user selectionOptional
-e PUID=911User ID for non-root operationOptional
-e PGID=911Group ID for non-root operationOptional
⁠Storage Mounts
ParameterFunctionRequired
-v /configConfiguration and persistent dataRecommended
-v /data/readsbMounted decoder JSON directory (read-only recommended)Recommended

⁠Volume Details

The container uses two volumes for data persistence and input:

⁠/config — Configuration & Persistence
  • Required: No (container runs without it, but state is lost on restart)
  • Purpose: Stores persistent data and application state
  • Example: -v /path/to/tar1090/config:/config or -v tar1090-config:/config
⁠/data/readsb — Decoder JSON Input
  • Required: Effectively yes (without it, the web UI loads but shows no aircraft)
  • Purpose: Input directory containing decoder-generated JSON files
  • Contents:
    • aircraft.json (current aircraft positions and data)
    • receiver.json (receiver stats and information)
    • Other tar1090-compatible outputs
  • Example: -v /path/to/readsb/json:/data/readsb:ro or shared volume with readsb container
⁠Best Practices
  • Read-only mount: Always mount /data/readsb as read-only (:ro) when another container owns the decoder output
  • For persistence: Use named volumes or host paths for /config to preserve state between container restarts
  • Shared volume with readsb: Use a named volume shared between readsb and tar1090 containers
⁠Volume Mount Examples

Named 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

⁠Configuration

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 available

⁠User / Group Identifiers

By default, this container runs with the abc user (uid 911) via LinuxServer.io s6-overlay patterns.

Default mode:

  • Uses TAR1090_USER=abc with PUID=911 / PGID=911
  • No special permissions needed

Custom user mode (advanced):

  • Set TAR1090_USER to your username
  • Provide matching PUID and PGID values

⁠Application Setup

The container runs tar1090 through nginx and expects decoder JSON input from a mounted directory.

⁠Key Features
  • Interactive Map: Aircraft visualization with multiple basemap options
  • Aircraft Database: Includes tar1090-db⁠ for accurate aircraft identification
  • Advanced Filtering: Filter by ICAO, callsign, type, altitude, and more
  • Track History: ?pTracks support when decoder provides history snapshots
  • Read-Only Filesystem: Supported when temp directories are mounted to tmpfs
⁠Features That Depend On The Decoder

Some tar1090 features depend on the decoder providing additional data:

  • ?pTracks requires history snapshots from the decoder
  • Heatmap and replay require decoder-side support and retained history
  • Richer aircraft identification benefits from the included tar1090-db aircraft database

This container fetches aircraft.csv.gz from wiedehopf/tar1090-db⁠ during build so the web UI has the upstream database artifact available.


⁠Troubleshooting

⁠Container won't start or exits immediately

Check logs:

docker logs tar1090
docker logs tar1090 --tail 50 -f  # Follow last 50 lines

Common causes:

  • Port conflict: another service is already using port 8080
  • Volume mount issue: verify paths exist and are accessible
⁠The web UI loads but no aircraft appear

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.

⁠Container starts but page appears incomplete

Check logs:

docker logs tar1090 --tail 100
⁠HTTP port conflict

Change the host-side port mapping:

docker run ... -p 8081:8080 ...
⁠Advanced tar1090 behavior questions

For filter syntax, query parameters, ?pTracks, heatmaps, and multi-instance behavior, use the upstream tar1090 documentation⁠ as those are application-level features.

⁠Getting help

⁠Release & Versioning

This project tracks two independent values from the upstream wiedehopf/tar1090⁠ master branch:

WhatSourceExampleChanges when
Upstream Versionversion file⁠3.14.1801Upstream maintainer bumps it
Upstream CommitLatest commit on master2bf25135a665Every 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.

⁠Docker Hub Tags

Every build produces multiple tags so you can pin at the granularity you need:

TagExampleDescription
latestblackoutsecure/tar1090:latestAlways points to the most recent build
<version>blackoutsecure/tar1090:3.14.1801Matches the upstream version file
<major>.<minor>blackoutsecure/tar1090:3.14Semver major.minor from upstream version
<major>blackoutsecure/tar1090:3Semver major from upstream version
upstream-<commit>blackoutsecure/tar1090:upstream-2bf25135a665Exact upstream commit hash
⁠How It Works

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:

  1. Monitor — Polls the version file at the head of wiedehopf/tar1090@master, compares against .github/upstream/tar1090-master.json, and commits the tracking file when upstream moves.
  2. Docker — Builds multi-arch images (amd64, arm64), tags 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.
  3. Balena — Renders balena.yml dynamically from the launchpad inputs and publishes the tar1090 block release. This repo opts out of automated GitHub Releases (github_release: false).
⁠Checking Your Image Version
# 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

⁠Support & Getting Help

Get help:

docker logs tar1090                          # View container logs
docker exec -it tar1090 /bin/bash           # Access container shell
docker inspect blackoutsecure/tar1090       # Check image details

⁠Sponsor & Credits

Sponsored and maintained by Blackout Secure⁠

Upstream project: wiedehopf/tar1090⁠ Container patterns: LinuxServer.io⁠


⁠References

⁠Project Resources
ResourceLink
Docker Hubblackoutsecure/tar1090⁠
Balena Blocktar1090⁠
GitHub IssuesReport bugs or request features⁠
⁠Technical Resources

⁠License

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

Tag summary

Content type

Image

Digest

sha256:8e3d544de…

Size

34.4 MB

Last updated

4 months ago

docker pull blackoutsecure/tar1090