A modern, high-performance NTRIP (Networked Transport of RTCM via Internet Protocol) server for real-time RTK GNSS correction distribution.
Built with ASP.NET 9 Core, React, TypeScript, and PostgreSQL. Designed for precision agriculture and professional surveying applications.
AgOpen Ntripcaster is a comprehensive real-time correction streaming server that:
- Receives RTCM correction data from GNSS base stations
- Distributes corrections to multiple RTK clients in real-time
- Manages users, groups, mount points, and permissions
- Visualizes client locations and stream status on interactive maps
- Monitors system health with real-time dashboards
- β Low-latency streaming (5-105ms total system latency)
- β High concurrency (1000+ concurrent clients)
- β Real-time visualization with WebSocket-based client tracking
- β Role-based access control with multi-user/group permissions
- β Email notifications for source online/offline events
- β Production-ready Docker deployment with automated migrations
- β Modern admin dashboard with dark mode support
- β Comprehensive monitoring and logging
- ASP.NET 9 Core β’ C# 13 β’ PostgreSQL 16 β’ Entity Framework Core 9
- SignalR (real-time WebSocket) β’ JWT Authentication β’ Serilog Logging
- Swagger/OpenAPI Documentation
- React 18 β’ TypeScript β’ Vite β’ Leaflet.js (mapping)
- Axios (HTTP) β’ React Router β’ CSS Modules + Design System
- Docker & Docker Compose β’ Nginx β’ PostgreSQL
- GitHub Actions (CI/CD ready)
# Clone
git clone https://github.com/AgOpenGPS-Official/ntripcasterByBKG.git
cd ntripcasterByBKG
# Backend (new terminal)
cd AgOpenNtripCaster.Server
dotnet restore && dotnet ef database update && dotnet run
# Frontend (new terminal)
cd AgOpenNtripCaster.Client
npm install && npm run devAccess:
- Frontend: http://localhost:5173
- API: http://localhost:5000
- API Docs: http://localhost:5000/swagger
- NTRIP: tcp://localhost:2101
Use our interactive setup script to configure everything automatically:
Linux/Mac:
cd deploy
chmod +x setup.sh
./setup.shWindows (PowerShell as Administrator):
cd deploy
.\setup.ps1The setup script will:
- Prompt for your domain, ports, database credentials
- Validate all inputs (domains, emails, ports)
- Auto-generate JWT secrets and passwords
- Create .env configuration file
- Generate nginx configuration
- Provide next steps
cd deploy
cp .env.example .env
nano .env # Configure manually
chmod +x deploy.sh
./deploy.shSee SETUP_GUIDE.md for setup script documentation and DEPLOYMENT.md for complete deployment instructions.
All detailed documentation is in the /docs and /deploy folders:
| Document | Purpose |
|---|---|
| SETUP_GUIDE.md | Interactive setup scripts for Linux and Windows |
| DEPLOYMENT.md | Production setup, Docker, scaling, monitoring |
| LOCAL_DEV.md | Development setup, debugging, testing |
| ARCHITECTURE_PLAN_ASPNET9.md | System design, database schema, authentication |
| DARK_MODE.md | CSS variables, theme system, styling guidelines |
| UI_ENHANCEMENTS.md | Real-time status indicators, component design |
| PROGRESS.md | Development history, completed phases, roadmap |
1. Connect TCP to hostname:2101
2. Send: "SOURCE STATION_A:sourcePassword123\r\n"
3. Stream RTCM correction data continuously
1. Connect TCP to hostname:2101
2. Send NTRIP HTTP request with credentials
3. Receive RTCM correction stream
4. Send position updates every ~10 seconds
GET http://hostname:2101/ HTTP/1.1
Returns HTML table of available mount points
ntripcasterByBKG/
βββ AgOpenNtripCaster.Server/ # C# ASP.NET 9 backend
β βββ Controllers/ # REST API endpoints
β βββ Services/ # Business logic & NTRIP server
β βββ Models/ # Entity & DTO classes
β βββ Data/ # Database context & migrations
β βββ Hubs/ # SignalR real-time communication
βββ AgOpenNtripCaster.Client/ # React + TypeScript frontend
β βββ src/components/ # React components & pages
β βββ src/services/ # API clients & hooks
β βββ src/styles/ # Global CSS design system
β βββ public/ # Static assets
βββ deploy/ # Docker & production setup
β βββ docker-compose.yml # Service orchestration
β βββ deploy.sh # Deployment script
β βββ update.sh # Update script
β βββ README.md # Deployment docs
βββ docs/ # Detailed documentation
βββ NtripCaster.sln # Visual Studio solution
- β Two-Tier Authentication (mount point credentials + source password)
- β JWT Token Authentication (stateless API access)
- β Role-Based Access Control (RBAC) (Admin, User, Source roles)
- β Password Hashing (BCrypt with salting)
- β CORS Protection (configurable origins)
- β HTTPS/TLS Ready (SSL termination via Nginx)
| Metric | Value |
|---|---|
| System Latency | 1-5ms (excluding network) |
| Network Latency | 1-100ms (typical ISP) |
| Total Latency | 5-105ms (RTK acceptable) |
| Concurrent Clients | 1000+ supported |
| Data Throughput | 100+ Mbps per instance |
MIT License - See LICENSE file for details.
You are free to use, modify, and distribute commercially.
- π Documentation: Check the
/docsfolder - π Issues: GitHub Issues
- π¬ Discussions: GitHub Discussions
# Development
cd AgOpenNtripCaster.Server && dotnet run
cd AgOpenNtripCaster.Client && npm run dev
# Production
cd deploy && ./deploy.sh
# Update
cd deploy && ./update.sh
# Logs
docker-compose logs -f backendReady to stream RTK corrections?
Start with LOCAL_DEV.md for development or DEPLOYMENT.md for production.
Questions? Check the /docs folder or open an issue.
Built for AgOpen GPS precision agriculture ecosystem Last Updated: November 2024 | Status: Production Ready β¨