Komari探针
NginX 反向代理
1.在阿里云中域名解析该IP
注意:一定要添加添加两种解析,@和*

2.在1Panel面板中安装Nginx管理应用
注意:端口改成80、81、和443

3.在Nginx中添加反向代理服务

4.添加域名和IP地址及端口
注意:一定要打开Websockets 支持,否则探针无法连接小鸡

5.申请SSL证书,域名填前面写的,并打开强制SSL
注意:不申请SSL证书也可使用,但只能使用http

Nginx代码
server {
listen 80;
server_name chaofan.de
location / {
proxy_pass http://127.0.0.1:25774;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
# 禁用代理缓冲
proxy_buffering off;
# 允许大文件上传(50M)
client_max_body_size 50M;
}
}TG通知优化代码
1.打开后台设置,开启通知,嵌入代码

async function sendMessage(message, title) {
const token = "8581109593:AAHRBFjPOWZRXfK93Dva8o1wRxY66NfbMIQ"
const chatId = "-1003689301564"
if (!token || token === 'REPLACE_WITH_TOKEN') {
console.error('Telegram bot token 未设置 (TELEGRAM_BOT_TOKEN)。消息未发送。');
return false;
}
if (!chatId || chatId === 'REPLACE_CHAT_ID') {
console.error('Telegram chat id 未设置 (TELEGRAM_CHAT_ID)。消息未发送。');
return false;
}
const url = `https://api.telegram.org/bot${token}/sendMessage`;
const resp = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
chat_id: chatId,
// 使用简洁的 HTML 模板,避免输出敏感字段
text: `<b>${title}</b>\n\n${message}`,
parse_mode: 'HTML',
}),
});
if (!resp.ok) {
console.error('Failed to send message:', resp.status, resp.statusText);
return false;
}
return true;
}
async function sendEvent(event) {
try {
// 格式化时间
const formatTime = (timeStr) => {
const date = new Date(timeStr);
return date.toLocaleString('zh-CN', {
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
timeZone: 'Asia/Shanghai'
});
};
// 获取事件类型描述(带图标)
const getEventTypeDesc = (eventType) => {
const eventMap = {
'Offline': '❌ 服务器离线',
'Online': '✅ 服务器上线',
'Alert': '⚠️ 监控告警',
'Renew': '⏰ 服务器已自动续费',
'Expire': '🚨 服务到期提醒',
'Test': '🧪 测试通知'
};
return eventMap[eventType] || `📊 ${eventType}`;
};
// 获取事件类型描述(不带图标,用于详细信息)
const getEventTypeText = (eventType) => {
const eventMap = {
'Offline': '服务器离线',
'Online': '服务器上线',
'Alert': '监控告警',
'Renew': '服务器已自动续费',
'Expire': '服务到期提醒',
'Test': '测试通知'
};
return eventMap[eventType] || eventType;
};
// 生成服务器信息
const generateClientSummary = (client) => {
let parts = [];
if (client.name) parts.push(client.name);
if (client.region) parts.push(client.region);
if (client.flag) parts.push(client.flag);
return parts.join(' • ');
};
// 构建消息
let message = '';
const eventTypeDesc = getEventTypeDesc(event.event);
// 输出服务器:
if (event.clients && event.clients.length > 0) {
if (event.clients.length === 1) {
message += `服务器:${generateClientSummary(event.clients[0])}\n`;
} else {
// 多个服务器时,只显示第一个,然后显示总数
message += `服务器:${generateClientSummary(event.clients[0])}\n`;
if (event.clients.length > 1) {
message += `(共 ${event.clients.length} 台服务器)\n`;
}
}
}
// 输出事件:
// (注释) message += `事 件:${getEventTypeText(event.event)}\n`;
// 空一行
message += '\n';
// 输出时间:
message += `时 间:${formatTime(event.time)}\n`;
// 空一行
message += '\n';
// 如果有附加消息,显示在备注中
if (event.message && event.message.trim()) {
message += `备 注:${event.message}`;
}
// 发送通知
const success = await sendMessage(message, eventTypeDesc);
if (success) {
console.log(`事件通知已发送: ${event.event}`);
} else {
console.error(`事件通知发送失败: ${event.event}`);
}
return success;
} catch (error) {
console.error('发送事件通知时出错:', error);
// 发送简化的错误通知
const fallbackMessage = `${getEventTypeDesc(event.event) || ''}\n\n事 件:${event.event}\n时 间:${new Date().toLocaleString('zh-CN')}`;
const fallbackTitle = 'Komari 通知';
try {
return await sendMessage(fallbackMessage, fallbackTitle);
} catch (fallbackError) {
console.error('备用通知也失败:', fallbackError);
return false;
}
}
}2.使用效果

本文链接:
/archives/1769675988191
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
Fan Book!
喜欢就支持一下吧