惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

云风的 BLOG
云风的 BLOG
Help Net Security
Help Net Security
Y
Y Combinator Blog
WordPress大学
WordPress大学
D
DataBreaches.Net
N
Netflix TechBlog - Medium
U
Unit 42
爱范儿
爱范儿
MyScale Blog
MyScale Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园 - 司徒正美
Google DeepMind News
Google DeepMind News
D
Docker
H
Help Net Security
Stack Overflow Blog
Stack Overflow Blog
宝玉的分享
宝玉的分享
博客园_首页
Microsoft Security Blog
Microsoft Security Blog
Engineering at Meta
Engineering at Meta
Know Your Adversary
Know Your Adversary
P
Privacy & Cybersecurity Law Blog
P
Proofpoint News Feed
T
Tenable Blog
S
Schneier on Security
V
Vulnerabilities – Threatpost
V
V2EX
T
Tor Project blog
Security Latest
Security Latest
S
Securelist
G
Google Developers Blog
NISL@THU
NISL@THU
Schneier on Security
Schneier on Security
Webroot Blog
Webroot Blog
小众软件
小众软件
Google Online Security Blog
Google Online Security Blog
阮一峰的网络日志
阮一峰的网络日志
W
WeLiveSecurity
IT之家
IT之家
I
InfoQ
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
月光博客
月光博客
I
Intezer
T
The Blog of Author Tim Ferriss
C
Cisco Blogs
博客园 - 【当耐特】
The GitHub Blog
The GitHub Blog
Cloudbric
Cloudbric
Scott Helme
Scott Helme
The Cloudflare Blog
L
LINUX DO - 热门话题

atpX

自建 S3 兼容对象存储服务 Garage 听风的歌 偶尔是深夜就好了 新玩具 AirPods Pro 3 公交车上的时间 从 WHOIS 到 RDAP 通过 WireGuard 访问 NFS 共享文件 自建音乐串流服务探索 我停止了探索 Fediverse 互联网背景噪音 我的数字生活降级 小城与确定性的墙 一只特立独行的猪 Fediverse 与社交 承认的勇气 mediaX - 轻量书影音记录管理工具 我的博客写作流程 网站新增 Misc 页面 擅长对线的鲍勃 在 Chroot 环境下使用 Rsync 同步 再见 JavaScript 当我玩博客时我在玩什么 为什么我的博客没有友链页面 小熊猫与大熊猫 (HDR 照片测试) 是时候为网站开启 HTTP/3 支持了吗 使用 AdGuard Home 搭建自用 DoH 服务 谈谈读书与消遣 2023 年终总结 西安两日游 从 AirPods「升级」到 EarPods Docker 搭建去中心化的微博客平台 Mastodon 聊聊 iPhone 15 Pro 使用感受 能否将 TOTP 二次验证存放在密码管理器里 认识史蒂夫·乔布斯 与“锤哥”克里斯·海姆斯沃斯一起养生 逃离爆炸的信息 你想活出怎样的人生 重温《龙珠》动画 为什么关闭评论 从域名注册商到 DNS 服务,找到自己的组合 如何提高用户网页阅读体验 从 Typecho 迁移到 Hugo 个人博客的最终归宿是静态网站吗 我选择了放弃 jQuery 关于我的小破站折腾速度优化这件事 记一次家庭网络折腾 贴一些 SmokePing 记录 我的域名邮箱选择 不存在的语录 Typecho 评论验证插件 CaptchaPlus 谈谈写字这件事 新的网站 Logo 探索 曲线解决 Typecho 图片占位抖动问题 自建 vaultwarden / bitwarden_rs 密码管理器 使用 Plausible 自建网站流量统计分析工具 如何优雅地徒手剥开火腿肠 简单的集中隔离生活记录 新玩具 M2 MacBook Air 使用 acme.sh 申请 Google 公共证书 Docker 搭建去中心化的微博客平台 Misskey 搭建 Lsky Pro 兰空图床 折腾树莓派系统的一天 我的吉卜力之旅 Spartan Host Review - Best Hosting & Service Support Debian 下 Nginx 配合 Fail2Ban 减少恶意扫描和攻击 升级 Typecho 到最新开发版本 v1.2.0 Linux rm 命令详解 Debian 系统安装 Docker 教程 BandwagonHost - Reliable Blog and Business VPS Hosting 使用 Isso 为 Hugo/Hexo 等静态网站添加评论功能 推荐 5 款免费开源的网站流量分析统计工具 搭建 Shynet 网站流量统计分析工具 聊聊 DDoS 攻击那些事 Hugo 使用 Fancybox 实现图片灯箱/放大功能 从 Debian 10 升级到 Debian 11 教程 使用 Umami 自建网站流量统计分析工具 Linux 一次执行多个命令的 3 种方式 Typecho 修改永久链接后旧链接 301 跳转到新链接 从不同需求推荐几家稳定可靠的 VPS 服务商 Build EchoIP service with Docker 浅谈一下这些年折腾过的 VPS 单线复用解决一根网线同时 IPTV 和宽带问题 不完全吃灰的树莓派 开发一个自己的 Telegram Bot 使用 Nginx 实现 TCP 四层反向代理 画画真难 我读村上春树 使用 acme.sh 自动签发和更新证书 卡拉马佐夫式悲剧 安装 File Browser 轻量网盘工具 新玩具树莓派到手 Linux 定时自动备份数据到 OneDrive/Google Drive 记一次服务器崩溃 使用 rsync 同步文件 短信的消失 幻灭的艺术家 新玩具戴尔 S2721DGF 开箱 蝴蝶 用 Docker 整合 SeafilePro 搭建私人云盘 搭建自己的 kms 服务器
使用 Uptime Kuma 自建服务器/网站在线率监控
ATP · 2022-01-08 · via atpX

