Checkmate 3 行命令搭好自托管服务器监控,附完整 Docker 配置
Checkmate 3 行命令搭好自托管服务器监控附完整 Docker 配置【免费下载链接】CheckmateCheckmate is an open-source, self-hosted tool designed to track and monitor server hardware, uptime, response times, and incidents in real-time with beautiful visualizations. Dont be shy, join here: https://discord.com/invite/NAb6H3UTjK :)项目地址: https://gitcode.com/GitHub_Trending/checkm/Checkmate凌晨三点你的网站挂了但你还在熟睡用户已经在群里连环刷屏。这就是 Checkmate 想替你干的事一个开源、可自托管的监控系统实时盯住服务器在线状态、响应时间、SSL 证书到期和事件记录轻量到一台树莓派就能跑。 3 行命令跑起 Checkmate前置只需要装好 Docker 和 Git。整个部署就三步git clone https://gitcode.com/GitHub_Trending/checkm/Checkmate cd Checkmate/docker JWT_SECRET$(openssl rand -hex 32) docker compose up -d启动后浏览器打开http://localhost:52345就能看到登录页注册第一个账号即可使用。这套 docker-compose.yaml 拉起的是官方 all-in-one 镜像前端 后端 任务调度合成一个容器外加一个 MongoDB 8.0 存数据。两个服务都带了健康检查MongoDB 没就绪时 Checkmate 会一直等不会带着坏状态启动。跑通后建议把JWT_SECRET写进docker/.env文件compose 会自动读取这样以后重启不用每次重新生成。想从源码自建镜像的话用 docker/Dockerfiledocker build -f docker/Dockerfile -t checkmate .⚙️ 这几个环境变量别等出事才改镜像完全靠 server 容器的环境变量配置最常碰的几个变量说明JWT_SECRET必填。签名 token 用openssl rand -hex 32生成CLIENT_HOST必填。用户访问应用的地址通知邮件和状态页里的链接都靠它局域网 IP 或域名都要改成实际值NODE_ENV默认是development会关闭 API 限流正式环境必须设为productionENCRYPTION_KEY可选openssl rand -base64 48生成。Docker TLS 监控的私钥落盘加密靠它TOKEN_TTL登录 token 有效期默认99d敏感环境可调短QUEUE_MODEprimary默认跑 API 调度worker只跑检查任务用于拆分节点监控规模上来后把primary和worker拆到不同机器就能水平扩展仓库的 docker/dev/docker-compose.yaml 给了一个 primary worker mongo 三服务的示例可直接抄。 生产加固TLS、加密与数据持久化对外暴露前做三件事1. 上 HTTPS。在 52345 端口前挂一个反向代理Caddy、Traefik、nginx 都行Checkmate 本身不带证书管理。同时把CLIENT_HOST改成https://开头的实际域名。2. 给敏感数据加密。启用 Docker TLS 监控前必须先设好ENCRYPTION_KEY否则保存监控会直接报错提示你。轮换时用OLD_KEY,NEW_KEY逗号列表做双钥过渡避免解密失败。3. 备份数据卷。所有监控数据都在mongo-data卷里定期备份docker compose exec mongodb mongodump --archive backup_$(date %F).dump两个进阶场景监控本机Docker 守护进程时把 socket 挂进容器并授予组权限989 换成stat -c %g /var/run/docker.sock的输出services: checkmate: volumes: - /var/run/docker.sock:/var/run/docker.sock:ro group_add: - 989监控远程Docker daemon 则用tcp://host:2376强制双向 TLSREADME 里有完整的 openssl 签发流程内网私有 CA 证书可以参考 docs/custom-ca-trust.md。Kubernetes 用户仓库里还带了 Helm chart在 charts/helm/checkmate/ 下有独立的安装说明。 它能盯什么出事了通知谁Checkmate 压测过 1000 活跃监控检查类型相当全HTTP含 SSL 证书到期检查、Ping、端口、DNS、gRPC、WebSocket、游戏服务器、页面速度JSON 查询监控不只检查活着还能断言接口返回的字段值Docker 监控每次检查记录所有容器的状态、健康、CPU/内存、重启次数和发布端口可选存最近 200 行容器日志基础设施指标CPU、内存、磁盘、温度装上配套的 Capture agent 即可Linux/Windows/Mac/树莓派都能跑状态变化不是立刻报警的监控按你设的状态变更阈值评估比如连续失败 2 次才转 down达标后创建或关闭事件incident再触发通知。通知渠道有 14 种邮件、Webhook、Discord、Slack、Telegram、PagerDuty、Matrix、Microsoft Teams、Pushover、SMSTwilio等。计划内停机可以在维护窗口里定时避免半夜误报。每个监控还能一键生成对外状态页带 5 套主题。 部署成功了吗报错了先看这里确认服务健康一条命令的事——健康探针跑在独立的 52346 端口上curl -s http://localhost:52346/livez docker compose pslivez返回 200 且两个容器都是 healthy就稳了。常见卡点容器起不来九成是JWT_SECRET没注入compose 会直接以${JWT_SECRET:?...}报错拒启动检查 shell 环境变量或.env文件页面能开但功能异常CLIENT_HOST还停在localhost通知链接和 CORS 都会不对任务不执行/积压看QUEUE_MODE是否配错docker compose logs -f checkmate翻日志日志级别用LOG_LEVELinfo默认debug太吵MongoDB 起不来docker compose logs -f mongodb重点看磁盘空间和/data/db权限想观察队列Web 界面的 Logs 页有专门的 Queue 标签能看到 worker 心跳Checkmate 监控 323 台服务器时 Node 进程内存占用极低MongoDB 约 400MB对资源几乎零要求。把这三行命令跑起来你的基础设施从此 24 小时有人盯着。【免费下载链接】CheckmateCheckmate is an open-source, self-hosted tool designed to track and monitor server hardware, uptime, response times, and incidents in real-time with beautiful visualizations. Dont be shy, join here: https://discord.com/invite/NAb6H3UTjK :)项目地址: https://gitcode.com/GitHub_Trending/checkm/Checkmate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考