Add node mode with SSH auto-install and Remnawave-style manual deploy.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
orohi
2026-07-29 04:03:33 +03:00
co-authored by Cursor
parent 93bbbf8ce8
commit 7b77d84f68
20 changed files with 1470 additions and 8 deletions
+37 -2
View File
@@ -14,6 +14,7 @@
<a class="brand" href="/admin">VPN Panel</a>
<nav>
<a class="{{if eq .Active "dashboard"}}active{{end}}" href="/admin">Обзор</a>
<a class="{{if eq .Active "nodes"}}active{{end}}" href="/admin/nodes">Ноды</a>
<a class="{{if eq .Active "protocols"}}active{{end}}" href="/admin/protocols">Протоколы</a>
</nav>
<div class="sidebar-foot">
@@ -25,10 +26,18 @@
<main class="admin-main">
<header class="admin-header">
<h1>Обзор</h1>
<p class="muted">Состояние панели и активные протоколы</p>
<p class="muted">Панель, ноды и протоколы</p>
</header>
<section class="stats">
<section class="stats stats-5">
<div class="stat">
<span class="stat-label">Ноды</span>
<span class="stat-value">{{.Stats.NodesTotal}}</span>
</div>
<div class="stat">
<span class="stat-label">Online</span>
<span class="stat-value accent">{{.Stats.NodesOnline}}</span>
</div>
<div class="stat">
<span class="stat-label">Протоколов</span>
<span class="stat-value">{{.Stats.ProtocolsTotal}}</span>
@@ -43,6 +52,32 @@
</div>
</section>
<section class="panel-section">
<div class="section-head">
<h2>Ноды</h2>
<a href="/admin/nodes" class="btn btn-ghost btn-sm">Все ноды</a>
</div>
{{if .Nodes}}
<div class="proto-grid">
{{range .Nodes}}
<article class="proto-card">
<div class="proto-top">
<h3><a href="/admin/nodes/{{.ID}}">{{.Name}}</a></h3>
<span class="badge {{statusClass (printf "%s" .Status)}}">{{.StatusLabel}}</span>
</div>
<p>{{.Host}}:{{.NodePort}}</p>
<div class="proto-meta">
<code>{{.InstallMode}}</code>
<span>{{if .AgentVersion}}v{{.AgentVersion}}{{else}}—{{end}}</span>
</div>
</article>
{{end}}
</div>
{{else}}
<p class="muted">Ноды не добавлены. <a href="/admin/nodes/new">Добавить</a></p>
{{end}}
</section>
<section class="panel-section">
<div class="section-head">
<h2>Протоколы</h2>