Try describing what you need:

TREK logo

TREK

★ 15.4k
GNU Affero General Public License v3.0Open Source — No PaywallSingle Container — single container — minimal hosting footprintDockerNo external DB7+ active committers (12mo)

About

TREK is a self-hosted travel planning platform designed for trips that involve multiple people, detailed logistics, and rich media. It combines itinerary planning with maps, route optimization,...

Community Ratings

No ratings yet
TREK, a tour of the app

Features

  • day plans
  • maps
  • places search
  • route planning
  • public transport itineraries
  • trip import/export
  • weather forecasts
  • bookings and costs
  • real-time collaboration
  • journal and photo book export

Details

Last Updated
Nov 7, 2026
Created
Mar 19, 2026
Install Methods
docker
Requirements
WebSocketLeafletMapbox GL or MapLibre GLOSRM or ValhallaTransitousOpen-MeteoFrankfurterOpenStreetMapOpenFreeMap
Default Port
3000web app
Authentication
local
API
WEBSOCKET
Backup & Export
native-exportapi-export
Runtime / Stack
DockerK8S
Privacy & Independence
Cloud: Optional
User Model
Multi-User
Theming
Dark modeCustom themes
Deployment

Deployment: Docker Compose ✓Single Container — minimal hosting footprintsingle container

Run TREK yourself

Pick how much you want to manage.

1 more way to host

Some links earn us a commission. netcup pays us one and is our preferred VPS host.

Is this your project? Sponsor a listing

Run TREK with Docker Compose

Compose file from the TREK project repository.

1 service

no resource limits declared

needs persistent storage (2 volumes)

docker-compose.yml · @ d805774 · scanned Nov 3, 2026

services:
  app:
    image: mauriceboe/trek:latest
    container_name: trek
    read_only: true
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETUID
      - SETGID
    tmpfs:
      - /tmp:noexec,nosuid,size=128m
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - PORT=3000
      - ENCRYPTION_KEY=${ENCRYPTION_KEY:-} # Recommended. Generate with: openssl rand -hex 32. If unset, falls back to data/.jwt_secret (existing installs) or auto-generates a key (fresh installs).
      - TZ=${TZ:-UTC} # Timezone for logs, reminders and scheduled tasks (e.g. Europe/Berlin)
      - LOG_LEVEL=${LOG_LEVEL:-info} # info = concise user actions; debug = verbose admin-level details
#      - TREK_WIKI_DIR=/app/wiki # Where the in-app Help pages (/help) read their content from. Leave unset: the image ships the wiki at /app/wiki and finds it automatically. Only set this to serve your own docs, mounted into the container. If the path does not exist, Help falls back to fetching the public GitHub wiki (needs outbound network, and tracks the latest release rather than your version).
#      - DEFAULT_LANGUAGE=en # Default language on the login page for users with no saved preference. Browser/OS language is auto-detected first; this is the fallback. Supported: de, en, es, fr, hu, nl, br, cs, pl, ru, zh, zh-TW, it, ar
#      - SESSION_DURATION=30d # How long users stay logged in (trek_session JWT + cookie maxAge). Accepts: 1h | 12h | 7d | 30d | 90d. Default: 24h
#      - SESSION_DURATION_REMEMBER=30d # Session length when "Remember me" is ticked at login: longer-lived JWT + persistent cookie that survives browser restarts. Same format as SESSION_DURATION. Default: 30d
      - ALLOWED_ORIGINS=${ALLOWED_ORIGINS:-} # Comma-separated origins for CORS and email notification links
