Sign inSign up

thomx/fr24feed-piaware

By thomx

Updated 4 months ago

Docker image of dump1090-fa, fr24feed, FlightAware, adsbexchange and Plane Finder.

Image
37

1M+

thomx/fr24feed-piaware repository overview

Fr24feed and FlightAware with dump1090 as a Docker image

Build status GitHub issues

Latest image version Docker Image Size (latest semver)

License

Please consider following this project's author, Thom-x, and consider starring the project to show your ❤️ and support.

Docker image of Fr24feed, FlightAware and dump1090.

Feed FlightRadar24 and FlightAware, allow you to see the positions of aircrafts on a map.


Image of dump1090 webapp

Requirements

  • Docker
  • RTL-SDR DVBT USB Dongle (RTL2832)

Getting started

Run :

docker run -d -p 8080:8080 -p 8754:8754 \
	--device=/dev/bus/usb:/dev/bus/usb \
	-v "/etc/localtime:/etc/localtime:ro" \
	-e "FR24FEED_FR24KEY=MY_SHARING_KEY" \
	-e "PIAWARE_FEEDER_DASH_ID=MY_FEEDER_ID" \
	-e "HTML_SITE_LAT=MY_SITE_LAT" \
	-e "HTML_SITE_LON=MY_SITE_LON" \
	-e "HTML_SITE_NAME=MY_SITE_NAME" \
	-e "PANORAMA_ID=MY_PANORAMA_ID" \
	-e "LAYERS_OWM_API_KEY=MY_OWM_API_KEY" \
	-e "SERVICE_ENABLE_ADSBEXCHANGE=true" \
	-e "ADSBEXCHANGE_UUID=MY_UUID" \
	-e "ADSBEXCHANGE_STATION_NAME=MY_STATION_NAME" \
	-e "MLAT_EXACT_LAT=MY_EXACT_SITE_LAT" \
	-e "MLAT_EXACT_LON=MY_EXACT_SITE_LON" \
	-e "MLAT_ALTITUDE_MSL_METERS=MY_SITE_ALT_MSL_METERS" \
	-e "SERVICE_ENABLE_PLANEFINDER=true" \
	-e "PLANEFINDER_SHARECODE=dslmfksdlmk" \
	--tmpfs /run:exec,size=32M \
	--tmpfs /planefinder/log:exec,size=32M \
	--tmpfs /usr/lib/fr24/public_html/data:size=32M \
	thomx/fr24feed-piaware

Go to http://dockerhost:8080 to view a map of reveived data. Go to http://dockerhost:8754 to view the FR24 Feeder configuration panel.

Note : remove -e "PANORAMA_ID=MY_PANORAMA_ID" or -e "LAYERS_OWM_API_KEY=MY_OWM_API_KEY" from the command line if you don't want to use this feature.
Note : --tmpfs is used to avoid writing data on HDD/SD Card
Note : -v "/etc/localtime:/etc/localtime:ro" is needed for MLAT, or you can have issues with time synchronization.

Configuration

Common

To disable starting a service you can add an environement variable :

Environment VariableValueDescriptionDefault value
SERVICE_ENABLE_DUMP1090falseDisable dump1090 servicetrue
SERVICE_ENABLE_PIAWAREfalseDisable piaware servicetrue
SERVICE_ENABLE_FR24FEEDfalseDisable fr24feed servicetrue
SERVICE_ENABLE_HTTPfalseDisable http servicetrue
SERVICE_ENABLE_IMPORT_OVER_NETCATfalseDisable import over netcatfalse
SERVICE_ENABLE_ADSBEXCHANGEfalseDisable adsbexchange feedfalse
SERVICE_ENABLE_PLANEFINDERfalseDisable plane finder feedfalse

Ex : -e "SERVICE_ENABLE_HTTP=false"

FlightAware

Resgister on https://flightaware.com/account/join/.

Run :

docker run -it --rm \
	-e "SERVICE_ENABLE_DUMP1090=false" \
	-e "SERVICE_ENABLE_HTTP=false" \
	-e "SERVICE_ENABLE_FR24FEED=false" \
	-e "SERVICE_ENABLE_PIAWARE=false" \
	thomx/fr24feed-piaware /usr/bin/piaware -plainlog

When the container starts you should see the feeder id, note it. Wait 5 minutes and you should see a new receiver at https://fr.flightaware.com/adsb/piaware/claim (use the same IP as your docker host), claim it and exit the container.

Add the environment variable PIAWARE_FEEDER_DASH_ID with your feeder id.

Environment VariableConfiguration propertyDefault value
PIAWARE_FEEDER_DASH_IDfeeder-id (required)empty
PIAWARE_RECEIVER_DASH_TYPEreceiver-typeother
PIAWARE_RECEIVER_DASH_HOSTreceiver-host127.0.0.1
PIAWARE_RECEIVER_DASH_PORTreceiver-port30005

