Files
opsxshell/apps/server/internal/site/template.html
T
Logan.Li 5eb11826db
CI / Lint & TypeCheck (push) Canceled after 0s
CI / Test (push) Canceled after 0s
CI / Tauri Foundation Acceptance (push) Canceled after 0s
CI / Build (macos-latest) (push) Canceled after 0s
CI / Build (ubuntu-latest) (push) Canceled after 0s
CI / Build (windows-latest) (push) Canceled after 0s
feat(site): 并入 Gin 官网与文档服务,对齐桌面产品形态
- apps/server:Gin embed 官网 + /docs + /health + /download(无操作 API)
- run.sh 重写 web/gui 场景;.gitignore 排除 server 二进制与挂载的安装包
- README/AGENTS/CLAUDE 同步「浏览器只看官网、操作走桌面」的产品形态说明
- 终端视口背景变量与全宽终端边缘 hairline 修正(serial/terminal/i18n 微调)
2026-10-10 13:35:01 +08:00

392 lines
19 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>OpsXShell — 轻量原生运维终端</title>
<meta name="description" content="OpsXShell 是基于 Tauri 2 与 Rust 的轻量原生运维终端:SSH 多标签分屏、SFTP 双栏、端口转发、RDP/VNC 远程桌面、串口与终端 AI 助手。便捷、人性化、不做堡垒机。" />
<link rel="icon" type="image/svg+xml" href="/site/assets/icon.svg" />
<link rel="stylesheet" href="/site/assets/style.css" />
</head>
<body>
<!-- ── Nav ─────────────────────────────────────── -->
<header class="nav">
<div class="container nav-inner">
<a class="brand" href="#top">
<img src="/site/assets/icon.svg" alt="OpsXShell 图标" />
OpsXShell<span class="tm">v2.1.1</span>
</a>
<button class="nav-toggle" aria-label="打开菜单">☰</button>
<nav class="nav-links">
<a href="#features">功能</a>
<a href="#ai">终端 AI</a>
<a href="#pricing">价格</a>
<a href="#security">安全</a>
<a href="#download">下载</a>
<a href="/docs">文档</a>
<a href="#faq">FAQ</a>
<a class="nav-cta" href="#download">免费下载</a>
</nav>
</div>
</header>
<!-- ── Hero ────────────────────────────────────── -->
<div id="top"></div>
<section class="hero">
<div class="container hero-grid">
<div>
<span class="kicker">Tauri 2 · Rust · 原生桌面</span>
<h1>连上就能干活的<br /><span class="hl">轻量运维终端</span></h1>
<p class="tagline">
终端、传文件、转发、远程桌面——短路径直达。没有插件市场,没有审批流,
打开就用。
</p>
<div class="hero-badges">
<span class="badge"><b>●</b> SSH / SFTP</span>
<span class="badge"><b>●</b> 端口转发 / SOCKS5</span>
<span class="badge"><b>●</b> RDP / VNC</span>
<span class="badge"><b>●</b> 串口</span>
<span class="badge"><b>●</b> 7 语种界面</span>
</div>
<div class="hero-ctas">
<a class="btn btn-primary" href="/download/OpsXShell_2.1.1_aarch64.dmg">
⬇ 下载 macOS 版(Apple Silicon)
</a>
<a class="btn btn-ghost" href="#features">看看能做什么</a>
</div>
<p class="hero-note">v2.1.1 · 13 MB · 免费层即可使用 SSH 终端、SFTP 与本地终端</p>
</div>
<div class="term" aria-hidden="true">
<div class="term-bar">
<span class="term-dot r"></span><span class="term-dot y"></span><span class="term-dot g"></span>
<span class="term-title">opsxshell — root@web-prod ~ │ 分屏 1/2</span>
</div>
<div class="term-body">
<div><span class="p">➜</span> <span class="c">ssh dev@10.0.0.8</span></div>
<div class="out">Host key verified via ~/.ssh/known_hosts ✓</div>
<div><span class="p">➜</span> <span class="c">df -h /var && systemctl status nginx --no-pager</span></div>
<div class="out">/dev/sda1 98G 41G 53G 44% /var</div>
<div class="out">● nginx.service - active (running)</div>
<div><span class="mark">▶ 转发</span> <span class="dim">socks5://127.0.0.1:1080 经 web-prod 出口已就绪</span></div>
<div><span class="mark">▶ SFTP</span> <span class="dim">deploy.zip 上传完成 · 断点续传 · 原子替换</span></div>
<div><span class="mark">▶ AI</span> <span class="c">总结刚才的部署输出</span><span class="cursor"></span></div>
</div>
</div>
</div>
</section>
<!-- ── Features ────────────────────────────────── -->
<section id="features" class="section-alt">
<div class="container">
<div class="section-head">
<span class="kicker">核心能力</span>
<h2>一个窗口,覆盖日常远程运维</h2>
<p>SSH、SFTP、转发、远程桌面、串口和本地终端共用一个多标签工作区;常用流程保持简短,高级配置默认收起。</p>
</div>
<div class="grid grid-3">
<div class="card">
<div class="icon" style="background:rgba(85,174,242,.14)">⌨️</div>
<h3>SSH 终端与会话管理</h3>
<p>密码 / 私钥 / SSH Agent 自动尝试,主机指纹走 <code>~/.ssh/known_hosts</code> 校验。会话分组、多标签、最多 4 分屏、命令片段、<code>ssh://</code> 链接唤起快速连接。</p>
<span class="tag tag-free">免费</span>
</div>
<div class="card">
<div class="icon" style="background:rgba(167,139,250,.14)">📁</div>
<h3>SFTP 双栏文件管理</h3>
<p>本地 / 远程双栏拖拽互传、断点续传、上传完成前原子替换、重命名与权限修改;远程文本直接编辑(约 2MB 上限)。</p>
<span class="tag tag-free">免费</span>
</div>
<div class="card">
<div class="icon" style="background:rgba(63,214,143,.13)">🔗</div>
<h3>端口转发</h3>
<p>本地 / 远程 / 动态 SOCKS5 转发,规则与运行实例分离;状态栏「转发」抽屉统一管理,断线自动保留未停止的 Listener。</p>
<span class="tag tag-pro">专业版</span>
</div>
<div class="card">
<div class="icon" style="background:rgba(245,192,78,.13)">🖥️</div>
<h3>远程桌面 RDP / VNC</h3>
<p>原生 IronRDP 与 VNC 会话,帧与输入经 Tauri 事件直达 Canvas;运行态只在内存,断开即清理。</p>
<span class="tag tag-pro">专业版</span>
</div>
<div class="card">
<div class="icon" style="background:rgba(85,174,242,.14)">📤</div>
<h3>批量执行与广播输入</h3>
<p>多主机批量命令结果只在当前窗口汇总;同窗多分屏广播同步输入,敲一遍、处处生效(桌面会话除外)。</p>
<span class="tag tag-pro">专业版</span>
</div>
<div class="card">
<div class="icon" style="background:rgba(63,214,143,.13)">🔩</div>
<h3>本地终端与串口</h3>
<p>系统 zsh / bash / sh 本地终端开箱即用;串口终端适配路由器、交换机与开发板调试。HTTP CONNECT / SOCKS5 连接代理。</p>
<span class="tag tag-free">本地终端免费</span><span class="tag tag-pro">串口专业版</span>
</div>
</div>
</div>
</section>
<!-- ── AI ──────────────────────────────────────── -->
<section id="ai">
<div class="container">
<div class="section-head">
<span class="kicker">终端 AI 助手 · 专业版</span>
<h2>先看上下文,再提建议,执行权始终在你手里</h2>
<p>AI 只复用当前活跃的 SSH 连接,不建立独立凭据边界;最多 8 步执行循环,五级风险评级,危险命令硬拒绝并在 Rust 侧二次校验。</p>
</div>
<div class="flow">
<div class="flow-step">
<span class="no">01</span>
<h4>读取终端上下文</h4>
<p>以选中文本或当前视口为起点,Agent 优先提出只读命令收集证据,不凭空猜测环境。</p>
</div>
<div class="flow-step">
<span class="no">02</span>
<h4>风险分级确认</h4>
<p>严格 / 宽松两档模式;五级风险(安全 → 禁止执行),critical 永远直接拒绝。</p>
</div>
<div class="flow-step">
<span class="no">03</span>
<h4>你决定怎么执行</h4>
<p>拒绝、只插入不执行、本次执行、本次+始终允许——四种选择都由你点击。</p>
</div>
<div class="flow-step">
<span class="no">04</span>
<h4>结果与小结</h4>
<p>命令真实输出进入下一轮上下文;一键「总结输出」从长日志里提炼要点。</p>
</div>
</div>
<div class="confirm-card" aria-hidden="true">
<div class="confirm-head">
<span>Agent 第 2/8 轮</span>
<span class="risk-pill risk-high">高风险</span>
<span style="margin-left:auto">宽松模式</span>
</div>
<div class="confirm-cmd">$ systemctl restart nginx</div>
<div class="confirm-actions">
<span class="danger">✕ 拒绝</span>
<span class="green">⎘ 插入不执行</span>
<span class="primary">▶ 本次执行</span>
<span>∞ 本次+始终</span>
</div>
</div>
<ul class="check-list">
<li><b>不保存命令与对话历史</b>——AI 上下文只存在于当前窗口会话内存中。</li>
<li><b>供应商自选</b>——OpenAI / Anthropic 兼容接口、new-api、本地 Ollama 均可,API Key 经 AES-256-GCM 加密落盘。</li>
<li><b>可选「全部确认」</b>——开启后除只读白名单命令外,每一条都需你手动放行。</li>
<li><b>随时停止</b>——生成或执行中一键取消,远端命令同步中止。</li>
</ul>
</div>
</section>
<!-- ── Pricing ─────────────────────────────────── -->
<section id="pricing" class="section-alt">
<div class="container">
<div class="section-head">
<span class="kicker">价格</span>
<h2>免费够用,专业版解锁重活</h2>
<p>许可证绑定设备而非订阅账号;离线许可证(LICOFF-)支持完全离线激活。</p>
</div>
<div class="pricing">
<div class="plan">
<h3>免费</h3>
<div class="price">¥0</div>
<div class="price-note">日常 SSH 运维完全够用</div>
<ul>
<li>SSH 终端(密码 / 私钥 / Agent)</li>
<li>SFTP 双栏文件管理</li>
<li>本地终端(zsh / bash / sh)</li>
<li>会话管理与 <code>~/.ssh/config</code> 导入</li>
<li>7 语种界面</li>
</ul>
<a class="btn btn-ghost" href="/download/OpsXShell_2.1.1_aarch64.dmg">免费下载</a>
</div>
<div class="plan featured">
<span class="ribbon">推荐</span>
<h3>专业版 · 包年</h3>
<div class="price">¥99 <small>/ 年</small></div>
<div class="price-note">2 台设备</div>
<ul>
<li class="locked">端口转发(本地 / 远程 / SOCKS5)</li>
<li class="locked">终端 AI 助手</li>
<li class="locked">批量执行 / 广播同步</li>
<li class="locked">远程桌面 RDP / VNC</li>
<li class="locked">串口终端与连接代理</li>
<li class="locked">主机清单批量导入导出</li>
</ul>
<a class="btn btn-primary" href="#faq">应用内升级</a>
</div>
<div class="plan">
<h3>专业版 · 永久</h3>
<div class="price">¥199</div>
<div class="price-note">5 台设备 · 终身授权</div>
<ul>
<li>包含包年全部功能</li>
<li>一次买断,无续费</li>
<li>离线许可证支持</li>
<li>后续版本持续可用</li>
</ul>
<a class="btn btn-ghost" href="#faq">应用内升级</a>
</div>
</div>
</div>
</section>
<!-- ── Security ────────────────────────────────── -->
<section id="security">
<div class="container">
<div class="section-head">
<span class="kicker">安全边界</span>
<h2>凭据加密落盘,运行态只在内存</h2>
<p>产品聚焦「日常远程干活」:审计、录像、审批等堡垒机能力刻意不做——宁可少而顺,不做重型平台。</p>
</div>
<div class="sec-grid">
<div class="sec-item">
<span class="ic">🔐</span>
<div>
<h4>AES-256-GCM 本地加密</h4>
<p>会话密码、私钥口令、模型 API Key 全部加密后落盘;主密钥固定在 <code>~/.opsxshell/master.key</code>,目录 0700、文件 0600。</p>
</div>
</div>
<div class="sec-item">
<span class="ic">🧾</span>
<div>
<h4>known_hosts 主机指纹</h4>
<p>首次连接指纹确认,后续变更即告警;不静默接受陌生主机。</p>
</div>
</div>
<div class="sec-item">
<span class="ic">🕶️</span>
<div>
<h4>不留命令历史</h4>
<p>不保存终端命令历史;批量命令结果与 AI 对话只保留在当前窗口。</p>
</div>
</div>
<div class="sec-item">
<span class="ic">⚡</span>
<div>
<h4>运行态不落盘</h4>
<p>转发 Listener、RDP / VNC worker 的运行态只存在原生侧内存;界面的「停止」关闭的是真实原生资源。</p>
</div>
</div>
</div>
</div>
</section>
<!-- ── Tech ────────────────────────────────────── -->
<section class="section-alt">
<div class="container">
<div class="section-head">
<span class="kicker">技术栈</span>
<h2>原生性能,跨平台内核</h2>
</div>
<div class="tech-list">
<span>Tauri 2</span><span>Rust 2021</span><span>ssh2 / libssh2</span><span>IronRDP</span>
<span>vnc-rs</span><span>portable-pty</span><span>serialport</span><span>React 18</span>
<span>TypeScript 5</span><span>Zustand</span><span>XTerm.js</span><span>i18next · 7 语种</span>
</div>
</div>
</section>
<!-- ── Download ────────────────────────────────── -->
<section id="download">
<div class="container">
<div class="section-head">
<span class="kicker">下载</span>
<h2>拿走即用</h2>
</div>
<div class="dl-box">
<div>
<h3>OpsXShell v2.1.1 · macOS(Apple Silicon)</h3>
<p class="meta">.dmg 安装包 · 13 MB · macOS 13+ · 2026-09-02 构建</p>
<a class="btn btn-primary" href="/download/OpsXShell_2.1.1_aarch64.dmg">⬇ 下载 OpsXShell_2.1.1_aarch64.dmg</a>
<div class="sha">
<span>
SHA-256<br />
423828c8d19cd77d1aceda80ccbb82d0e5155d27d559df5a8ff0985dca0f033
</span>
<button data-copy="423828c8d19cd77d1aceda80ccbb82d0e5155d27d559df5a8ff0985dca0f033">复制</button>
</div>
<p class="dl-note">
当前版本未做开发者签名与公证:首次打开请右键点击 .app →「打开」,或在系统设置中允许。
Windows 与 Linux 版本将在对应平台实机验收后发布。
</p>
</div>
<div class="dl-app">
<img src="/site/assets/icon.svg" alt="OpsXShell 应用图标" />
<div class="os">
<b>macOS 13+</b>
<span>Apple Silicon(M1/M2/M3/M4)</span>
</div>
</div>
</div>
</div>
</section>
<!-- ── FAQ ─────────────────────────────────────── -->
<section id="faq" class="section-alt">
<div class="container">
<div class="section-head">
<span class="kicker">FAQ</span>
<h2>常见问题</h2>
</div>
<details class="faq-item">
<summary>OpsXShell 会保存我的 SSH 密码吗?</summary>
<div class="answer">会话密码、私钥口令经 AES-256-GCM 加密后保存在本机应用数据目录,主密钥单独存放于 <code>~/.opsxshell/master.key</code>(目录 0700 / 文件 0600)。不上传任何凭据;也支持完全不保存密码的 SSH Agent 认证。</div>
</details>
<details class="faq-item">
<summary>AI 会自动执行命令吗?</summary>
<div class="answer">默认按「严格 / 宽松」两档确认:宽松模式下仅高风险命令需要确认,严格模式中风险起确认。危险命令(如 <code>rm -rf /</code>)无论什么模式都直接拒绝,且 Rust 侧二次校验。你还可以开启「所有命令都需确认」,或在确认卡上选择「只插入不执行」。</div>
</details>
<details class="faq-item">
<summary>支持 <code>~/.ssh/config</code> 和跳板机吗?</summary>
<div class="answer">支持导入 <code>~/.ssh/config</code> 常用字段;SSH 代理 / 跳板(HTTP CONNECT、SOCKS5)属于专业版能力。</div>
</details>
<details class="faq-item">
<summary>免费版和专业版差在哪?</summary>
<div class="answer">免费版包含 SSH 终端、SFTP、本地终端与会话管理。专业版解锁端口转发、连接代理、终端 AI、批量执行 / 广播、RDP / VNC 远程桌面、串口与主机清单批量导入导出。包年 ¥99(2 台设备)或永久 ¥199(5 台设备),均在应用内升级。</div>
</details>
<details class="faq-item">
<summary>支持 Windows / Linux 吗?</summary>
<div class="answer">内核(Tauri 2 + Rust)面向 macOS / Windows / Linux 跨平台设计;安装包按「目标系统实机构建并验收」的原则发布。当前提供 macOS Apple Silicon 包,Windows 与 Linux 版在对应平台完成实机验收后上线。</div>
</details>
<details class="faq-item">
<summary>数据保存在哪里?</summary>
<div class="answer">会话与设置保存在系统应用数据目录的 <code>opsxshell-data.json</code>;终端标签布局持久化,但连接、转发、远程桌面等运行态只在内存,应用重启后按需重连。</div>
</details>
</div>
</section>
<!-- ── Footer ──────────────────────────────────── -->
<footer>
<div class="container footer-inner">
<div>
<div class="footer-brand">
<img src="/site/assets/icon.svg" alt="" />
OpsXShell
</div>
<p style="margin-top:8px">轻量运维终端 · 便捷、人性化、操作简单实用</p>
</div>
<nav>
<a href="#features">功能</a>
<a href="#ai">终端 AI</a>
<a href="#pricing">价格</a>
<a href="#security">安全</a>
<a href="#download">下载</a>
<a href="/docs">文档</a>
<a href="#faq">FAQ</a>
</nav>
</div>
<div class="container" style="margin-top:22px">
<p>© 2026 OpsXShell · 不做审计、审批与堡垒机——宁可少而顺。</p>
</div>
</footer>
<script src="/site/assets/main.js"></script>
</body>
</html>