Giter VIP home page Giter VIP logo

docker-tar1090's Introduction

sdr-enthusiasts/docker-tar1090

Introduction

This container tar1090 runs @wiedehopf's readsb fork ADS-B decoding engine in to feed the graphic tar1090 viewing webinterface, also by wiedehopf (as is the viewadsb text-based output) to provide digital representations of the readsb output.

At the time of writing this README, it provides:

  • Improved adjustable history
  • Show All Tracks much faster than original with many planes
  • Multiple Maps available
  • Map can be dimmed/darkened
  • Multiple aircraft can be selected
  • Labels with the callsign can be switched on and off
  • Heatmap of aircraft positions

This image:

  • Receives Beast data from a provider such as dump1090 or readsb
  • Optionally, receives MLAT data from a provider such as mlat-client
  • Provides the tar1090 web interface
  • When using the :telegraf tag, it will be able to send data to Prometheus or InfluxDB to use in Grafana

It builds and runs on linux/amd64, linux/arm/v7 and linux/arm64 (see below).

Note for Users running 32-bit Debian Buster-based OSes on ARM

Please see: Buster-Docker-Fixes!

Supported tags and respective Dockerfiles

  • latest should always contain the latest released versions of readsb, tar1090 and tar1090-db.
  • latest_nohealthcheck is the same as the latest version above. However, this version has the docker healthcheck removed. This is done for people running platforms (such as Nomad) that don't support manually disabling healthchecks, where healthchecks are not wanted.
  • Specific version tags are available if required, however these are not regularly updated. It is generally recommended to run latest.

Multi Architecture Support

  • linux/amd64: Built on Linux x86-64
  • linux/arm/v6: Built on Odroid HC2 running ARMv7 32-bit
  • linux/arm/v7: Built on Odroid HC2 running ARMv7 32-bit
  • linux/arm64: Built on a Raspberry Pi 4 Model B running ARMv8 64-bit

Prerequisites

You will need a source of Beast data. Examples are an RPi running PiAware or sdr-enthusiasts/docker-readsb-protobuf.

Optionally, you will need a source of MLAT data. This could be:

Up-and-Running with docker run

docker run -d \
    --name=tar1090 \
    -p 8078:80 \
    -e TZ=<TIMEZONE> \
    -e BEASTHOST=<BEASTHOST> \
    -e MLATHOST=<MLATHOST> \
    -e LAT=xx.xxxxx \
    -e LONG=xx.xxxxx \
    -v /opt/adsb/tar1090/graphs1090:/var/lib/collectd \
    --tmpfs=/run:exec,size=64M \
    --tmpfs=/var/log \
    ghcr.io/sdr-enthusiasts/docker-tar1090:latest

Replacing TIMEZONE with your timezone, BEASTHOST with the IP address of a host that can provide Beast data, and MLATHOST with the IP address of a host that can provide MLAT data.

For example:

docker run -d \
    --name=tar1090 \
    -p 8078:80 \
    -e TZ=Australia/Perth \
    -e BEASTHOST=readsb \
    -e MLATHOST=adsbx \
    -e LAT=-33.33333 \
    -e LONG=111.11111 \
    -v /opt/adsb/tar1090/graphs1090:/var/lib/collectd \
    --tmpfs=/run:exec,size=64M \
    --tmpfs=/var/log \
    ghcr.io/sdr-enthusiasts/docker-tar1090:latest

You should now be able to browse to:

Up-and-Running with docker-compose

An example docker-compose.xml file is below:

version: "3.8"

services:
  tar1090:
    image: ghcr.io/sdr-enthusiasts/docker-tar1090:latest
    tty: true
    container_name: tar1090
    restart: always
    environment:
      - TZ=Australia/Perth
      - BEASTHOST=readsb
      - MLATHOST=adsbx
      - LAT=-33.33333
      - LONG=111.11111
    volumes:
      - /opt/adsb/tar1090/globe_history:/var/globe_history
      - /opt/adsb/tar1090/timelapse1090:/var/timelapse1090
      - /opt/adsb/tar1090/graphs1090:/var/lib/collectd
      - /proc/diskstats:/proc/diskstats:ro
    # - /run/airspy_adsb:/run/airspy_adsb
    ports:
      - 8078:80
    tmpfs:
      - /run:exec,size=64M
      - /var/log

You should now be able to browse to:

Note: the example above excludes MLATHOST as readsb alone cannot provide MLAT data. You'll need a feeder container for this.

Ports

Some common ports are as follows (which may or may not be in use depending on your configuration):

Port Details
30001/tcp Raw protocol input
30002/tcp Raw protocol output
30003/tcp SBS/Basestation protocol output
32006/tcp SBS/Basestation protocol input
30004/tcp Beast protocol input
30005/tcp Beast protocol output
30006/tcp Beast reduce protocol output
30047/tcp Json position output