Ex : -e "PIAWARE_RECEIVER_DASH_TYPE=other"

FlightRadar24

Run :

docker run -it --rm \
	-e "SERVICE_ENABLE_DUMP1090=false" \
	-e "SERVICE_ENABLE_HTTP=false" \
	-e "SERVICE_ENABLE_PIAWARE=false" \
	-e "SERVICE_ENABLE_FR24FEED=false" \
	thomx/fr24feed-piaware /bin/bash

Then : /fr24feed/fr24feed/fr24feed --signup and follow the instructions, for technical steps, your answer doesn't matter we just need the sharing key at the end.

Finally to see the sharing key run cat /etc/fr24feed.ini, you can now exit the container.

Add the environment variable FR24FEED_FR24KEY with your sharing key.

Environment VariableConfiguration propertyDefault value
FR24FEED_RECEIVERreceiverbeast-tcp
FR24FEED_FR24KEYfr24key (required)empty
FR24FEED_HOSThost127.0.0.1:30005
FR24FEED_BSbsno
FR24FEED_RAWrawno
FR24FEED_LOGMODElogmode1
FR24FEED_LOGPATHlogpath/tmp
FR24FEED_MLATmlatyes
FR24FEED_MLAT_DASH_WITHOUT_DASH_GPSmlat-without-gpsyes

Ex : -e "FR24FEED_FR24KEY=0123456789"

ADS-B Exchange

Add the environment variable ADSBEXCHANGE_UUID with a UUID generated by https://www.adsbexchange.com/myip/gen-uuid/. In case of multiple receivers, please use a different UUID for each receiver.

Add the environment variable SERVICE_ENABLE_ADSBEXCHANGE and set it to true.

Environment VariableConfiguration propertyDefault value
SERVICE_ENABLE_ADSBEXCHANGEenable this feed clientfalse
ADSBEXCHANGE_UUIDuuid (required)empty
ADSBEXCHANGE_STATION_NAMEstation nameempty
ADSBEXCHANGE_MLATmlattrue

Configure the MLAT coordinates so that adsbexchange MLAT can work. (see its own section below) If you don't want to supply your exact coordinates, please set the ADSBEXCHANGE_MLAT environment variable to false. (you won't get MLAT results and won't contribute to MLAT)

Add the environment variable ADSBEXCHANGE_STATION_NAME, it will be used for the mlat map / sync status. You can check that your MLAT is working correctly by searching for your station name here: https://map.adsbexchange.com/mlat-map/ (MLAT map marker is snapped to a 5 mile grid and then offset randomly to avoid stacking markers, the precise lat / lon for MLAT are not publicly accessible at adsbexchange)

The ADS-B Exchange Anywhere map will be available at: https://www.adsbexchange.com/api/feeders/?feed=MY_UUID

Ex : -e "SERVICE_ENABLE_ADSBEXCHANGE=true" -e "ADSBEXCHANGE_UUID=8398f51e-a61d-11ec-b909-0242ac120002" -e "ADSBEXCHANGE_STATION_NAME=MyStation"

Exact coordinates for MLAT

Get your exact coordinates and altitude above sealevel in meters from one these websites:

It's important for MLAT accuracy that these aren't off by more than about 10 m / 30 ft.

Environment VariableConfiguration propertyDefault value
MLAT_EXACT_LATdecimal latitudeempty
MLAT_EXACT_LONdecimal longitudeempty
MLAT_ALTITUDE_MSL_METERSaltitude above MSL in mempty

Plane Finder

First-time users should obtain a PlaneFinder Share Code.

In order to obtain a PlaneFinder Share Code, we will start a temporary container running pfclient, which will run through a configuration wizard and generate a share code.

Run :

docker run -it --rm \
	-p 30053:30053 \
	-e "SERVICE_ENABLE_DUMP1090=false" \
	-e "SERVICE_ENABLE_HTTP=false" \
	-e "SERVICE_ENABLE_PIAWARE=false" \
	-e "SERVICE_ENABLE_FR24FEED=false" \
	thomx/fr24feed-piaware /planefinder/pfclient

Once the container has started, you should see a message such as:

2020-04-11 06:45:25.823307 [-] We were unable to locate a configuration file and have entered configuration mode by default. Please visit: http://172.22.7.12:30053 to complete configuration.

At this point, open a web browser and go to http://dockerhost:30053. Replace dockerhost with the IP address of your host running Docker. You won't be able to use the URL given in the log output, as the IP address given will be the private IP of the docker container.

In your browser, go through the configuration wizard. When finished, you'll be given a PlaneFinder Share Code. Save this in safe place.

