Skip to main content...

Install ChroGPS Dash Manually

If you prefer to set things up manually, ensure you have the following:

  • Web Server: Nginx or Apache
  • PHP: Version 8.2 or newer
  • System Utilities: sudo (required for executing chronyc commands)
  • NTP/GPS: Chrony and GPSd installed and running

Configuration Details

Sudo Permissions

The dashboard requires permission to execute chronyc commands to fetch timing data. The installer adds the following line to /etc/sudoers:

www-data ALL=(ALL) NOPASSWD: /usr/bin/chronyc sources, /usr/bin/chronyc tracking, /usr/bin/chronyc serverstats, /usr/bin/chronyc -n clients, /usr/bin/chronyc clients

…So you will likely need to do the same.

Log File Access

  • The graphs are generated by parsing raw Chrony logs (tracking.log, statistics.log, measurements.log). The installer:
  • Adds the www-data user to the _chrony group.
  • Sets group-read/write permissions (g+rw) on the log files in /var/log/chrony.
  • Configures Chrony to log the data if it’s not enabled.

…So you will need to perform these tasks if you wish to install ChroGPS Dash manually.

GPSD Integration

The dashboard connects to gpsd via a local socket on port 2947. Ensure gpsd is configured to listen on all interfaces or at least localhost.

History Graph Data Files

The satellite and PPS history graphs are always-on and appear automatically once their rolling log files contain data. You must create the files and set www-data ownership before starting the dashboard, otherwise the dashboard will attempt to create them itself (and may fail without the right permissions):

sudo touch /var/tmp/cgpsd-sat-counts.data \
           /var/tmp/cgpsd-gps-snr.data \
           /var/tmp/cgpsd-pps-offset.data
sudo chown www-data:www-data /var/tmp/cgpsd-sat-counts.data \
                              /var/tmp/cgpsd-gps-snr.data \
                              /var/tmp/cgpsd-pps-offset.data
sudo chmod 644 /var/tmp/cgpsd-sat-counts.data \
               /var/tmp/cgpsd-gps-snr.data \
               /var/tmp/cgpsd-pps-offset.data

The installer handles this automatically; the above is only required for a fully manual setup.

Systemd Poller Timer

The installer automatically creates and enables two systemd units that poll the dashboard’s data endpoint (?ajax=1) every 30 seconds, keeping all history logs populated continuously without requiring an open browser tab:

  • /etc/systemd/system/chrogps-poller.service - oneshot service that runs curl against the local endpoint.
  • /etc/systemd/system/chrogps-poller.timer - fires the service every 30 seconds (OnUnitActiveSec=30s).

For a fully manual setup, create and enable these units yourself, or use an equivalent cron job. Example cron entry (every 30 seconds):

* * * * * curl -s 'http://localhost/index.php?ajax=1' >/dev/null
* * * * * sleep 30; curl -s 'http://localhost/index.php?ajax=1' >/dev/null

Install The Script

Once you have everything setup, grab the script and place it in a location accessible from your web server.

Document Version: b19f79d -- Last Revision: 2026-03-16
Permanent Link: <https://w0chp.radio/chrogps-dash/manual-installation/>