常见问题 FAQ
安装部署
Q: RTKHUB 需要安装吗?
A: 不需要。下载后直接运行即可,所有依赖已静态链接。
Q: 支持 Linux 吗?
A: 部分支持。需要使用 CMake 自行编译。
Q: 可以在云服务器上部署吗?
在云服务器上部署时,必须将监听地址修改为 0.0.0.0(通过环境变量 RTKHUB_WEB_BIND=0.0.0.0 或启动参数),并配置防火墙规则只开放必要端口。
A: 可以。注意修改监听地址为 0.0.0.0,并配置防火墙。
Q1: 首次启动后找不到管理员密码怎么办?
A: 首次启动时,系统会在控制台打印随机生成的管理员密码,格式如下:
[INFO] Created default admin user: admin
[INFO] Default admin password: Abc123XyZ789
如果错过了密码输出,可以:
- 停止 RTKHUB
- 删除
database/rtkhub_users.db - 重新启动 RTKHUB,系统会重新生成管理员账号和密码
Q2: 访问 Web 界面显示 401 Unauthorized 怎么办?
A: 这表示未登录或会话已过期。解决方法:
- 访问
http://127.0.0.1:5426/会自动跳转到登录页面 - 使用管理员账号(
admin)和密码登录 - 如果忘记密码,参考 Q1 重置数据库
Q3: 端口 5426 或 5427 被占用怎么办?
A: 检查端口占用情况:
# Windows
netstat -ano | findstr :5426
netstat -ano | findstr :5427
# 结束占用进程(替换 <PID> 为实际进程 ID)
taskkill /PID <PID> /F
或者修改配置文件中的端口号(需要修改源码重新编译)。
Q4: 启动后浏览器无法访问 Web 界面?
A: 检查以下几点:
- 确认 RTKHUB 已成功启动(控制台显示
[INFO] HTTP server started on port 5426) - 确认防火墙未阻止端口 5426
- 尝试使用
http://127.0.0.1:5426/而不是localhost - 检查浏览器版本是否符合要求(Chrome 90+、Firefox 88+、Edge 90+)
功能使用
Q: 最多支持多少条基线?
默认支持 500 条基线(MAX_CHANNEL=500)。如果需要更多基线,可以修改源码中的 MAX_CHANNEL 宏定义并重新编译。增加基线数量会相应增加内存和 CPU 占用。
A: 默认 500 条。可以修改源码中的 MAX_CHANNEL 重新编译。
Q: 可以导出定位结果吗?
A: 可以。结果保存在 result/ 目录,格式为 RTKLIB 标准 pos 文件。
Q: 支持多用户同时访问吗?
A: 支持。内置完整的用户认证和权限管理系统。
Q: 可以修改 Web 端口吗?
A: 可以。使用 -w 参数:
.\rtkhub.exe -s -k conf\rtkhub.list -w 8080
Q5: 如何添加新的 RTK 网络或基线?
A: 编辑 conf/rtkhub.list 文件,添加新的网络块:
[NewNetwork]
dir=./result/%Y/%n/
netllh=纬度,经度,高度
./conf/NewNetwork/station1.conf,站点名称,纬度,经度,高度,参考纬度,参考经度,参考高度
然后重启 RTKHUB 或使用控制台命令重新加载配置。
Q6: STRHUB 和 RTKHUB 有什么区别?
A:
- RTKHUB:多网络 RTK 监控系统,负责 RTK 解算、监控、Web 界面、用户管理
- STRHUB:轻量级流转发工具,仅负责 GNSS/NTRIP/RTCM 数据流的转发,不做 RTK 解算
两者可以独立运行,也可以配合使用(STRHUB 转发数据给 RTKHUB)。
Q7: 支持哪些 GNSS 系统?
A: 支持以下系统(取决于 RTKLIB demo5 配置):
- GPS(美国)
- GLONASS(俄罗斯)
- Galileo(欧盟)
- BDS/北斗(中国)
- QZSS(日本)
- NavIC/IRNSS(印度)
可以通过配置文件或命令行参数 -sys 选择启用的系统。
Q8: 如何重置管理员密码?
A: 有两种方法:
- 通过管理员账号:登录后进入"用户管理"页面,点击"重置密码"
- 删除数据库:停止 RTKHUB,删除
database/rtkhub_users.db,重启后会重新生成
性能相关
小规模部署(1-10 条基线)对硬件要求很低,普通 PC 即可胜任。大规模部署(100+ 条基线)建议使用多核 CPU 和充足内存,并逐步增加基线以观察资源变化趋势。
Q: 单条基线占用多少资源?
A:
- 启动时:约 14MB 内存
- 稳定运行:约 5.6MB 内存
- CPU:单核心 < 5%(1Hz 采样率)
Q: 100 条基线需要什么配置?
A: 推荐配置:
- CPU:16 核 3.5GHz+
- 内存:16GB+
- 磁盘:5GB+
Q15: 支持多少条基线?(详细)
A: 系统设计上限为 500 条基线(由 src/main/hubcmn.h 中的 MAX_CHANNEL 和 MAX_NET 宏定义决定)。
实际支持数量取决于硬件配置和数据采样率:
| 基线数量 | 推荐配置 |
|---|---|
| 1-5 条 | 双核 CPU + 2GB 内存 |
| 6-20 条 | 四核 CPU + 4GB 内存 |
| 21-50 条 | 八核 CPU + 8GB 内存 |
| 51-100 条 | 十六核 CPU + 16GB 内存 |
| 100+ 条 | 更高配置 + 32GB+ 内存 |
如需支持超过 500 条基线,可修改 hubcmn.h 中的宏定义并重新编译:
#define MAX_CHANNEL 1000 // 最大通道数
#define MAX_NET 1000 // 最大网络数
Q16: 如何提高 RTK 解算性能?
A:
- 使用更快的 CPU(RTK 解算是 CPU 密集型)
- 优化配置文件(降低采样率、减少历史数据保留)
- 关闭不必要的调试输出(
-t 0) - 使用 Release 编译版本而非 Debug 版本
Q17: Web 界面可以从其他电脑访问吗?
A: 默认只监听 127.0.0.1(本机)。如需局域网访问:
- 修改源码中的监听地址为
0.0.0.0 - 重新编译
- 配置防火墙允许端口 5426
公网暴露 Web 端口存在安全风险。建议配置强密码并限制访问 IP,或使用 VPN、堡垒机等安全接入方式。
安全相关
Q: 如何修改管理员密码?
A:
- 登录 Web 控制台
- 点击右上角用户图标
- 选择"修改密码"
Q: 忘记密码怎么办?
A: 删除用户数据库,重启后会重新生成:
Remove-Item database\rtkhub_users.db
.\rtkhub.exe -s -k conf\rtkhub.list
此操作会删除所有用户账号和审计日志!
Q: 如何禁用外网访问?
A: 默认只监听 127.0.0.1,外网无法访问。
定位问题
Q: 无法获取固定解(FIX)?
A: 可能原因:
- 基线过长 - RTK 有效距离通常 < 20km
- 差分数据延迟 - Age 应 < 5 秒
- 卫星数不足 - 需要 ≥ 5 颗卫星
- 环境遮挡 - 改善天线环境
- 配置问题 - 检查频率和导航系统设置
详见 故障排查
Q: Age 持续很大怎么办?
A:
- < 5s:正常
- 5-30s:可用但精度降低
- > 30s:数据过时,检查数据源
排查:检查基准站连接、网络延迟、NTRIP 账号
Q: Ratio 很低怎么办?
A: 改善方法:
- 增加观测时长
- 改善天线环境
- 使用多频多系统
- 检查周跳处理
EPHUB / STRHUB
Q: EPHUB 和 RTKHUB 是什么关系?
A: EPHUB 负责从多个 NTRIP 源汇集广播星历,经去重和质量控制后通过 TCP Server 输出。RTKHUB 可以连接 EPHUB 的输出端口获取稳定星历数据。两者独立运行,通过 TCP 连接集成。
Q: EPHUB 默认端口是多少?
A: EPHUB Web 管理界面默认端口 5428,可通过 -web 参数修改。输出流端口由配置决定,如 tcpsvr://:10010。
Q: 如何在 Docker 中同时运行 RTKHUB 和 EPHUB?
A: 在 docker-compose.yml 中添加 EPHUB 服务,映射端口 5428 和输出端口,挂载 conf/ephub_conf/ 目录。详见 Docker 部署。
开发集成
Q: 可以用 API 集成到自己的系统吗?
A: 可以。RTKHUB 提供完整的 RESTful API,详见 API 文档
Q: 前端可以定制吗?
A: 可以。修改 public/ 目录下的文件。
Q: 如何贡献代码?
A: Fork 仓库并提交 Pull Request。
故障排查
Q: 启动失败 - 端口被占用
错误:Cannot start web server on port 5426
解决:
1. 查看端口占用:netstat -ano | findstr 5426
2. 换端口:.\rtkhub.exe -w 8080
Q: 浏览器无法访问
检查清单:
- RTKHUB 是否运行
- 地址是否正确
- 防火墙是否阻止
- 是否使用 IE(不支持)
Q9: NTRIP 连接失败怎么办?
A: 检查以下几点:
- 确认 NTRIP 服务器地址、端口、挂载点正确
- 确认用户名和密码正确
- 检查网络连接(ping NTRIP 服务器)
- 查看日志文件(
logs/目录)获取详细错误信息 - 尝试使用
-t 3参数启动以获取调试跟踪输出
Q10: 数据库锁定错误怎么办?
A: SQLite 数据库被锁定通常是因为:
- 多个 RTKHUB 实例同时运行(检查并关闭其他实例)
- 数据库文件损坏(备份后删除
database/rtkhub_users.db,重启重建) - 权限问题(确保
database/目录有写权限)
Q11: Web 界面显示数据但图表不更新?
A: 可能的原因:
- 浏览器控制台有 JavaScript 错误(按 F12 查看)
- 数据刷新率设置过低(在"系统配置"页面调整)
- 浏览器缓存问题(按 Ctrl+F5 强制刷新)
- 后端数据流中断(检查 RTK 通道状态)
Q12: 日志文件在哪里?
A:
- 审计日志:
database/rtkhub_audit.db(按 event_date 查询) - 调试跟踪:启动时使用
-t <level>参数指定输出文件 - RTKLIB 日志:根据配置文件中的
file-tracefile设置
Q13: EPHUB 添加无效输入/输出流后,为什么控制台不再持续打印 open failed?
A: 这是预期行为。EPHUB 控制台只保留命令交互结果,输入/输出流后台打开失败、重连失败和恢复过程写入 trace。启动时加 -x 1 即可查看输入/输出打开失败、重连、Web 启停等生命周期日志,例如:
.\ephub\x64\Debug\ephub.exe -k conf\ephub_conf\ephub.conf -x 1
Q14: EPHUB Web 页面中"当前告警"和"完好性事件"有什么区别?
A: "当前告警"来自 /api/active-alerts,表示仍未恢复的输入/输出或星历完好性问题;"完好性事件"来自 /api/alerts,是历史事件记录,包含已恢复的异常、源切换、输入/输出启动停止等事件。
还有问题?
- 📚 故障排查
- 🐛 GitHub Issues