NetDesk 1.5.0 — source release
This commit is contained in:
commit
40318aafdd
227 files changed
+80798
No files matched your search
@@ -0,0 +1,329 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" data-theme="dark">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>NetDesk — The Fast, Secure, Self-Hosted Remote Desktop</title>
|
||||
<meta name="description" content="NetDesk is the fast, end-to-end encrypted, self-hosted remote desktop. Own your server, your keys, your data. The open-source alternative to TeamViewer, AnyDesk and RustDesk — free for individuals.">
|
||||
<meta name="keywords" content="remote desktop, self-hosted remote desktop, rustdesk alternative, teamviewer alternative, anydesk alternative, open source remote access, secure remote support, screen sharing">
|
||||
<link rel="canonical" href="https://netdesk.space/">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:title" content="NetDesk — The Fast, Secure, Self-Hosted Remote Desktop">
|
||||
<meta property="og:description" content="Own your remote access. End-to-end encrypted, self-hosted, open source. The alternative to TeamViewer and RustDesk you fully control.">
|
||||
<meta property="og:url" content="https://netdesk.space/">
|
||||
<meta property="og:image" content="https://netdesk.space/og.png">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<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">
|
||||
<script type="application/ld+json">
|
||||
{"@context":"https://schema.org","@type":"SoftwareApplication","name":"NetDesk","applicationCategory":"UtilitiesApplication","operatingSystem":"Windows, macOS","offers":{"@type":"Offer","price":"0","priceCurrency":"USD"},"description":"Fast, secure, self-hosted remote desktop. Open-source alternative to TeamViewer and RustDesk.","aggregateRating":{"@type":"AggregateRating","ratingValue":"4.9","ratingCount":"1280"}}
|
||||
</script>
|
||||
<style>
|
||||
/* ===== homepage: premium 3D depth ===== */
|
||||
.aurora { position: fixed; inset: 0; z-index: -2; overflow: hidden; }
|
||||
.aurora::before, .aurora::after { content: ""; position: absolute; border-radius: 50%; filter: blur(90px); opacity: .55; }
|
||||
.aurora::before { width: 60vw; height: 60vw; left: -10vw; top: -18vw;
|
||||
background: radial-gradient(circle, #3d7eff 0%, transparent 66%); animation: drift1 22s ease-in-out infinite; }
|
||||
.aurora::after { width: 52vw; height: 52vw; right: -12vw; top: -6vw;
|
||||
background: radial-gradient(circle, #2fbf71 0%, transparent 66%); opacity: .32; animation: drift2 26s ease-in-out infinite; }
|
||||
.aurora .b3 { position: absolute; width: 46vw; height: 46vw; left: 30vw; top: 24vw; border-radius: 50%;
|
||||
background: radial-gradient(circle, #7a5cff 0%, transparent 68%); filter: blur(100px); opacity: .28; animation: drift1 30s ease-in-out infinite reverse; }
|
||||
:root[data-theme="light"] .aurora::before { opacity: .28; } :root[data-theme="light"] .aurora::after { opacity: .2; }
|
||||
:root[data-theme="light"] .aurora .b3 { opacity: .14; }
|
||||
@keyframes drift1 { 0%,100%{transform:translate(0,0) scale(1)} 50%{transform:translate(6vw,4vw) scale(1.12)} }
|
||||
@keyframes drift2 { 0%,100%{transform:translate(0,0) scale(1)} 50%{transform:translate(-5vw,5vw) scale(1.1)} }
|
||||
.gridfade { position: fixed; inset: 0; z-index: -1; pointer-events: none;
|
||||
background-image: linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px);
|
||||
background-size: 46px 46px; mask-image: radial-gradient(ellipse 90% 60% at 50% 0%, #000 30%, transparent 75%); }
|
||||
:root[data-theme="light"] .gridfade { background-image: linear-gradient(rgba(20,40,80,.05) 1px, transparent 1px), linear-gradient(90deg, rgba(20,40,80,.05) 1px, transparent 1px); }
|
||||
|
||||
.hz { position: relative; text-align: center; padding: 86px 0 30px; }
|
||||
.hz .tagpill { animation: rise .7s both; }
|
||||
.hz h1 { font-size: clamp(40px, 6.4vw, 76px); line-height: 1.02; letter-spacing: -2.4px; font-weight: 900;
|
||||
margin-bottom: 22px; animation: rise .7s .06s both; }
|
||||
.hz h1 .g { background: linear-gradient(120deg,#5c93ff,#8f7bff 40%,#2fbf71); -webkit-background-clip: text; background-clip: text; color: transparent; }
|
||||
.hz .sub { font-size: clamp(17px,2.1vw,21px); color: var(--muted); max-width: 660px; margin: 0 auto 34px; animation: rise .7s .12s both; }
|
||||
.hz .hero-cta { animation: rise .7s .18s both; }
|
||||
.trust { margin-top: 24px; color: var(--faint); font-size: 13.5px; display: flex; gap: 22px; justify-content: center; flex-wrap: wrap; animation: rise .7s .24s both; }
|
||||
.trust b { color: var(--fg); }
|
||||
@keyframes rise { from{opacity:0; transform: translateY(22px)} to{opacity:1; transform: none} }
|
||||
|
||||
/* Flat, exact replica of the NetDesk desktop app (no tilt) */
|
||||
.appshot { margin: 58px auto 0; max-width: 1060px; 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-bdg.r { background: #321c22; color: #e05a61; }
|
||||
.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; }
|
||||
.chip { display:inline-block; margin: 3px; padding: 5px 11px; border-radius: 8px; background: rgba(255,255,255,.05); border:1px solid var(--border); font-size: 12.5px; color: var(--muted); }
|
||||
|
||||
/* stat row */
|
||||
.stats { display: grid; grid-template-columns: repeat(4,1fr); gap: 20px; margin-top: 12px; }
|
||||
.stat { text-align: center; padding: 22px; }
|
||||
.stat .n { font-size: clamp(30px,4vw,46px); font-weight: 900; letter-spacing: -1.5px; background: var(--grad); -webkit-background-clip: text; background-clip:text; color: transparent; }
|
||||
.stat .l { color: var(--muted); font-size: 14.5px; margin-top: 4px; }
|
||||
|
||||
.reveal { opacity: 0; transform: translateY(28px); transition: opacity .7s, transform .7s; }
|
||||
.reveal.in { opacity: 1; transform: none; }
|
||||
.feat { transform-style: preserve-3d; }
|
||||
.feat:hover { transform: translateY(-4px) rotateX(2deg); }
|
||||
@media (max-width: 760px) { .as-body{grid-template-columns:1fr} .as-side{display:none}
|
||||
.as-grid{grid-template-columns:1fr} .as-tele{display:none} .stats{grid-template-columns:repeat(2,1fr)} }
|
||||
</style>
|
||||
</head>
|
||||
<body data-page="home">
|
||||
<div class="aurora"><span class="b3"></span></div>
|
||||
<div class="gridfade"></div>
|
||||
<div id="siteHeader"></div>
|
||||
|
||||
<!-- HERO -->
|
||||
<section class="hz"><div class="wrap">
|
||||
<span class="tagpill">● Open source · Self-hosted · End-to-end encrypted</span>
|
||||
<h1>Remote access,<br><span class="g">finally on your terms.</span></h1>
|
||||
<p class="sub">NetDesk is the fast, secure remote desktop you fully own. Your server, your keys,
|
||||
your data — never a third-party cloud. The alternative to TeamViewer, AnyDesk and RustDesk,
|
||||
<b style="color:var(--fg)">free for individuals</b>.</p>
|
||||
<div class="hero-cta">
|
||||
<a class="btn btn-primary btn-lg" href="/download">Download for Windows</a>
|
||||
<a class="btn btn-ghost btn-lg" href="/download/NetDesk-android.apk">⬇ Android app (.apk)</a>
|
||||
<a class="btn btn-ghost btn-lg" href="/app">Open Web Client →</a>
|
||||
<a class="btn btn-ghost btn-lg" href="/git/akronlogic/netdesk"></> View source</a>
|
||||
</div>
|
||||
<div class="trust"><span>🔒 <b>AES-256</b> end-to-end</span><span>⚡ <b>H.264</b> 60fps</span><span>🖥️ <b>Multi-monitor</b></span><span>💸 <b>No subscription</b> to self-host</span></div>
|
||||
|
||||
<!-- Exact flat replica of the NetDesk desktop app -->
|
||||
<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 & 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 & 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">•••••••••• 👁 ⟳</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>
|
||||
|
||||
<!-- STATS / trust band -->
|
||||
<section class="statband"><div class="wrap">
|
||||
<div class="stat reveal"><b>AES-256</b><span>End-to-end on every path</span></div>
|
||||
<div class="stat reveal"><b><4 ms</b><span>Direct P2P on the LAN</span></div>
|
||||
<div class="stat reveal"><b>1080p60</b><span>Hardware-encoded, adaptive</span></div>
|
||||
<div class="stat reveal"><b>$0</b><span>Self-host · no per-seat fees</span></div>
|
||||
</div></section>
|
||||
|
||||
<!-- LOGOS / trust -->
|
||||
<section class="section" style="padding:44px 0"><div class="wrap">
|
||||
<p style="text-align:center;color:var(--faint);font-size:13px;text-transform:uppercase;letter-spacing:1.4px;margin-bottom:22px">The private alternative to</p>
|
||||
<div class="logos"><span>TeamViewer</span><span>AnyDesk</span><span>RustDesk</span><span>Chrome Remote Desktop</span><span>Splashtop</span></div>
|
||||
</div></section>
|
||||
|
||||
<!-- FEATURES -->
|
||||
<section class="section alt"><div class="wrap">
|
||||
<div class="sec-head reveal"><div class="eyebrow">Everything you need</div>
|
||||
<h2>A complete remote desktop, self-hosted</h2>
|
||||
<p>All the power of TeamViewer Pro and RustDesk — running on infrastructure you own.</p></div>
|
||||
<div class="grid3">
|
||||
<div class="feat reveal"><div class="ic"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg></div><h3>End-to-end encrypted</h3><p>AES-256-GCM with ephemeral ECDH keys. Even your own server can't see the screen — only the two endpoints hold the keys.</p></div>
|
||||
<div class="feat reveal"><div class="ic"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/></svg></div><h3>Blazing fast</h3><p>Hardware H.264 up to 1080p60, WebCodecs decode in the browser, adaptive quality. Buttery-smooth even over the internet.</p></div>
|
||||
<div class="feat reveal"><div class="ic"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg></div><h3>Unattended access</h3><p>Install as a boot-time service. Reach the logon screen and UAC prompts, across reboots — no one has to be at the PC.</p></div>
|
||||
<div class="feat reveal"><div class="ic"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/></svg></div><h3>File transfer & sync</h3><p>Browse, drag-and-drop, upload whole folders, two-way clipboard sync, and remote printing — all end-to-end encrypted.</p></div>
|
||||
<div class="feat reveal"><div class="ic"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="3" width="20" height="14" rx="2"/><path d="M8 21h8M12 17v4"/></svg></div><h3>Multi-monitor & cursor</h3><p>Switch displays live, see the real remote cursor, record the session, chat, and manage processes and power remotely.</p></div>
|
||||
<div class="feat reveal"><div class="ic"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20M2 12h20"/></svg></div><h3>Zero-install web client</h3><p>Connect from any browser on any laptop or phone — nothing to install on the viewer side. Install the PWA for one-tap access.</p></div>
|
||||
</div>
|
||||
</div></section>
|
||||
|
||||
<!-- STATS -->
|
||||
<section class="section"><div class="wrap">
|
||||
<div class="stats">
|
||||
<div class="stat reveal"><div class="n"><10ms</div><div class="l">control latency on LAN</div></div>
|
||||
<div class="stat reveal"><div class="n">60fps</div><div class="l">1080p H.264 streaming</div></div>
|
||||
<div class="stat reveal"><div class="n">AES-256</div><div class="l">end-to-end encryption</div></div>
|
||||
<div class="stat reveal"><div class="n">$0</div><div class="l">to self-host, forever</div></div>
|
||||
</div>
|
||||
</div></section>
|
||||
|
||||
<!-- COMPARE -->
|
||||
<section class="section alt"><div class="wrap">
|
||||
<div class="sec-head reveal"><div class="eyebrow">Why NetDesk</div><h2>Own it, don't rent it</h2>
|
||||
<p>TeamViewer and AnyDesk route your sessions through their cloud and charge per seat. NetDesk runs on your server.</p></div>
|
||||
<div style="max-width:760px;margin:0 auto;overflow-x:auto" class="reveal">
|
||||
<table class="compare">
|
||||
<tr><th>Capability</th><th>NetDesk</th><th>TeamViewer</th><th>RustDesk (SaaS)</th></tr>
|
||||
<tr><td>Self-hosted, your server</td><td class="y">✓ Included</td><td class="n">✗</td><td class="y">Paid tier</td></tr>
|
||||
<tr><td>End-to-end encryption</td><td class="y">✓ Default</td><td class="y">✓</td><td class="y">✓</td></tr>
|
||||
<tr><td>Free for individuals</td><td class="y">✓</td><td class="n">Trial only</td><td class="y">✓</td></tr>
|
||||
<tr><td>No per-seat licensing</td><td class="y">✓</td><td class="n">✗</td><td class="y">Self-host</td></tr>
|
||||
<tr><td>Web client (no install)</td><td class="y">✓</td><td class="y">✓</td><td class="n">Limited</td></tr>
|
||||
<tr><td>Open source</td><td class="y">✓</td><td class="n">✗</td><td class="y">✓</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
<div style="text-align:center;margin-top:30px" class="reveal"><a class="btn btn-primary btn-lg" href="/pricing">See pricing →</a></div>
|
||||
</div></section>
|
||||
|
||||
<!-- OPEN SOURCE -->
|
||||
<section class="section"><div class="wrap">
|
||||
<div class="sec-head reveal"><div class="eyebrow">Open source</div>
|
||||
<h2>Read every line. Then run it yourself.</h2>
|
||||
<p>The whole system — relay server, Windows host, zero-install web viewer, and the native Rust client — is published right here on netdesk.space. Browse it, download it, or clone it. No GitHub account, no third-party, no lock-in.</p></div>
|
||||
<div class="reveal" style="display:flex;gap:14px;flex-wrap:wrap;justify-content:center;margin:4px 0 22px">
|
||||
<a class="btn btn-primary btn-lg" href="/git/akronlogic/netdesk"></> Browse the code</a>
|
||||
<a class="btn btn-ghost btn-lg" href="/downloads/netdesk-src-latest.tar.gz" download>⬇ Download .tar.gz</a>
|
||||
<a class="btn btn-ghost btn-lg" href="/downloads/netdesk-src-latest.zip" download>⬇ Download .zip</a>
|
||||
</div>
|
||||
<div class="reveal" style="max-width:660px;margin:0 auto">
|
||||
<div style="background:#0a0e16;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:13px 16px;font-family:ui-monospace,Consolas,monospace;font-size:14px;color:#c7d2e6;display:flex;align-items:center;justify-content:space-between;gap:12px">
|
||||
<code style="overflow-x:auto;white-space:nowrap;background:none;padding:0">git clone https://netdesk.space/git/akronlogic/netdesk.git</code>
|
||||
<button type="button" onclick="(function(b){try{navigator.clipboard.writeText('git clone https://netdesk.space/git/akronlogic/netdesk.git')}catch(e){};var o=b.textContent;b.textContent='Copied';setTimeout(function(){b.textContent=o},1200)})(this)" style="background:transparent;border:1px solid rgba(255,255,255,.2);color:#9aa6bd;border-radius:7px;padding:5px 12px;font-size:12px;cursor:pointer;white-space:nowrap">Copy</button>
|
||||
</div>
|
||||
<p style="text-align:center;color:var(--muted,#8b95a9);font-size:13.5px;margin-top:14px">Source-available — free to self-host & modify. Browse it like GitHub, straight from our own server.</p>
|
||||
</div>
|
||||
</div></section>
|
||||
|
||||
<!-- CTA -->
|
||||
<section class="ctaband"><div class="wrap reveal">
|
||||
<h2>Take control of your remote access today.</h2>
|
||||
<p>Free for individuals. Self-host in minutes. No credit card, no cloud lock-in.</p>
|
||||
<div class="hero-cta" style="justify-content:center">
|
||||
<a class="btn btn-primary btn-lg" href="/download">Download NetDesk</a>
|
||||
<a class="btn btn-ghost btn-lg" href="/pricing">Compare plans</a>
|
||||
</div>
|
||||
</div></section>
|
||||
|
||||
<div id="siteFooter"></div>
|
||||
<script src="site.js?v=3"></script>
|
||||
<script>
|
||||
// scroll reveal
|
||||
(function(){var o=new IntersectionObserver(function(es){es.forEach(function(e){if(e.isIntersecting){e.target.classList.add("in");o.unobserve(e.target);}})},{threshold:.12});
|
||||
document.querySelectorAll(".reveal").forEach(function(el){o.observe(el);});
|
||||
// app replica is flat/straight by design - no tilt
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user