TREK: Self-Hosted Travel Planner with Real-Time Maps, Budgets, and AI
TREK v3.1.2 is an AGPL-3.0 self-hosted travel planner — NestJS, React, SQLite, WebSocket sync, PWA, Passkeys, expense splitting, and AI. 6.8k GitHub stars. Run in 30 seconds with Docker.
That is the tagline on TREK — a self-hosted, real-time collaborative travel planner that has climbed to 6.8k GitHub stars and 614 forks while most travel apps still require surrendering itineraries, photos, and location history to a SaaS vendor.
Latest release: v3.1.2 (June 2026), two days after v3.1.1 bug fixes. TREK ships maps, budgets, packing lists, a journey journal, expense splitting, an Atlas of visited countries, AI assistance, SSO, and a installable PWA — all on your hardware, backed by SQLite, synced over WebSockets.
TREK is not a static itinerary PDF generator. It is a live collaborative workspace for trip planning — closer to Wanderlog or TripIt in feature scope, but running on infrastructure you control.
Core modules
Module
What it does
Dashboard
Trip overview with 3D map visualization
Trip planner
Day plans, routes, POIs
Journey journal
Trip logging and narrative
Costs
Budget tracking with expense splitting
Packing lists
Shared checklists per trip
Atlas
Map of visited countries (geoBoundaries data)
Vacay planner
Seasonal / vacation planning workflows
Admin panel
Users, backups, auto-backup schedules
Real-time sync means multiple travelers can edit the same trip simultaneously — changes propagate over WebSocket (/ws) without manual refresh. That architecture choice matters for group trips where one person adds a restaurant while another adjusts the route.
AI built in
TREK includes AI features in the product surface (per the README hero). The repository ships MCP.md — Model Context Protocol documentation for integrating external AI tools with TREK's data layer. If you are building agent workflows that need structured trip context (dates, POIs, budgets), MCP is the integration path rather than scraping the UI.
Or read the generated credentials from the container log:
bash
docker logs trek
Critical volume mount rule
Mount only ./data and ./uploads. Never mount a volume at /app — doing so hides the application code baked into the image and the container fails with Cannot find module 'tsconfig-paths/register'. If you previously used a full /app mount, switch to the two-directory pattern; your existing data in data/ and uploads/ is preserved.
Path
Contents
./data/travel.db
SQLite database
./data/logs/trek.log
Auto-rotated logs
./uploads/
User uploads
Production Deployment
Docker Compose
Full compose examples with secure defaults are in the TREK docs. Production pattern: TLS-terminating reverse proxy in front, WebSocket upgrade support on /ws.
See charts/README.md for values — including PVC annotation support added in recent releases.
Unraid
TREK ships an unraid-template.xml and ca_profile.xml for Unraid Community Apps submission — relevant if your homelab already runs Immich or other self-hosted media stacks.
Reverse proxy
TREK requires WebSocket upgrade support on /ws for real-time sync. Nginx and Caddy examples are in the repository docs. Without WebSocket passthrough, collaboration appears to work locally but sync breaks behind the proxy.
The script creates a timestamped DB backup before changes and prompts for old and new keys (input is not echoed).
Authentication stack:
JWT for session tokens
OAuth 2.1 + OIDC for enterprise SSO
Passkeys (WebAuthn) for passwordless login
TOTP MFA for second factor
Backups are configurable in the Admin Panel — manual create/restore plus scheduled auto-backups with retention policies.
TREK vs SaaS Travel Apps
Dimension
TREK (self-hosted)
Wanderlog / TripIt (SaaS)
Data location
Your server / homelab
Vendor cloud
Real-time collab
WebSocket on your infra
Vendor-managed
Cost
Server + maintenance
Subscription
Customization
Full source (AGPL)
None
Offline / PWA
Installable PWA
Native apps only
AI integration
MCP documented
Vendor-locked
TREK fits the same self-hosting philosophy as files.md local-first notes and Immich for photos: your data, your rules, with AGPL ensuring network-service modifications stay open if you offer TREK commercially to others.
Atlas and Data Sources
The Atlas module visualizes visited countries and sub-national regions. Boundaries come from geoBoundaries (Runfola et al., 2020), licensed CC BY 4.0. Full third-party attributions are in NOTICE.md.
Weather data uses Open-Meteo — no API key required, which keeps homelab setup friction low.
Who Should Use TREK
Good fit:
Families or friend groups planning shared trips with live editing
Privacy-conscious travelers who do not want itineraries in a third-party cloud
Collaborative task boards — different domain, same real-time workflow idea
Summary
TREK v3.1.2 is the most complete open-source answer to "why does my trip planner need to live in someone else's cloud?" — real-time collaboration, 3D maps, budgets with expense splitting, packing lists, journal, Atlas, PWA install, Passkeys, and documented MCP hooks, deployable in one Docker command.
6.8k stars suggest the audience was waiting for this. If you are already self-hosting photos and notes, adding trips is a natural next tab.