top of page
Search

Deploying Checkmate on Docker with Portainer and NPM

  • Writer: Ro
    Ro
  • Jun 30
  • 2 min read

# Checkmate Docker Compose + Nginx Proxy Manager Guide


Ready to take checkmate out of the home lab and host externally? This guide shows you how to deploy Checkmate using Docker Compose using Stacks on Portainer, with Nginx Proxy Manager (NPM) in front! Perfect for hosting on a cheap VPS somewhere, I prefer a VPS with Debian+Docker+Portainer, if this works for you, then here is the setup I used.

Below is the compose file that is compatible with portainer stacks.

  1. Change https://monitoring.example.com in the compose file to be your URL

  2. Create a DNS entry for monitoring.example.com pointing to the IP address of your NPM (Nginx Proxy Manager)

  3. Make sure port 443 and 80 are forwarded to your NPM

  4. Create a JWT Secret Key, there are details further down the page

  5. NPM setup details are further down the page


services:

  checkmate_client:
    image: ghcr.io/bluewave-labs/checkmate-client:latest
    container_name: checkmate_client
    environment:
      - UPTIME_APP_API_BASE_URL=https://monitoring.example.com/api/v1
      - UPTIME_APP_CLIENT_HOST=https://monitoring.example.com
    networks:
      - checkmate_network
    expose:
      - 80
    restart: unless-stopped
    depends_on:
      - checkmate_server

  checkmate_server:
    image: ghcr.io/bluewave-labs/checkmate-backend:latest
    container_name: checkmate_server
    environment:
      - DB_CONNECTION_STRING=mongodb://checkmate_mongo:27017/uptime_db?replicaSet=rs0
      - REDIS_URL=redis://checkmate_redis:6379
      - CLIENT_HOST=https://monitoring.example.com
      - JWT_SECRET=YOUR_JWT_SECRET_HERE

    networks:
      - checkmate_network
    expose:
      - 52345
    restart: unless-stopped
    depends_on:
      - checkmate_mongo
      - checkmate_redis

  checkmate_mongo:
    image: ghcr.io/bluewave-labs/checkmate-mongo:latest
    container_name: checkmate_mongo
    volumes:
      - /srv/checkmate/mongo:/data/db
    networks:
      - checkmate_network
    expose:
      - 27017
    command: ["mongod", "--quiet", "--replSet", "rs0", "--bind_ip_all"]
    healthcheck:
      test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'checkmate_mongo:27017'}]}) }" | mongosh --port 27017 --quiet
      interval: 5s
      timeout: 30s
      retries: 30
    restart: unless-stopped

  checkmate_redis:
    image: redis:latest
    container_name: checkmate_redis
    volumes:
      - /srv/checkmate/redis:/data
    networks:
      - checkmate_network
    expose:
      - 6379
    restart: unless-stopped

networks:
  checkmate_network:
    driver: bridge


Generating a JWT Secret

You must generate a random JWT secret for the server. Here are two options:


On Linux or WSL:


openssl rand -hex 32

On Windows:



openssl rand -hex 32

Paste that into the JWT_SECRET value in your compose.



Nginx Proxy Manager Configuration



Make sure you join your NPM Container to the "checkmate_network" so it can proxy the requests to checkmate_client container.


Create a Proxy Host



Forward Host/IP: checkmate_client container IP

Forward Port: 80

Scheme: http

Enable Websockets Support

Force SSL ON

Use Let’s Encrypt certificate for monitoring.example.com


Add a Custom Location

Location: /api/v1

Forward Host/IP: checkmate_server container IP

Forward Port: 52345

Scheme: http

SSL Tab

Force SSL: ON

HTTP/2 Support: optional

HSTS: optional

Why the custom location?

/ goes to the client container

/api/v1 goes to the backend container

your browser stays HTTPS

no CORS or mixed content issues



Complete Setup


You should now be able to visit https://monitoring.example.com (Obviously change to your URL), and click register at the bottom of the page to set this initial super user.

ree

 
 
 

Recent Posts

See All
Which versions of VMware tools?

At the the time of writing in May 2024 this information was up to date Which version of vmware tools do I need to install for Windows...

 
 
 

Comments


  • LinkedIn
  • Facebook

© 2024  |  Roam IT Solutions

bottom of page