Comment on page
If you wish to feed Plane.watch, follow the steps below.
Plane.watch is the end product of a Wouldn't it be cool if? statement. It is an ADS-B aggregation project by members of SDR-Enthusiasts. It is currently completely non-commercial, run by members of the community as a passion project, and backed by an Australian-based Not-for-Profit association.
The docker image
ghcr.io/plane-watch/docker-plane-watchcontains the plane.watch feeder software and all of its required prerequisites and libraries. This needs to run in conjunction with
ultrafeeder(or another Beast provider).
When you save your feeder, an API Key will be generated. Take note of this, as it will be required below.
Inside your application directory (
/opt/adsb), edit the
.envfile using your favourite text editor. Beginners may find the editor
nanoeasy to use:
This file holds all of the commonly used variables (such as our latitude, longitude and altitude). We're going to add our plane.watch variables to this file. Add the following lines to the file:
YOURAPIKEYwith the API KEY that was provided the previous step.
docker-compose.ymlfile that was created when deploying
Append the following lines to the end of the file (inside the
To explain what's going on in this addition:
- We're creating a container called
planewatch, from the image
- We're passing several environment variables to the container:
BEASTHOST=ultrafeederto inform the feeder to get its ADSB data from the container
ultrafeederover our private
LATwill use the
FEEDER_LATvariable from your
LONGwill use the
FEEDER_LONGvariable from your
ALTwill use the
FEEDER_ALT_Mvariable from your
TZwill use the
FEEDER_TZvariable from your
API_KEYwill use the
PW_API_KEYvariable from your
- We're using
tmpfsfor volumes that have regular I/O. Any files stored in a
tmpfsmount are temporarily stored outside the container's writable layer. This helps to reduce:
- The size of the container, by not writing changes to the underlying container; and
- SD Card or SSD wear
Once the file has been updated, issue the command
docker compose up -din the application directory to apply the changes and bring up the
planewatchcontainer. You should see the following output:
ultrafeeder is up-to-date
You can see from the output above that the
ultrafeedercontainer was left alone (as the configuration for this container did not change), and a new container
We can view the logs for the environment with the command
docker compose logs, or continually "tail" them with
docker compose logs -f. We should now see logs from our newly created
[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[cont-init.d] executing container initialization scripts...
[cont-init.d] 01-timezone: executing...
[cont-init.d] 01-timezone: exited 0.
[cont-init.d] 02-sanity_check: executing...
[cont-init.d] 02-sanity_check: exited 0.
[services.d] starting services
2023-05-27T09:09:49+08:00 INF plane.watch feeder started version=20230526
2023-05-27T09:09:49+08:00 INF listening for incoming connections dst=feed.push.plane.watch:12346 listen=127.0.0.1:12346 proto=MLAT
2023-05-27T09:09:49+08:00 INF starting tunnel dst=feed.push.plane.watch:12345 proto=BEAST src=readsb:30005
2023-05-27T09:09:49+08:00 INF connection established dst=feed.push.plane.watch:12345 proto=BEAST src=readsb:30005
[mlat-client] Sat May 27 09:09:54 2023 mlat-client 0.2.11 starting up
[mlat-client] Sat May 27 09:09:54 2023 Listening for Beast-format results connection on port 30105
2023-05-27T09:09:54+08:00 INF connection established dst=feed.push.plane.watch:12346 listen=127.0.0.1:12346 proto=MLAT src=127.0.0.1:35492
[mlat-client] Sat May 27 09:09:54 2023 Connected to multilateration server at 127.0.0.1:12346, handshaking
[mlat-client] Sat May 27 09:09:59 2023 Server says:
[mlat-client] Sat May 27 09:09:59 2023 Handshake complete.
[mlat-client] Sat May 27 09:09:59 2023 Compression: zlib2
[mlat-client] Sat May 27 09:09:59 2023 UDP transport: disabled
[mlat-client] Sat May 27 09:09:59 2023 Split sync: disabled
[mlat-client] Sat May 27 09:09:59 2023 Input connected to readsb:30005
[mlat-client] Sat May 27 09:09:59 2023 Input format changed to BEAST, 12MHz clock
2023-05-27T09:14:49+08:00 INF statistics bytesRxLocal=247548 bytesRxRemote=0 bytesTxLocal=0 bytesTxRemote=247548 proto=BEAST
2023-05-27T09:14:49+08:00 INF statistics bytesRxLocal=38354 bytesRxRemote=785 bytesTxLocal=785 bytesTxRemote=38354 proto=MLAT