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 ✨