Run official Xray-core on nodes with full Reality, TLS, and routing.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -467,10 +467,14 @@ textarea { resize: vertical; font-family: var(--mono); font-size: 0.85rem; }
|
||||
gap: 0.5rem;
|
||||
margin: 1rem 0;
|
||||
}
|
||||
input.mono, .mono {
|
||||
input.mono, .mono, textarea.mono {
|
||||
font-family: "JetBrains Mono", ui-monospace, monospace;
|
||||
font-size: 0.85rem;
|
||||
}
|
||||
textarea.mono {
|
||||
width: 100%;
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
@keyframes rise {
|
||||
from { opacity: 0; transform: translateY(12px); }
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
<header class="admin-header row-head">
|
||||
<div>
|
||||
<h1>Inbound <code>{{.Inbound.Tag}}</code></h1>
|
||||
<p class="muted">Профиль {{.Profile.Name}}</p>
|
||||
<p class="muted">Xray-core · профиль {{.Profile.Name}}</p>
|
||||
</div>
|
||||
<a class="btn btn-ghost" href="/admin/profiles/{{.Profile.ID}}">К профилю</a>
|
||||
</header>
|
||||
@@ -58,11 +58,13 @@
|
||||
</label>
|
||||
<label>Network
|
||||
<select name="network">
|
||||
<option value="tcp" {{if eq .Inbound.Network "tcp"}}selected{{end}}>tcp</option>
|
||||
<option value="ws" {{if eq .Inbound.Network "ws"}}selected{{end}}>ws</option>
|
||||
<option value="grpc" {{if eq .Inbound.Network "grpc"}}selected{{end}}>grpc</option>
|
||||
<option value="quic" {{if eq .Inbound.Network "quic"}}selected{{end}}>quic</option>
|
||||
<option value="udp" {{if eq .Inbound.Network "udp"}}selected{{end}}>udp</option>
|
||||
{{$n := .Inbound.Network}}
|
||||
<option value="tcp" {{if eq $n "tcp"}}selected{{end}}>tcp</option>
|
||||
<option value="ws" {{if eq $n "ws"}}selected{{end}}>ws</option>
|
||||
<option value="grpc" {{if eq $n "grpc"}}selected{{end}}>grpc</option>
|
||||
<option value="httpupgrade" {{if eq $n "httpupgrade"}}selected{{end}}>httpupgrade</option>
|
||||
<option value="xhttp" {{if eq $n "xhttp"}}selected{{end}}>xhttp</option>
|
||||
<option value="kcp" {{if eq $n "kcp"}}selected{{end}}>kcp</option>
|
||||
</select>
|
||||
</label>
|
||||
<label>Security
|
||||
@@ -73,7 +75,7 @@
|
||||
</select>
|
||||
</label>
|
||||
<label>Path / serviceName
|
||||
<input name="path" value="{{.Inbound.Path}}" placeholder="/ws или grpc service">
|
||||
<input name="path" value="{{.Inbound.Path}}">
|
||||
</label>
|
||||
<label>Host header
|
||||
<input name="host" value="{{.Inbound.Host}}">
|
||||
@@ -82,13 +84,13 @@
|
||||
<input name="sni" value="{{.Inbound.SNI}}">
|
||||
</label>
|
||||
<label>Fingerprint
|
||||
<input name="fingerprint" value="{{.Inbound.Fingerprint}}" placeholder="chrome">
|
||||
<input name="fingerprint" value="{{.Inbound.Fingerprint}}">
|
||||
</label>
|
||||
<label>Flow
|
||||
<input name="flow" value="{{.Inbound.Flow}}" placeholder="xtls-rprx-vision">
|
||||
<input name="flow" value="{{.Inbound.Flow}}">
|
||||
</label>
|
||||
<label>ALPN
|
||||
<input name="alpn" value="{{.Inbound.ALPN}}" placeholder="h2,http/1.1">
|
||||
<input name="alpn" value="{{.Inbound.ALPN}}">
|
||||
</label>
|
||||
<label>Порядок
|
||||
<input name="sort_order" type="number" value="{{.Inbound.SortOrder}}">
|
||||
@@ -97,33 +99,68 @@
|
||||
<input name="remark" value="{{.Inbound.Remark}}">
|
||||
</label>
|
||||
<label>SS method
|
||||
<input name="ss_method" value="{{.Inbound.SSMethod}}" placeholder="aes-128-gcm">
|
||||
<input name="ss_method" value="{{.Inbound.SSMethod}}">
|
||||
</label>
|
||||
<label>Password (trojan shared, optional)
|
||||
<label>Password (shared, optional)
|
||||
<input name="password" value="{{.Inbound.Password}}">
|
||||
</label>
|
||||
<label>Fallback dest
|
||||
<input name="fallback_dest" value="{{.Inbound.FallbackDest}}" placeholder="127.0.0.1:80">
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<h3 class="section-sub">Reality</h3>
|
||||
<p class="muted">Пустые ключи сгенерируются автоматически при security=reality.</p>
|
||||
<h3 class="section-sub">Reality (XTLS)</h3>
|
||||
<div class="form-grid">
|
||||
<label>Dest
|
||||
<input name="reality_dest" value="{{.Inbound.RealityDest}}" placeholder="www.microsoft.com:443">
|
||||
</label>
|
||||
<label>Server names
|
||||
<input name="reality_server_names" value="{{.Inbound.RealityServerNames}}" placeholder="www.microsoft.com">
|
||||
<input name="reality_server_names" value="{{.Inbound.RealityServerNames}}">
|
||||
</label>
|
||||
<label>Private key
|
||||
<input name="reality_private_key" value="{{.Inbound.RealityPrivateKey}}" class="mono">
|
||||
<label>SpiderX
|
||||
<input name="spider_x" value="{{.Inbound.SpiderX}}">
|
||||
</label>
|
||||
<label>Public key (для клиентов)
|
||||
<input name="reality_public_key" value="{{.Inbound.RealityPublicKey}}" class="mono">
|
||||
<label>xver
|
||||
<input name="reality_xver" type="number" value="{{.Inbound.RealityXver}}">
|
||||
</label>
|
||||
<label>Short ID
|
||||
<input name="reality_short_id" value="{{.Inbound.RealityShortID}}" class="mono">
|
||||
</label>
|
||||
<label>Short IDs (через запятую)
|
||||
<input name="reality_short_ids" value="{{.Inbound.RealityShortIDs}}" class="mono">
|
||||
</label>
|
||||
<label>Private key
|
||||
<input name="reality_private_key" value="{{.Inbound.RealityPrivateKey}}" class="mono">
|
||||
</label>
|
||||
<label>Public key
|
||||
<input name="reality_public_key" value="{{.Inbound.RealityPublicKey}}" class="mono">
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<h3 class="section-sub">TLS certificates (PEM)</h3>
|
||||
<p class="muted">Нужны только при security=tls. На ноде пишутся в /usr/local/etc/xray/certs/</p>
|
||||
<div class="form-grid">
|
||||
<label>Certificate PEM
|
||||
<textarea name="tls_cert_pem" rows="4" class="mono">{{.Inbound.TLSCertPEM}}</textarea>
|
||||
</label>
|
||||
<label>Private key PEM
|
||||
<textarea name="tls_key_pem" rows="4" class="mono">{{.Inbound.TLSKeyPEM}}</textarea>
|
||||
</label>
|
||||
<label>Fallbacks JSON
|
||||
<textarea name="fallbacks_json" rows="3" class="mono" placeholder='[{"dest":"127.0.0.1:80"}]'>{{.Inbound.FallbacksJSON}}</textarea>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<label class="check-row">
|
||||
<input type="hidden" name="sniffing" value="off">
|
||||
<input type="checkbox" name="sniffing" value="on" {{if .Inbound.Sniffing}}checked{{end}}>
|
||||
Sniffing
|
||||
</label>
|
||||
<label class="check-row">
|
||||
<input type="hidden" name="sniffing_route_only" value="off">
|
||||
<input type="checkbox" name="sniffing_route_only" value="on" {{if .Inbound.SniffingRouteOnly}}checked{{end}}>
|
||||
Sniffing routeOnly
|
||||
</label>
|
||||
<label class="check-row">
|
||||
<input type="hidden" name="enabled" value="off">
|
||||
<input type="checkbox" name="enabled" value="on" {{if .Inbound.Enabled}}checked{{end}}>
|
||||
|
||||
@@ -123,8 +123,9 @@
|
||||
<option value="tcp" selected>tcp</option>
|
||||
<option value="ws">ws</option>
|
||||
<option value="grpc">grpc</option>
|
||||
<option value="quic">quic</option>
|
||||
<option value="udp">udp</option>
|
||||
<option value="httpupgrade">httpupgrade</option>
|
||||
<option value="xhttp">xhttp</option>
|
||||
<option value="kcp">kcp</option>
|
||||
</select>
|
||||
</label>
|
||||
<label>Security
|
||||
@@ -138,16 +139,16 @@
|
||||
<input name="path" placeholder="/ws или grpc service">
|
||||
</label>
|
||||
<label>Host header
|
||||
<input name="host" placeholder="для ws">
|
||||
<input name="host" placeholder="для ws/xhttp">
|
||||
</label>
|
||||
<label>SNI
|
||||
<input name="sni" placeholder="авто из reality names">
|
||||
</label>
|
||||
<label>Fingerprint
|
||||
<label>Fingerprint (клиент)
|
||||
<input name="fingerprint" value="chrome">
|
||||
</label>
|
||||
<label>Flow
|
||||
<input name="flow" value="xtls-rprx-vision" placeholder="xtls-rprx-vision для VLESS+Reality">
|
||||
<input name="flow" value="xtls-rprx-vision" placeholder="xtls-rprx-vision">
|
||||
</label>
|
||||
<label>ALPN
|
||||
<input name="alpn" placeholder="h2,http/1.1">
|
||||
@@ -159,16 +160,22 @@
|
||||
<input name="remark" placeholder="Sweden RU (имя в подписке)">
|
||||
</label>
|
||||
<label>Reality dest
|
||||
<input name="reality_dest" value="www.microsoft.com:443" placeholder="www.microsoft.com:443">
|
||||
<input name="reality_dest" value="www.microsoft.com:443">
|
||||
</label>
|
||||
<label>Reality server names
|
||||
<input name="reality_server_names" value="www.microsoft.com" placeholder="www.microsoft.com">
|
||||
<input name="reality_server_names" value="www.microsoft.com">
|
||||
</label>
|
||||
<label>SpiderX
|
||||
<input name="spider_x" value="/">
|
||||
</label>
|
||||
<label>Fallback dest
|
||||
<input name="fallback_dest" placeholder="127.0.0.1:80">
|
||||
</label>
|
||||
<label>SS method
|
||||
<input name="ss_method" value="aes-128-gcm">
|
||||
</label>
|
||||
</div>
|
||||
<p class="muted">Только Xray-протоколы (VLESS/VMess/Trojan/SS). Для Reality ключи и shortId генерируются автоматически.</p>
|
||||
<p class="muted">Xray-core (XTLS/Xray-core): Reality-ключи и shortId генерируются автоматически. На ноде поднимается официальный образ ghcr.io/xtls/xray-core.</p>
|
||||
<button class="btn btn-primary" type="submit">Добавить inbound</button>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
Reference in New Issue
Block a user