1 Register the checker in the UI
You need workspace admin access in PulseQuay. All checker
management happens at Workspace → Checkers
(/workspace/checkers).
- Navigate to Workspace → Checkers and find the Register a workspace checker form.
-
Fill in Name — a human-readable label, e.g.
office-checkeroreu-west. -
Fill in Base URL — the address at which the PulseQuay API
will reach your checker machine, e.g.
http://203.0.113.10:8081. This must be reachable from the PulseQuay server. - Click Register checker.
HMAC_SECRET.
Click Copy key and store it securely — it is shown only once.
If you lose it, a SuperAdmin can rotate it and you will need to restart the
container with the new value.
2 Pull the checker image
On the machine that will run the checker:
docker pull dzecevic/pulsequay-checker:latest
Pin to a specific version tag for production deployments. The Docker Hub page lists all available tags.
3 Start the checker container
Paste the HMAC_SECRET you copied in Step 1 into the command below:
docker run -d \
--name pulsequay-checker \
--restart unless-stopped \
-p 8081:8081 \
-e APP_ENV=production \
-e LOG_LEVEL=info \
-e CHECKER_ADDR=:8081 \
-e HMAC_SECRET=<paste-your-key-here> \
-e HMAC_ALLOWED_SKEW=30s \
-e ALLOW_PRIVATE_TARGETS=false \
dzecevic/pulsequay-checker:latest
| Variable | Required | Description |
|---|---|---|
| HMAC_SECRET | required | The one-time key shown after registration in Step 1. |
| CHECKER_ADDR | required | Address and port the checker listens on. Default: :8081 |
| HMAC_ALLOWED_SKEW | optional | Clock-skew tolerance for HMAC validation. Default: 30s |
| ALLOW_PRIVATE_TARGETS | optional |
Set to true to allow the checker to reach private/internal
IP ranges (RFC 1918 addresses). Useful for monitoring internal services.
Default: false
|
| LOG_LEVEL | optional | debug, info, warn, error. Default: info |
| APP_ENV | optional | production or development. Default: production |
ALLOW_PRIVATE_TARGETS=true and deploy the checker inside your
private network. It will then be able to reach addresses like
10.0.0.x, 192.168.x.x, and
172.16–31.x.x that a public checker cannot.
4 Verify the checker is running
On the checker machine:
curl http://localhost:8081/healthz
# expected: {"status":"ok"}
From another machine (confirm the PulseQuay API can reach it):
curl http://<checker-public-ip>:8081/healthz
# expected: {"status":"ok"}
5 Confirm the checker is healthy in PulseQuay
PulseQuay polls every registered checker every 30 seconds. After about 30 seconds, return to Workspace → Checkers — your checker should show status up in the table.
6 Assign targets to the checker
When creating or editing a monitored target, select your checker from the Checker dropdown. Targets with no checker assigned fall back to the workspace default. This lets you route specific targets — internal services, region-sensitive endpoints — through your custom checker while keeping everything else on the default.
Updating the checker
docker pull dzecevic/pulsequay-checker:latest
docker stop pulsequay-checker && docker rm pulsequay-checker
# Re-run the docker run command from Step 3 with the same HMAC_SECRET
Viewing logs
docker logs -f pulsequay-checker