一次复杂的旅行往往意味着在 Excel、Google Maps、笔记应用和聊天软件之间反复横跳。NOMAD 是一款开源自托管的全能旅行规划平台,集成了交互式地图、实时协作、预算管理、打包清单甚至群聊功能,旨在成为你和旅伴唯一的行程指挥中心。

无论是独自探险还是团队出游,NOMAD 都能让你像操作本地应用一样流畅地规划世界。
核心亮点:一站式搞定所有旅行琐事
智能行程规划
- 拖拽式日程表:直观的日历视图,轻松将地点拖入特定日期,支持重新排序和跨天移动。
- 交互式地图:基于 Leaflet 构建,支持照片标记、聚类显示、路线可视化,并可自定义地图瓦片源(如卫星图、暗色模式)。
- 智能搜索与优化:集成 Google Places 和 OpenStreetMap,一键搜索全球地点;内置路线优化算法,自动调整游览顺序并导出至 Google Maps。
- 每日笔记与天气:为每天添加带时间戳的笔记,并自动获取未来 16 天的精准天气预报(Open-Meteo),让计划随天气而动。
全方位的行程管理
- 预订追踪:集中管理航班、酒店、餐厅预订,记录确认号、状态,甚至直接附件 PDF 票据。
- 多维预算系统:支持多币种结算,按类别统计支出,自动计算人均成本和每日预算,让 AA 制分摊清晰透明。
- 智能打包清单:提供分类清单模板,支持进度打钩、颜色编码,并根据目的地气候智能建议携带物品。
- 文档中枢:将所有机票、保单、护照扫描件统一附加到行程或具体项目中,随时查阅。
- 一键导出:生成精美的 PDF 行程单,离线打印或分享给他人。
真正的实时协作
- WebSocket 同步:多人同时编辑行程,任何更改(如新增地点、修改预算)都会实时反映在所有成员的屏幕上,告别文件传来传去。
- 内置群聊与投票:无需切换微信/WhatsApp,直接在行程内聊天、分享笔记、发起投票(如“今晚吃火锅还是烧烤?”),决策更高效。
- 灵活权限控制:支持基于角色的访问控制(RBAC),可邀请成员并设定不同权限。
- 企业级登录:支持 Google、Apple 登录,也可对接 Authentik、Keycloak 或任何 OIDC 提供商实现单点登录 (SSO)。
原生般的移动体验 (PWA)
- 免安装商店:作为渐进式网页应用 (PWA),可直接在 iOS/Android 浏览器中“添加到主屏幕”,获得全屏独立应用体验。
- 离线可用:利用 Workbox 技术缓存地图瓦片、API 数据和上传文件,即使在没有网络的异国他乡也能查看行程和地图。
- 触控优化:专为移动端设计的响应式布局,操作丝滑流畅。
强大的扩展生态
- Vacay 模块:个人假期管理器,整合日历、公共假期、公司年假及余额跟踪。
- Atlas 模块:交互式世界地图,自动点亮已访问国家,记录旅行统计和连续旅行天数,满足收集癖。
- 实用小工具:内置货币转换器和多时区时钟,旅途必备。
技术栈:现代、轻量、高效
NOMAD 采用现代化的全栈架构,确保性能与可维护性:
- 后端:Node.js 22 + Express + SQLite (轻量级,无需复杂数据库运维)
- 前端:React 18 + Vite + Tailwind CSS (极速构建,美观 responsive)
- 实时通信:原生 WebSocket
- 状态管理:Zustand (轻量高效)
- 认证安全:JWT + OIDC
- 地图引擎:Leaflet + react-leaflet-cluster
快速开始:5 分钟部署私有实例
只需一条 Docker 命令,即可拥有专属的旅行规划服务器:
docker run -d -p 3000:3000 \
-v ./data:/app/data \
-v ./uploads:/app/uploads \
mauriceboe/nomad
- 访问:打开浏览器访问
http://localhost:3000。 - 管理员:第一个注册的用户自动成为管理员,可在后台配置 API 密钥、用户管理和备份策略。
- 数据持久化:通过挂载卷确保数据和上传文件的安全。
Docker Compose 推荐配置
services:
nomad:
image: mauriceboe/nomad:latest
container_name: nomad
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- PORT=3000
volumes:
- ./data:/app/data
- ./uploads:/app/uploads
restart: unless-stopped
🔒 隐私与安全
- 数据自主:所有行程数据、照片、文档均存储在你自己的服务器上,绝不经过第三方云端。
- 自动备份:支持配置定时自动备份,防止数据丢失。
- HTTPS 支持:建议配合 Nginx/Caddy 等反向代理使用,启用 HTTPS 加密传输(注意需配置 WebSocket
/ws 路径升级)。