Server requirements
Ruby Systems ANPR is designed for a standard PHP/MySQL web server. The application package includes an installer and deployment guidance.
anpr.yourdomain.com, with a valid SSL certificate.Use this section when setting up a Hikvision ANPR camera, validating HTTPS delivery, enabling the camera heartbeat or diagnosing captures, direction and connectivity.
Ruby Systems ANPR is designed for a standard PHP/MySQL web server. The application package includes an installer and deployment guidance.
anpr.yourdomain.com, with a valid SSL certificate.After adding a camera in Ruby ANPR, use the generated API key in the camera's Alarm Server configuration. HTTPS port 443 is the recommended starting point on compatible firmware.
The exact Hikvision menu varies by firmware. On supported models the setting is normally under Event / Alarm Setting / Alarm Server or the equivalent Road Traffic linkage configuration.
Ruby ANPR can use Hikvision's periodic GPSUpload event as a lightweight camera heartbeat. This lets the portal show whether a camera is online even when no vehicles have passed recently.
With the heartbeat enabled, Ruby ANPR keeps Last seen separate from Last capture. A recent Last seen time proves the camera can reach the server; Last capture shows when the most recent vehicle event was recorded.
Ruby ANPR can operate behind Cloudflare while the Hikvision camera posts to the HTTPS Alarm Server endpoint. Keep SSL configured correctly and confirm the camera's Test function or a real detection reaches the portal.
If a particular camera or network has trouble reaching a proxied hostname, temporarily switching the ANPR DNS record to DNS only is a useful troubleshooting step. Once connectivity is proven, restore the configuration appropriate for your deployment.
After DNS changes, rebooting the camera can force a fresh DNS lookup.
Ruby ANPR maps Hikvision forward to IN and reverse/backward to OUT. If a camera sends only one direction, the portal will correctly show only that direction.
In the Hikvision Road Traffic / Arming Schedule and Linkage Method settings, configure the required linkage for both Forward and Reverse if you want events generated in both directions. Also confirm the detection line, lane geometry and camera zoom are correct.
On supported firmware, the Test button can send a complete synthetic event through the same path used by normal captures. Ruby ANPR may display it as registration 1111111 with 0% confidence and UNKNOWN direction.
This is useful because it proves the full route is working: camera → HTTPS → ingest.php → image storage → database → dashboard.
Some older Hikvision firmware or hosting combinations may require plain HTTP port 80. In that case, keep normal browser traffic on HTTPS but make sure /ingest.php can receive the camera POST without being intercepted by an HTTP-to-HTTPS redirect.
If the hosting panel creates a vhost-level Force HTTPS redirect before .htaccess, disable that panel-level redirect and let the application's supplied rules handle normal browser redirects while exempting the ingest path.
A 401 response means Ruby ANPR was reached, but the supplied camera API key was not accepted. Confirm the whole generated URL was copied into the camera. If the key has been exposed or is uncertain, use Rotate API key in the Cameras page and update the camera.
?key=TEST request returning 401 is a useful server test because it proves PHP reached the ingest endpoint.Check that the site's capture storage directory is writable by the PHP user and that PHP Fileinfo is enabled. Compatible Hikvision vehicleDetection events normally provide licensePlatePicture, vehiclePicture and detectionPicture.
Do not make the storage directory publicly browsable. Ruby ANPR serves stored images through its authenticated image endpoint.
The Cameras page and dashboard can use heartbeat timestamps to distinguish camera connectivity from ANPR activity.
Admins can also review system status, disk space, capture storage and audit history from the portal.
Work from the network inward. First confirm DNS and HTTPS, then the web-server access log, then PHP/database behaviour. Changing multiple settings at once makes camera faults much harder to isolate.
A genuine event should appear as a POST to /ingest.php?key=.... Heartbeat requests are normally small and contain the GPSUpload event type; real ANPR events may include registration, direction, confidence metadata and image attachments.
Send the symptoms and the stage that is failing. Avoid sending passwords or live camera API keys.