#      - FORCE_HTTPS=true # Optional. Enables HTTPS redirect, HSTS, CSP upgrade-insecure-requests, and secure cookies behind a TLS proxy
#      - HSTS_INCLUDE_SUBDOMAINS=false # When true: adds includeSubDomains to the HSTS header. Only effective when HSTS is active. Leave false if sibling subdomains still run over plain HTTP.
#      - COOKIE_SECURE=false # Escape hatch: force session cookies over plain HTTP even in production. Not recommended.
#      - TRUST_PROXY=1 # Trusted proxy count for X-Forwarded-For / X-Forwarded-Proto. Required for FORCE_HTTPS to work.
#      - ALLOW_INTERNAL_NETWORK=false # Set to true if Immich or other services are hosted on your local network (RFC-1918 IPs). Loopback and link-local addresses remain blocked regardless.
#      - ALLOW_LINK_LOCAL_IPS= # Single link-local addresses TREK may reach after all, e.g. 169.254.1.2 for the host gateway of a rootless Podman container. Cloud metadata addresses cannot be listed.
#      - HTTP_PROXY=${HTTP_PROXY:-} # Optional. Proxy URL for outbound HTTP requests (e.g. http://192.168.1.10:7890)
#      - HTTPS_PROXY=${HTTPS_PROXY:-} # Optional. Proxy URL for outbound HTTPS requests
#      - NO_PROXY=${NO_PROXY:-localhost,127.0.0.1} # Optional. Comma-separated hosts and domains that bypass the outbound proxy
#      - APP_URL=https://trek.example.com # Public base URL — required when OIDC is enabled (must match the redirect URI registered with your IdP); also used as base URL for links in email notifications
#      - OIDC_ISSUER=https://auth.example.com # OpenID Connect provider URL
#      - OIDC_CLIENT_ID=trek # OpenID Connect client ID
#      - OIDC_CLIENT_SECRET=supersecret # OpenID Connect client secret
#      - OIDC_DISPLAY_NAME=SSO # Label shown on the SSO login button
#      - OIDC_ONLY=false # Set true to force SSO-only mode: disables password login and registration, overrides Admin > Settings toggles, cannot be changed at runtime
#      - OIDC_ADMIN_CLAIM=groups # OIDC claim used to identify admin users
#      - OIDC_ADMIN_VALUE=app-trek-admins # Value of the OIDC claim that grants admin role
#      - OIDC_SCOPE=openid email profile # Fully overrides the default. Add extra scopes as needed (e.g. add groups if using OIDC_ADMIN_CLAIM)
#      - OIDC_DISCOVERY_URL= # Override the OIDC discovery endpoint for providers with non-standard paths (e.g. Authentik)
#      - ADMIN_EMAIL=admin@trek.local # Initial admin e-mail — only used on first boot when no users exist
#      - ADMIN_PASSWORD=changeme      # Initial admin password — only used on first boot when no users exist
#      - MCP_RATE_LIMIT=300 # Max MCP API requests per user per minute (default: 300)
#      - MCP_MAX_SESSION_PER_USER=20 # Max concurrent MCP sessions per user (default: 20)
#      - KITINERARY_EXTRACTOR_PATH= # Optional. Full path to kitinerary-extractor binary. Auto-detected from PATH and /usr/lib/*/libexec/kf6/ when unset.
#      - LLM_TIMEOUT_MS=900000 # Optional. Ceiling (ms) for one AI-parsing call before it is abandoned, applied to every provider and to the HTTP client underneath. Generous by default so heavier documents fit; lower it on a cloud provider to fail fast. Must be a whole number of milliseconds between 1 and 2147483647 — anything else stops the server at startup with the reason. (default: 900000)
#      - TREK_PLUGINS_IGNORE_TREK_RANGE=true # Optional. Lets plugins whose declared TREK version range predates this build, and plugins that declare none, be installed and activated anyway. Every gate warns instead of refusing; the plugin-API version gate and the Discover compatibility verdict stay hard. Off unless set. (default: off)
#      - UNSPLASH_ACCESS_KEY= # Optional. Unsplash Access Key for trip-cover / place-image search. Without one, TREK uses Unsplash's unauthenticated endpoint, which some datacenter/VPS IPs are blocked from (#1449). Free key at unsplash.com/developers. Can also be set per-admin in Admin > Settings; the env var overrides that.
#      - TREK_PLACES_ENABLED=false # Optional. Place search (suggestions, full search, category buttons, Road trip search, import geocoding, offline downloads) asks the TREK Places API at https://places.liketrek.com by default, so the server makes outbound requests to that host. Set false to search the way it did before 4.3.0 (OpenStreetMap, or your Google/Amap key) and send nothing there. No switch in the admin panel on purpose: whether searches leave the instance is decided here. (default: true)
#      - TREK_PLACES_URL=https://places.liketrek.com # Optional. Base URL of a copy of the Places API you run yourself; it has to answer the same /v1 API. Read from configuration rather than typed by a user, so an address on your LAN or Docker network works without ALLOW_INTERNAL_NETWORK. (default: https://places.liketrek.com)
#      - AMAP_API_KEY= # Optional. Amap (高德地图) Web 服务 key for place search and geocoding inside mainland China. Overrides the key set in Admin > Settings > API Keys. A Web 端 (JS API) key is a different credential and is rejected with INVALID_USER_KEY.
#      - AMAP_API_SECRET= # Optional. The private secret (数字签名) of that key. Required exactly when the key was created with signing enabled, because such a key rejects every unsigned request. Leave unset otherwise.
#      - AMAP_API_BASE=https://restapi.amap.com # Optional. Send the Amap calls through an egress proxy, a cache or a gateway that speaks the same API instead of restapi.amap.com directly. (default: https://restapi.amap.com)
    volumes:
      - ./data:/app/data
      - ./uploads:/app/uploads