当你的服务器或者网站越来越多,就需要一个实时的监控工具来了解连通性,如果发送宕机等情况也能第一时间知道。网上有很多不错的相关项目,这里就介绍一款适合自建的开源项目:Uptime Kuma

uptime-kuma-demo

Uptime Kuma 是一个开源的监控工具,功能类似于 Uptime Robot。支持 HTTP(s) / TCP / HTTP(s) 关键字 / Ping / DNS 记录 / Push / Steam 游戏服务的实时监控,并且搭建比较简单,界面也很简洁大方(查看官方的在线演示)。服务下线通知也支持很多种方式,常见的 Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP) 都能很好的支持,以及其它多达 70+ 种消息推送方式。经过一段时间的使用,感觉很不错,完全能满足一般个人用户或者是小型项目的监控需求。

环境准备

Uptime Kuma 支持脚本或者 Docker 安装运行,比较简单,官方文档有详细的介绍,就不再赘述,这里介绍下使用 Node.js 手动搭建的过程。Uptime Kuma 需要 Node.js 14 或者更高的版本。

以下演示系统为 Debian 11,为了方便默认采用 root 用户执行命令。

安装 Node.js 和 NPM

目前 Debian 11 官方库的 Node.js 版本为 v12.22.5 版本,npm 为 7.5.2 版本,不满足要求,因此需要安装更高的版本,可以安装由 NodeSource 提供的 Node.js 官方二进制发行版。

使用最新版本

截至目前 (2022-01-07),Node.js 的最新版本为 v17.x

# Using Ubuntu
curl -fsSL https://deb.nodesource.com/setup_current.x | sudo -E bash -
sudo apt-get install -y nodejs

# Using Debian, as root
curl -fsSL https://deb.nodesource.com/setup_current.x | bash -
apt-get install -y nodejs

使用 LTS 版本(推荐)

我这里安装的是 LTS(长期支持)版本 v16.x

# Using Ubuntu
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs

# Using Debian, as root
curl -fsSL https://deb.nodesource.com/setup_lts.x | bash -
apt-get install -y nodejs

检查 Node.js 和 NPM 版本:

node -v
npm -v

安装 Uptime Kuma

获取最新的仓库并安装:

git clone https://github.com/louislam/uptime-kuma.git
cd uptime-kuma
npm run setup

安装完成后可以直接运行:

node server/server.js

默认会运行在 3001 端口上,可以通过浏览 http://localhost:3001 检查是否运行成功。打开页面应该会出现添加用户界面:

uptime-kuma-login

登录后就进入了后台控制面板页面,此时你就可以点击左上方的按钮添加第一个监控节点了,设置里面可以设置语言,支持中文。

uptime-kuma-panel

后台运行

这里推荐使用 pm2 后台运行 Uptime Kuma。

安装 PM2:

npm install pm2 -g

在 uptime-kuma 目录下运行:

pm2 start server/server.js --name uptime-kuma

也可以加上 port 参数指定运行的端口:

pm2 start server/server.js --name uptime-kuma -- --port=80

设置重启服务器后自启动:

pm2 startup
pm2 save

补充一些 PM2 的常用命令:

pm2 list        # 查看所有运行中的应用
pm2 stop 0      # 停止 id 为 0 的应用
pm2 restart     # 重启
pm2 delete 0    # 删除 id 为 0 的应用
pm2 monit       # 显示每个应用程序的CPU和内存占用情况
pm2 show [name] # 显示应用程序的所有信息
pm2 save        # 保存当前应用列表
pm2 startup     # 创建开机自启动命令

Nginx 反代

官方提供了 Nginx / Apache / Caddy 等常见 web 服务器的反代配置示例,这里就简单的写一下 Nginx 的示例:

server {
  listen 443 ssl http2;
  server_name sub.domain.com;
  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";
  }
}

和一般反代的区别是加了 Upgrade 参数,因为 Uptime Kuma 使用了 webhook,因此必须加上这两行设置。

更新 Uptime Kuma

更新的话也很简单,先检查最新的文件:

git fetch --all
git checkout 1.11.1 --force

安装相关依赖并预构建:

npm ci --production
npm run download-dist

最后重启即可:

pm2 restart uptime-kuma