AirTrail
A modern, open-source personal flight tracking system
Alternative to: flighty, app in the air, tripit
AirTrail is a self-hosted web application for tracking flights and viewing flight history. It plots all your flights on an interactive world map, generates statistics from your flight history, and supports multiple users with OAuth-based authentication and flight sharing. It can import flight data from services like MyFlightRadar24, App in the Air, TripIt, and Flighty.
AirTrail Docker Compose example
Self-host AirTrail on your own server, homelab, or VPS starting from this Docker Compose example.
It runs AirTrail in Docker containers using the official postgres:16-alpine, johly/airtrail:latest images, with persistent volumes and automatic restarts preconfigured.
Review the environment variables and adjust them to your setup, save the file as compose.yml (or docker-compose.yml), and start the stack with docker compose up -d.
services:
db:
image: postgres:16-alpine
environment:
# Internal Postgres credentials (database is only reachable inside the compose network)
POSTGRES_DB: "airtrail"
POSTGRES_USER: "airtrail"
# Use only A-Za-z0-9 characters to avoid issues with the connection string
POSTGRES_PASSWORD: "password"
volumes:
- db_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U airtrail -d airtrail"]
interval: 5s
timeout: 5s
retries: 5
restart: unless-stopped
airtrail:
image: johly/airtrail:latest
depends_on:
db:
condition: service_healthy
environment:
# Public URL the app is accessed from. For https behind a reverse proxy you may need to append :443.
# Multiple domains can be passed as a comma-separated list.
ORIGIN: "http://localhost:3000"
# Connection string to the bundled Postgres — the password must match POSTGRES_PASSWORD above
DB_URL: "postgres://airtrail:password@db:5432/airtrail"
# Directory (inside the container, mapped to the uploads volume) where uploaded files are stored
UPLOAD_LOCATION: "/app/uploads"
volumes:
- uploads:/app/uploads
restart: unless-stopped
volumes:
db_data:
uploads: Prefer a managed setup? WinterFlow installs, configures, and updates AirTrail for you using this same Docker Compose configuration.