Self-hosted 3D flight tracking for your ADS-B receiver.
Live demo with my personal receivers and the ADSB.lol network feed: https://sky.luftaquila.io
Inspired by tar1090 and ADS-B 3D.
- Live traffic, terrain and receiver coverage domes in 3D
- The aircraft even roll and pitch based on ADS-B data!
- Aircraft details, charts, flight playback, worldwide airfields and runway information
| Live 3D traffic, flight details and history | 3D terrain and receiver coverage dome |
|---|---|
|
|
Set RECEIVER_ID to the ID you want to use for your receiver.
curl -fLo compose.yml https://raw.githubusercontent.com/luftaquila/skytrace/main/compose.yml
umask 077
RECEIVER_ID=receiver-01
printf 'SKYTRACE_RECEIVER_TOKENS={"%s":"%s"}\n' "$RECEIVER_ID" "$(openssl rand -hex 32)" > .env
docker compose up -dUse podman compose instead of docker compose if preferred, then open http://127.0.0.1:3000.
See the self-hosting guide for public access, backups and upgrades.
The receiver agent reads readsb-compatible aircraft.json from tar1090, ultrafeeder, dump1090-fa and readsb.
Linux builds are available for ARMv6, ARMv7, ARM64, AMD64 and RISC-V 64.
See the setup guide for details.
Requires Node.js 24 and Go 1.26.
Install dependencies and start the backend:
npm ci
npm --prefix web ci
npm run devStart the web app in another terminal:
npm --prefix web run devTests:
npx playwright install --with-deps chromium
npm run check- OurAirports: airports and runways
- Esri World Imagery: satellite imagery
- Mapterhorn: terrain
- OpenFreeMap: boundaries and place labels
- Community ADS-B aggregator: optional area traffic