Json position output:

  • outputs an aircraft object for every new position received for an aircraft. The following parameters (which can be added with READSB_EXTRA_ARGS) control this output:
  • --net-json-port-interval Set minimum interval between outputs per aircraft for TCP json output, default: 0.0 (every position)
  • --net-json-port-include-noposition TCP json position output: include aircraft without position (state is sent for aircraft for every DF11 with CRC if the aircraft hasn't sent a position in the last 10 seconds and interval allowing)
  • each json object will be on a new line
  • https://github.com/wiedehopf/readsb/blob/dev/README-json.md

Aircraft.json:

Outgoing

This container will try to connect to the BEASTHOST on TCP port 30005 by default. This can be changed by setting the BEASTPORT environment variable.

If MLATHOST is set, this container will try to connect the MLATHOST on TCP port 30105 by default. This can be changed to setting the MLATPORT environment variable.

Incoming

This container accepts HTTP connections on TCP port 80 by default. You can change this with the container's port mapping. In the examples above, this has been changed to 8078.

Runtime Environment Variables

Container Configuration

Environment Variable Purpose Default
BEASTHOST Required. IP/Hostname of a Mode-S/Beast provider (dump1090/readsb)
BEASTPORT Optional. TCP port number of Mode-S/Beast provider (dump1090/readsb) 30005
LAT Optional. The latitude of your antenna
LONG Optional. The longitude of your antenna
MLATHOST Optional. IP/Hostname of an MLAT provider (mlat-client)
MLATPORT Optional. TCP port number of an MLAT provider (mlat-client) 30105
TZ Optional. Your local timezone in TZ-database-name format
HEYWHATSTHAT_PANORAMA_ID Optional. Your heywhatsthat.com panorama ID. See https://github.com/wiedehopf/tar1090#heywhatsthatcom-range-outline.
HEYWHATSTHAT_ALTS Optional. Comma separated altitudes for multiple outlines. Use no units or ft for feet, m for meters, or km for kilometers. Only integer numbers are accepted, no decimals please 12192m (=40000 ft)
HTTP_ACCESS_LOG Optional. Set to true to display HTTP server access logs. false
HTTP_ERROR_LOG Optional. Set to false to hide HTTP server error logs. true
READSB_MAX_RANGE Optional. Maximum range (in nautical miles). Unset
ENABLE_TIMELAPSE1090 Optional / Legacy. Set to any value to enable btimelapse1090. Once enabled, can be accessed via http://dockerhost:port/timelapse/. Unset
READSB_EXTRA_ARGS Optional, allows to specify extra parameters for readsb Unset
READSB_DEBUG Optional, used to set debug mode. n: network, P: CPR, S: speed check Unset
S6_SERVICES_GRACETIME Optional, set to 30000 when saving traces / globe_history 3000
ENABLE_AIRSPY Optional, set to any non-empty value if you want to enable the special AirSpy graphs. See below for additional configuration requirements Unset
URL_AIRSPY Optional, set to the URL where the airspy stats are available, for example http://airspy_adsb Unset
URL_1090_SIGNAL Optional. Retrieve gain, % of strong signals and signal graph data from a remote source. Set to an URL where the readsb stats are available, i.e. http://192.168.2.34/tar1090 Unset

READSB_EXTRA_ARGS just passes arguments to the commandline, you can check this file for more options for wiedehofps readsb fork: https://github.com/wiedehopf/readsb/blob/dev/help.h

If you want to save historic data with tar1090, see a modified mode of operation at the end of the readme

tar1090 Configuration

All of the variables below are optional.

tar1090 Core Configuration

Environment Variable Purpose Default
READSB_JSON_INTERVAL Update data update interval for the webinterface in seconds 1.0
UPDATE_TAR1090 At startup update tar1090 and tar1090db to the latest versions true
INTERVAL Interval at which the track history is saved 8
HISTORY_SIZE How many points in time are stored in the track history 450
URL_978 The URL needs to point at where your skyaware978 webinterface is located, this will also enable UAT-specific graphs in graphs1090 http://dump978/skyaware978
ENABLE_978 Set to true to enable deprecated UAT/978 display in tar1090 fetch data via json (not beast / raw) from URL_978. Unset
GZIP_LVL 1-9 are valid, lower lvl: less CPU usage, higher level: less network bandwidth used when loading the page 3
PTRACKS Shows the last $PTRACKS hours of traces you have seen at the ?pTracks URL 8
TAR1090_FLIGHTAWARELINKS Set to any value to enable FlightAware links in the web interface null
TAR1090_ENABLE_AC_DB Set to true to enable extra information, such as aircraft type and registration, to be included in in aircraft.json output. Will use more memory; use caution on older Pis or similar devices. Unset
TAR1090_IMAGE_CONFIG_LINK An optional URL shown at the top of page, designed to be used for a link back to a configuration page. The token HOSTNAME in the link is replaced with the current host that tar1090 is accessed on. null
TAR1090_IMAGE_CONFIG_TEXT Text to display for the config link null
TAR1090_DISABLE Set to true to disable the web server and all websites (including the map, graphs1090, heatmap, pTracks, etc.) Unset
READSB_ENABLE_HEATMAP Set to true or leave unset to enable the HeatMap function available at http://myip/?Heatmap; set to false to disable the HeapMap function true (enabled)
TAR1090_ENABLE_ACTUALRANGE Set to true or leave unset to enable the outline of the actual range of your station on the map; set to false to disable the this outline true (enabled)
TAR1090_AISCATCHER_SERVER If you want to show vessels from your AIS-Catcher instance on the map, put the (externally reachable) URL of your AIS-Catcher or ShipFeeder website in this parameter (incl. https://). Note - if you are using "barebones" AIS-Catcher you should add GEOJSON on after the -N parameter on the AIS-Catcher command line. If you use docker-shipfeeder, no change is needed for that container Empty
TAR1090_AISCATCHER_REFRESH Refresh rate (in seconds) of reading vessels from your AIS-Catcher instance. Defaults to 15 (secs) if omitted 15

Using a locally modified tar1090 version

  • git clone https://github.com/wiedehopf/tar1090 /local/my_special_version
  • Apply your modifications
  • Make that directory available as /var/tar1090_git_source in the container (volumes: - /local/my_special_version:/var/tar1090_git_source)
  • UPDATE_TAR1090=true

tar1090 config.js Configuration - Title

Environment Variable Purpose Default
TAR1090_PAGETITLE Set the tar1090 web page title tar1090
TAR1090_PLANECOUNTINTITLE Show number of aircraft in the page title false
TAR1090_MESSAGERATEINTITLE Show number of messages per second in the page title false

tar1090 config.js Configuration - Output

Environment Variable Purpose Default
TAR1090_DISPLAYUNITS The DisplayUnits setting controls whether nautical (ft, NM, knots), metric (m, km, km/h) or imperial (ft, mi, mph) units are used in the plane table and in the detailed plane info. Valid values are "nautical", "metric", or "imperial". nautical

tar1090 config.js Configuration - Map Settings

Environment Variable Purpose Default
TAR1090_BINGMAPSAPIKEY Provide a Bing Maps API key to enable the Bing imagery layer. You can obtain a free key (with usage limits) at https://www.bingmapsportal.com/ (you need a "basic key"). null
TAR1090_DEFAULTCENTERLAT Default center (latitude) of the map. This setting is overridden by any position information provided by dump1090/readsb. All positions are in decimal degrees. 45.0
TAR1090_DEFAULTCENTERLON Default center (longitude) of the map. This setting is overridden by any position information provided by dump1090/readsb. All positions are in decimal degrees. 9.0
TAR1090_DEFAULTZOOMLVL The google maps zoom level, 0 - 16, lower is further out. 7
TAR1090_SITESHOW Center marker. If dump1090 provides a receiver location, that location is used and these settings are ignored. Set to true to show a center marker. false
TAR1090_SITELAT Center marker. If dump1090 provides a receiver location, that location is used and these settings are ignored. Position of the marker (latitude). 45.0
TAR1090_SITELON Center marker. If dump1090 provides a receiver location, that location is used and these settings are ignored. Position of the marker (longitude). 9.0
TAR1090_SITENAME The tooltip of the center marker. My Radar Site
TAR1090_RANGE_OUTLINE_COLOR Colour for the range outline. #0000DD
TAR1090_RANGE_OUTLINE_WIDTH Width for the range outline. 1.7
TAR1090_RANGE_OUTLINE_COLORED_BY_ALTITUDE Range outline is coloured by altitude. false
TAR1090_RANGE_OUTLINE_DASH Range outline dashing. Syntax [L, S] where L is the pixel length of the line, and S is the pixel length of the space. Unset
TAR1090_ACTUAL_RANGE_OUTLINE_COLOR Colour for the actual range outline #00596b
TAR1090_ACTUAL_RANGE_OUTLINE_WIDTH Width of the actual range outline 1.7
TAR1090_ACTUAL_RANGE_OUTLINE_DASH Dashed style for the actual range outline. Unset for solid line. [5,5] for a dashed line with 5 pixel lines and spaces in between Unset
TAR1090_MAPTYPE_TAR1090 Which map is displayed to new visitors. Valid values for this setting are osm, esri, carto_light_all, carto_light_nolabels, carto_dark_all, carto_dark_nolabels, gibs, osm_adsbx, chartbundle_sec, chartbundle_tac, chartbundle_hel, chartbundle_enrl, chartbundle_enra, chartbundle_enrh, and only with bing key bing_aerial, bing_roads. carto_light_all
TAR1090_MAPDIM Default map dim state, true or false. true
TAR1090_MAPDIMPERCENTAGE The percentage amount of dimming used if the map is dimmed, 0-1 0.45
TAR1090_MAPCONTRASTPERCENTAGE The percentage amount of contrast used if the map is dimmed, 0-1 0
TAR1090_DWDLAYERS Various map layers provided by the DWD geoserver can be added here. Preview and available layers. Multiple layers are also possible. Syntax: dwd:layer1,dwd:layer2,dwd:layer3 dwd:RX-Produkt
TAR1090_LABELZOOM Displays aircraft labels only until this zoom level, 1-15 (values >15 don't really make sense)
TAR1090_LABELZOOMGROUND Displays ground traffic labels only until this zoom level, 1-15 (values >15 don't really make sense)

tar1090 config.js Configuration - Range Rings

Environment Variable Purpose Default
TAR1090_RANGERINGS false to hide range rings true
TAR1090_RANGERINGSDISTANCES Distances to display range rings, in miles, nautical miles, or km (depending settings value 'TAR1090_DISPLAYUNITS'). Accepts a comma separated list of numbers (no spaces, no quotes). 100,150,200,250
TAR1090_RANGERINGSCOLORS Colours for each of the range rings specified in TAR1090_RANGERINGSDISTANCES. Accepts a comma separated list of hex colour values, each enclosed in single quotes (eg TAR1090_RANGERINGSCOLORS='#FFFFF','#00000'). No spaces. Blank

tar1090 config.js Configuration - Expert

Environment Variable Purpose Default
TAR1090_CONFIGJS_APPEND Append arbitrary javascript code to config.js Unset
  • In case a setting is available in tar1090 but not exposed via environment variable for this container
  • For a list of possible settings, see https://github.com/wiedehopf/tar1090/blob/master/html/config.js
  • Incorrect syntax or any capitalization errors will cause the map to not load, you have been warned!
  • Example: TAR1090_CONFIGJS_APPEND= MapDim=false; nexradOpacity=0.2;
  • In the environment section of a compose file you can generally use multiple lines like this:
    environment:
    ...
      - TAR1090_CONFIGJS_APPEND=
        MapDim=false;
        nexradOpacity=0.2;
    ...

tar1090 Route Display Configuration

Environment Variable Purpose Default
TAR1090_USEROUTEAPI Set to true to enable route lookup for callsigns Unset
TAR1090_ROUTEAPIURL API URL used https://api.adsb.lol/api/0/routeset

timelapse1090 Configuration

Legacy: we do NOT recommend you enable this feature as it will cause substantial additional writes to disk. On a Pi, this may reduce the lifespan of your SD card. Instead, use http://dockerhost:port/?replay which provides the same functionality, but without additional load to the disk. The feature is included for legacy purposes only, and is disabled by default.

Environment Variable Purpose Default
ENABLE_TIMELAPSE1090 If set to any non-empty value, the legacy Timelapse1090 feature will be enabled Unset
TIMELAPSE1090_INTERVAL Snapshot interval in seconds 10
TIMELAPSE1090_HISTORY Time saved in hours 24

Paths

No paths need to be mapped through to persistent storage. However, if you don't want to lose your range outline and aircraft tracks/history and heatmap / replay data on container restart, you can optionally map these paths:

Path Purpose
/var/globe_history Holds range outline data, heatmap / replay data and traces if enabled.
Note: this data won't be automatically deleted, you will need to delete it eventually if you map this path.
/var/timelapse1090 Holds timelapse1090 data if enabled
/var/lib/collectd Holds graphs1090 & performance data

readsb Network Options

This container uses the readsb fork by wiedehopf as a backend to tar1090: https://github.com/wiedehopf/readsb

Where the default value is "Unset", readsb's default will be used.

Variable Description Controls which readsb option Default
READSB_NET_CONNECTOR See "READSB_NET_CONNECTOR syntax" below. --net-connector=<ip,port,protocol> Unset
READSB_ENABLE_API Adds nginx proxies api at /re-api. Use with extraargs --write-json-globe-index --tar1090-use-api to get fast map with many planes various disabled
READSB_NET_API_PORT https://github.com/wiedehopf/readsb/blob/dev/README-json.md#--net-api-port-query-formats --net-api-port=<ports> 30152
READSB_NET_BEAST_REDUCE_INTERVAL BeastReduce position update interval, longer means less data (valid range: 0.000 - 14.999) --net-beast-reduce-interval=<seconds> 1.0
READSB_NET_BEAST_REDUCE_FILTER_DIST Restrict beast-reduce output to aircraft in a radius of X nmi --net-beast-reduce-filter-dist=<nmi> Unset
READSB_NET_BEAST_REDUCE_FILTER_ALT Restrict beast-reduce output to aircraft below X ft --net-beast-reduce-filter-alt=<ft> Unset
READSB_NET_BEAST_REDUCE_OUT_PORT TCP BeastReduce output listen ports (comma separated) --net-beast-reduce-out-port=<ports> Unset
READSB_NET_BEAST_INPUT_PORT TCP Beast input listen ports --net-bi-port=<ports> 30004,30104
READSB_NET_BEAST_OUTPUT_PORT TCP Beast output listen ports --net-bo-port=<ports> 30005
READSB_NET_BUFFER TCP buffer size 64Kb * (2^n) --net-buffer=<n> 2 (256Kb)
READSB_NET_RAW_OUTPUT_INTERVAL TCP output flush interval in seconds (maximum interval between two network writes of accumulated data). --net-ro-interval=<rate> 0.05
READSB_NET_RAW_OUTPUT_SIZE TCP output flush size (maximum amount of internally buffered data before writing to network). --net-ro-size=<size> 1200
READSB_NET_CONNECTOR_DELAY Outbound re-connection delay. --net-connector-delay=<seconds> 30
READSB_NET_HEARTBEAT TCP heartbeat rate in seconds (0 to disable). --net-heartbeat=<rate> 60
READSB_NET_RAW_INPUT_PORT TCP raw input listen ports. --net-ri-port=<ports> 30001
READSB_NET_RAW_OUTPUT_PORT TCP raw output listen ports. --net-ro-port=<ports> 30002
READSB_NET_SBS_INPUT_PORT TCP BaseStation input listen ports. --net-sbs-in-port=<ports> Unset
READSB_NET_SBS_OUTPUT_PORT TCP BaseStation output listen ports. --net-sbs-port=<ports> 30003
REASSB_NET_VERBATIM Set this to any value to forward messages unchanged. --net-verbatim Unset
READSB_NET_VRS_PORT TCP VRS JSON output listen ports. --net-vrs-port=<ports> Unset
READSB_WRITE_STATE_ONLY_ON_EXIT if set to anything, it will only write the status range outlines, etc. upon termination of readsb --write-state-only-on-exit Unset
READSB_FORWARD_MLAT_SBS If set to anthing, it will include MLAT results in the SBS/BaseStation output. This may be desirable if you feed SBS data to applications like VRS or PlaneFence --forward-mlat-sbs Unset
READSB_FORWARD_MLAT If set to anthing, it will include MLAT results in the Beast and SBS/BaseStation output. This may be desirable if you feed SBS data to applications like VRS or PlaneFence --forward-mlat Unset

READSB_NET_CONNECTOR syntax

Instead of (or in addition to) using BEASTHOST, you can also define ADSB data ingests using the READSB_NET_CONNECTOR parameter. This is the preferred way if you have multiple sources or destinations for your ADSB data. This variable allows you to configure incoming and outgoing connections. The variable takes a semicolon (;) separated list of host,port,protocol[,uuid=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX], where:

  • host is an IP address. Specify an IP/hostname/containername for incoming or outgoing connections.
  • port is a TCP port number
  • protocol can be one of the following:
    • beast_reduce_out: Beast-format output with lower data throughput (saves bandwidth and CPU)
    • beast_reduce_plus_out: Beast-format output with extra data (UUID). This is the preferred format when feeding the "new" aggregator services
    • beast_out: Beast-format output
    • beast_in: Beast-format input
    • raw_out: Raw output
    • raw_in: Raw input
    • sbs_out: SBS-format output
    • vrs_out: SBS-format output
  • uuid=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX is an optional parameter that sets the UUID for this specific instance. It will override the global UUID parameter. This is only needed when you want to send different UUIDs to different aggregators.

NOTE: If you have a UAT dongle and use dump978 to decode this, you should use READSB_NET_CONNECTOR to ingest UAT data from dump978. See example below

    environment:
    ...
      - READSB_NET_CONNECTOR=dump978,37981,raw_in;another-data-aggregator.com,30005,beast_reduce_plus_out
    ...

readsb General Options

Where the default value is "Unset", readsb's default will be used.

Variable Description Controls which readsb option Default
READSB_ENABLE_BIASTEE Set to any value to enable bias tee on supporting interfaces --enable-biastee Unset
READSB_RX_LOCATION_ACCURACY Accuracy of receiver location in metadata: 0=no location, 1=approximate, 2=exact --rx-location-accuracy=<n> 2
READSB_JSON_INTERVAL Update interval for the webinterface in seconds / interval between aircraft.json writes --write-json-every=<sec> 1.0
READSB_JSON_TRACE_INTERVAL Per plane interval for json position output and trace interval for globe history --json-trace-interval=<sec> 15
READSB_HEATMAP_INTERVAL Per plane interval for heatmap and replay (if you want to lower this, also lower json-trace-interval to this or a lower value) --heatmap=<sec> 15
READSB_MAX_RANGE Absolute maximum range for position decoding (in nm) --max-range=<dist> 300
READSB_MLAT Set this to add timestamps to AVR / RAW output --mlat Unset
READSB_STATS_EVERY Number of seconds between showing and resetting stats. --stats-every=<sec> Unset
READSB_STATS_RANGE Set this to any value to collect range statistics for polar plot. --stats-range Unset
READSB_RANGE_OUTLINE_HOURS Change which past timeframe the range outline is based on --range-outline-hours 24

AutoGain for RTLSDR Devices

If you have set READSB_GAIN=autogain, then the system will take signal strength measurements to determine the optimal gain. The AutoGain functionality is based on a (slightly) modified version of Wiedehopf's AutoGain. AutoGain will only work with rtlsdr style receivers.

There are 2 distinct periods in which the container will attempt to figure out the gain:

  • The initial period of 2 hours, in which an adjustment is done every 5 minutes
  • The subsequent period, in which an adjustment is done once every day

Please note that in order for the initial period to complete, the container must run for 90 minutes without restarting.

When taking measurements, if the percentage of "strong signals" (i.e., ADSB messages with RSSI > 3 dB) is larger than 6%, AutoGain will reduce the receiver's gain by 1 setting. Similarly, if the percentage of strong signals is smaller than 2.5%, AutoGain will increment the receiver's gain by 1 setting. When AutoGain changes the gain value, the readsb component of the container will restart. This may show as a disconnect / reconnected in container logs.

We recommend running the initial period during times when there are a lot of planes overhead, so the system will get a good initial view of what signals look like when traffic is at its peak for your location. If you forgot to do this for any reason, feel free to give the AutoGain reset command (see below) during flights busy hour.

Although not recommended, you can change the measurement intervals and low/high cutoffs with these parameters:

Environment Variable Purpose Default
READSB_AUTOGAIN_INITIAL_TIMEPERIOD How long the Initial Time Period should last (in seconds) 7200
READSB_AUTOGAIN_INITIAL_INTERVAL The measurement interval to optimize gain during the initial period of 90 minutes (in seconds) 300
READSB_AUTOGAIN_SUBSEQUENT_INTERVAL The measurement interval to optimize gain during the subsequent period (in seconds) 86400
READSB_AUTOGAIN_LOW_PCT If the percentage of "strong signals" (stronger than 3dBFS RSSI) is below this number, gain will be increased 2.5
READSB_AUTOGAIN_HIGH_PCT If the percentage of "strong signals" (stronger than 3dBFS RSSI) is above this number, gain will be decreased 6.0
READSB_AUTOGAIN_INITIAL_GAIN The start gain value for the initial period. If not defined, it will use the highest gain available for the SDR. Unset

If you need to reset AutoGain and start over determining the gain, you can do so with this command:

docker exec -it tar1090 /usr/local/bin/autogain1090 reset

Message decoding introspection

You can look at individual messages and what information they contain, either for all or for an individual aircraft by hex:

# only for hex 3D3ED0
docker exec -it tar1090 /usr/local/bin/viewadsb --show-only 3D3ED0

# for all aircraft
docker exec -it tar1090 /usr/local/bin/viewadsb --no-interactive

# show position / CPR debugging for hex 3D3ED0
docker exec -it tar1090 /usr/local/bin/viewadsb --cpr-focus 3D3ED0

Configuring graphs1090

graphs1090 Environment Parameters

Variable Description Default
GRAPHS1090_DARKMODE If set to any value, graphs1090 will be rendered in "dark mode". Unset
GRAPHS1090_RRD_STEP Interval in seconds to feed data into RRD files. 60
GRAPHS1090_SIZE Set graph size, possible values: small, default, large, huge, custom. default
GRAPHS1090_ALL_LARGE Make the small graphs as large as the big ones by setting to yes. no
GRAPHS1090_FONT_SIZE Font size (relative to graph size). 10.0
GRAPHS1090_MAX_MESSAGES_LINE Set to any value to draw a reference line at the maximum message rate. Unset
GRAPHS1090_LARGE_WIDTH Defines the width of the larger graphs. 1096
GRAPHS1090_LARGE_HEIGHT Defines the height of the larger graphs. 235
GRAPHS1090_SMALL_WIDTH Defines the width of the smaller graphs. 619
GRAPHS1090_SMALL_HEIGHT Defines the height of the smaller graphs. 324
GRAPHS1090_DISK_DEVICE Defines which disk device (mmc0, sda, sdc, etc) is shown. Leave empty for default device Unset
GRAPHS1090_ETHERNET_DEVICE Defines which (wired) ethernet device (eth0, enp0s, etc) is shown. Leave empty for default device Unset
GRAPHS1090_WIFI_DEVICE Defines which (wireless) WiFi device (wlan0, wlp3s0, etc) is shown. Leave empty for default device Unset
GRAPHS1090_DISABLE Set to true to disable the entire GRAPHS1090 web page and associated data collection Unset
GRAPHS1090_DISABLE_CHART_CPU Set to true to disable the GRAPHS1090 CPU chart Unset
GRAPHS1090_DISABLE_CHART_TEMP Set to true to disable the GRAPHS1090 Temperature chart Unset
GRAPHS1090_DISABLE_CHART_MEMORY Set to true to disable the GRAPHS1090 Memory Utilization chart Unset
GRAPHS1090_DISABLE_CHART_NETWORK_BANDWIDTH Set to true to disable the GRAPHS1090 Network Bandwidth chart Unset
GRAPHS1090_DISABLE_CHART_DISK_USAGE Set to true to disable the GRAPHS1090 Disk Usage chart Unset
GRAPHS1090_DISABLE_CHART_DISK_IOPS Set to true to disable the GRAPHS1090 Disk IOPS chart Unset
GRAPHS1090_DISABLE_CHART_DISK_BANDWIDTH Set to true to disable the GRAPHS1090 Disk Bandwidth chart Unset
GRAPHS1090_WWW_TITLE Set title for the web page (displayed in the browser title or tab bar) graphs1090
GRAPHS1090_WWW_HEADER Set header text for the web page Perf. Graphs
GRAPHS1090_HIDE_SYSTEM Hide the system graphs and don't render them (system data is still collected, this might be changed) no

Enabling UAT data

ADS-B over UAT data is transmitted in the 978 MHz band, and this is used in the USA only. To display the corresponding graphs, you should:

  1. Set the following environment parameters:
- ENABLE_978=yes
- URL_978=http://dump978/skyaware978
  1. Install the docker-dump978 container. Note - only containers downloaded/deployed on/after Feb 8, 2023 will work.

Note that you *must- configure URL_978 to point at a working skyaware978 website with aircraft.json data feed. This means that the URL http://dump978/skyaware978/data/aircraft.json must return valid JSON data to this tar1090 container.

Enabling AirSpy graphs

Users of AirSpy devices can enable extra graphs1090 graphs by configuring the following:

  • Set the following environment parameter:
- ENABLE_AIRSPY=yes
  • To provide the container access to the AirSpy statistics, map a volume in your docker-compose.yml file as follows:
    volumes:
      - /run/airspy_adsb:/run/airspy_adsb
      ...

Enabling Disk IO and IOPS data

To allow the container access to the Disk IO data, you should map the following volume:

    volumes:
      - /proc/diskstats:/proc/diskstats:ro
      ...

Configuring the Core Temperature graphs

By default, the system will use the temperature available at Thermal Zone 0. This generally works well on Raspberry Pi devices, and no additional changes are needed.

On different devices, the Core Temperature is mapped to a different Thermal Zone. To ensure the Core Temperature graph works, follow these steps

First check out which Thermal Zone contains the temperature you want to monitor. On your host system, do this:

for i in /sys/class/thermal/thermal_zone* ; do echo "$i - $(cat ${i}/type) - $(cat ${i}/temp 2>/dev/null)"; done

Something similar to this will be show:

/sys/class/thermal/thermal_zone0 - acpitz - 25000
/sys/class/thermal/thermal_zone1 - INT3400 Thermal - 20000
/sys/class/thermal/thermal_zone2 - TSKN - 43050
/sys/class/thermal/thermal_zone3 - NGFF - 32050
/sys/class/thermal/thermal_zone4 - TMEM - 39050
/sys/class/thermal/thermal_zone5 - pch_skylake - 40500
/sys/class/thermal/thermal_zone6 - B0D4 - 54050
/sys/class/thermal/thermal_zone7 - iwlwifi_1 -
/sys/class/thermal/thermal_zone8 - x86_pkg_temp - 57000

Repeat this a few times to ensure that the temperature varies and isn't hardcoded to a value. In our case, either Thermal Zone 5 (pch_skylake is the Intel Core name) or Thermal Zone 8 (the temp of the entire SOC package) can be used. Once you have determined which Thermal Zone number you want to use, map it to a volume like this. Make sure that the part to the left of the first : reflects your Thermal Zone directory; the part to the right of the first : should always be /sys/class/thermal/thermal_zone0:ro.

Note that you will have to add - privileged: true capabilities to the container. This is less than ideal as it will give the container access to all of your system devices and processes. Make sure you feel comfortable with this before you do this.

    privileged: true
    volumes:
      - /sys/class/thermal/thermal_zone8:/sys/class/thermal/thermal_zone0:ro
      ...

Note - on some systems (DietPi comes to mind), /sys/class/thermal/ may not be available.

Reducing Disk IO for Graphs1090

Note - this feature is still somewhat experimental. If you are really attached to your statistics/graphs1090 data, please make sure to back up your mapped drives regularly

If you are using a Raspberry Pi or another type of computer with an SD card, you may already be aware that these SD cards have a limited number of write-cycles that will determine their lifespan. In other words - a common reason for SD card failure is excessive writes to it.

By the nature of having to log lots of data the graphs1090 functionality writes a lot to the SD card. To reduce the number of write cycles, there are a few parameters you can set.

Enabling this functionality will cause graphs1090 to temporarily write all data to volatile memory (/run) instead of persistent disk space (/var/lib/collectd). This data is backed up to persistent disk space in regular intervals and upon (graceful) shutdown of the container.

Note -- there is a chance that the data isn't written back in time (due to power failures, non-graceful container shutdowns, etc), in which case you may lose statistics data that has been generated since the last write-back.

The feature assumes that you have mapped /var/lib/collectd to a volume (to ensure data is persistent across container recreations), and /run as a tmpfs RAM disk, as shown below and also as per the docker-compose.yml example:

volumes:
  - /opt/adsb/tar1090/globe_history:/var/globe_history
---
tmpfs:
  - /run:exec,size=256M
Environment Variable Purpose Default
GRAPHS1090_REDUCE_IO= Optional Set to true to reduce the write cycles for graphs1090 Unset
GRAPHS1090_REDUCE_IO_FLUSH_IVAL Interval (in secs) over which the graphs1090 data is written back to non-volatile storage 1 day

Logging

All logs are to the container's stdout and can be viewed with docker logs -t [-f] container.

Getting help

Please feel free to open an issue on the project's GitHub.

We also have a Discord channel, feel free to join and converse.

Using tar1090 with an SDR

Variable Description Controls which readsb option Default
READSB_GAIN Set gain (in dB). --gain=<db> Max gain
READSB_DEVICE_TYPE If using an SDR, set this to rtlsdr, modesbeast, gnshulc depending on the model of your SDR. If not using an SDR, leave un-set. --device-type=<type> Unset
READSB_RTLSDR_DEVICE Select device by serial number. --device=<serial> Unset
READSB_RTLSDR_PPM Set oscillator frequency correction in PPM. See section Estimating PPM below --ppm=<correction> Unset
READSB_BEAST_SERIAL only when type modesbeast or gnshulc is used: Path to Beast serial device. --beast-serial=<path> /dev/ttyUSB0

Example (devices: section is mandatory)

version: "3.8"

services:
  tar1090:
    image: ghcr.io/sdr-enthusiasts/docker-tar1090:latest
    tty: true
    container_name: tar1090
    hostname: tar1090
    restart: always
    environment:
      - TZ=Australia/Perth
      - LAT=-33.33333
      - LONG=111.11111
      - READSB_DEVICE_TYPE=rtlsdr
      - READSB_GAIN=43.9
      - READSB_RTLSDR_DEVICE=0
    ports:
      - 8078:80
    tmpfs:
      - /run:exec,size=64M
      - /var/log

    devices:
      - /dev/bus/usb:/dev/bus/usb

globe-history or sometimes ironically called destroy-sd-card

See also: https://github.com/wiedehopf/tar1090#0800-destroy-sd-card

    environment:
    ...
      - READSB_EXTRA_ARGS=--write-json-globe-index --write-globe-history /var/globe_history
    ...
    volumes:
      - /hostpath/to/your/globe_history:/var/globe_history

The first part of the mount before the : is the path on the docker host, don't change the 2nd part. Using this volume gives you persistence for the history / heatmap / range outline

Note that this mode will make T not work as before for displaying all tracks as tracks are only loaded when you click them.

Metrics

When using the :telegraf tag, the image contains Telegraf, which can be used to capture metrics from readsb if an output is enabled.

NOTE - READ CAREFULLY: As of 27 April 2023, the latest image no longer contains Telegraf. If you want to send metrics to InfluxDB or Prometheus, please use this image:

services:
  tar1090:
    image: ghcr.io/sdr-enthusiasts/docker-tar1090:telegraf
  ...

Output to InfluxDBv2

In order for Telegraf to output metrics to an InfluxDBv2 time-series database, the following environment variables can be used:

Variable Description
INFLUXDBV2_URL The URL of the InfluxDB instance
INFLUXDBV2_TOKEN The token for authentication
INFLUXDBV2_ORG InfluxDB Organization to write into
INFLUXDBV2_BUCKET Destination bucket to write into

Output to InfluxDBv1.8

In order for Telegraf to output metrics to a legacyInfluxDBv1 time-series database, the following environment variables can be used:

Variable Description
INFLUXDB_URL The URL of the InfluxDB instance
INFLUXDB_DATABASE database in InfluxDB to store data in
INFLUXDB_USERNAME username to authenticate to InfluxDB as
INFLUXDB_PASSWORD password for InfluxDB User

Output to Prometheus

In order for Telegraf to serve a Prometheus endpoint, the following environment variables can be used:

Variable Description
PROMETHEUS_ENABLE Set to true for a Prometheus endpoint on http://0.0.0.0:9273/metrics
PROMETHEUSPORT TCP port for the Prometheus endpoint. Default value is 9273

Minimalist setup

If you want to configure to run with a minimal CPU and RAM profile, and use it only as a SDR decoder but without any mapping or stats/graph websites, then do the following:

  • Set the parameter TAR1090_DISABLE=true. This will prevent the nginx webserver and any websites or associated data collection (collectd, graphs1090, rrd, etc.) to be launched
  • Make sure not to use the dhcr.io/sdr-enthusiasts/docker-adsb-ultrafeeder:telegraf label as Telegraf adds a LOT of resource use to the container

docker-tar1090's People

Contributors

76rhodan avatar bacco007 avatar dependabot[bot] avatar dirkhh avatar dziban303 avatar easternpa avatar fredclausen avatar ge0metrix avatar github-actions[bot] avatar iakat avatar johnex avatar kx1t avatar linirix avatar lpgeek avatar mikenye avatar ngen15 avatar phaeton avatar thedevfreak avatar wiedehopf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

docker-tar1090's Issues

add environment variable to enable FA links

please add an environment variable to enable FlightAware links
(the first sed expression worked for me )

https://github.com/wiedehopf/tar1090#enable-disable-fa-links-in-the-webinterface-previously-enabled-by-default

ENABLE:

sudo sed -i -e 's?.flightawareLinks.?flightawareLinks = true;?' /usr/local/share/tar1090/html/config.js

ENABLE if the above doesn't work (updated from previous version)

echo 'flightawareLinks = true;' | sudo tee -a /usr/local/share/tar1090/html/config.js

DISABLE:

sudo sed -i -e 's?.flightawareLinks.?flightawareLinks = false;?' /usr/local/share/tar1090/html/config.js

Feature Request: make range ring colors configurable, too

tar1090 allows to configure the color of each range ring defined by SiteCirclesDistances by way of similar array named SiteCirclesColors. If less colors are givem in the array than range rings are defined, the last color used for the remaining.

E.g. by appending
SiteCirclesColors = new Array('#ffffff');
to
/usr/local/share/tar1090/html/config.js
inside your running tar1090 container, all range rings become white colored.

The change seems trivial: use another environment variable, e.g. TAR1090_RANGERINGSCOLORS, in
rootfs/etc/cont-init.d/04-tar1090-configure
similar to the already existing TAR1090_RANGERINGSDISTANCES. Only pitfall may be the need of single quotes around the colors. Needs mentioning in documentation or addition while handling the $TAR1090_RANGERINGSCOLORS.

InfluxDB - No Org

Originally logged here: sdr-enthusiasts/docker-adsb-ultrafeeder#5

I've tried to enable the InfluxDB functionality, but getting error reports that I need to provide an Org or OrgId

There does not appear to be an environment variable to set this detail

[telegraf] 2023-04-01T03:40:03Z E! [outputs.influxdb_v2] Failed to write metric to adsb_tbsh (will be dropped: 400 Bad Request): invalid: Please provide either orgID or org

persist range outline

Hi, is there a file or directory I can map to a volume to persist the received range outline between container restarts?

Aircraft database parse error

Possibly related to wiedehopf/tar1090#77 , the aircraft database js files are gzipped and not being parsed correctly in the client, leaving the aircraft type blank and resulting in browser dev console errors:

7c1c6f: Database load error: parsererror at URL: db2/7.js              planeObject.js:2023 
76bd49: Database load error: parsererror at URL: db2/7.js             planeObject.js:2023 
7c7181: Database load error: parsererror at URL: db2/7.js              planeObject.js:2023 

I am able to manually decompress the js files and rename them which solves the issue, it looks like nginx is not returning the Content-Encoding: "gzip" header.

$ curl -I http://192.168.0.216:8078/db2/7.js
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 16 Nov 2020 10:31:01 GMT
Content-Type: application/javascript
Content-Length: 147661
Last-Modified: Mon, 16 Nov 2020 10:29:22 GMT
Connection: keep-alive
ETag: "5fb25482-240cd"
Cache-Control: public, max-age=7776000
Accept-Ranges: bytes

I changed the location stanza in /usr/local/share/tar1090/nginx.conf from

  location ~ db-.*\.js$ {
    gzip off;
    add_header Cache-Control "public, max-age=7776000";
    add_header Content-Encoding "gzip";
  }

to

  location ~ db2/.*\.js$ {
    gzip off;
    add_header Cache-Control "public, max-age=7776000";
    add_header Content-Encoding "gzip";
  }

and it seems to be working correctly:

$ curl -I http://192.168.0.216:8078/db2/7.js
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 16 Nov 2020 10:33:08 GMT
Content-Type: application/javascript
Content-Length: 147661
Last-Modified: Mon, 16 Nov 2020 10:29:22 GMT
Connection: keep-alive
ETag: "5fb25482-240cd"
Cache-Control: public, max-age=7776000
Content-Encoding: gzip
Accept-Ranges: bytes

feature request: add influx and Prometheus data so it’s compatible with what `docker-readsb-protobuf` provides

Add a Telegraf instance that provides data for Influx and Prometheus to ingest. Ideally, the fields and values should be compatible with what docker-readsb-protobuf already provides so the existing Grafana dashboards can be reused.

For Prometheus, I already mapped http://xxx/metrics -> /run/readsb/stats.prom but the data available there is different and much less than what’s generated by docker-readsb-protobuf. Ideally, the additional data should just be added to /run/readsb/stats.prom

For Influx -- I have no idea how that works

Thanks!

--json-trace-interval hardcoded to 15

I have set "READSB_EXTRA_ARGS=--json-trace-interval=1" but it doesn't seem to be honored. When I exec into the container I see the variable set to the correct value but ps shows me

/usr/local/bin/readsb --net-only --quiet --lat 61.255098 --lon 24.056373 --net-connector=adsbx_feeder,30105,beast_in --net-connector=adsbx_readsb,30005,beast_in -

Avare EFB appends data.json to the dump1090 web URL

I'm trying to feed the Avare EFB with the JSON output from tar1090/ultrafeeder. Avare takes a base URL as input and appends data.json to that base URL. tar1090/ultrafeeder uses aircraft.json as the JSON feed for aircraft data.

I only need the Dockerfile for tar1090 to add a symbolic link for aircraft.json to data.json in /run/readsb. I couldn't find the exact place in Dockerfile to add that step, so could you please add it in the appropriate place after /run/readsb is populated?

ln -s /run/readsb/aircraft.json /run/readsb/data.json

(that's lower case L at the beginning, not upper case i)

With that symbolic link in place, I can provide http://:8080/data as the base URL, and Avare appends data.json to tap into the JSON feed. It works and I see the JSON flowing. Unfortunately, Avare currently doesn't like something in the JSON output, but that's a different issue for the makers of Avare. I need to present the JSON to the app first, and this fix makes that happen.

Thanks!

Edit: For cross-reference: https://groups.google.com/g/apps4av-forum/c/svuHklVh8FE

/heatmap is empty

Hi, First of all thanks for your great work!
I've setup readsb connected to my RTLSDR receiver and the following containers are pulling form it: tar1090, graph1090, piaware, rbfeeder, fr24feed, adsbx, opensky

Everything works fine except that when accessing http://dockerhost:8078/?heatmap or http://dockerhost:8078/?heatmap&realHeat like mentioned in the readme, I get an empty map...

The folder /var/globe_history does contain data for each day (ttf files).

Am'I missing something ?

Add options to configure actual range outline

After updating all containers today, I notice a new (thick) outline on the map, showing the max range of aircrafts having seen. I miss the options to configre them:

  • actual_range_outline_color
  • actual_range_outline_width
  • actual_range_outline_dash

(similar to range_outline_*)

tar1090 location does not map to readsb container

The mikenye/docker-tar1090 location does not correctly map to the lat/lon set in mikenye/docker-readsb

The default location is over Manhattan, NY.
Pressing the H (H)ome/Reset Map key on the browser will reset the map on NY.

@wiedehopf suspects that the tar1090 container has its own readsb, if so it will need its own lat lon set as well

RTL's are "blanked" out when starting container

I'm having trouble pinpointing what's going on here, but the basics are:

I have two RTL usb sticks for 1090 and 978 plugged into a Raspberry Pi 4 - when the pi boots, both RTL (which were serialized) display just fine. As soon as I start either ultrafeeder or dump978, the respective RTL then blanks out - which causes both docker images to say they cannot find an RTL that has the supplied serialnumber.

For instance, I can stop the docker service and see RTLs:

$ sudo rtl_sdr -d 0
Found 2 device(s):
  0:  AIRNAV, ADSB_1090, SN: 1090
  1:  Realtek, RTL2838UHIDIR, SN: 978

Using device 0: Generic RTL2832U OEM
rtl_sdr, an I/Q recorder for RTL2832 based DVB-T receivers

However, as soon as I restart the docker service:

$ sudo service docker restart

$ sudo rtl_sdr -d 0
Found 2 device(s):
  0:  , , SN:
  1:  , , SN:

Using device 0: Generic RTL2832U OEM
rtl_sdr, an I/Q recorder for RTL2832 based DVB-T receivers

I thought this might be a power thing, but I've tried both USB-C from an adequate power source, the POE+ hat, and even the RTLs on a powered USB hub that's connected to the pi - all have the same issue.

Any ideas as to what's going on?

Feature Request: Add Timelapse functionality

Would it be possible to include the Timelapse functionality from wiedehopf/timelapse1090 either in the docker-piaware (uses dump1090-fa), or better, in the docker-readsb or docker-tar1090 containers?

This would be a nice addition.

Thanks again for the great work!

ENABLE_978=yes then got 978.json: No such file or directory

Hi, great works!

When adding ENABLE_978=yes to the environment options, I got this in docker logs:

tar1090 | [tar1090] /usr/local/share/tar1090/tar1090.sh: line 104: 978.json: No such file or directory

Then I tried these the error goes away, but the default URL_978 (at http://127.0.0.1/skyaware978) keeps returning 404 Not Found:

docker exec -it tar1090 bash
touch /run/readsb/978.json

Am I missing anything? Thanks!

tar1090 with enable_978, no wget installed

Enabling 978 and pointing url to skyaware978 looks like it grabs json using wget. Which is not installed in container. Install wget fixes issue.

[tar1090] /usr/local/share/tar1090/tar1090.sh: line 209: wget: command not found

Collectd error: Failed to open file "/sys/class/thermal/thermal_zone0/temp": No such file or directory.

First of all thank you for providing this great docker solution!

Unfortunately I'm periodically getting these errors and i.e. replay does not work:

tar1090  | [2023-11-30 16:16:05.667][collectd] [error] table plugin: Failed to open file "/sys/class/thermal/thermal_zone0/temp": No such file or directory.
tar1090  | [2023-11-30 16:16:05.667][collectd] [notice] read-function of plugin `table' failed. Will suspend it for 240.000 seconds. 

I don't see an issue in my docker-compose:

version: "3.8"

services:
  tar1090:
    image: ghcr.io/sdr-enthusiasts/docker-tar1090:latest
    tty: true
    container_name: tar1090
    restart: always
    environment:
      - TZ=Europe/Berlin
      - BEASTHOST=10.0.1.90
      - MLATHOST=10.0.1.90
      - LAT=[redacted]
      - LONG=[redacted]
    volumes:
      - /opt/adsb/tar1090/globe_history:/var/globe_history
      - /opt/adsb/tar1090/timelapse1090:/var/timelapse1090
      - /opt/adsb/tar1090/graphs1090:/var/lib/collectd
      - /proc/diskstats:/proc/diskstats:ro
    # - /run/airspy_adsb:/run/airspy_adsb
    ports:
      - 8078:80
    tmpfs:
      - /run:exec,size=64M
      - /var/log

Support for RTL_TCP

Hi Team,
I currently use this container with an RTL-SDR dongle but I'd like to migrate to RTL_TCP so the SDR can sit in a more convenient location. Is it possible to configure/add support for RTL_TCP as a data source?
Cheers!

Missing dependencies for timelapse1090

Reported via Discord:

I am using mikenye/docker-tar1090 and believe that I have timelapse configured properly. However, I only appear to be getting around 35 minutes of timelapse data on playback - and that is from previous day.

e.g. I am in the UK, so it is currently 13:57 BST - but the timelapse data is only showing 22:06 and 22:41 as start and end times from yesterday.

My config includes the lines:
- ENABLE_TIMELAPSE1090=true - TIMELAPSE1090_INTERVAL=10 - TIMELAPSE1090_HISTORY=24 volumes: - tar1090_timelapse:/var/timelapse1090

EDIT: I have noticed that I have the following entries repeating in the log for this container:
[timelapse1090] /opt/timelapse1090/timelapse1090.sh: line 91: 7za: command not found [timelapse1090] sed: couldn't write 397 items to stdout: Broken pipe [timelapse1090] mv: cannot stat 'temp.gz': No such file or directory

timelapse1090 data not persisting

Running the latest version of docker-tar1090 container. timelapse1090 data does not persist if the container needs to be stopped but heatmap data does. Docker must stop for 10 minutes each night so the server can complete a backup and update cycle. When docker restarts the container, the timelapse1090 data is wiped from the volume when it is restarted. I have tried multiple workarounds to solve this and am coming up empty including mapping the timelapse1090 volume to an external docker volume by adding the following to docker-compose.yml:

volumes:
  timelapse:
    external: 
      name: timelapse

Add the following to tar1090

    volumes:
      - timelapse:/var/timelapse1090

The container will use the external volume but will wipe the volume when it starts up. I have a cron script running that copies the chunk_XXX.gz files every hour and synchronizing the data back to the docker volume path after the sever reboots so I am not loosing data but it would be much more convenient if there were a TIMELAPSE1090_PERSIST flag where if set to true would not wipe the docker storage volume when the container is restarted.

Here is the tar1090 config

tar1090:
image: mikenye/tar1090:latest
tty: true
container_name: tar1090
restart: always
depends_on:
  - readsb
environment:
  - UPDATE_TAR1090=false
  - TZ=${FEEDER_TZ}
  - BEASTHOST=readsb
  - LAT=${FEEDER_LAT}
  - LONG=${FEEDER_LONG}
  - TAR1090_DEFAULTCENTERLAT=${FEEDER_LAT}
  - TAR1090_DEFAULTCENTERLON=${FEEDER_LONG}
  - MLATHOST=mlathub
  - ENABLE_TIMELAPSE1090=true
  - TIMELAPSE1090_INTERVAL=1
  - TIMELAPSE1090_HISTORY=168
  - GZIP_LVL=1
  - TAR1090_FLIGHTAWARELINKS=true
  - TAR1090_PLANECOUNTINTITLE=true
volumes:
  - timelapse:/var/timelapse1090
  - tar1090_heatmap:/var/globe_history
ports:
  - 80:80
tmpfs:
  - /run:exec,size=64M
  - /var/log

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.