自托管监控工具Uptime Kuma极简部署指南,NAS一键启动Docker容器实时监控服务可用性
作者
小编
发布时间

项目介绍
Uptime Kuma 是一个自己部署的探活面板。把要盯的地址交给它,它按固定间隔去探一次,挂了就给你发通知 —— 家里的 NAS 服务、自己的博客、公司的接口,都可以丢进去。
点开一条能看详情:上面是这段时间的在线率,下面是响应时间曲线,一格一格就是每一次探活,哪天抽过风一眼看得出来。监控方式除了 HTTP(s),还有 TCP 端口、DNS、Ping、以及容器和数据库等一堆类型;通知支持 Telegram、Discord、邮件等九十多种。
它还能生成「状态页」:挑几条监控放上去,得到一个不用登录就能打开的页面,甩给家里人或者同事,他们不用有账号也能看到现在是不是好的。
项目地址:点我跳转
部署安装
装在自己的 NAS 上之后,它默认只能在家里的网络里打开 —— 可「服务活没活」这件事,恰恰是人不在家的时候才最想知道。我家是移动宽带,没有公网 IP,所以用 帕斯内网穿透 把它开放到公网,飞牛的应用中心里就能直接装到插件,不用另外找工具。下面这套流程在飞牛 NAS 上从头到尾走一遍。
第一步:准备编排文件
下面这份编排可以直接用,四行就够,一个环境变量都不用填。
1services:2 uptime-kuma:3 image: louislam/uptime-kuma:24 ports:5 - "3001:3001"6 volumes:7 - ./data:/app/data8 restart: unless-stopped
镜像:louislam/uptime-kuma:2 就是上游 README 里给的写法,2 是大版本,小版本更新会自己跟上。⚠ 这个项目的 latest 还停在 1.x,别拿它当「最新」用 —— 「跟着官方 README 写」和「一律用 latest」不是一回事,这一期正好是个反例。
端口:冒号左边的 3001 是 NAS 上对外的端口,浏览器敲它,建隧道时也填它;右边的 3001 是容器内部的端口,不要动。左边被别的服务占了就换一个,比如 "3002:3001"。
数据目录:./data 是相对编排文件所在目录的一个普通文件夹,监控配置和全部历史数据都落在里面,容器重建也不会丢,整个项目文件夹拷走就是一份完整备份。
restart: unless-stopped:NAS 重启之后自动拉起;自己手动停掉的话就不会被自动起来。
第二步:在飞牛上建 Compose 项目
回飞牛桌面打开 Docker,切到上面的 Compose,点新增项目。项目名称填 uptime-kuma。
路径这一栏点开,右上角新建一个文件夹,名字随便起,建好选中它,点确认。编排文件和上面那个 data 目录以后都放在这儿 —— 一个项目一个文件夹。
来源选「创建 docker-compose.yml」,把上面那段贴进去。勾上「创建项目后立即启动」,点创建。这个镜像六百来兆,拉得久一点,列表里看到「正在运行」就成了。记住 3001 这个端口,下一步建隧道要填它。
第三步:用内网穿透开放到公网
容器跑起来之后,先别急着在内网打开它 —— 下一步直接把它开放到公网,后面的初始化、建管理员、加监控全都在公网地址上做。这一期尤其要这样:它出厂是零鉴权的,谁先走完初始化谁就是管理员,所以隧道和建号这两步要连着做完,中间别隔夜。
在飞牛的应用中心里直接搜 PassNAT,装上,账号登一次。打开插件,点创建隧道:名字随便起;接入节点和传输协议都留默认;本地 IP 这一栏留默认就好,也就是 127.0.0.1,不用去查自己 NAS 的局域网地址;本地端口填上面那个 3001。
建好之后点开这条隧道的详情,最左边那个电源键按一下,隧道就连上了,面板上那一行「IP:端口」就是公网地址,之后在外面打开的就是它。
第四步:在公网地址上把管理员建掉
拿这个公网地址打开,2.x 的首次进入是两步:先选数据库 —— 自己用,选 SQLite 就够,不用另起一个数据库容器;下一步起个用户名、设个密码,点创建,管理员就建好了。
这两步要赶紧做完。它出厂没有任何口令,谁先走完这两步谁就是这台实例的管理员,所以隧道一开就把账号建掉,别晾在那儿。
怎么用
加第一条监控:点「添加监控项」,类型选 HTTP(s),起个名字,地址填要盯的那个服务,其它留默认,保存 —— 探通了那一条就变绿,下面的格子开始一格一格往右长。探活间隔默认 60 秒,可以按需要调。
要让别人也能看,就建一个状态页:起个名字,路径填一个短词比如 nas,把刚才那几条监控加进去,保存。这一页不用登录就能打开,甩给谁都行;不想公开的监控不加进去就是了。
通知在「设置 - 通知」里配,加好之后可以勾给具体某几条监控用。常用的是 Telegram 和邮件,配完有个「测试」按钮,当场就能收到一条。
一些使用上的细节
数据全在项目文件夹的 data 目录里,是 SQLite。想搬到另一台机器,把整个文件盘拷过去、用同样的编排起一个容器就能接着用。
别把 data 放在 NFS 网络共享上 —— SQLite 在 NFS 上的文件锁不可靠,放本地目录就好,也就是上面那种写法。
界面语言跟浏览器走,时区在「设置 - 外观」里单独选,选对了图表和事件时间才跟本地对得上。
暂时不想让外面访问的话,去 PassNAT 插件里把那条隧道的电源关掉就行,内网照常用,容器不用动。