694 lines
77 KiB
HTML
694 lines
77 KiB
HTML
<!DOCTYPE html>
|
||
<!--
|
||
Copyright (c) [2026] [S.A. SNOWARE-SCU]
|
||
[MineSentinel] is licensed under Mulan PubL v2.
|
||
You can use this software according to the terms and conditions of the Mulan PubL v2.
|
||
You may obtain a copy of Mulan PubL v2 at:
|
||
http://license.coscl.org.cn/MulanPubL-2.0
|
||
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND.
|
||
品牌标识(Logo / SVG / 项目名称" MineSentinel")保留所有权利,未经许可不得用于衍生项目。
|
||
-->
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>MineSentinel — Minecraft 服务器守护进程</title>
|
||
<script src='https://gitee.com/SCU_team/mine-sentinel/widget_preview' async defer></script>
|
||
<style>
|
||
:root {
|
||
--amber: #f59e0b;
|
||
--orange: #ea580c;
|
||
--coral: #e8613c;
|
||
--warm-bg: #ffedd5;
|
||
--card-bg: #fff7ed;
|
||
--text: #431407;
|
||
--text-dim: #7c2d12;
|
||
}
|
||
|
||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||
|
||
body {
|
||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||
line-height: 1.7;
|
||
color: var(--text);
|
||
background: linear-gradient(160deg, #f97316 0%, #ea580c 40%, #dc2626 100%);
|
||
min-height: 100vh;
|
||
position: relative;
|
||
overflow-x: hidden;
|
||
}
|
||
|
||
/* Geometric background elements */
|
||
body::before {
|
||
content: '';
|
||
position: fixed;
|
||
top: -50%;
|
||
left: -50%;
|
||
width: 200%;
|
||
height: 200%;
|
||
background:
|
||
repeating-linear-gradient(30deg, transparent, transparent 80px, rgba(255,255,255,0.03) 80px, rgba(255,255,255,0.03) 82px),
|
||
repeating-linear-gradient(-60deg, transparent, transparent 120px, rgba(255,255,255,0.04) 120px, rgba(255,255,255,0.04) 122px);
|
||
pointer-events: none;
|
||
z-index: 0;
|
||
}
|
||
|
||
.geo-hex {
|
||
position: fixed;
|
||
pointer-events: none;
|
||
z-index: 0;
|
||
opacity: 0.06;
|
||
}
|
||
.geo-hex::before {
|
||
content: '';
|
||
position: absolute;
|
||
width: 300px; height: 520px;
|
||
clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
|
||
background: #fff;
|
||
}
|
||
.geo-hex-1 { top: -100px; right: -80px; transform: rotate(15deg); }
|
||
.geo-hex-2 { bottom: 10%; left: -120px; transform: rotate(-10deg) scale(0.7); }
|
||
.geo-hex-3 { top: 60%; right: 5%; transform: rotate(45deg) scale(0.4); }
|
||
|
||
.geo-tri {
|
||
position: fixed;
|
||
pointer-events: none;
|
||
z-index: 0;
|
||
opacity: 0.05;
|
||
}
|
||
.geo-tri::before {
|
||
content: '';
|
||
position: absolute;
|
||
width: 0; height: 0;
|
||
border-left: 200px solid transparent;
|
||
border-right: 200px solid transparent;
|
||
border-bottom: 350px solid #fff;
|
||
}
|
||
.geo-tri-1 { top: 30%; left: 5%; transform: rotate(-20deg); }
|
||
.geo-tri-2 { bottom: 20%; right: 10%; transform: rotate(30deg) scale(0.6); }
|
||
|
||
.container {
|
||
max-width: 1100px;
|
||
margin: 0 auto;
|
||
padding: 20px;
|
||
position: relative;
|
||
z-index: 1;
|
||
}
|
||
|
||
header {
|
||
text-align: center;
|
||
padding: 70px 20px 40px;
|
||
color: white;
|
||
}
|
||
|
||
.logo-row {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
gap: 24px;
|
||
margin: 0 auto 20px;
|
||
filter: drop-shadow(0 4px 12px rgba(0,0,0,0.35));
|
||
}
|
||
.logo-svg {
|
||
width: 100px;
|
||
display: block;
|
||
}
|
||
.logo-png {
|
||
width: 80px;
|
||
height: auto;
|
||
display: block;
|
||
}
|
||
.author-badge {
|
||
font-size: 0.85rem;
|
||
opacity: 0.75;
|
||
margin-top: 4px;
|
||
letter-spacing: 1px;
|
||
}
|
||
.author-badge strong {
|
||
color: #fcd34d;
|
||
}
|
||
|
||
h1 {
|
||
font-size: 3rem;
|
||
margin-bottom: 12px;
|
||
text-shadow: 0 3px 6px rgba(0,0,0,0.4);
|
||
letter-spacing: 2px;
|
||
}
|
||
|
||
.subtitle {
|
||
font-size: 1.4rem;
|
||
opacity: 0.92;
|
||
margin-bottom: 8px;
|
||
}
|
||
|
||
.tagline {
|
||
font-size: 1rem;
|
||
letter-spacing: 4px;
|
||
font-weight: 600;
|
||
margin-top: 16px;
|
||
opacity: 0.85;
|
||
}
|
||
|
||
/* Widget area */
|
||
.widget-container {
|
||
margin-bottom: 50px;
|
||
padding: 30px 20px;
|
||
text-align: center;
|
||
background: rgba(67, 20, 7, 0.85);
|
||
border-radius: 12px;
|
||
box-shadow: 0 8px 32px rgba(0,0,0,0.3);
|
||
}
|
||
.osc_pro_color { color: #ffffff !important; }
|
||
.osc_panel_color { background-color: #1e252b !important; }
|
||
.osc_background_color { background-color: #323d47 !important; }
|
||
.osc_border_color { border-color: #455059 !important; }
|
||
.osc_desc_color { color: #d7deea !important; }
|
||
.osc_link_color * { color: #99a0ae !important; }
|
||
|
||
/* Log Preview */
|
||
.log-preview-section {
|
||
max-width: 860px;
|
||
margin: 50px auto;
|
||
padding: 30px;
|
||
}
|
||
.log-preview-section h2 {
|
||
text-align: center;
|
||
font-size: 1.9rem;
|
||
margin-bottom: 10px;
|
||
}
|
||
.log-desc {
|
||
text-align: center;
|
||
color: var(--warm-bg);
|
||
margin-bottom: 20px;
|
||
font-size: 0.95rem;
|
||
}
|
||
.log-terminal {
|
||
background: #1a1b26;
|
||
border: 1px solid #323d47;
|
||
border-radius: 12px;
|
||
padding: 18px 22px;
|
||
font-family: 'Cascadia Code', 'Fira Code', 'JetBrains Mono', 'Consolas', monospace;
|
||
font-size: 0.82rem;
|
||
line-height: 1.75;
|
||
box-shadow: inset 0 2px 12px rgba(0,0,0,0.5), 0 4px 16px rgba(0,0,0,0.25);
|
||
}
|
||
.log-line {
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
color: #d7deea;
|
||
}
|
||
.log-time {
|
||
color: #565f89;
|
||
margin-right: 6px;
|
||
}
|
||
.log-level {
|
||
display: inline-block;
|
||
min-width: 48px;
|
||
font-weight: 700;
|
||
letter-spacing: 0.02em;
|
||
margin-right: 4px;
|
||
}
|
||
.log-level.info { color: #a9b665; }
|
||
.log-level.warn { color: #e0af68; }
|
||
.log-level.debug { color: #7dcfff; }
|
||
.log-level.error { color: #f7768e; }
|
||
|
||
/* Cards */
|
||
.section-title {
|
||
text-align: center;
|
||
color: #fff;
|
||
font-size: 2rem;
|
||
margin: 50px 0 30px;
|
||
text-shadow: 0 2px 4px rgba(0,0,0,0.3);
|
||
}
|
||
|
||
.features {
|
||
display: grid;
|
||
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
||
gap: 24px;
|
||
margin-bottom: 40px;
|
||
}
|
||
|
||
.feature-card {
|
||
background: var(--card-bg);
|
||
border-radius: 12px;
|
||
padding: 28px;
|
||
box-shadow: 0 8px 28px rgba(0,0,0,0.18);
|
||
transition: transform 0.3s, box-shadow 0.3s;
|
||
border-top: 4px solid var(--orange);
|
||
}
|
||
.feature-card:hover {
|
||
transform: translateY(-6px);
|
||
box-shadow: 0 14px 36px rgba(0,0,0,0.25);
|
||
}
|
||
.feature-card h3 {
|
||
color: var(--orange);
|
||
font-size: 1.35rem;
|
||
margin-bottom: 12px;
|
||
}
|
||
.feature-card p {
|
||
color: var(--text-dim);
|
||
line-height: 1.8;
|
||
}
|
||
|
||
/* Deploy tutorial */
|
||
.deploy-section {
|
||
background: var(--card-bg);
|
||
border-radius: 12px;
|
||
padding: 40px;
|
||
box-shadow: 0 8px 28px rgba(0,0,0,0.18);
|
||
margin-bottom: 40px;
|
||
}
|
||
.deploy-section h2 {
|
||
color: var(--orange);
|
||
font-size: 1.8rem;
|
||
margin-bottom: 24px;
|
||
padding-bottom: 12px;
|
||
border-bottom: 3px solid var(--amber);
|
||
}
|
||
.deploy-section h3 {
|
||
color: var(--text);
|
||
margin: 24px 0 10px;
|
||
font-size: 1.2rem;
|
||
}
|
||
.deploy-section h4 {
|
||
color: var(--orange);
|
||
margin: 18px 0 8px;
|
||
font-size: 1.05rem;
|
||
}
|
||
.deploy-section pre {
|
||
background: #1c1917;
|
||
color: #fcd34d;
|
||
padding: 20px;
|
||
border-radius: 8px;
|
||
overflow-x: auto;
|
||
font-size: 0.9rem;
|
||
line-height: 1.6;
|
||
margin: 10px 0 16px;
|
||
}
|
||
.deploy-section code {
|
||
background: #fff7ed;
|
||
padding: 2px 6px;
|
||
border-radius: 4px;
|
||
color: var(--orange);
|
||
font-size: 0.92em;
|
||
}
|
||
.deploy-section table {
|
||
width: 100%;
|
||
border-collapse: collapse;
|
||
margin: 12px 0 20px;
|
||
}
|
||
.deploy-section th, .deploy-section td {
|
||
padding: 10px 14px;
|
||
text-align: left;
|
||
border-bottom: 1px solid #fed7aa;
|
||
}
|
||
.deploy-section th {
|
||
background: #ffedd5;
|
||
color: var(--orange);
|
||
font-weight: 600;
|
||
}
|
||
.deploy-section ul { margin: 8px 0 16px 20px; }
|
||
.deploy-section li { margin: 4px 0; color: var(--text-dim); }
|
||
|
||
/* Flow diagram */
|
||
.flow-box {
|
||
background: #1c1917;
|
||
border-radius: 8px;
|
||
padding: 24px;
|
||
color: #fcd34d;
|
||
font-family: monospace;
|
||
font-size: 0.88rem;
|
||
line-height: 1.9;
|
||
white-space: pre;
|
||
overflow-x: auto;
|
||
margin: 16px 0;
|
||
}
|
||
|
||
/* Buttons */
|
||
.cta-section {
|
||
text-align: center;
|
||
margin: 50px 0;
|
||
padding: 30px 20px;
|
||
}
|
||
.btn {
|
||
display: inline-block;
|
||
padding: 14px 36px;
|
||
background: white;
|
||
color: var(--orange);
|
||
text-decoration: none;
|
||
border-radius: 30px;
|
||
font-weight: bold;
|
||
font-size: 1.05rem;
|
||
margin: 8px;
|
||
box-shadow: 0 4px 14px rgba(0,0,0,0.2);
|
||
transition: all 0.3s;
|
||
cursor: pointer;
|
||
border: none;
|
||
}
|
||
.btn:hover {
|
||
transform: scale(1.05);
|
||
box-shadow: 0 8px 22px rgba(0,0,0,0.35);
|
||
}
|
||
.btn-primary {
|
||
background: #f97316;
|
||
color: white;
|
||
}
|
||
.btn-primary:hover { background: #ea580c; }
|
||
|
||
/* Modal */
|
||
.modal {
|
||
display: none;
|
||
position: fixed;
|
||
top: 0; left: 0;
|
||
width: 100%; height: 100%;
|
||
background: rgba(0,0,0,0.7);
|
||
z-index: 1000;
|
||
justify-content: center;
|
||
align-items: center;
|
||
}
|
||
.modal.show { display: flex; }
|
||
.modal-content {
|
||
background: var(--card-bg);
|
||
border-radius: 12px;
|
||
padding: 36px;
|
||
max-width: 500px;
|
||
width: 90%;
|
||
box-shadow: 0 20px 60px rgba(0,0,0,0.4);
|
||
position: relative;
|
||
animation: modalIn 0.3s ease-out;
|
||
}
|
||
@keyframes modalIn {
|
||
from { transform: translateY(-40px); opacity: 0; }
|
||
to { transform: translateY(0); opacity: 1; }
|
||
}
|
||
.modal-close {
|
||
position: absolute;
|
||
top: 12px; right: 18px;
|
||
font-size: 28px;
|
||
cursor: pointer;
|
||
color: #9a3412;
|
||
transition: color 0.3s;
|
||
}
|
||
.modal-close:hover { color: #431407; }
|
||
.modal-title { color: var(--orange); font-size: 1.6rem; margin-bottom: 18px; }
|
||
.modal-body { color: var(--text-dim); line-height: 1.8; margin-bottom: 20px; }
|
||
.download-info {
|
||
background: #ffedd5;
|
||
padding: 20px;
|
||
border-radius: 8px;
|
||
border-left: 4px solid var(--orange);
|
||
}
|
||
.download-link { color: var(--orange); text-decoration: none; font-weight: bold; }
|
||
.download-link:hover { text-decoration: underline; }
|
||
.password-info {
|
||
margin-top: 14px;
|
||
padding: 10px;
|
||
background: #fff3cd;
|
||
border-radius: 6px;
|
||
color: #92400e;
|
||
}
|
||
|
||
/* Footer */
|
||
footer {
|
||
text-align: center;
|
||
padding: 40px 20px;
|
||
color: white;
|
||
opacity: 0.8;
|
||
margin-top: 40px;
|
||
}
|
||
.links { margin-top: 14px; }
|
||
.links a {
|
||
color: white; text-decoration: none; margin: 0 14px; opacity: 0.9;
|
||
}
|
||
.links a:hover { opacity: 1; text-decoration: underline; }
|
||
|
||
@media (max-width: 640px) {
|
||
h1 { font-size: 2rem; }
|
||
.deploy-section { padding: 20px; }
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<!-- Geometric decorations -->
|
||
<div class="geo-hex geo-hex-1"></div>
|
||
<div class="geo-hex geo-hex-2"></div>
|
||
<div class="geo-hex geo-hex-3"></div>
|
||
<div class="geo-tri geo-tri-1"></div>
|
||
<div class="geo-tri geo-tri-2"></div>
|
||
|
||
<div class="container">
|
||
<header>
|
||
<div class="logo-row">
|
||
<img id="logoPng" class="logo-png" src="" alt="SW Security">
|
||
<svg class="logo-svg" viewBox="0 0 100 80" xmlns="http://www.w3.org/2000/svg">
|
||
<path d="M0,1 H100" stroke="#ffffff" stroke-width="6" fill="none" opacity="0.9"/>
|
||
<path d="M0,20 H30" stroke="#ffffff" stroke-width="6" fill="none" opacity="0.9"/>
|
||
<path d="M0,40 H30 L40,20 L60,60 L70,40 H100" stroke="#ffffff" stroke-width="6" fill="none" opacity="0.9"/>
|
||
<path d="M70,60 H100" stroke="#ffffff" stroke-width="6" fill="none" opacity="0.9"/>
|
||
<path d="M0,79 H100" stroke="#ffffff" stroke-width="6" fill="none" opacity="0.9"/>
|
||
</svg>
|
||
</div>
|
||
<h1>🛡️ MineSentinel</h1>
|
||
<p class="subtitle">Minecraft 服务器智能守护进程</p>
|
||
<p class="tagline">TCP 检测 · 自动重启 · 防循环冷却</p>
|
||
<p class="author-badge">由 <strong>SCU 团队</strong> 拥有 · 编写者 <strong>S.A. [@SNOWARE]</strong></p>
|
||
<p style="margin-top:12px;font-size:0.88rem;opacity:0.7;color:#fcd34d;">
|
||
当前版本 <code style="background:rgba(255,255,255,0.15);color:#fff;padding:2px 8px;border-radius:4px;">60176fa</code> · 频道 <code style="background:rgba(255,255,255,0.15);color:#fff;padding:2px 8px;border-radius:4px;">master</code>
|
||
</p>
|
||
</header>
|
||
|
||
<!-- Features -->
|
||
<div class="features">
|
||
<div class="feature-card">
|
||
<h3>🔍 高频检测</h3>
|
||
<p>每 1.5 秒对 <code>127.0.0.1:25565</code> 发起 TCP 连接,毫秒级感知服务器状态变化。</p>
|
||
</div>
|
||
<div class="feature-card">
|
||
<h3>🧠 智能判断</h3>
|
||
<p>严格区分端口超时与端口关闭——超时仅记录日志(避免网络抖动误判),关闭才触发重启。</p>
|
||
</div>
|
||
<div class="feature-card">
|
||
<h3>⏳ 冷却期保护</h3>
|
||
<p>重启后等待 200 秒,初次启动有 300 秒宽限期,彻底防止 MC 启动缓慢导致循环重启。Watchdog 同步适配(210s)。</p>
|
||
</div>
|
||
<div class="feature-card">
|
||
<h3>🛡️ 重试上限</h3>
|
||
<p>连续 10 次重启失败后进入空闲等待模式,每 10 秒检测端口,恢复后自动退出。</p>
|
||
</div>
|
||
<div class="feature-card">
|
||
<h3>🌍 跨平台</h3>
|
||
<p>核心逻辑纯 Ruby 实现,支持 systemd / Docker / screen / Windows,轻松适配任意进程管理器。</p>
|
||
</div>
|
||
<div class="feature-card">
|
||
<h3>📝 日志完备</h3>
|
||
<p>四级日志(debug / info / warn / error),输出到 systemd journal,排查问题一目了然。</p>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Log Preview -->
|
||
<div class="log-preview-section">
|
||
<h2>📋 日志示例</h2>
|
||
<p class="log-desc">通过 <code>journalctl -u minesentinel -f</code> 实时查看,以下为一次完整崩溃恢复过程的日志输出:</p>
|
||
<div class="log-terminal">
|
||
<div class="log-line"><span class="log-time">18:16:17</span><span class="log-level debug">DEBUG</span> self_diag: TCP check OK — 0.0002s</div>
|
||
<div class="log-line"><span class="log-time">18:16:17</span><span class="log-level debug">DEBUG</span> mainloop: Server health check passed.</div>
|
||
<div class="log-line"><span class="log-time">18:16:18</span><span class="log-level debug">DEBUG</span> self_diag: TCP check OK — 0.0003s</div>
|
||
<div class="log-line"><span class="log-time">18:16:18</span><span class="log-level debug">DEBUG</span> mainloop: Server health check passed.</div>
|
||
<div class="log-line"><span class="log-time">18:16:20</span><span class="log-level warn">WARN</span> self_diag: TCP port closed — server is down.</div>
|
||
<div class="log-line"><span class="log-time">18:16:21</span><span class="log-level warn">WARN</span> mainloop: Server health check FAILED: Server died for unknown reason, and will be restarted.</div>
|
||
<div class="log-line"><span class="log-time">18:16:21</span><span class="log-level warn">WARN</span> mainloop: Action: Record → Server died!</div>
|
||
<div class="log-line"><span class="log-time">18:16:21</span><span class="log-level info">INFO</span> mainloop: Action: ForceResetServerProcess triggered.</div>
|
||
<div class="log-line"><span class="log-time">18:16:21</span><span class="log-level info">INFO</span> reset: Attempt #1 to reset Minecraft server.</div>
|
||
<div class="log-line"><span class="log-time">18:16:21</span><span class="log-level info">INFO</span> reset: Spawning 'systemctl restart minecraft' (PID will be captured)...</div>
|
||
<div class="log-line"><span class="log-time">18:16:21</span><span class="log-level debug">DEBUG</span> reset: systemctl restart spawned with new PID.</div>
|
||
<div class="log-line"><span class="log-time">18:16:51</span><span class="log-level warn">WARN</span> reset: 'systemctl restart' timed out after 30s. Force-killing process...</div>
|
||
<div class="log-line"><span class="log-time">18:16:51</span><span class="log-level warn">WARN</span> reset: Running 'systemctl kill minecraft' (last resort)...</div>
|
||
<div class="log-line"><span class="log-time">18:16:52</span><span class="log-level info">INFO</span> reset: Running 'systemctl start minecraft' (rebirth)...</div>
|
||
<div class="log-line"><span class="log-time">18:16:52</span><span class="log-level info">INFO</span> reset: Force-reset sequence completed.</div>
|
||
<div class="log-line"><span class="log-time">18:16:52</span><span class="log-level info">INFO</span> mainloop: Cooling down 200s for server startup...</div>
|
||
<div class="log-line" style="opacity:.5;"><span class="log-time">... ... ...</span></div>
|
||
<div class="log-line"><span class="log-time">18:20:12</span><span class="log-level info">INFO</span> mainloop: Cooldown finished, resuming monitoring.</div>
|
||
<div class="log-line"><span class="log-time">18:20:14</span><span class="log-level debug">DEBUG</span> self_diag: TCP check OK — 0.0002s</div>
|
||
<div class="log-line"><span class="log-time">18:20:15</span><span class="log-level debug">DEBUG</span> mainloop: Server health check passed.</div>
|
||
</div>
|
||
<p class="log-note" style="margin-top:14px;color:var(--text-dim);font-size:0.88em;">💡 日志中 PID、精确时间戳等敏感信息已脱敏。实际输出格式与 <code>journald</code> 一致,支持 <code>--since</code>、<code>-f</code> 等标准过滤参数。</p>
|
||
</div>
|
||
|
||
<!-- Deploy Tutorial -->
|
||
<div class="deploy-section">
|
||
<h2>📦 部署教程</h2>
|
||
|
||
<h3>1. 环境要求</h3>
|
||
<table>
|
||
<tr><th>项目</th><th>说明</th></tr>
|
||
<tr><td>操作系统</td><td>Linux(需 systemd),也支持 Windows</td></tr>
|
||
<tr><td>Ruby</td><td>>= 3.0</td></tr>
|
||
<tr><td>权限</td><td>root(systemctl 需要)</td></tr>
|
||
<tr><td>MC 服务</td><td>已注册为 systemd 服务,默认名 <code>minecraft</code></td></tr>
|
||
</table>
|
||
|
||
<h3>2. 获取源码</h3>
|
||
<p style="margin-bottom:6px;">方式一:Git 克隆(推荐,仅拉取必要文件,排除仓库冗余)</p>
|
||
<pre>git clone --depth 1 --single-branch \
|
||
https://gitee.com/SCU_team/mine-sentinel.git \
|
||
/opt/minecraft/sentinel
|
||
# --depth 1 仅拉取最新提交,不下载历史记录
|
||
# --single-branch 仅拉取 master 分支</pre>
|
||
<p style="margin-bottom:6px;">方式二:手动复制</p>
|
||
<pre>mkdir -p /opt/minecraft/sentinel
|
||
cp main.rb method_executor.rb server_status_detector.rb \
|
||
systemd_notifier.rb config.rb updates.rb \
|
||
/opt/minecraft/sentinel/</pre>
|
||
|
||
<h3>3. 手动测试</h3>
|
||
<pre>cd /opt/minecraft/sentinel
|
||
ruby main.rb
|
||
# 调试模式: LOG_LEVEL=debug ruby main.rb</pre>
|
||
|
||
<h3>4. 注册 systemd 服务</h3>
|
||
<p>项目源码中已提供 <code>minesentinel.service</code>,直接复制:</p>
|
||
<pre>cp minesentinel.service /etc/systemd/system/</pre>
|
||
<p>单元文件内容:</p>
|
||
<pre>[Unit]
|
||
Description=MineSentinel Minecraft Server Monitor
|
||
After=network.target
|
||
Before=minecraft.service
|
||
Wants=minecraft.service
|
||
|
||
[Service]
|
||
Type=simple
|
||
WorkingDirectory=/opt/minecraft/sentinel
|
||
ExecStart=/usr/bin/ruby /opt/minecraft/sentinel/main.rb
|
||
Restart=always
|
||
RestartSec=10
|
||
StandardOutput=journal
|
||
StandardError=journal
|
||
#Environment=LOG_LEVEL=debug
|
||
WatchdogSec=210
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target</pre>
|
||
|
||
<h4>🔗 启动顺序</h4>
|
||
<p style="margin-bottom:10px;">MineSentinel 通过 <code>Before=minecraft.service</code> 确保先于 MC 启动,消除守护盲区。首次启动有 <strong>300 秒宽限期</strong>等待端口就绪:</p>
|
||
<div class="flow-box">开机 → network.target
|
||
│
|
||
├─ MineSentinel 启动(最先)
|
||
│ └─ 进入 300s 宽限期,等待 MC 端口就绪
|
||
│
|
||
└─ minecraft 随后启动(Before=)
|
||
└─ 端口打开 → MineSentinel 恢复正常监控</div>
|
||
|
||
<pre>systemctl daemon-reload
|
||
systemctl enable minesentinel # 同时触发 minecraft(Wants=)
|
||
systemctl start minesentinel</pre>
|
||
|
||
<h3>5. 查看日志</h3>
|
||
<pre>journalctl -u minesentinel -f # 实时
|
||
journalctl -u minesentinel -u minecraft -f # 双服务合并</pre>
|
||
|
||
<h3>⚙️ 可调参数</h3>
|
||
<table>
|
||
<tr><th>参数</th><th>文件</th><th>行</th><th>默认</th></tr>
|
||
<tr><td>初始宽限期</td><td>config.rb</td><td>1</td><td>300 s</td></tr>
|
||
<tr><td>冷却期</td><td>config.rb</td><td>3</td><td>200 s</td></tr>
|
||
<tr><td>尝试次数</td><td>config.rb</td><td>2</td><td>3 次</td></tr>
|
||
<tr><td>检测间隔</td><td>config.rb</td><td>4</td><td>1.5 s</td></tr>
|
||
<tr><td>systemctl 超时</td><td>method_executor.rb</td><td>17</td><td>30 s</td></tr>
|
||
<tr><td>最大重试</td><td>method_executor.rb</td><td>23</td><td>10 次</td></tr>
|
||
<tr><td>检测端口</td><td>server_status_detector.rb</td><td>60</td><td>25565</td></tr>
|
||
</table>
|
||
|
||
<h3>🔄 工作流程</h3>
|
||
<div class="flow-box">MineSentinel 启动:
|
||
└─ 300s 宽限期 → 等待 MC 端口就绪(避免误判)
|
||
|
||
每 1.5 秒循环:
|
||
├─ TCP 连接 127.0.0.1:25565
|
||
├─ 端口开放 → 继续循环
|
||
├─ 端口超时 → 仅记录日志(不重启)
|
||
└─ 端口关闭 → 触发重启 → 冷却 200 秒
|
||
└─ 连续 10 次失败 → 空闲等待</div>
|
||
|
||
<h3>🪟 Windows / Docker / 其他场景</h3>
|
||
<ul>
|
||
<li><strong>Docker:</strong>替换重启命令为 <code>spawn "docker restart mc-server"</code></li>
|
||
<li><strong>screen:</strong><code>system "screen -S mc -X quit"; system "screen -dmS mc java ..."</code></li>
|
||
<li><strong>Windows:</strong>删除 root 检查,替换为 <code>spawn "cmd /c start /B java ..."</code>,日志输出到文件</li>
|
||
<li><strong>监控其他服务:</strong>修改 <code>test_port</code> 的 IP 和端口即可</li>
|
||
</ul>
|
||
<p style="margin-top: 12px; color: var(--text-dim);">详细适配指南见 <a href="https://gitee.com/SCU_team/mine-sentinel/blob/master/DEPLOY.md" style="color: var(--orange);">DEPLOY.md</a></p>
|
||
</div>
|
||
|
||
<!-- Gitee Widget -->
|
||
<div class="widget-container">
|
||
<div id="osc-gitee-widget-tag"></div>
|
||
</div>
|
||
|
||
<!-- CTA -->
|
||
<div class="cta-section">
|
||
<button onclick="openModal()" class="btn btn-primary">⬇️ 获取 MineSentinel</button>
|
||
<a href="https://gitee.com/SCU_team/mine-sentinel" class="btn">⭐ Gitee 仓库</a>
|
||
<a href="https://gitee.com/SCU_team/mine-sentinel/blob/master/DEPLOY.md" class="btn">📖 完整文档</a>
|
||
</div>
|
||
|
||
<!-- Download Modal -->
|
||
<div id="dlModal" class="modal">
|
||
<div class="modal-content">
|
||
<span class="modal-close" onclick="closeModal()">×</span>
|
||
<h2 class="modal-title">⬇️ 获取 MineSentinel</h2>
|
||
<div class="modal-body">
|
||
<div class="download-info">
|
||
<p><strong>Git 克隆:</strong></p>
|
||
<pre style="margin:8px 0;font-size:0.85rem;">git clone https://gitee.com/SCU_team/mine-sentinel.git</pre>
|
||
<p style="margin-top:10px;"><strong>直接下载:</strong></p>
|
||
<p><a href="https://gitee.com/SCU_team/mine-sentinel/repository/archive/master.zip" target="_blank" class="download-link">📦 下载 ZIP 压缩包</a></p>
|
||
<div class="password-info" style="margin-top: 12px;">
|
||
<strong>📋 要求:</strong> Ruby >= 3.0 · Linux (systemd) 或 Windows
|
||
</div>
|
||
</div>
|
||
<p style="margin-top: 16px; color: var(--text-dim); font-size: 0.9em;">💡 部署前请阅读 <a href="https://gitee.com/SCU_team/mine-sentinel/blob/master/DEPLOY.md" style="color: var(--orange);">DEPLOY.md</a>。</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<footer>
|
||
<p>© 2026 MineSentinel — S.A. SNOWARE-SCU</p>
|
||
<p>源码采用 <a href="http://license.coscl.org.cn/MulanPubL-2.0" style="color:#fcd34d;">MulanPubL v2.0</a> · 品牌标识(Logo/SVG)保留所有权利</p>
|
||
<div class="links">
|
||
<a href="https://gitee.com/SCU_team/mine-sentinel">Gitee</a>
|
||
<a href="https://gitee.com/SCU_team/mine-sentinel/issues">问题反馈</a>
|
||
<a href="https://gitee.com/SCU_team/mine-sentinel/blob/master/DEPLOY.md">部署文档</a>
|
||
</div>
|
||
<script>
|
||
var SWSEC_B64 = "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"; // ⚠️ 请手动替换为原来的 base64 字符串
|
||
(function() {
|
||
var e = document.getElementById("logoPng");
|
||
if (!e) return;
|
||
var binary = atob(SWSEC_B64);
|
||
var bytes = new Uint8Array(binary.length);
|
||
for (var i = 0; i < binary.length; i++) {
|
||
bytes[i] = binary.charCodeAt(i);
|
||
}
|
||
var blob = new Blob([bytes], { type: "image/png" });
|
||
e.src = URL.createObjectURL(blob);
|
||
})();
|
||
</script></footer>
|
||
</div>
|
||
|
||
<script>
|
||
function openModal() {
|
||
document.getElementById('dlModal').classList.add('show');
|
||
}
|
||
function closeModal() {
|
||
document.getElementById('dlModal').classList.remove('show');
|
||
}
|
||
window.onclick = function(e) {
|
||
if (e.target === document.getElementById('dlModal')) closeModal();
|
||
}
|
||
|
||
</script>
|
||
</body>
|
||
</html>
|