You can now kill the container by pressing CTRL-C.

Add the environment variable SERVICE_ENABLE_PLANEFINDER and set it to true.

Environment VariableConfiguration propertyDefault value
PLANEFINDER_SHARECODEgenerated share code (required)empty

Ex : -e "SERVICE_ENABLE_PLANEFINDER=true" -e "PLANEFINDER_SHARECODE=65dsfsd56f"

Add custom properties

Note : you can add any property to either fr24feed or piaware configuration file by adding an environment variable starting with PIAWARE_... or FR24FEED_....

Example :

Environment VariableConfiguration propertyvalueConfiguration file
FR24FEED_TEST=valuetestvaluefr24feed.init
FR24FEED_TEST_DASH_TEST=value2test-testvalue2fr24feed.init
PIAWARE_TEST=valuetestvaluepiaware.conf

Dump1090 & Web UI

Environment VariableDefault valueDescription
HTML_SITE_LAT45.0
HTML_SITE_LON9.0
HTML_SITE_NAMEMy Radar Site
HTML_DEFAULT_TRACKERFlightAwareWhich flight tracker website to use by default. Possible values are FlightAware and Flightradar24
HTML_RECEIVER_STATS_PAGE_FLIGHTAWAREemptyURL of your receiver's stats page on FlightAware. Usually https://flightaware.com/adsb/stats/user/
HTML_RECEIVER_STATS_PAGE_FLIGHTRADAR24emptyURL of your receiver's stats page on Flightradar24. Usually https://www.flightradar24.com/account/feed-stats/?id=
HTML_FR24_FEEDER_STATUS_PAGEemptyURL of your local FR24 Feeder Status page. Usually http://:8754/ (depends on the port you indicated when starting the container)
DUMP1090_ADDITIONAL_ARGSemptyAdditial arguments for dump1090 e.g.: --json-location-accuracy 2

Ex : -e "HTML_SITE_NAME=My site"

DUMP1090 forwarding

Environment VariableDefault valueDescription
SERVICE_ENABLE_IMPORT_OVER_NETCATfalseEnable netcat forwarding the beast-output of a remote dump1090 server to the local dump1090 beast-input
DUMP1090_LOCAL_PORTemptyMust be the same port as specified as --net-bi-port in DUMP1090_ADDITIONAL_ARGS
DUMP1090_REMOTE_HOSTemptyIP of remote dump1090 server
DUMP1090_REMOTE_PORTemptyPort of remote dump190 server specified as argument --net-bo-port on remote system

RTL_TCP forwarding

WARNING: This kind of forwarding is using a lot of bandwidth and could be unstable in WiFi environments.

Environment VariableDefault valueDescription
RTL_TCP_OVER_NETCATfalseUse dump1090 in combination with netcat to feed data from rtl_tcp server. (Requires appox. 35-40Mbit/s). Example RTL_TCP command: ./rtl_tcp -a 0.0.0.0 -f 1090000000 -s 2400000 -p 30005 -P 28 -g -10
RTL_TCP_REMOTE_HOSTemptyIP of rtl_tcp server
RTL_TCP_REMOTE_PORTemptyPort of rtl_tcp server

Terrain-limit rings (optional):

If you don't need this feature ignore this.

Create a panorama for your receiver location on http://www.heywhatsthat.com.

Environment VariableDefault valueDescription
PANORAMA_IDPanorama id
PANORAMA_ALTS1000,10000Comma seperated list of altitudes in meter

Note : the panorama id value correspond to the URL at the top of the panorama http://www.heywhatsthat.com/?view=XXXX, altitudes are in meters, you can specify a list of altitudes.

Ex : -e "PANORAMA_ID=FRUXK2G7"

If you don't want to download the limit every time you bring up the container you can download http://www.heywhatsthat.com/api/upintheair.json?id=${PANORAMA_ID}&refraction=0.25&alts=${PANORAMA_ALTS} as upintheair.json and mount it in /usr/lib/fr24/public_html/upintheair.json.

Open Weather Map layers:

If you don't need this feature ignore this.

If you provide an API key OWM layers will be available.
Create an account and get an API key on https://home.openweathermap.org/users/sign_up.
Be aware that OWM provides a free trier for its API, after some time you will have to pay.
See: https://openweathermap.org/price

Environment VariableDefault valueDescription
LAYERS_OWM_API_KEYOpen Weather Map API Key

Ex : -e "LAYERS_OWM_API_KEY=dsf1ds65f4d2f65g"

Build it yourself

Clone this repo.

docker build .

Tag summary

Content type

Image

Digest

sha256:582c60475

Size

227.1 MB

Last updated

4 months ago

docker pull thomx/fr24feed-piaware