selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

GitHub
jetlog logo

Self-host jetlog

v1.2

Personal flight tracker with world map and statistics

ReleaseOpen SourceGPL-2.0
Updated4 months ago
LanguageTypescript
Setup difficultyEasy
MobileResponsive
Stars
350
Port
3000 (HTTP web interface)
Docker
pbogre/jetlog
Install with Docker Compose
Jetlog homepage showing flight dashboardAll flights view with list and map

What is jetlog?

Jetlog is a self-hosted personal flight tracker and viewer built for aviation enthusiasts who want to log their flights privately. It provides a world map visualization of all recorded flights, statistical summaries of travel history, and a responsive web interface. Users can add, edit, and delete flights manually or import them from MyFlightRadar24 exports and custom CSV files, with export options to CSV and iCal formats. The application uses JWT-based authentication with a default admin account, supports multiple users, and optionally integrates with the adsbdb API for automatic flight data fetching from flight numbers. It runs as a single Docker container (pbogre/jetlog) with an embedded SQLite database, requiring only a data volume and a secret key. The project is licensed under GPL-2.0 and actively maintained with regular releases.

Should you self-host jetlog?

jetlog scores 49/100 on selfhost.directory (how scoring works) and ranks #4 of 8 in Travel. It has 350 GitHub stars.

It shipped 3 stable releases in the past year. The latest, v1.2, came out on 26 June 2026. New versions land roughly every 4 months.

Setup is easy: most people get it running in one sitting. An official Docker image is available. It is GPL-2.0-licensed and written mostly in Typescript.

Its closest alternative on selfhost.directory is TREK (76/100, 15 179 stars). It scores higher overall, so compare the two before you pick. See jetlog vs TREK side by side.

Features

  • CSV Export
  • Custom CSV import
  • Data import from MyFlightRadar24
  • External API integration (adsbdb)Can be disabled via ENABLE_EXTERNAL_APIS=false
  • Flight CRUD operations
  • Flight statistics
  • iCal export
  • Multi-user support
  • Path prefix support
  • SSO/IAM header authenticationAdvanced use only; can introduce security risks if misconfigured
  • World map flight visualization

jetlog README

How to install jetlog

Install jetlog with Docker Compose

Environment variables
JETLOG_PORT, SECRET_KEY, TOKEN_DURATION, ENABLE_EXTERNAL_APIS, AUTH_HEADER, PGID, PUID, APP_PATH, DATA_PATH, USE_IPV6, JETLOG_BASE_URL

services: jetlog: image: pbogre/jetlog:latest volumes: - /your/data/path:/data environment: JETLOG_PORT: 3000 # optional, default is 3000 SECRET_KEY: yourLongAndRandomStringOfCharacters123! restart: unless-stopped ports: - 3000:3000

Requires a data volume path and a secure SECRET_KEY. Default admin user is 'admin' with password 'admin' — change on first login.

How to configure jetlog

  • APP_PATH/appContainer application path

    Container application path

  • AUTH_HEADERAuthentication header for SSO/IAM solutions (advanced use only)

    Authentication header for SSO/IAM solutions (advanced use only)

  • DATA_PATH/dataContainer data path for persistent storage

    Container data path for persistent storage

  • ENABLE_EXTERNAL_APIStrueWhether to enable external APIs like adsbdb for automatic flight fetching

    Whether to enable external APIs like adsbdb for automatic flight fetching

    values: true,false

  • JETLOG_BASE_URL/Path prefix for running under a subpath (requires reverse proxy)

    Path prefix for running under a subpath (requires reverse proxy)

  • JETLOG_PORT3000HTTP port the application listens on

    HTTP port the application listens on

  • PGID1000Group ID for Jetlog process

    Group ID for Jetlog process

  • PUID1000User ID for Jetlog process

    User ID for Jetlog process

  • SECRET_KEYJWT secret used for authentication (required)

    JWT secret used for authentication (required)

  • TOKEN_DURATION7Time in days before JWT token expires

    Time in days before JWT token expires

  • USE_IPV6falseSet to true to bind to IPv6 (::) instead of IPv4 (0.0.0.0)

    Set to true to bind to IPv6 (::) instead of IPv4 (0.0.0.0)

    values: true,false

jetlog releases & version history

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…