-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPanelX.html
More file actions
182 lines (173 loc) · 21.3 KB
/
Copy pathPanelX.html
File metadata and controls
182 lines (173 loc) · 21.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
<!DOCTYPE html>
<html lang="zh-CN" data-theme="light">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>PanelX — 单文件服务器运维面板</title>
<meta name="description" content="PanelX:一个 Python 文件搞定服务器监控。实时 CPU/内存/磁盘/网络、进程管理、系统信息,零第三方依赖。">
<script>
(function(){try{var t=localStorage.getItem('panelx_site_theme');if(!t){t=matchMedia('(prefers-color-scheme: dark)').matches?'dark':'light';}document.documentElement.setAttribute('data-theme',t);}catch(e){document.documentElement.setAttribute('data-theme','light');}})();
</script>
<style>
:root{
--paper:#f5f4f1; --ink:#16191f; --muted:#6c7079; --surface:#ffffff; --line:#e4e2dc;
--accent:#1f9d6b; --accent-2:#0e7a52; --amber:#b9791a; --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;
--sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"PingFang SC","Microsoft YaHei",sans-serif;
}
[data-theme="dark"]{
--paper:#0f1115; --ink:#eef1f5; --muted:#8b95a5; --surface:#171b21; --line:#262c35;
--accent:#34e3a0; --accent-2:#1f9d6b; --amber:#e0a13a;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--sans);background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;line-height:1.6}
.wrap{max-width:1080px;margin:0 auto;padding:0 22px}
a{color:var(--accent-2);text-decoration:none}
.eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted)}
/* nav */
nav{display:flex;align-items:center;gap:14px;padding:20px 0;border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;letter-spacing:.02em}
.brand img{height:30px;width:30px;object-fit:contain;border-radius:7px;background:var(--surface);border:1px solid var(--line)}
.brand small{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--muted);font-weight:600}
.navspacer{flex:1}
.navlinks{display:flex;gap:22px;font-size:14px}
.navlinks a{color:var(--ink);opacity:.8}
.navlinks a:hover{opacity:1;color:var(--accent-2)}
.tg{font-family:var(--mono);font-size:13px;border:1px solid var(--line);background:var(--surface);color:var(--ink);padding:7px 12px;border-radius:9px;cursor:pointer}
.tg:hover{border-color:var(--accent)}
/* hero */
.hero{display:grid;grid-template-columns:1.15fr .85fr;gap:40px;align-items:center;padding:64px 0 48px}
.hero h1{font-size:clamp(30px,5vw,52px);line-height:1.08;letter-spacing:-.02em;margin:14px 0 16px;font-weight:800}
.hero h1 .em{color:var(--accent)}
.hero p.lead{font-size:17px;color:var(--muted);max-width:46ch}
.hero .en{font-size:13px;color:var(--muted);margin-top:10px;font-family:var(--mono)}
.term{background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 18px 50px rgba(16,24,40,.08)}
[data-theme="dark"] .term{box-shadow:0 18px 50px rgba(0,0,0,.4)}
.term .bar{display:flex;gap:7px;padding:11px 14px;border-bottom:1px solid var(--line);background:var(--paper)}
.term .bar i{width:11px;height:11px;border-radius:50%;background:var(--line);display:block}
.term pre{padding:18px 18px;font-family:var(--mono);font-size:13px;line-height:1.7;overflow-x:auto;color:var(--ink)}
.term pre .c{color:var(--muted)}
.term pre .p{color:var(--accent)}
.cta{display:flex;gap:12px;margin-top:26px;flex-wrap:wrap}
.btn{font-family:var(--sans);font-size:14px;font-weight:600;padding:11px 20px;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;transition:.18s}
.btn:hover{border-color:var(--accent)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.primary:hover{filter:brightness(1.05);color:#fff}
/* spec strip */
.strip{display:flex;flex-wrap:wrap;gap:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;margin:8px 0 56px;background:var(--surface)}
.strip div{flex:1;min-width:140px;padding:16px 20px;border-right:1px solid var(--line)}
.strip div:last-child{border-right:none}
.strip b{display:block;font-family:var(--mono);font-size:20px}
.strip span{font-size:12px;color:var(--muted);letter-spacing:.04em}
/* section */
section{padding:40px 0;border-top:1px solid var(--line)}
section h2{font-size:13px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-family:var(--mono);margin-bottom:24px}
.feat{display:grid;grid-template-columns:repeat(2,1fr);gap:0}
.feat .item{padding:22px 26px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.feat .item:nth-child(2n){border-right:none}
.feat .item .no{font-family:var(--mono);font-size:12px;color:var(--accent);letter-spacing:.1em}
.feat .item h3{font-size:18px;margin:6px 0 6px}
.feat .item p{color:var(--muted);font-size:14px}
.feat .item .en{font-size:12px;color:var(--muted);opacity:.75;font-family:var(--mono);margin-top:4px}
/* table */
table{width:100%;border-collapse:collapse;font-size:14px;border:1px solid var(--line);border-radius:12px;overflow:hidden}
th,td{text-align:left;padding:12px 16px;border-bottom:1px solid var(--line)}
th{background:var(--surface);font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
td.mono{font-family:var(--mono)}
tr:last-child td{border-bottom:none}
/* security callout */
.sec{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--amber);border-radius:10px;padding:18px 22px;font-size:14px;color:var(--muted)}
.sec b{color:var(--ink)}
footer{padding:40px 0 60px;color:var(--muted);font-size:13px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px}
@media(max-width:760px){
.hero{grid-template-columns:1fr;gap:28px;padding:40px 0 30px}
.feat{grid-template-columns:1fr}
.feat .item{border-right:none}
.navlinks{display:none}
}
</style>
</head>
<body>
<div class="wrap">
<nav>
<div class="brand"><img src="data:image/png;base64,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" alt="PanelX"><div>PanelX<small>SERVER OPS</small></div></div>
<div class="navspacer"></div>
<div class="navlinks">
<a href="#features">功能 / Features</a>
<a href="#tech">实现 / How</a>
<a href="https://github.com/Developerprit/PanelX" target="_blank" rel="noopener">GitHub</a>
</div>
<button class="tg" id="tg">◐ 主题</button>
</nav>
<!-- HERO -->
<div class="hero">
<div>
<span class="eyebrow">服务器运维控制台 · Server Ops Console</span>
<h1>把一台服务器的<span class="em">心跳</span>,<br>装进一个浏览器标签页。</h1>
<p class="lead">PanelX 是一个 Python 文件:启动即服务,浏览器登录即得实时资源监控、进程管理与系统信息。没有框架,没有依赖,只有标准库。</p>
<p class="en">One Python file. Boot it, open a tab, watch your server breathe — CPU, memory, disk, network, processes, all live.</p>
<div class="cta">
<a class="btn primary" href="https://github.com/Developerprit/PanelX" target="_blank" rel="noopener">获取源码 / Get source</a>
<a class="btn" href="#features">查看功能 / Features</a>
</div>
</div>
<div class="term">
<div class="bar"><i></i><i></i><i></i></div>
<pre><span class="c"># 启动面板(默认端口 5221)</span>
<span class="p">$</span> python3 panelx.py
<span class="c"># 浏览器访问</span>
http://localhost:5221/
<span class="c"># 默认账号(首次登录后请修改)</span>
admin / admin123456</pre>
</div>
</div>
<!-- SPEC STRIP -->
<div class="strip">
<div><b>1 文件</b><span>Single file · 单文件交付</span></div>
<div><b>0 依赖</b><span>Zero 3rd-party deps</span></div>
<div><b>5221</b><span>Default port</span></div>
<div><b>Py 3.8+</b><span>Standard library only</span></div>
</div>
<!-- FEATURES -->
<section id="features">
<h2>功能 / What it does</h2>
<div class="feat">
<div class="item"><div class="no">01</div><h3>实时资源监控</h3><p>CPU、内存、磁盘与网络使用率,前端每 2 秒自动刷新。</p><div class="en">Live CPU / memory / disk / network, polled every 2s.</div></div>
<div class="item"><div class="no">02</div><h3>进程管理</h3><p>列出运行中的进程,支持按 PID 一键终止。</p><div class="en">List processes; kill by PID from the UI.</div></div>
<div class="item"><div class="no">03</div><h3>系统信息概览</h3><p>操作系统、主机名、运行时长、Python 与架构一目了然。</p><div class="en">OS, hostname, uptime, Python & arch at a glance.</div></div>
<div class="item"><div class="no">04</div><h3>登录认证</h3><p>会话令牌 + 密码加盐哈希,未登录接口一律拦截。</p><div class="en">Session token + salted hash; APIs gated.</div></div>
</div>
</section>
<!-- TECH -->
<section id="tech">
<h2>实现 / Under the hood</h2>
<table>
<thead><tr><th>指标 Metric</th><th>Linux 数据来源</th><th>Windows 回退</th></tr></thead>
<tbody>
<tr><td>CPU</td><td class="mono">/proc/stat 采样差值</td><td class="mono">GetSystemTimes (ctypes)</td></tr>
<tr><td>内存</td><td class="mono">/proc/meminfo</td><td class="mono">GlobalMemoryStatusEx</td></tr>
<tr><td>磁盘</td><td class="mono">/proc/mounts + statvfs</td><td class="mono">GetLogicalDriveStrings</td></tr>
<tr><td>网络</td><td class="mono">/proc/net/dev 速率</td><td class="mono">GetIfTable (iphlpapi)</td></tr>
<tr><td>进程</td><td class="mono">/proc/<pid>/*</td><td class="mono">CreateToolhelp32Snapshot</td></tr>
</tbody>
</table>
<div class="sec" style="margin-top:22px">
<b>为什么零依赖?</b> 运维场景往往不允许随意装包。PanelX 只用 Python 标准库 + 系统调用,
拷贝这一个文件就能在任何装了 Python 3 的服务器上跑起来。
<span class="en">Why zero-dep? Ops boxes often forbid arbitrary installs — one file, any Python 3, done.</span>
</div>
</section>
<footer>
<span>© 2026 kscm · Licensed under <a href="https://license.kscm.top/available.md" target="_blank" rel="noopener">Available License</a></span>
<span class="mono">PanelX · python3 panelx.py --port 5221</span>
</footer>
</div>
<script>
document.getElementById('tg').onclick=function(){
var cur=document.documentElement.getAttribute('data-theme');
var next=cur==='dark'?'light':'dark';
document.documentElement.setAttribute('data-theme',next);
try{localStorage.setItem('panelx_site_theme',next);}catch(e){}
};
</script>
</body>
</html>