🎯 核心功能概览

TREK 不仅仅是一个行程规划器,更是一个完整的旅行管理平台,其主要功能模块包括:

  • 🧭 行程规划:提供拖拽式日程安排,支持添加地点、自动优化路线,并集成了交互式地图(支持Leaflet或Mapbox GL),可显示3D建筑、地形和照片标记。你可以通过Google Places或OpenStreetMap搜索地点,并导入GPX、KML等地理数据文件。
  • 🧳 旅行管理:涵盖旅行的方方面面,包括预订管理(航班、住宿、餐厅,支持从邮件或PDF导入)、费用分摊(Splitwise风格,支持多币种)、打包清单(含模板和进度追踪)、文档附件(上传门票、PDF等)以及完整的PDF行程导出
  • 👥 实时协作:支持多人实时同步编辑行程,所有更改会通过WebSocket即时显示。你可以邀请成员,并设置基于角色的访问权限。还内置了群聊、投票、每日签到等协作套件。
  • 📱 移动端与PWA:作为渐进式Web应用(PWA),它可以在浏览器中直接安装到手机主屏,提供类似原生应用的体验,并支持离线使用(缓存地图和API数据)。
  • 🧩 可扩展的插件系统:功能采用模块化设计,管理员可以按需开启或关闭特定功能,如“Vacay”(个人假期规划)、“Journey”(旅行日志)、“AirTrail”(航班同步)等。
  • 🤖 AI与MCP集成:内置了MCP(模型上下文协议)服务器,通过OAuth 2.1认证,为AI助手提供了超过150个工具和30个资源,让AI能够帮你创建行程、制定预算等。

🚀 快速部署与使用

TREK 的部署非常便捷,尤其适合熟悉Docker的用户。

  1. 极速启动:使用Docker命令,30秒内即可运行。

    1
    2
    3
    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
  2. 首次访问:打开 http://localhost:3000,首次启动会自动创建管理员账户(密码会打印在容器日志中,可通过 docker logs 查看)。

  3. 更新与维护:通过 docker compose pull && docker compose up -d 即可轻松更新,数据存储在挂载的 ./data./uploads 目录中,不会丢失。

  4. 生产环境部署:项目提供了详细的Nginx和Caddy反向代理配置示例,并说明了WebSocket和MCP需要特殊处理。

⚙️ 技术栈与高级配置

  • 技术栈:基于 NestJS (后端) 和 Zustand (前端状态管理),使用 WebSocket 实现实时同步,认证支持 JWT、OAuth 2.1、OIDC SSO、WebAuthn (Passkeys) 和 TOTP 2FA
  • 高度可配置:通过丰富的环境变量进行配置,包括数据库、加密密钥、OIDC单点登录、邮件服务器、地图服务等。
  • 数据与备份:默认使用SQLite数据库,数据文件存储在 ./data 目录。管理员可通过后台界面进行手动备份,或配置自动备份计划。

⚠️ 注意事项

  • 自托管要求:这是一个自托管应用,需要你拥有自己的服务器或NAS来运行。
  • 加密密钥ENCRYPTION_KEY 至关重要,用于加密存储的API密钥等敏感信息。请务必妥善保管,丢失可能导致已存储的加密数据无法读取。
  • 许可证:项目采用 AGPL v3 许可证。这意味着如果你修改了代码并向第三方提供网络服务,你的修改也需要开源。
  • 挂载目录:部署时务必只挂载 ./data./uploads 目录,不要挂载 /app 目录,否则会覆盖应用代码导致容器无法启动。

💎 总结

TREK 是一个功能极其丰富、设计现代的自托管旅行规划“全家桶”。它的核心价值在于将行程规划、预算管理、协作沟通、文档存储等功能整合在一个统一的、可私有化部署的平台中。非常适合注重数据隐私、希望完全掌控自己旅行数据的个人、家庭或小型团队使用。

如果你正在寻找一个不仅能规划路线,还能管理整个旅行生命周期(从灵感收集到出行后日志)的自托管方案,TREK是一个非常全面且强大的选择。对于具体的部署问题或功能使用,可以查阅其详细的文档或提出更具体的问题。