乐于分享
好东西不私藏

组队出游还在用Excel和群聊对账?这个自托管旅行规划器一个顶十个

组队出游还在用Excel和群聊对账?这个自托管旅行规划器一个顶十个
每次组织多人旅行,是不是都逃不过这几个噩梦:

群里刷屏几百条消息,最后连酒店地址都找不到。预算平摊更是灾难现场,谁付了多少钱全靠记忆对账。行李清单总是漏东西,到了目的地才发现没带转换插头。

市面上的旅行规划工具要么功能单一,要么数据不在自己手上,隐私和安全都是隐患。

最近发现一个叫 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: 15s

Kubernetes用户也可以用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是个很值得花半小时部署一下的项目。它把旅行管理这件事做得够深,很多细节都考虑到了,关键数据还在自己手里,不用依赖第三方服务。