📌 项目地址:mauriceboe/TREK | ⭐ 6,442 颗星 | 🔧 TypeScript | 📜 未标注
这个项目解决了什么问题?
市面上旅行规划工具不少,但要么是商业产品(TripIt、Google Trips),数据在别人服务器上;要么功能单一,只能记账或列清单。当你和三五好友一起策划一次长途旅行时,需求会变得很具体:我们需要一起编辑行程、实时看到别人的修改、在地图上标记要去的地方、记录各自花销、分配打包物品——这一切最好还能离线查看,并且数据完全由自己掌控。
TREK 就是为这个场景设计的。它把实时协作、交互地图、预算管理、打包清单、文档管理、PDF导出等能力打包成一个 Docker 容器,你自己部署,所有数据留在自己手里。
从哪里开始入手?
官方推荐的方式是 Docker Compose。如果你本地有 Docker 环境,建一个 docker-compose.yml:
services:
app:
image: ghcr.io/mauriceboe/trek:latest
ports:
- "8080:8080"
volumes:
- ./data:/app/data
environment:
- DATABASE_URL=file:/app/data/trek.db
- JWT_SECRET=your-secret-here
然后启动:
docker compose up -d
浏览器打开 http://localhost:8080 就能看到登录页面。首次使用会引导你创建管理员账号。
TREK 还支持 SSO(OIDC),可以用 Google、Apple、Authentik、Keycloak 登录,也可以开启 TOTP 双因素认证 和 Passkeys(WebAuthn 无密码登录),这些在设置里按需打开就行。
它在实际使用中表现如何?
创建一个新旅行,你会得到一张交互地图。搜索地点有三种方式:
- Google Places:需要 API key,但能获取照片、评分、营业时间。
- OpenStreetMap:免费,无需 key,数据齐全。
- 导入:可以从共享的 Google Maps 列表、Naver Maps 列表导入,也支持 GPX、KML、KMZ、GeoJSON 格式。
把地点拖到日期规划里,可以跨天移动。每个地点可以加笔记(带标签和时间戳),笔记也能拖拽排序。
实时协作靠的是 WebSocket。你添加一个地点,队友手机上 1 秒内就能看到。邀请功能支持单次链接或可重复使用的链接,还能设置过期时间。
费用追踪类似 Splitwise:记录一笔开销,选择参与的人,系统自动算出谁欠谁,最后可以结算。支持多币种,所以跨国旅行也能用。
打包清单有预设模板,可以给不同成员分配物品,还能追踪每人的行李重量(iOS 风格的重量分配界面)。
PDF 导出功能会把整个旅行计划转成一份包含封面、图片和笔记的文档,出发前打印一份很方便。
它和同类工具有什么不同?
跟商业产品(如 TripIt)比,TREK 最大的区别是自托管。你自己控制数据库,没有隐私担忧,也没有订阅费。
跟其他开源方案(如 Traggo、Hitchcock)比,TREK 的功能覆盖面更广:它不仅做记录,还包含实时协作、地图、预算、清单、文档管理,甚至内置了组内聊天和投票。README 里提到它还支持 KDE Itinerary 的导入(从确认邮件和 PDF 中自动解析预订信息),这点在开源项目里很少见。
另一个值得说的是它的 Addon 系统。管理员可以在后台自由开关功能模块——比如团队协作、费用管理、文档管理、组内聊天、世界地图统计等。不需要的功能关掉,界面干净,性能也有保障。
需要注意的事情
- 部署门槛:需要自己维护 Docker 主机、数据库(默认 SQLite,但可以换 PostgreSQL)、以及可能的反向代理和 SSL。如果你不熟悉 Docker 和基本的运维,上手会有点吃力。
- 地图 API 选择:如果用 Google Places,需要自己去申请 API key 并绑定支付方式(有限度免费配额)。OpenStreetMap 不用 key,但照片和评分功能就没了。
- 文件大小限制:文档上传上限是 50MB,文件大的话需要考虑替代方案。
- 开发状态:截止到 README 撰写时,项目仍在新功能迭代中。如果遇到 bug 或缺少某个功能,建议去 GitHub Issues 看看,或者考虑贡献代码。
- 移动端体验:虽然 PWA 支持离线和服务 worker 缓存,但它本质上是个 Web App,不是原生应用。如果对离线功能和系统集成要求很高,需要自己评估。
哪些场景下它特别有价值?
一个典型的例子:三五个朋友计划一次为期两周的欧洲背包旅行。要用共享地图标记每个城市要去的地点、共同记账分摊房租和餐费、分配谁带帐篷谁带充电宝。每个人用手机就能随时查看最新行程,离线也能读。这些场景下,TREK 比纸笔 + 微信群 + Excel 的组合高效得多。
另一个场景:注重隐私的旅行者,不愿意把自己的行程数据交给商业平台,愿意付出一点运维成本换回对数据的完全控制。
如果你是 solo 旅行者,功能可能过重——但你也可以只关掉协作模块,把它当作一个带地图的个人旅行笔记本来用。