mrkeyoor.com_
Tue 15 Sept 19:23 UTC
Self-Hostedevaluationupdated 14 Sept 2026

checkcle review

CheckCle is a self-hosted dashboard for watching websites, network services, certificates, servers, and containers. It combines uptime checks, infrastructure history, alerts, incidents, maintenance, and public status pages. The aim is to replace separate uptime and host-monitoring screens with one application running on infrastructure you control.

trackingstars / 7d
Verdict

Our CheckCle install pulled 497 packages into 394 MB, and npm audit found 25 known vulnerabilities, including 1 critical and 15 high-severity findings. Its 28-second successful build makes a trial reasonable for a Docker operator who wants uptime and server monitoring together. Production use should wait for an audit review and a decision about the ignored retry setting; narrower tools demand less trust.

We ran it

Lab card: what happened when we ran checkcleScreenshot of checkcle (checkcle.io)
Install✓ · 123s497 packages · 394 MB
Build✓ · 28s
Testsn/ano test script
Known vulns251 critical · 15 high · 6 moderate · 3 low (npm audit)
Repo1316 files~242,405 lines of source · 43 MB · 0 CI workflows · Dockerfile

Answers from our run

Does checkcle build from source?

Dependencies installed in 123 seconds (497 packages), and the build succeeded in 28 seconds. We cloned commit 250f5bd into a clean Debian container with 3 CPUs and no project-specific setup.

Does checkcle have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Does checkcle have known vulnerabilities in its dependencies?

npm audit flagged 25 known advisories in the dependency tree, including 1 critical at the time of our run.

Who should not use checkcle?

Organizations that require a clean dependency audit before deployment: our installed tree reported 25 known vulnerabilities, including 1 critical and 15 high.

What are the alternatives to checkcle?

Uptime Kuma, Gatus, Beszel. Our CheckCle install pulled 497 packages into 394 MB, and npm audit found 25 known vulnerabilities, including 1 critical and 15 high-severity findings.

Setup3/5One-container start, but defaults and agents need careful setup
Docs3/5Clear Docker quick start; image build and management API are unclear
Community3/53,189 stars and recent issues, with 92 open issues and PRs
Maturity2/5v1.6.0 is old, retries are ignored, and the audit needs work

Who it’s for

Small operations teams that want endpoint and server monitoring in the same self-hosted dashboard.
Homelab operators comfortable running Docker, securing a web service, and backing up its data volume.
Teams that need checks from regional agents plus alerts through common chat and push services.
Administrators willing to inspect open bugs and dependency advisories before an internet-facing deployment.

Who it’s NOT for

Organizations that require a clean dependency audit before deployment: our installed tree reported 25 known vulnerabilities, including 1 critical and 15 high.
Operators who must reproduce the official combined image from source: issue 19 records the maintainer's decision not to publish that Dockerfile, while the checked-in Dockerfiles build only the frontend.
Alerting teams that depend on retry thresholds to suppress brief failures: open issue 231 and the current checker show that max_retries is stored but ignored.
API monitors that need custom headers, request bodies, or methods beyond GET: issue 220 asks for those controls, and the current HTTP check is fixed to GET.
Platform teams that create monitors through a documented management API: in issue 174, the maintainer says the service API exists but its documentation is unavailable.

Setup reality

Our sandbox install succeeded in 123 seconds, adding 497 packages and using 394 MB. The build passed in 28 seconds. Commit 250f5bd exposed no test script or target, so tests were skipped. npm audit reported 25 known vulnerabilities: 1 critical, 15 high, 6 moderate, and 3 low. The audit is the main setup warning.

The README's shortest path pulls operacle/checkcle:latest, exposes port 8090, and mounts persistent PocketBase data. It publishes admin@example.com and Admin123456 as the initial login, which must be replaced before exposure. Alert channels need their own provider credentials, while server and regional agents need the backend address and generated tokens. Backups are also your responsibility.

Source work starts in application/ with Bun, while the documented deployment uses Docker. The checkout has frontend Dockerfiles but lacks the recipe for the combined image. Running the Go ICMP service directly needs root or cap_net_raw on Linux. Our build did not exercise probes, agents, notifications, or data recovery. That gap complicates source review.

Four endpoint checks share a dashboard with server metrics

CheckCle supports 4 endpoint checks: HTTP, DNS, ping, and TCP, with uptime history and SSL certificate records. Separate agents report CPU, memory, disk, network, and Docker information. Incidents, maintenance windows, alert templates, regional checks, and public status pages put more routine operations in the same interface. The public view can show component health without exposing the admin dashboard.

A bad probe can change status and send an alert, while an agent or historical query may fail independently. The repository we measured contained 1,316 files and about 242,405 source lines. Treat upgrades as operations work even though the quick start is one short Compose file, and budget time for migration checks.

One container starts PocketBase and a Go checking service

The 43 MB checkout includes a root Compose file that exposes port 8090, mounts /opt/pb_data, and runs operacle/checkcle:latest. Its entrypoint starts PocketBase, waits for the health route, then starts the Go network checker. An evaluator gets the main dashboard without manually connecting its internal services, all behind one container lifecycle.

