Group trips die in the shared Google Sheet: three tabs named "FINAL v2," someone edits column D on their phone, and the hotel confirmation PDF lives in a thread nobody can find at the airport. You do not need another SaaS that mines your itinerary for ads — you need one place where maps, bookings, costs, and packing lists stay in sync while everyone is still arguing about dinner.
TREK (~15k stars, AGPL-3.0) is a self-hosted travel planner built for that mess. Real-time collaboration over WebSockets, interactive maps, day-by-day drag-and-drop planning, budgets with split expenses, packing lists, reservations (including flight and hotel imports), optional journal and "Atlas" travel stats — plus a proper PWA you can install on a phone without an app store. Think TripIt meets a whiteboard, on your server.
What TREK actually does
Core planning:
- Day plans — drag places, notes, and bookings between days; map markers drop straight onto a schedule
- Maps — Leaflet, Mapbox GL, or MapLibre (OpenFreeMap needs no token); routes via OSRM, public transit via Transitous
- Place search — Google Places if you bring a key, otherwise OpenStreetMap; POI explore over Overpass
- Import/export — Google Maps and Naver shared lists, GPX/KML/KMZ; export GPX and ICS calendars
- Weather — 16-day Open-Meteo forecast, archive fallback for dates farther out
Money and logistics:
- Reservations — flights with legs and timezones, hotels spanning nights, 16 booking types
- Booking import — EML, PDF, PKPass, HTML via KDE's KItinerary extractor (bundled in the Docker image)
- Costs — split expenses in cents, multiple payers, settle-up suggestions, CSV export
- Packing lists and to-dos — templates, assignees, reminders
Collaboration:
- Live sync when multiple people have the same trip open
- Members, guests, invite links — granular permissions on 16 trip actions
- Collab add-ons — group chat, shared notes, polls, "What's Next" list (each toggled by admin)
- Public read-only share for friends who will not create accounts
Extras admins can switch on: Journey journal (Immich/Synology photo hooks), Vacay leave calendar, plugin system with sandboxed extensions, optional MCP server for AI agents (OAuth, scoped tools), and offline mode with queued writes when connectivity drops mid-layover.
Why self-host a trip planner?
Itineraries are sensitive. Flight PNRs, hotel addresses, who's travelling together, spend levels — that is not data you casually park on a freemium trip app with unclear retention.
Real-time without a third-party sync bus. Your instance, your WebSocket server, your backup zip — including scheduled hourly/daily backups with encrypted secrets inside the archive.
SSO and policy. OIDC (Authentik, Keycloak, Google), optional OIDC-only mode, 2FA, passkeys, per-IP rate limits — features enterprises expect, but under your admin panel.
Canadian hosting angle. Trip data, uploaded PDFs, and chat land in volumes you control on a Canadian VPS — easier to explain than "our vendor is US-based but GDPR-certified."
Privacy knob for place search. By default TREK can call the vendor's Places API at places.liketrek.com. Set TREK_PLACES_ENABLED=false to keep geocoding on OpenStreetMap or your own keys only — documented explicitly for self-hosters who do not want outbound search telemetry.
What running it takes
Production Docker image: mauriceboe/trek:latest (also on Docker Hub). Compose exposes port 3000, mounts ./data and ./uploads, and recommends ENCRYPTION_KEY from openssl rand -hex 32.
docker compose up -d
The container runs read-only root with dropped capabilities — nicer than your average Node trip app. Set APP_URL, ALLOWED_ORIGINS, and TRUST_PROXY + FORCE_HTTPS behind Caddy or nginx. First boot can seed an admin via ADMIN_EMAIL / ADMIN_PASSWORD when no users exist.
RAM: plan 2 GB for a small family instance; more if you enable plugins, heavy file uploads (50 MB files, 500 MB video cap), or many concurrent collaborators. Optional S3-compatible storage backends replicate uploads off local disk — configure in admin.
Optional Mapbox token for 3D buildings; Google Places key for richer search. Without keys, OSM + OpenFreeMap still work — just expect leaner place metadata.
AGPL-3.0: fine for internal or family use; if you modify and offer TREK as a multi-tenant service to outsiders, understand copyleft obligations.
Who it's for (and who should skip it)
Good fit: friend groups and extended families planning multi-city trips, ski clubs, agencies running repeatable retreat itineraries, anyone who outgrew spreadsheets but does not want TripIt Premium.
Maybe skip it: solo travellers who only need a notes app; teams that refuse to run Node + persistent volumes; orgs that need a vendor SOC2 report tomorrow (hosted demo at demo.liketrek.com is for trials, not your production contract data).
Hosting it in Canada
We deploy collaborative apps like TREK on Canadian Docker hosting — TLS, automated volume backups, SMTP for notifications, and firewall rules so your trip planner is not the next random port scan prize.
Tell us traveller count, SSO needs, and whether place search must stay fully on-prem — we'll size the box and walk through ENCRYPTION_KEY and backup retention on day one.