-
-
Notifications
You must be signed in to change notification settings - Fork 565
Install Docker
Single-container Docker run — suitable for testing or simple personal installs.
docker run -d \
--name trek \
-p 3000:3000 \
-v ./data:/app/data \
-v ./uploads:/app/uploads \
-e ENCRYPTION_KEY=<your-32-byte-hex-key> \
--restart unless-stopped \
mauriceboe/trek:latestENCRYPTION_KEY is strongly recommended but not strictly required. If omitted, a key is auto-generated on first start and persisted to data/.encryption_key. Setting it explicitly means you can recreate the container from scratch (e.g. on a new host) without losing access to stored encrypted data (API keys, SMTP credentials, OIDC secrets, MFA secrets).
Generate an encryption key with:
openssl rand -hex 32Pass additional -e flags for timezone and CORS/email link support:
-e TZ=Europe/Berlin \
-e ALLOWED_ORIGINS=https://trek.example.com \See Environment-Variables for the full list.
| Tag | Example | Behavior |
|---|---|---|
latest |
mauriceboe/trek:latest |
Always the newest release across all major versions |
| Major version | mauriceboe/trek:3 |
Latest release pinned to that major version |
| Full version | mauriceboe/trek:3.0.15 |
Exact release; never changes |
Replace mauriceboe/trek:latest in the run command with your chosen tag to pin to a major version or exact release.
| Volume | Container path | What lives there |
|---|---|---|
./data |
/app/data |
travel.db (SQLite database), logs/trek.log, .jwt_secret, .encryption_key
|
./uploads |
/app/uploads |
Uploaded files (photos, documents, covers, avatars) |
Both volumes must survive container replacement — they are your persistent state. Never remove them before pulling a new image.
The run command above uses bind mounts (./data, ./uploads). You can use Docker named volumes instead, which are fully managed by Docker and not tied to a host path:
docker run -d \
--name trek \
-p 3000:3000 \
-v trek_data:/app/data \
-v trek_uploads:/app/uploads \
-e ENCRYPTION_KEY=<your-32-byte-hex-key> \
--restart unless-stopped \
mauriceboe/trek:latestDocker creates trek_data and trek_uploads automatically on first run. Named volumes are easier to manage with docker volume commands and work better in some NAS or container-management environments.
The container exposes a health endpoint at:
http://localhost:3000/api/health
Docker polls it automatically (interval: 30 s, timeout: 5 s, retries: 3, start period: 15 s). You can check it manually:
curl -s http://localhost:3000/api/healthdocker ps --filter name=trek
docker logs trekA bare docker run command has no built-in secret management and is harder to reproduce after a system reboot. For production, see Install-Docker-Compose, which adds security hardening (read_only, cap_drop, cap_add, no-new-privileges, tmpfs) and makes it easy to manage environment variables through a .env file.
-
Reverse-Proxy — HTTPS is required for PWA install and the
trek_sessioncookiesecureflag - Install-Docker-Compose — recommended for production
- Environment-Variables — full list of configurable variables
- Updating — how to pull a new image without losing data
- Home
- Quick Start
- Install: Docker
- Install: Docker Compose
- Install: Helm
- Install: Proxmox VE (LXC)
- Install: Unraid
- Install: Portainer
- Reverse Proxy
- Environment Variables
- Updating
- Login and Registration
- OIDC SSO
- Two-Factor Authentication
- Password Reset
- User Settings
- Display Settings
- Map Settings
- Notifications
- Offline Mode and PWA
- Languages
- My Trips Dashboard
- Creating a Trip
- Trip Members and Sharing
- Trip Planner Overview
- Places and Search
- Day Plans and Notes
- Map Features
- Route Optimization
- Weather Forecasts
- Reservations and Bookings
- Transport: Flights, Trains, Cars
- Accommodations
- Budget Tracking
- Packing Lists
- Packing Templates
- Todos and Tasks
- Documents and Files
- Tags and Categories
- Real-Time Collaboration
- Collab Chat
- Collab Notes
- Collab Polls
- What's Next Widget
- Public Share Links
- Invite Links