The published first login is admin@example.com with password Admin123456. Replace it before exposing port 8090 and back up the data volume. Notifications need SMTP credentials or service tokens. Server and regional agents add backend URLs and generated secrets, so only the central service fits the one-container description. Keep those secrets outside the Compose file.

What happened when we ran it

Our sandbox installed 497 packages in 123 seconds and left 394 MB on disk. The build succeeded in 28 seconds. npm audit reported 25 known vulnerabilities: 1 critical, 15 high, 6 moderate, and 3 low. The supplied output does not establish exploitability, so each finding needs triage before exposure. The audit result is the main setup warning.

Tests were skipped because commit 250f5bd had no test script or target. The 43 MB checkout had 1,316 files and roughly 242,405 source lines. Our scan found 0 CI workflows, a Dockerfile, and no tests directory. Our measurement setup used an unprivileged Node 22 container with 3 CPUs, 8 GB of RAM, and no secrets; no probes or alerts were exercised.

The retry setting does not prevent single-probe outages

Open issue 231 documents a 10-second probe timeout and matches commit 250f5bd: the service record includes max_retries, but performCheck runs once and derives status from that result. One timeout can mark a service down despite a higher setting. Pull request 232 proposes a retry loop, but it remained open on September 14, 2026. Treat the control as ineffective until a verified fix reaches your deployment.

The current HTTP checker creates a 10-second operation and calls it with GET. Issue 220 asks for custom headers and request bodies because the UI and documentation provide neither. Authenticated API checks, webhooks, or POST workflows need another monitor or custom code. Gatus fits better when those request details belong in reviewed configuration.

Public status pages omit incident and maintenance messages

Version 1.6.0 added Pushover, Gotify, Notifiarr, ntfy token support, and data retention. The source also includes email, Telegram, Discord, Slack, Matrix, Signal, Google Chat, and webhook integrations. Editable templates give alerts more context than a plain up or down flag. Release notes also describe cleanup of old records by configured retention periods.

Open pull request 227 says the public page reflects component health but cannot show an active incident or scheduled maintenance from the admin interface. A customer-facing page should explain planned downtime and current response work. Until that change reaches a tested release, use CheckCle's page as a live health board.

The official combined image is not reproducible from this checkout

The checked-in Dockerfiles compile the React application and serve static files with Nginx. They do not build the combined operacle/checkcle image used by the README. In issue 19, the maintainer says that omission is intentional so users pull official images. This blocks a source-to-image audit and makes latest an uncomfortable production default. Pin a tested artifact and retain a rollback copy.

Source operation extends beyond our 28-second frontend build. The checker is written in Go, the backend uses PocketBase, and the service-operation guide requires Go 1.21 or newer. ICMP on Linux needs root or cap_net_raw. Contributors must assemble pieces that the missing combined-image recipe would normally define. Grant that capability deliberately.

July code activity has not produced a release after v1.6.0

GitHub recorded 3,189 stars, 92 open issues and pull requests, and a last push on July 17, 2026. Issue activity continued on August 31. That activity argues against calling the project abandoned, yet v1.6.0 remains the latest release since September 13, 2025, while the roadmap labels v1.7.0 in progress. No later tag was available.

Open reports cover ignored retries, slow server-history loading, and Docker discovery trouble on an Unraid agent. Our measured commit had 0 CI workflows. A proposal to add a Go workflow closed without merging on August 20, 2026, and the current tree still has no workflow directory. Follow both develop and releases when judging updates.

CheckCle suits broad monitoring on a carefully hardened host

The 497-package install and 25 audit findings make a production trial conditional. Verify the image, replace the published login, test backup recovery, and reproduce alert behavior after one failed probe. If retries or custom API requests are requirements, use another monitor now. Do that before users depend on its notifications.

Uptime Kuma is easier when the job is endpoint availability and public status. Beszel is narrower when host and container history take priority. CheckCle makes sense when one operator needs both views plus incidents and maintenance, and accepts responsibility for PocketBase data, agent tokens, port 8090, and notification credentials. That wider scope adds more failure modes to validate.

Alternatives

ProjectWhat it isPick it when
Uptime Kuma gh↗A self-hosted uptime monitor with status pages and a large notification catalog.pick this instead when endpoint availability is the main job and host metrics are secondary.
GatusA developer-oriented monitor that defines endpoint checks and alerts in configuration.pick this instead when checks should live in version-controlled configuration rather than a dashboard.
Beszel gh↗A lightweight hub and agent system for server history, Docker stats, and alerts.pick this instead when host and container metrics matter more than incidents and public status pages.

What people are saying

  1. [github-trending] operacle/checkcle

Sources

  1. CheckCle README
  2. CheckCle repository
  3. CheckCle v1.6.0 release
  4. Retry attempts bug
  5. Official image Dockerfile discussion
  6. Custom HTTP request question
  7. Management API documentation question
  8. Public status incident and maintenance proposal

More self-hosted reviews

openfang · SparkyFitness · sonic · Aether · lx-music-desktop · panel · the whole board →