1. uptime-kuma 简介
uptime-kuma是一款开源监控工具,类似于“Uptime Robot”,UI简洁美观,支持TCP/PING/HTTP监控等,支持多语言其中包括中文。当服务出现故障时,可自动通过 Telegram、Discord、Gotify、Slack、Pushover、Email (SMTP) 等多种服务发送通知消息。
项目地址:https://github.com/louislam/uptime-kuma
官方演示:https://demo.uptime.kuma.pet

2. 搭建前的准备
VPS服务器一枚
系统用的是ubuntu 20.04
2.1 Docker搭建
$ apt-get update -y && apt-get install curl -y # 安装curl
$ curl https://get.docker.com | sh - # 安装docker
$ sudo systemctl start docker # 启动docker服务
$ docker version # 查看docker版本(客户端要与服务端一致)
2.2 申请Telegram Bot
这个是用于消息通知的,如果你不打算用TG进行消息通知,略过本节即可。具体教程可以查看此处
3. 搭建 uptime-kuma 面板
3.1 使用 Docker 部署服务
$ docker volume create uptime-kuma
$ docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1
3.2 设置反向代理并开启HTTPS
3.2.1 新建网站
宝塔面板——网站——添加站点——填写域名即可(其他的都不需要,我们只是用它来做反向代理和配置HTTPS)
3.2.2 给网站开启HTTPS
宝塔面板——网站——设置——SSL——申请证书,强制https。
3.2.3 设置反向代理
宝塔面板——网站——设置——反向代理——添加反向代理——填写代理名称和目标URL(http://127.0.0.1:3001)
注意:与其他 Web 应用程序不同,Uptime Kuma 基于 WebSocket。还需要在 Nginx 里配置 “Upgrade” and “Connection” 才能反向代理 WebSocket。具体操作步骤如下:
宝塔面板——网站——设置——配置文件,在location /内添加上”Upgrade” and “Connection”的那两行配置。
server {
listen 443 ssl http2;
server_name www.qiancheng.ml;
ssl_certificate /path/to/ssl/cert/crt;
ssl_certificate_key /path/to/ssl/key/key;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:3001/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
4. 使用 uptime-kuma 面板
4.1 面板基本配置
浏览器访问:https://域名,即可查看 uptime-kuma 服务监控面板,初始界面如下:

点击设置按钮,根据个人爱好可以对语言、主题、时区、是否允许搜索引擎索引、是否需要身份验证等多个方面进行个性化配置。
5.设置Telegram 消息通知
5.1 国外服务器设置TG消息通知
我们可以点击设置,通知,设置通知,通知类型选择telegram,填写 Bot Token 和 Chat ID 即可配置好 Telegram 消息通知。

5.2 解决国内部署无法发送TG通知的问题
由于国内GFW的原因,如果把 uptime-kuma 部署在国内服务器,则无法成功发送TG通知。我们可以用CloudFlare的workers部署Telegram Bot消息通知的反向代理来解决这个问题。
- 解析一个子域名备用(即反代域名)
在CloudFlare的网站DNS处解析一个域名,注意这里的 IPv4 地址填写成随机的例如(2.2.2.2),而不是你的服务器IP。

注意要开启小云朵
- 创建CloudFlare workers并配置路由
打开账号下的Workers侧边栏,点击创建服务,起一个服务名称,选择HTTP处理程序

进去之后,点击“快速编辑”,在此配置js脚本,将Telegram官方地址转发到你的反代地址上。
脚本内容如下,注意将第一行bot之后的数字换成你TG token的数字部分。只需要数字部分即可
const whitelist = ["/bot2222222222:"];
const tg_host = "api.telegram.org";
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
function validate(path) {
for (var i = 0; i < whitelist.length; i++) {
if (path.startsWith(whitelist[i]))
return true;
}
return false;
}
async function handleRequest(request) {
var u = new URL(request.url);
u.host = tg_host;
if (!validate(u.pathname))
return new Response('Unauthorized', {
status: 403
});
var req = new Request(u, {
method: request.method,
headers: request.headers,
body: request.body
});
const result = await fetch(req);
return result;
}

配置好这里之后,点击“保存并部署”。
打开根域名下的Workers侧边栏,点击添加路由,路由填写成反代域名/*,服务选择我们刚才配置的那个,环境选择production,保存即可。

- 修改uptime-kuma的代码
$ docker exec -it uptime-kuma /bin/bash
$ apt-get update
$ apt-get install vim -y // 安装vim
$ vim /app/src/components/notifications/Telegram.vue // 找到:api.telegram.org,将其替换成你的反代域名(只有一处)
$ vim /app/server/notification-providers/telegram.js // 找到:api.telegram.org,将其替换成你的反代域名(只有一处)
$ exit
$ docker restart uptime-kuma
然后再次使用 uptime-kuma 的消息通知,即可正常发送到你的 Telegram Bot上了。
6.面板更新
只需要如下命令即可更新,其他配置无需更改,数据也不会丢失
$ docker pull louislam/uptime-kuma:1
$ docker stop uptime-kuma
$ docker rm uptime-kuma
$ docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1
安卓手机搭建教程
下载安装APP并登录root
首先先下载alpine-term,github上的
下载安装和安装后初始化开机都需要等一会儿
开机后,登录系统,用户 alpine 密码: alpine
然后切换到root账户,输入sudo -s
密码为 alpine ,接着修改root密码, 输入 passwd ,可以输入一个简单的密码123456,需要输入两次。
开启root登录SSH
系统默认是禁止ssh密码登录的,所以需要先开启她,输入:
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
如果还需要开机root用户登录的话,输入
sed -i 's/PermitRootLogin no/PermitRootLogin yes/g' /etc/ssh/sshd_config
然后重启启动sshd服务,输入
service sshd restart
映射ssh的22端口
因为是Qemu套娃,所以需要映射ssh的22端口,开机完成后,手指在软件的左上方向右滑,会出现菜单,如下图所示:

然后映射ssh的22端口到手机的2222端口,选择 [1]QEMU,输入
hostfwd_add tcp::2222-:22
【注意】这个映射端口的命令每次重启Alpine Term 都需要重新设置一次!建议常驻后台
执行上面的指令后就可以远程ssh手机的2222端口。接下来的操作也强烈建议在电脑上远程ssh操作,毕竟电脑方便。
配置APK源和DNS
因为Alpine默认的都是国外的源和DNS,所以这里都需要改成国内的。
更换阿里云的源
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
更换114DNS,两条都换了
1. sed -i 's/nameserver 185.120.22.15/nameserver 114.114.114.114/g' /etc/resolv.conf
2. sed -i 's/nameserver 94.16.114.254/nameserver 114.114.115.115/g' /etc/resolv.conf
这样网络就正常可以使用了,接下来设置时区
setup-timezone
等到提示 Which timezone are you in? (‘?’ for list) [UTC],然后输入
Asia/Shanghai
执行完成后,输入date测试下时间。
更新软件包
- apk update
- apk upgrade
更新之后设置docker开机启动
rc-update add docker
然后启动docker
service docker start
上面的步骤挺慢的,完成后输入docker version,打印版本号则启动成功。
然后就可以按照vps的方法就可以搭建面板了,测试过程中,面板docker下载和安装都挺慢,启动也很慢,不过启动后网页打开挺流畅的,所以准备好耐心。
中途如果守护进程报错那就重启下docker
systemctl restart docker
最后就是装完面板也需要映射端口:
hostfwd_add tcp::3001-:3001
评论区