ChroGPS Dash
ChroGPS Dash is a lightweight, high-performance, and mobile-friendly web dashboard for monitoring GPS-disciplined Stratum 1 NTP servers on Debian 12/13 (and equivalent) which run Chrony and GPSd. It provides real-time diagnostics It provides real-time diagnostics & metrics for Chrony and GPSd, featuring a live satellite skyview, SNR telemetry, precision timing metrics, and more.
ChroGPS Dash is Free and Open Source Software released under the MIT License.
Quick Installation
On a Debian-based instance, run the following command to install ChroGPS Dash:
curl -fsSL https://chro.gpsda.sh/install | sudo bash
Then, simply point your browser to “http://chrogps-dash.local” to access the Dashboard.1
Updating ChroGPS Dash
There are two ways to update ChroGPS Dash:
Option 1 - One-Click Web Update (recommended): When an update is available, an Update Available button appears in the dashboard header. Click it to open the update modal, enter your admin token, and the dashboard will download, verify, and install the update automatically - with a live progress display. When complete, click the Reload Dashboard button to load the updated version. Your admin token can be found in the Admin Panel (gear icon in the header, or append ?admin to the dashboard URL) under the Security tab.
Option 2 - Command Line: Simply run the Quick Installation command. It will instantly update your dashboard, skipping parts that are not necessary. All of your custom settings are retained.
Screenshots
Features
- Mission Control Layout: Live telemetry for Chrony sources, system tracking, and GPS satellite status. Interactive satellite skyview with instant CSS-driven popups. Precision diagnostics including TDOP, 3D Fix status, leap second status, and hardware serial paths.
- Signal Integrity Monitor: A real-time 0-100% health score for your antenna installation based on active satellite SNR. Color-coded bar (Green/Blue/Amber/Red) for instant visual assessment. Smart filtering ignores low-horizon satellites that would unfairly drag down the score.
- Clock Sync Health Monitor: A logarithmic precision score that answers “The signal is good, but is the server keeping time?” Covers the full range from sub-microsecond PPS precision to millisecond-level WAN sync.
- Solar Position & Interference Tracking: Overlays the sun’s current position on the satellite skyview so you can distinguish solar interference events from antenna hardware failures - a feature normally found only in high-end GNSS timing equipment. Zero-dependency: pure client-side JavaScript, no libraries, no internet required.
- Native SVG Graphs: Server-side generated graphs across eight tabs - Performance (System Offset vs Frequency), Stability (Est. Offset vs Std Dev), NTP Measurements (Offset vs Peer Delay), Root Error (Root Delay vs Root Dispersion), Frequency, GPS SNR, Visibility (Seen vs Active satellites), and PPS Drift (shown as System Offset when not locked to a PPS source). The history graphs populate automatically via the built-in systemd poller - no configuration required. All graphs feature interactive mouseover tooltips, history window buttons (1h-24h), and a 2-column “All Graphs” view - with no external graphing libraries.
- Modern UI/UX: Six themes: Light, Dark, Terminal, Catppuccin Latte, Catppuccin Mocha, and Tokyo Night. Respects system dark/light preference with a manual toggle. Configurable font sizes, configurable refresh intervals, tabbed historical data with history window buttons (1h-24h).
- Draggable Row Reordering: Customize your dashboard layout by dragging the View Tabs (Tracking, Sources, Graphs) into your preferred order. While in “All Views” mode, simply grab a tab and slide it left or right - the rows rearrange themselves instantly using cyclic ordering (each drag step rotates the tab one position in the sequence). Your custom sequence is saved automatically in your browser.
- Built-In Admin Panel: Configure all dashboard settings directly from the browser – no SSH or file editing required. Access via the gear icon in the header (or
?adminin the URL). Token-protected with server-side constant-time validation. Includes a Security tab to view, copy, or regenerate your admin token at any time. - Lightweight Backend: 100% self-contained - pure PHP and JavaScript with zero external dependencies and no Google Fonts, etc. Just one file. Self-minifying: loads fast & saves bandwidth.
- Universal GNSS Compatibility: If GPSd supports your receiver, ChroGPS Dash does too. See the GNSS Compatibility Guide for details.
Requirements
- OS: Debian 12/13, Raspberry Pi OS, Armbian, or any Debian 12/13-based derivative (Ubuntu 24.04+, Linux Mint 22+).
- Hardware: Raspberry Pi or similar SBC with a GPS module connected.
- Pre-installed: Chrony and GPSd must be installed and running before running the installer.
- Installed by the installer: Nginx, PHP-FPM 8.2+.
Supported OS Derivatives
In addition to native Debian 12/13, the installer explicitly supports:
- Ubuntu: 22.04.5 LTS (Jammy Jellyfish), 24.04 LTS (Noble Numbat), 24.10 (Oracular Oriole), and 25.04 (Plucky Puffin).
- Raspberry Pi OS: Versions based on Bookworm or Trixie.
- Armbian: Versions tracking the Debian 12/13 or Ubuntu 24.04+ repositories.
- Linux Mint: 22 (Wilma) and newer (based on the Ubuntu 24.04 package set).
Documentation
| Page | Description |
|---|---|
| Configuration | All optional settings, history graph logging, and installer command reference |
| Troubleshooting & Support | Common issues and fixes |
| Manual Installation | Install without the one-line installer |
| GNSS Compatibility | Supported GPS receivers and how compatibility works |
| Contributing | How to contribute code and the UI style guide |
Software License
ChroGPS Dash is distributed under the MIT License.
-
The ChroGPS Dash installer configures ZeroConf/mDNS so that the dashboard can be easily accessed from your local network via “
http://chrogps-dash.local”. If you do not want this functionality, run the installer command with the “-np” flag:curl -fsSL https://chro.gpsda.sh/install | sudo bash -s -- -npChroGPS Dash will then be installed and configured without the ZeroConf/mDNS (
avahi) daemon/configuration. ⤴