Files
netdesk/server/web/download.html
T

202 lines
16 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="en" data-theme="dark">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Download — NetDesk</title>
<meta name="description" content="Download NetDesk free for Windows. Native macOS build for Apple Silicon coming soon. Zero-install web client for viewers.">
<link rel="canonical" href="https://netdesk.space/download">
<meta property="og:title" content="Download — NetDesk">
<meta property="og:description" content="Download NetDesk free for Windows. Native macOS build for Apple Silicon coming soon. Zero-install web client for viewers.">
<meta property="og:url" content="https://netdesk.space/download">
<meta name="theme-color" content="#0a0d14">
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' rx='7' fill='%233d7eff'/%3E%3Cpath d='M8 20l8-12 8 12-8-4z' fill='white'/%3E%3Crect x='12' y='18' width='8' height='7' rx='2' fill='white'/%3E%3C/svg%3E">
<link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap" rel="stylesheet">
<link rel="stylesheet" href="site.css?v=2">
<style>
/* Exact replica of the NetDesk desktop app — the unified full client you install. */
@keyframes rise { from{opacity:0; transform: translateY(22px)} to{opacity:1; transform: none} }
.appshot { margin: 0 auto; max-width: 1040px; border-radius: 14px; overflow: hidden;
border: 1px solid #263241; background: #11161d; text-align: left; font-size: 13px;
font-family: 'Segoe UI','Inter',system-ui,sans-serif;
box-shadow: 0 60px 120px -30px rgba(0,0,0,.8), 0 30px 70px -40px rgba(25,200,126,.4),
inset 0 1px 0 rgba(255,255,255,.04);
animation: rise .9s .22s both; }
.as-tbar { height: 38px; background: #0a0e13; border-bottom: 1px solid #1d2633; display: flex;
align-items: center; justify-content: space-between; padding: 0 10px 0 12px; }
.as-tl { display: flex; align-items: center; gap: 10px; }
.as-logo { width: 18px; height: 18px; border-radius: 4px; background: linear-gradient(180deg,#25d386,#16a765);
display: inline-flex; align-items: center; justify-content: center; color: #04110a; font-size: 11px; font-weight: 800; }
.as-title { font-size: 12.5px; color: #d8dee9; font-weight: 600; }
.as-sub { font-size: 11px; color: #64748b; }
.as-tr { display: flex; align-items: center; gap: 10px; }
.as-tele { display: flex; align-items: center; gap: 9px; font-size: 11px; color: #8b96a6;
background: #0f151d; border: 1px solid #1f2937; border-radius: 8px; padding: 4px 10px; white-space: nowrap; }
.as-tele b { color: #25db8e; font-family: Consolas,monospace; font-weight: 600; }
.as-win { display: flex; gap: 4px; color: #8b96a6; font-size: 12px; }
.as-win span { width: 26px; text-align: center; }
.as-body { display: grid; grid-template-columns: 216px 1fr; min-height: 430px; }
.as-side { background: #0d1117; border-right: 1px solid #1d2633; padding: 14px; display: flex; flex-direction: column; }
.as-brand { display: flex; align-items: center; gap: 10px; }
.as-brand .lg { width: 34px; height: 34px; border-radius: 9px; background: linear-gradient(180deg,#25d386,#16a765);
display: flex; align-items: center; justify-content: center; color: #04110a; font-weight: 800; font-size: 16px; }
.as-brand b { color: #e6edf3; font-size: 16px; } .as-brand i { font-style: normal; font-size: 10.5px; color: #64748b; }
.as-navlbl { font-size: 10px; letter-spacing: 1.6px; color: #5b6878; margin: 18px 0 8px; font-weight: 700; }
.as-nav { display: grid; gap: 4px; }
.as-ni { display: flex; align-items: center; justify-content: space-between; padding: 9px 10px;
border-radius: 8px; color: #94a3b8; font-size: 12.5px; border: 1px solid transparent; }
.as-ni.act { background: rgba(25,200,126,.1); color: #25db8e; border-color: rgba(25,200,126,.25); font-weight: 600; box-shadow: inset 3px 0 0 #22d08a; }
.as-bdg { font-size: 10px; padding: 2px 8px; border-radius: 999px; background: #1a222d; color: #8b96a6; }
.as-bdg.g { background: rgba(25,200,126,.16); color: #25db8e; }
.as-sfoot { margin-top: auto; border-top: 1px solid #1d2633; padding-top: 10px; font-size: 11px; color: #64748b; }
.as-sfoot b { color: #cbd5e1; font-weight: 600; } .as-sfoot .on { color: #25db8e; }
.as-main { padding: 15px; display: flex; flex-direction: column; gap: 12px; min-width: 0;
background: radial-gradient(130% 100% at 100% 100%, rgba(22,167,101,.07), transparent 55%), linear-gradient(165deg,#121923 0%,#10151c 58%,#0f1714 150%); }
.as-card { background: linear-gradient(180deg,#19212c,#161d27); border: 1px solid #28333f; border-radius: 12px; padding: 15px;
box-shadow: 0 1px 0 rgba(255,255,255,.02) inset, 0 10px 24px -18px rgba(0,0,0,.7); }
.as-partner { display: flex; gap: 10px; align-items: center; padding: 10px 12px; }
.as-plbl { font-size: 10.5px; letter-spacing: 1.2px; color: #25db8e; font-weight: 700; white-space: nowrap; }
.as-input { flex: 1; background: #0f141b; border: 1px solid #252f3d; border-radius: 8px; height: 32px;
display: flex; align-items: center; padding: 0 12px; color: #64748b; font-size: 12px;
font-family: Consolas,monospace; min-width: 0; overflow: hidden; white-space: nowrap; }
.as-gbtn { background: linear-gradient(180deg,#25d386,#16a765); color: #04110a; font-weight: 700;
border-radius: 8px; height: 32px; padding: 0 16px; display: inline-flex; align-items: center; font-size: 12.5px; white-space: nowrap; }
.as-grid { display: grid; grid-template-columns: 1.25fr 1fr; gap: 12px; }
.as-col { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.as-lbl { font-size: 10.5px; letter-spacing: 1.4px; color: #8e9aa9; font-weight: 700; text-transform: uppercase; }
.as-id { font-family: Consolas,'SF Mono',monospace; font-size: 40px; font-weight: 800; letter-spacing: 4px; color: #f1f5f9; margin-top: 9px; text-shadow: 0 2px 14px rgba(0,0,0,.4); }
.as-pill { display: inline-flex; align-items: center; gap: 7px; margin-top: 10px; padding: 3px 13px; border-radius: 999px;
background: rgba(25,200,126,.13); border: 1px solid rgba(25,200,126,.35); color: #25db8e; font-size: 12px; font-weight: 600; }
.as-pill::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: #25db8e; box-shadow: 0 0 7px #25db8e; }
.as-tag { font-size: 10.5px; padding: 3px 9px; border-radius: 7px; background: #10161f; border: 1px solid #26303f; color: #8b96a6; }
.as-field { margin-top: 10px; } .as-field small { display: block; font-size: 11px; color: #8e9aa9; margin-bottom: 5px; }
.as-hd { display: flex; align-items: center; justify-content: space-between; }
.as-run { display: grid; grid-template-columns: 2fr 1fr; gap: 12px; }
.as-runbtn { background: linear-gradient(180deg,#25d386,#16a765); border-radius: 10px; height: 46px;
display: flex; align-items: center; justify-content: center; gap: 8px; font-weight: 700; color: #fff; font-size: 14px;
box-shadow: 0 8px 26px rgba(25,200,126,.35); }
.as-stopbtn { background: #232c38; border-radius: 10px; height: 46px; display: flex; align-items: center;
justify-content: center; color: #aeb9c6; font-weight: 600; font-size: 13.5px; }
.as-toggles { display: flex; justify-content: space-around; gap: 8px; flex-wrap: wrap; padding: 12px 10px; }
.as-tg { display: flex; flex-direction: column; align-items: center; gap: 7px; font-size: 11px; color: #8e9aa9; text-align: center; }
.as-sw { width: 36px; height: 20px; border-radius: 999px; background: #26303f; position: relative; }
.as-sw::after { content: ""; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: #94a3b8; }
.as-sw.on { background: #19c87e; box-shadow: 0 0 12px rgba(25,200,126,.5); }
.as-sw.on::after { left: auto; right: 2px; background: #fff; }
.as-acct { font-size: 12.5px; color: #cbd5e1; } .as-acct .ok { color: #25db8e; }
.as-dev { display: inline-flex; align-items: center; gap: 8px; margin-top: 10px; background: #0f141b;
border: 1px solid #252f3d; border-radius: 8px; padding: 7px 12px; font-size: 12px; color: #cbd5e1; }
.as-dev i { width: 7px; height: 7px; border-radius: 50%; background: #25db8e; font-style: normal; }
@media (max-width: 760px) { .as-body{grid-template-columns:1fr} .as-side{display:none}
.as-grid{grid-template-columns:1fr} .as-tele{display:none} }
</style>
</head>
<body data-page="download">
<div id="siteHeader"></div>
<section class="section"><div class="wrap">
<div class="sec-head"><div class="eyebrow">Download</div><h2>Get NetDesk</h2><p>Portable, no installation required. Double-click and go.</p></div>
<div class="grid3" style="max-width:1060px;margin:0 auto">
<div class="feat" style="text-align:center">
<div class="ic" style="margin:0 auto 16px"><svg width="26" height="26" viewBox="0 0 24 24" fill="currentColor"><path d="M3 5.5L10 4.5v7H3zM11 4.3L21 3v8.5h-10zM3 12.5h7v7L3 18.5zM11 12.5h10V21l-10-1.3z"/></svg></div>
<h3>Windows 10 / 11 (x64)</h3>
<p>The native NetDesk app — host panel and remote viewer in one window. No browser.</p>
<a class="btn btn-primary btn-lg" style="margin-top:12px" href="/download/NetDesk-Setup.exe">⬇ Download Installer</a>
<p style="font-size:13px;color:var(--faint);margin-top:12px"><a href="/download/NetDesk-Portable.zip" style="color:var(--accent2)">or the portable .zip</a> — no install needed</p>
</div>
<div class="feat" style="text-align:center">
<div class="ic" style="margin:0 auto 16px"><svg width="26" height="26" viewBox="0 0 24 24" fill="currentColor"><path d="M17.6 9.48l1.84-3.18a.38.38 0 10-.66-.38l-1.86 3.22a11.3 11.3 0 00-9.84 0L5.22 5.92a.38.38 0 10-.66.38L6.4 9.48A10.8 10.8 0 001 18h22a10.8 10.8 0 00-5.4-8.52zM7 15.25a1.1 1.1 0 110-2.2 1.1 1.1 0 010 2.2zm10 0a1.1 1.1 0 110-2.2 1.1 1.1 0 010 2.2z"/></svg></div>
<h3>Android 7+ (phone, tablet, BlueStacks)</h3>
<p>Control your computers from your Android phone or tablet. Installs on devices and in BlueStacks.</p>
<a class="btn btn-primary btn-lg" style="margin-top:12px" href="/download/NetDesk-android.apk">⬇ Download APK</a>
<p style="font-size:13px;color:var(--faint);margin-top:12px">≈63 MB · all CPU types · Google Play soon</p>
</div>
<div class="feat" style="text-align:center">
<div class="ic" style="margin:0 auto 16px"><svg width="26" height="26" viewBox="0 0 24 24" fill="currentColor"><path d="M16 3c-1 .1-2.2.8-2.9 1.6-.6.7-1.2 1.9-1 3 1.1.1 2.3-.6 3-1.4.6-.8 1.1-1.9.9-3.2zM12 8c-1.6 0-3 .9-3.9 .9-.9 0-2.2-.9-3.6-.8-1.9 0-3.6 1.1-4.5 2.8-1.9 3.3-.5 8.2 1.4 10.9.9 1.3 2 2.8 3.4 2.7 1.4-.1 1.9-.9 3.5-.9s2.1.9 3.5.8c1.5 0 2.4-1.3 3.3-2.7.7-1 1-1.5 1.5-2.6-3.9-1.5-4.5-7-.6-9.1C18.5 8.7 15.6 8 12 8z"/></svg></div>
<h3>macOS (Apple Silicon M1–M5 &amp; Intel)</h3>
<p>Native build for Apple Silicon and Intel Macs. Control your Mac or connect from it.</p>
<a class="btn btn-ghost btn-lg" style="margin-top:12px" href="/contact?topic=mac">Join the macOS beta</a>
<p style="font-size:13px;color:var(--faint);margin-top:12px">Coming soon · notify me</p>
</div>
</div>
<div style="max-width:820px;margin:34px auto 0;text-align:center">
<p style="color:var(--muted)">No download needed on the viewer side — <a href="/app" style="color:var(--accent2)">open the web client</a> in any browser.</p>
<p style="color:var(--faint);font-size:14px;margin-top:10px">Self-hosting your own server? See the <a href="/portal" style="color:var(--accent2)">Self-Hosting Console</a> and the <a href="/git/akronlogic/netdesk" style="color:var(--accent2)">deployment guide</a>.</p>
</div>
</div></section>
<!-- APP SHOWCASE: the exact NetDesk desktop app you install -->
<section class="section" style="padding-top:0"><div class="wrap">
<div class="sec-head"><div class="eyebrow">One unified app</div><h2>Host &amp; remote control — together</h2><p>This is NetDesk after you install it. The home screen is your host panel; type a Partner ID and the same window becomes the remote viewer. No separate apps, no browser required.</p></div>
<div class="appshot" role="img" aria-label="The NetDesk desktop app">
<div class="as-tbar">
<span class="as-tl"><span class="as-logo"><svg width="11" height="11" viewBox="0 0 24 24" fill="none"><path d="M12 3.2L3.2 12.6H20.8L12 3.2Z" fill="#fff"/><path d="M8.7 15.1H15.3L16.4 20.5H7.6L8.7 15.1Z" fill="#fff"/></svg></span><span class="as-title">NetDesk</span>
<span class="as-sub">— Enterprise Remote Desktop &amp; Unattended Access</span></span>
<span class="as-tr"><span class="as-tele">● Relay: <b>netdesk.space</b> · <b>24 ms</b> | TLS 1.3 · AES-256-GCM</span>
<span class="as-win"><span>–</span><span>▢</span><span>✕</span></span></span>
</div>
<div class="as-body">
<div class="as-side">
<div class="as-brand"><span class="lg"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><path d="M12 3.2L3.2 12.6C2.8 13 3.1 13.7 3.7 13.7H20.3C20.9 13.7 21.2 13 20.8 12.6L12 3.2Z" fill="#fff"/><path d="M8.7 15.1H15.3L16.4 20.3C16.5 20.7 16.2 21 15.8 21H8.2C7.8 21 7.5 20.7 7.6 20.3L8.7 15.1Z" fill="#fff"/></svg></span><span><b>NetDesk</b> <i>v1.5.0</i><br><i>Zero-Trust Remote Agent</i></span></div>
<div class="as-navlbl">WORKSPACE</div>
<div class="as-nav">
<span class="as-ni act">Remote Control <span class="as-bdg g">Host</span></span>
<span class="as-ni">My Computers <span class="as-bdg">3</span></span>
<span class="as-ni">Security &amp; 2FA <span class="as-bdg g">2FA On</span></span>
<span class="as-ni">Session Logs <span class="as-bdg">150</span></span>
</div>
<div class="as-sfoot">Local Endpoint <b style="float:right">DEVPC</b><br>
Daemon Status <b class="on" style="float:right">● Online</b></div>
</div>
<div class="as-main">
<div class="as-card as-partner">
<span class="as-plbl">CONNECT TO PARTNER:</span>
<span class="as-input">Enter remote Partner ID (e.g. 842 190 441)</span>
<span class="as-gbtn">Connect →</span>
</div>
<div class="as-grid">
<div class="as-col">
<div class="as-card">
<div class="as-hd"><span class="as-lbl">This Computer's ID</span><span class="as-tag">Copy ID</span></div>
<div class="as-id">842 190 441</div>
<div class="as-hd"><span class="as-pill">Online</span><span class="as-tag">🔒 E2EE Ready</span></div>
</div>
<div class="as-card">
<div class="as-hd"><span class="as-lbl">Unattended Password</span><span class="as-tag">PBKDF2 · 200k</span></div>
<div class="as-field"><span class="as-input">••••••••••&nbsp;&nbsp;👁&nbsp;&nbsp;⟳</span></div>
<div style="margin-top:9px;font-size:11.5px;color:#64748b">● Brute-force throttle: <b style="color:#cbd5e1">0.4s / attempt</b></div>
</div>
</div>
<div class="as-col">
<div class="as-card">
<div class="as-hd"><span class="as-lbl">Connection</span><span class="as-tag" style="color:#25db8e">Ping Relay (24 ms)</span></div>
<div class="as-field"><small>Server Address</small><span class="as-input">wss://netdesk.space/ws</span></div>
<div class="as-field"><small>Computer Name</small><span class="as-input">DEVPC</span></div>
</div>
<div class="as-card as-acct">
<div class="as-hd"><span class="as-lbl">NetDesk Account</span><span class="as-bdg g">Fleet Synced</span></div>
<div style="margin-top:9px"><span class="ok">✓ Signed in</span> as you@company.com</div>
<span class="as-dev">DEVPC <i></i> Online</span>
</div>
</div>
</div>
<div class="as-run">
<span class="as-runbtn">⏻ Service Running</span>
<span class="as-stopbtn">■ Stop</span>
</div>
<div class="as-card as-toggles">
<span class="as-tg"><span class="as-sw on"></span>Service Installed</span>
<span class="as-tg"><span class="as-sw on"></span>Start with Windows</span>
<span class="as-tg"><span class="as-sw"></span>Privacy Mode</span>
<span class="as-tg"><span class="as-sw"></span>Lock on disconnect</span>
<span class="as-tg"><span class="as-sw on"></span>Close to tray</span>
</div>
</div>
</div>
</div>
</div></section>
<div id="siteFooter"></div>
<script src="site.js?v=3"></script>
</body>
</html>