Installing Checkmate
Deploy Checkmate using Docker, Kubernetes, or from source.
Overview
Checkmate offers several installation options depending on your needs:
- Docker (recommended) — fastest way to get running
- ARM / Raspberry Pi — dedicated image for ARM devices
- Kubernetes / Helm — for orchestrated deployments
- Developer setup — for contributing or customizing
Option 1: Docker (combined)
The docker/dist-mono/, docker/dist/, and docker/dist-arm/ folders referenced below live on the repository's master branch, which matches the released Docker images. The default develop branch uses a new, simplified Docker layout that ships with the next release, so you won't see these folders when browsing the repository's front page.
The simplest approach serves the React frontend from the API server, with MongoDB in a separate container.
Local deployment
- Download the Docker Compose file from the repository's
docker/dist-mono/directory - Start the services:
docker compose up- Access Checkmate at
http://localhost:52345
Remote server deployment
When hosting on a remote machine, update three environment variables in the compose file. Replace 143.110.231.94 with your server's IP:
UPTIME_APP_API_BASE_URL=http://143.110.231.94:52345/api/v1
UPTIME_APP_CLIENT_HOST=http://143.110.231.94
CLIENT_HOST=http://143.110.231.94| Variable | Purpose |
|---|---|
UPTIME_APP_API_BASE_URL | Directs the frontend to the backend API |
UPTIME_APP_CLIENT_HOST | Constructs frontend links |
CLIENT_HOST | Authorizes API requests from specified origins |
Mount identical MongoDB directories to retain data during upgrades. Always back up your data directory before migrating versions.
Option 2: Docker (separate frontend/backend)
This option uses Nginx to serve the React frontend independently from the API server.
Local deployment
- Download the Docker Compose file from the
docker/dist/directory - Start the services:
docker compose up- Access Checkmate at
http://localhost
Optional: Docker container monitoring
To monitor Docker containers, uncomment this volume mount in the compose file:
volumes:
- /var/run/docker.sock:/var/run/docker.sock:roRemote deployment
- Download the Docker Compose file
- Update
UPTIME_APP_API_BASE_URLto reference your remote server - Run
docker compose up - Access at
http://<your-server-ip>
Option 3: ARM / Raspberry Pi
For ARM devices (Raspberry Pi 4/5, Apple Silicon Macs), use the dedicated ARM compose file from docker/dist-arm/:
docker compose upThe application runs at http://localhost:52345 with the same environment variable configuration as Option 1.
Option 4: Kubernetes with Helm
Prerequisites
- A running Kubernetes cluster
- Helm CLI installed and configured
kubectlconfigured to access your cluster
Deploy
git clone https://github.com/bluewave-labs/checkmate.git
cd checkmate/charts/helm/checkmateEdit values.yaml to configure:
client.ingress.hostandserver.ingress.hostwith your domain namesserver.protocol(http or https)- Secrets under the
secretssection (JWT_SECRET, email credentials, API keys)
Then deploy:
helm install checkmate ./charts/helm/checkmateVerify the deployment:
kubectl get pods
kubectl get svcEnabling TLS with cert-manager
If you have cert-manager installed, enable automatic TLS:
client:
protocol: https
ingress:
enabled: true
host: checkmate.example.com
className: nginx
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
tls:
enabled: true
secretName: checkmate-client-tls
server:
protocol: https
ingress:
enabled: true
host: checkmate.example.com
className: nginx
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
tls:
enabled: true
secretName: checkmate-server-tlsVerify certificates:
kubectl get certificates
kubectl describe certificate checkmate-client-tlsOption 5: Third-party hosting
You can also deploy Checkmate using these hosting providers:
- Elestio — managed open-source hosting
- Pikapods — one-click container hosting
- Sive Host — hosting provider (South Africa)
Option 6: Developer installation
For contributing or customizing Checkmate with hot-reload support.
Clone and start MongoDB
You don't need to build any Docker images for development. The only container required is MongoDB:
git clone https://github.com/bluewave-labs/checkmate
cd checkmate
docker run -d -p 27017:27017 \
-v uptime_mongo_data:/data/db \
--name uptime_database_mongo mongo:8.0Start the server
cd checkmate/server
npm installCreate a .env file in the server directory (see environment variables below), then:
npm run devServer runs on localhost:52345 by default.
Start the client
cd checkmate/client
npm installCreate a .env file in the client directory (see environment variables below), then:
npm run devFrontend runs on localhost:5173 by default.
Environment variables
Client variables
Create .env in the client directory:
| Variable | Required | Description |
|---|---|---|
VITE_APP_API_BASE_URL | Yes | Server base URL, e.g. http://localhost:52345/api/v1 |
VITE_APP_LOG_LEVEL | No | Logging level: none, error, warn, debug |
VITE_APP_DEMO | No | Enable demo mode: true or false |
VITE_APP_API_BASE_URL="http://localhost:52345/api/v1"
VITE_APP_LOG_LEVEL="debug"Server variables
Create .env in the server directory:
| Variable | Required | Description |
|---|---|---|
CLIENT_HOST | Yes | Frontend URL (must be a full URL), e.g. http://localhost:5173 |
JWT_SECRET | Yes | Secret key for JWT authentication |
DB_CONNECTION_STRING | Yes | MongoDB URL, e.g. mongodb://localhost:27017/uptime_db |
ORIGIN | No | CORS origin for requests |
LOG_LEVEL | No | debug, info, warn, error |
TOKEN_TTL | No | Token expiration, e.g. 99d |
CLIENT_HOST="http://localhost:5173"
JWT_SECRET="my_secret"
DB_CONNECTION_STRING="mongodb://localhost:27017/uptime_db"
TOKEN_TTL="99d"
ORIGIN="localhost"For PageSpeed monitoring, you'll need a free Google PageSpeed API key.
Using a custom CA
If you need to monitor internal HTTPS endpoints with certificates from private Certificate Authorities (like Smallstep), see the Custom CA Trust Guide for Docker configuration options.