#      - ./storage-config.json:/app/data/storage-config.json:ro # optional seed-once storage provisioning (wiki: Admin-Storage)
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "wget", "-qO-", "http://localhost:3000/api/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 15s

This file may be out of date. Check the TREK website for current setup steps.

Track your self-hosted stack

Bookmark software to try, rate tools you've used, and keep your collection in one place.

Metadata extracted from README on Oct 26, 2026

Alternatives to TREK

TRIP logo

TRIP

2.0k
TRIP is a self-hostable minimalist map tracker and trip planner for managing points of interest and organizing travel itineraries.
Maps and GPSTrip PlanningSelf Hosting Solutions+4
Details
AdventureLog logo

AdventureLog

3.9k
AdventureLog is an open-source travel companion for logging adventures, planning trips, and sharing travel experiences.
Maps and GPSCopyleft LicenseTrip Planning+4
Details
Surmai logo

Surmai

290
Surmai is a personal and family travel organizer for planning trips collaboratively while keeping travel information private.
Travel Organization
Single Container
Details

Related Software

OpenTripPlanner logo

OpenTripPlanner

2.8k
OpenTripPlanner is an open source multi-modal trip planner for public transportation, walking, bicycling, and mobility services.
Maps and GPSTrip PlanningSelf Hosting Solutions+1
Details
OpenRouteService logo

OpenRouteService

2.0k
Openrouteservice is a customizable Java-based routing service that provides directions, isochrones, matrix calculations, snapping, and graph export from OpenStreetMap data.
Maps and GPSAutomation ToolsTrip Planning+1
Details
SportTracker logo

SportTracker

20
SportTracker is a self-hosted server for recording and analyzing workout data, with support for multiple users, workout logs, goals, charts, maps, and planned tours.
Health & FitnessMaps and GPSAnalytics Tools+1
2 Containers
Details
kaufkauflist logo

kaufkauflist

5
A to-do list web app for shopping or other use cases
Task ManagementSelf Hosting SolutionsMiscellaneous Tools+1
Fully FOSS
Details
NoteDiscovery logo

NoteDiscovery

2.9k
Markdown note-taking app with plain-file storage, graph view, and MCP integration (alternative to Obsidian, Notion).
Note Taking AppsKnowledge Management
Details
Bicimon logo

Bicimon

64
A bike speedometer web app.
Maps and GPSPermissive LicenseHealth & Fitness+1
Details
Workout Tracker logo

Workout Tracker

1.3k
A self-hosted workout tracking web application for personal or family use, focused on running and other GPX-based activities.
Health & FitnessMaps and GPSSelf Hosting Solutions+1
10 Containers
Details
Traccar logo

Traccar

Java application to track GPS positions. Supports loads of tracking devices and protocols, has an Android and iOS App. Has a web interface to view your trips.
Maps and GPSIoT PlatformsSelf Hosting Solutions+1
Details
GymCoach logo

GymCoach

174
An open-source, self-hosted training tracker with an AI coach for logging workouts, tracking progress, and generating evidence-based debriefs and programs.
Health & FitnessSelf Hosting SolutionsArtificial Intelligence+2
3 ContainersFully FOSS
Details
Vikunja logo

Vikunja

6.0k
To-do app to organize your life.
Task ManagementSelf Hosting SolutionsCalendar and Contacts+3
FOSS with Issues
Details