群里刷屏几百条消息,最后连酒店地址都找不到。预算平摊更是灾难现场,谁付了多少钱全靠记忆对账。行李清单总是漏东西,到了目的地才发现没带转换插头。
市面上的旅行规划工具要么功能单一,要么数据不在自己手上,隐私和安全都是隐患。
最近发现一个叫 TREK 的开源项目,完全自托管,能自己部署在服务器上。它把行程规划、地图导航、预算管理、行李清单、旅行日志全部整合在一起,还支持多人实时协作。
最让我心动的是,它能私有化部署,所有数据都在自己手里,不用担心哪天第三方服务关停了。

一个应用解决旅行全流程痛点
TREK把整趟旅行的管理拆成了几个核心模块,每个模块都直接对应实际需求:
行程规划支持拖拽式操作,能把想去的地点按天排列,跨天移动也只是一拖的事。内置的互动地图可以切换Leaflet或Mapbox GL,支持3D建筑物和地形显示,找路和规划路线非常直观。
预算管理采用的是类似Splitwise的平摊模式,支持多币种结算。旅行结束清算时,系统会自动算出谁欠谁多少钱,不用再掏手机一个个算账。
行李清单支持分类管理和模板复用,还能按成员分配打包任务。如果你和我一样总担心行李超重,它的行李重量追踪功能就很实用了。
协作功能是整个应用的亮点。多个成员可以实时同步操作,你在地图上加一个地点,队友那边立刻就能看到。还有群组聊天、共享笔记、投票功能,连每日签到都安排上了。
来看看几个关键界面的截图,感受下这个工具的完整度:




这些隐藏细节值得关注
- 离线可用
:支持PWA安装,在浏览器里就能加到桌面。更贴心的是,Service Worker会缓存地图瓦片和API数据,没网也能查看已加载的内容。 - 多源数据导入
:支持从Google Maps和Naver Maps的收藏列表导入地点,还支持GPX、KML、GeoJSON等地图文件格式。预订信息也能从邮件和PDF里自动解析。 - 20种语言支持
:包括简体中文和繁体中文,团队里有外国小伙伴也能无障碍使用。 - SSO单点登录
:支持Google、Apple、Authentik、Keycloak等OIDC提供商,公司内部部署的话可以直接用现有的身份验证系统。
30秒快速上手
部署TREK非常简单,一条Docker命令就能搞定:
ENCRYPTION_KEY=$(openssl rand -hex 32) docker run -d -p 3000:3000 \ -e ENCRYPTION_KEY=$ENCRYPTION_KEY \ -v ./data:/app/data -v ./uploads:/app/uploads mauriceboe/trek启动后打开 http://localhost:3000,首次启动会创建管理员账号。如果设置了 ADMIN_EMAIL 和 ADMIN_PASSWORD 就用这个登录,否则管理员的账号密码会打印在容器日志里。
生产环境建议用Docker Compose部署,下面是一个包含安全配置的完整示例:
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=64m ports: - "3000:3000" environment: - NODE_ENV=production - PORT=3000 - ENCRYPTION_KEY=${ENCRYPTION_KEY:-} - TZ=${TZ:-UTC} - LOG_LEVEL=${LOG_LEVEL:-info} - ALLOWED_ORIGINS=${ALLOWED_ORIGINS:-} - APP_URL=${APP_URL:-} volumes: - ./data:/app/data - ./uploads:/app/uploads restart: unless-stopped healthcheck: test: ["CMD", "wget", "-qO-", "http://localhost:3000/api/health"] interval: 30s timeout: 10s retries: 3 start_period: 15sKubernetes用户也可以用Helm部署:
helm repo add trek https://mauriceboe.github.io/TREKhelm repo updatehelm install trek trek/trek更新升级也很省心,数据都挂在 data 和 uploads 目录上,更新镜像重新启动就行,数据不会丢失。
注意:千万别把卷挂载到 /app 目录,这样会覆盖镜像里的应用代码,导致容器启动失败。
如果想配置反向代理,Nginx需要确保WebSocket升级路径能正常走通。TREK的实时同步依赖WebSocket,代理上必须支持 /ws 路径的升级。
如果你的旅行规划需求比较重,比如每年组织好几次多人出行,或者想给团队搞个内部用的协作工具,TREK是个很值得花半小时部署一下的项目。它把旅行管理这件事做得够深,很多细节都考虑到了,关键数据还在自己手里,不用依赖第三方服务。
夜雨聆风