家里服务挂了才发现?用 Uptime Kuma 做自托管状态页,cpolar 远程查看告警面板
家里服务挂了才发现用 Uptime Kuma 做自托管状态页cpolar 远程查看告警面板标签Uptime Kuma、Docker、cpolar、内网穿透、自托管家里小主机跑久了最尴尬的不是服务挂了而是你到用的时候才发现它已经挂了一晚上。NAS、软路由、下载器、相册、博客、Git 服务、Webhook 服务……一台机器上服务越多“我记得它一直挺稳”的错觉就越强。真正需要的是一个轻量状态页它不用采一堆复杂指标只要清楚告诉你——这个服务现在活着吗挂过几次什么时候恢复。这篇用 Uptime Kuma 做一套自托管状态页重点监控 HTTP、TCP、Ping 三类常见目标再用 cpolar 把本地3001端口临时映射成 HTTPS 地址。外出时看一眼状态页或者临时分享只读状态页给别人都够用了。这里先把边界说清楚2026-05-27 那篇 Prometheus Grafana 更适合看 CPU、内存、磁盘、请求量、趋势曲线这些“指标和趋势”这篇只解决“服务活没活、状态页怎么给人看、掉线怎么提醒”。两者是系列承接不要混成同一套东西。内链预留Prometheus Grafana 监控告警实战2026-05-271 为什么这里选 Uptime KumaUptime Kuma 是一个开源自托管监控工具项目仓库louislam/uptime-kuma在 GitHub 上已经有 87,663 stars、7,955 forks更新时间为 2026-06-05T06:00:55Z。它的定位很直接用一个 Web 面板监控服务可用性并生成状态页。它适合家庭服务器和小团队有三个原因部署轻Docker 一条命令就能跑起来默认 Web 端口是3001。探测类型够用HTTP(s)、TCP、Ping 都支持覆盖大多数家庭服务。状态页友好可以把多个监控项放到一个公开状态页里给自己或别人看。如果你要看“服务为什么慢”那是 Prometheus Grafana 的活如果你只想知道“服务是不是还活着”Uptime Kuma 更省心。这篇默认你的机器已经装好 Docker。CSDN 热榜里 WSL2 docker-desktop 发行版介绍热度 5844掘金低配服务器部署实战热度 621也说明 Docker 和低配服务器实战仍然是很多人正在折腾的方向。2 环境准备先确认 Docker 和端口本次演示用一台 Linux 小主机、NAS 或 WSL2 环境都能跟着做。只要 Docker 能正常运行Uptime Kuma 就可以用容器启动。先检查 Dockerdocker --version docker compose version如果第一条命令能输出 Docker 版本说明 Docker 已安装。第二条命令用于确认 Docker Compose 插件是否可用本篇部署主流程使用docker run所以 Compose 不是硬依赖。再确认3001端口没有被占用lsof -i :3001没有输出时说明端口空闲。若看到已有进程占用先停掉原服务或者把后面命令里的3001:3001左侧宿主机端口改成其他端口例如3011:3001。这里别急着上公网。先在局域网跑通本地面板再考虑 cpolar 远程访问。排错会轻松很多。3 用 Docker 部署 Uptime KumaUptime Kuma 官方仓库给出的 Docker 运行方式很干净直接拉镜像、映射端口、挂载数据卷即可。执行下面这条命令docker run -d \ --restartalways \ -p 3001:3001 \ -v uptime-kuma:/app/data \ --name uptime-kuma \ louislam/uptime-kuma:2参数简单解释一下--restartalways机器重启后容器自动拉起。-p 3001:3001把宿主机3001映射到容器内3001。-v uptime-kuma:/app/data把 Uptime Kuma 数据保存到 Docker volume重建容器时数据还在。louislam/uptime-kuma:2使用官方 Docker 镜像的 2.x 标签。启动后看容器状态docker ps --filter nameuptime-kuma看到uptime-kuma容器处于Up状态后打开http://你的服务器IP:3001如果是在本机操作也可以访问http://localhost:3001首次打开会进入管理员账号创建页面。这里建议用强密码不要用生日、手机号、admin123这种组合。后面即使用 cpolar 临时访问也要默认管理员入口是敏感页面。如果页面打不开按这个顺序查# 1. 容器是否在跑 docker ps --filter nameuptime-kuma # 2. 容器日志是否报错 docker logs uptime-kuma --tail 50 # 3. 本机端口是否监听 lsof -i :3001这一步不是为了“跑个容器”而跑容器而是先确认 Uptime Kuma 的本地 Web 面板已经稳定可访问。后面所有 HTTP、TCP、Ping 监控项都要在这个面板里配置。4 添加 HTTP 监控盯住网页和接口登录 Uptime Kuma 后点击页面里的“添加新的监控项”。不同语言界面文案会随语言包变化核心入口就是新增监控项。HTTP 监控适合盯这些服务家庭博客http://192.168.1.10:8080NAS Web 管理页http://192.168.1.20:5000自建 APIhttp://192.168.1.30:8000/healthWebhook 接收服务http://192.168.1.40:3000这里以一个本地博客为例监控类型HTTP(s) 名称home-blog URLhttp://192.168.1.10:8080 检测间隔60 秒 重试次数1填完保存列表里会出现home-blog。状态变绿时说明 Uptime Kuma 能正常访问这个地址。划重点URL 一定要填 Uptime Kuma 容器所在机器能访问到的地址。你在笔记本浏览器能打开不代表容器所在小主机也能打开。如果保存后一直红先检查三件事# 在部署 Uptime Kuma 的机器上测试目标 URL curl -I http://192.168.1.10:8080 # 检查目标服务是否监听端口 nc -vz 192.168.1.10 8080 # 检查目标机器防火墙是否放行对应端口家庭网络里最常见的坑是 IP 写错、服务只监听127.0.0.1、防火墙没放行。这里先只加 1 到 2 个 HTTP 监控项确认链路跑通后再批量加排错更轻松。5 添加 TCP 和 Ping 监控别只盯网页HTTP 监控能看网页和接口但不是所有服务都有网页。SSH、数据库代理、游戏服、内网端口服务更适合用 TCP 监控。5.1 用 TCP 监控端口是否开放继续点击“添加新的监控项”这次选择 TCP。示例配置监控类型TCP 名称home-ssh 主机名192.168.1.10 端口22 检测间隔60 秒保存后如果状态变绿说明 Uptime Kuma 能连到这台机器的22端口。它不负责登录 SSH也不采集 SSH 里的指标只判断端口是否可连接。这里别把数据库端口直接暴露到公网。TCP 监控只在内网探测端口活性和对公网开放数据库不是一回事。5.2 用 Ping 监控主机是否在线Ping 监控适合判断一台设备是否在线例如软路由、NAS、小主机、打印机、旁路由。示例配置监控类型Ping 名称nas-device 主机名192.168.1.20 检测间隔60 秒保存后状态变绿表示设备能被 ping 通。若一直红先确认目标设备是否禁用了 ICMP 响应。有些系统默认不响应 ping但 Web 服务仍然正常这种情况用 HTTP 或 TCP 监控更合适。到这里HTTP、TCP、Ping 三类探测就齐了HTTP看网页、接口、健康检查地址。TCP看端口是否开放。Ping看主机是否在线。这套组合对家庭服务器够实用不会把你拖进复杂指标采集里。6 创建状态页给自己一个只读入口监控项加完后下一步是创建状态页。状态页的价值在于不用进管理员后台也能看到服务当前状态和历史可用性。在 Uptime Kuma 左侧找到“状态页”入口新建一个状态页。示例配置标题Home Lab Status Slughome-lab 说明家庭服务器服务状态页 显示监控项home-blog、home-ssh、nas-device保存后Uptime Kuma 会生成一个状态页地址常见形式如下http://你的服务器IP:3001/status/home-lab这个页面适合分享因为它只展示状态不需要管理员账号。管理员后台仍然是http://你的服务器IP:3001/dashboard提醒一句后面用 cpolar 映射时优先分享/status/home-lab这种状态页地址不要把管理员面板地址长期丢到外面。管理员账号再强也不该被当成公开入口使用。如果状态页里看不到某个监控项回到状态页编辑页检查它是否已经被添加到对应分组。状态页不是自动展示所有监控项需要你选择要公开展示哪些服务。7 用 cpolar 临时远程查看状态页Uptime Kuma 跑在家里局域网时外出就看不到192.168.x.x:3001。这时可以用 cpolar 开一个 HTTP 隧道把本地3001映射成一个 HTTPS 公网地址。这一步的定位是“临时远程查看”和“短时分享只读状态页”不是把管理员后台长期裸露出去。7.1 安装并登录 cpolarcpolar 官网入口https://www.cpolar.com/ https://www.cpolar.com/download https://dashboard.cpolar.com/Linux / 树莓派 / 支持 systemd 的新式 Linux 可以使用官方一键安装脚本curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash安装完成后检查版本cpolar version启动并检查本地 Web UIsudo systemctl start cpolar curl -s http://127.0.0.1:9200 || echo cpolar 服务未启动打开本地管理界面http://127.0.0.1:9200有图形界面时登录 Web UI 通常可以完成账号绑定。纯命令行环境下可以登录 cpolar 后台在“验证”页面获取 Authtoken再执行cpolar authtoken 你的AuthtokenAuthtoken 页面地址https://dashboard.cpolar.com/auth这里别把 token 写进公开文章评论、截图或仓库配置里。它和账号绑定相关泄露后要及时重置。7.2 创建 HTTP 隧道映射 3001如果只是临时查看直接用命令行开 HTTP 隧道最省事cpolar http 3001命令运行后终端会输出公网访问地址。复制其中的 HTTPS 地址例如https://xxxx.cpolar.top浏览器访问这个地址就能打开 Uptime Kuma 面板。要查看只读状态页在后面拼上状态页路径https://xxxx.cpolar.top/status/home-lab如果你更喜欢 Web UI 操作也可以打开http://127.0.0.1:9200创建隧道隧道名称uptime-kuma 协议http 本地地址3001 域名类型随机域名 地区按需选择创建后进入“状态 → 在线隧道列表”复制生成的公网 HTTPS 地址。cpolar 免费套餐生成的是随机临时公网地址24 小时内会变化。它适合短时查看、临时分享、外出排查如果要固定二级子域名需要基础套餐或以上。自定义域名和固定 TCP 地址需要专业套餐或以上。7.3 安全提醒状态页可以分享后台不要长期裸露这里我会把安全提醒写得直白一点不要把 Uptime Kuma 管理员面板当长期公网入口。更稳妥的做法是cpolar 隧道按需启动用完关闭。管理员账号使用强密码避免弱口令。对外只分享/status/home-lab这种只读状态页。不把数据库、SSH 等高风险端口当作默认公网服务暴露。如果只是自己偶尔外出看状态随机 HTTPS 地址就够用。需要给家人、同事长期看状态页再考虑固定二级子域名并且仍然只分享状态页。8 常见问题哪里红了先查哪里Uptime Kuma 的好处是界面直观但服务变红时也别急着怀疑工具。按链路查能省不少时间。8.1 HTTP 监控红了先在 Uptime Kuma 所在机器上执行curl -I http://目标IP:目标端口如果这里不通说明不是 Uptime Kuma 的问题而是目标服务、网络或防火墙的问题。重点检查目标服务是否启动。URL 是否写错路径。服务是否只监听127.0.0.1。防火墙是否放行目标端口。8.2 TCP 监控红了用nc测端口连通性nc -vz 目标IP 目标端口如果连接失败检查服务端口、IP、内网路由、防火墙。TCP 监控只验证端口连通不验证业务登录是否成功。8.3 Ping 监控红了Ping 红不等于机器宕机。有些设备禁止 ICMP 响应或者路由器拦截了 ping。验证方式ping -c 4 目标IP如果 ping 不通但 HTTP 或 TCP 监控正常就把这个设备改用 HTTP/TCP 监控不要强行用 Ping 判断。8.4 cpolar 地址打不开按这个顺序查# 1. Uptime Kuma 本地是否能打开 curl -I http://127.0.0.1:3001 # 2. cpolar 本地 Web UI 是否能打开 curl -s http://127.0.0.1:9200 || echo cpolar 服务未启动 # 3. 查看 cpolar 是否有在线隧道如果本地3001都打不开先修 Uptime Kuma如果9200打不开先修 cpolar 服务如果隧道不在线重新创建 HTTP 隧道并复制新的公网 HTTPS 地址。9 收个尾轻量状态页先跑起来这套流程做完后你已经有了一个家用服务状态页Uptime Kuma 在本地负责探测 HTTP、TCP、Ping状态页负责展示服务是否在线cpolar 负责把本地3001临时映射成 HTTPS 地址方便外出查看或短时分享只读页面。关键步骤其实就三块用 Docker 启动 Uptime Kuma把数据挂到uptime-kumavolume。添加 HTTP、TCP、Ping 监控项并把要公开展示的服务放进状态页。用 cpolar 临时映射3001优先访问和分享/status/home-lab只读状态页。我建议先把这套轻量可用性监控跑起来再去折腾复杂监控。服务有没有活着是最先要回答的问题CPU、内存、磁盘趋势这些再交给 Prometheus Grafana。两篇文章合起来一篇管“活没活”一篇管“为什么慢、趋势如何”家里的小主机和 NAS 才算真正有了可观察性基础。