1.0.9
RTK-Caster Lite
轻量 RTK / NTRIP Caster,面向小团队内部自建差分服务。
当前职责:
- 接收基站上传的 RTCM 原始字节流
- 通过 NTRIP 向 rover 分发 RTCM
- 提供内嵌 Web 管理后台
项目保持轻量:
- 不依赖数据库
- 不依赖 Redis、消息队列、Prometheus
- 不使用前端框架或打包工具
- 管理后台使用内嵌静态页面
- 地图使用本地 Leaflet 资源和 OpenStreetMap 在线底图
默认端口
- Web / API:
17001/TCP - NTRIP:
17002/TCP - 基站上传:
17003/TCP
协议约定
基站上传
保持私有 TCP 上传协议不变:
BASE <station_id>\n
<后续持续发送 RTCM 原始字节流>
说明:
BASE必须大写- 首行格式不能改
- 基站首包有 15 秒超时;超过 15 秒仍未发送
BASE <station_id>会自动断开
Rover NTRIP
保持标准 NTRIP Client 接入方式:
GET /<mountpoint>
Authorization: Basic ...
成功响应继续兼容:
ICY 200 OKHTTP/1.0 200 OKHTTP/1.1 200 OK
NEAREST
- 默认虚拟挂载点名:
NEAREST - rover 连接
NEAREST后回传GGA - 服务端使用首条有效
GGA从在线且有坐标的基站中选择最近站 - 选站后仍会消费后续
GGA输入,但不会逐条写入 INFO 日志 - 当前不再使用固定
GGA超时限制
账号约定
管理员
- 用户名:
admin - 密码:
Bone1644
说明:
- 该账号可登录 Web 后台
- 该账号也可直接用于 NTRIP 鉴权
- 后台修改管理员密码后会写回
config.yaml - 修改管理员密码后,已有后台会话会失效,需要重新登录
/api/overview只返回管理员用户名,不返回管理员密码
Rover
- rover 账号用于 NTRIP 鉴权
- 后台支持新增、编辑、删除 rover
- rover 密码在后台明文展示,符合当前内部使用场景
- 编辑 rover 时,密码留空表示保持原密码不变
- 当前所有已认证账号默认可访问全部挂载点
allowed_mountpoints 字段仍保留在配置和接口结构中,主要用于兼容旧配置;当前后台不再提供挂载点白名单编辑入口。
基站坐标
当前优先级:
- 在线基站 RTCM 自动提取参考站坐标
- 自动提取不到时,在后台手动录入
- 重启后从
config.yaml中恢复已保存坐标
说明:
- 当前轻量解析 RTCM
1005 / 1006 - 解析走低频旁路,不影响主转发链路
- 同时做轻量 RTCM 健康检查:帧头、长度、CRC、完整帧数、异常帧数、最近消息类型和是否出现
1005/1006 - 健康检查只做结构级统计,不做全量 RTCM 解码
- 自动解析成功且坐标变化后会写回当前配置文件
- Docker 部署时写回的是
/data/config.yaml - 坐标暂时取不到时,不影响基站上传和普通挂载点分发,只影响地图显示和
NEAREST候选
手动坐标接口:
POST /api/stations/coords
管理后台
默认地址:
http://127.0.0.1:17001/
页面包括:
- 总览
- 基站
- 流动站
- 日志(最新在上,支持清空 Web 内存日志)
- 后台管理
当前后台行为:
- 默认关闭自动刷新
- 可点击按钮手动刷新数据
- 如需实时刷新,可在页面上手动打开自动刷新
- 地图不会主动切换为其他地图源
- 地图底图为 OpenStreetMap 标准道路图
- 地图缩放和拖动视角会在页面内刷新时尽量保持
- 基站详情会显示 RTCM 健康状态、完整帧、异常帧、最近帧和消息类型
- 清空日志只清理 Web 后台内存日志,不删除 Docker 原始日志
动态基站
如果某个 station_id 不在 config.yaml 中:
- 仍然允许接入
- 会自动出现在运行时基站列表中
- 默认挂载点名与
station_id一致
当前不要求手工维护大量基站样板。
配置保存
保存 config.yaml 时:
- 先写
config.yaml.tmp - 保留
config.yaml.bak - Linux / macOS 使用 rename 替换
- Windows 使用 swap 替换,避免先截断原文件
会触发配置写回的操作:
- 修改管理员密码
- 新增、编辑、删除 rover
- 手动录入基站坐标
- RTCM 自动解析到新的基站坐标
示例配置
当前推荐最小配置:
admin:
username: admin
password: "Bone1644"
server:
base_ingest_port: 17003
ntrip_port: 17002
api_port: 17001
base_stations: []
rovers:
- username: rover
password: "123456"
display_name: "默认流动站"
allowed_mountpoints: []
note: ""
nearest:
mountpoint: NEAREST
编译与启动
Windows
go build -o rtk-server.exe .
.\rtk-server.exe -config config.yaml
Linux / macOS
go build -o rtk-server .
./rtk-server -config config.yaml
Docker 部署
仓库已提供:
推荐部署目录:
/root/clear_ntrip/
Dockerfile
docker-compose.yml
data/
config.yaml
准备配置:
mkdir -p data
cp config.yaml.example data/config.yaml
启动:
docker compose up -d --build
停止:
docker compose down
查看:
docker compose ps
docker compose logs -f
更新:
docker compose up -d --build
如果只修改了 data/config.yaml:
docker compose restart
说明:
- 容器默认读取
/data/config.yaml - 后台写配置时会继续写回这个挂载文件
- 裸机时代的顶层
config.yaml不应再作为 Docker 主配置使用
当前限制
- 管理员密码当前仍以明文保存在配置文件中
- rover 密码当前也会明文显示在后台
- 地图底图依赖 OpenStreetMap 在线瓦片
- RTCM 自动坐标提取和健康检查只做轻量解析/统计,不做全量 RTCM 解码
Description
Lightweight private RTK/NTRIP server with dashboard
189 KiB
0 Stars
1 Watchers
0 Forks