Files
peardock-website/download.html
T
2026-07-11 19:01:46 -04:00

179 lines
10 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>Download &amp; install · PearDock</title>
<meta name="description" content="Install PearDock: peer-to-peer Docker management with no open ports or VPN. One-line installer or rolling binaries for Linux, macOS, and Windows." />
<meta name="theme-color" content="#2dd4bf" />
<link rel="icon" href="/assets/favicons/favicon.ico" sizes="any" />
<link rel="apple-touch-icon" href="/assets/favicons/apple-touch-icon.png" />
<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&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="/src/styles/global.css" />
<link rel="stylesheet" href="/src/styles/docs.css" />
</head>
<body>
<div class="bg-mesh" aria-hidden="true"></div>
<div data-nav data-prefix=""></div>
<section class="download-hero">
<div class="container">
<div class="badge mb-4">rolling · 64-bit only</div>
<h1>Download &amp; install</h1>
<p class="lead">
Remote Docker without opening ports, exposing the Engine, or maintaining a VPN.
The recommended path is the interactive <strong>install.sh</strong> script.
It detects OS and arch, installs a Linux <strong>systemd</strong> server (with the docker group) or a desktop client, and pulls artifacts from the <strong>rolling</strong> release.
</p>
<div class="flex flex-wrap gap-3" style="justify-content: center;">
<a class="btn btn-primary btn-lg" href="#installer">Install with curl</a>
<a class="btn btn-secondary btn-lg" href="/releases">Browse releases</a>
<a class="btn btn-ghost btn-lg" href="https://git.ssh.surf/snxraven/peardock/releases" target="_blank" rel="noopener">Gitea</a>
</div>
</div>
</section>
<div class="container install-wide" style="margin: 0 auto 3rem;" id="installer">
<div class="card">
<h3 class="mb-4">One-line installer (recommended)</h3>
<p class="text-muted mb-4" style="font-size: 0.95rem;">
Interactive by default. Asks <strong>server</strong> vs <strong>client</strong> (or both).
Server path is Linux-only for systemd; client works on Linux and macOS.
Windows: download a <code>.tar.gz</code> from the rolling release.
</p>
<pre><code>curl -fsSL https://install.peardock.boats | bash</code></pre>
<pre><code># Non-interactive
curl -fsSL https://install.peardock.boats | bash -s -- --server --yes
curl -fsSL https://install.peardock.boats | bash -s -- --client --yes
curl -fsSL https://install.peardock.boats | bash -s -- --both --yes</code></pre>
<div class="table-wrap mt-4">
<table>
<thead>
<tr><th>Flag / env</th><th>Meaning</th></tr>
</thead>
<tbody>
<tr><td><code>--server</code> / <code>-s</code></td><td>Install peardock-server (Linux → <code>/opt/peardock</code> + systemd)</td></tr>
<tr><td><code>--client</code> / <code>-c</code></td><td>Install desktop client</td></tr>
<tr><td><code>--both</code> / <code>-b</code></td><td>Install both</td></tr>
<tr><td><code>--yes</code> / <code>-y</code></td><td>Non-interactive defaults</td></tr>
<tr><td><code>--tag rolling</code></td><td>Release tag (default: <code>rolling</code>)</td></tr>
<tr><td><code>PEARDOCK_SERVER_DIR</code></td><td>Server install path (default <code>/opt/peardock</code>)</td></tr>
<tr><td><code>PEARDOCK_VERSION</code></td><td>Pin asset version (default: auto from release)</td></tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="container install-wide" style="margin: 0 auto 3rem;">
<div class="card">
<h3 class="mb-4">What the installer does</h3>
<h4 class="mt-4">Server (Linux)</h4>
<ul class="text-muted" style="font-size: 0.95rem; line-height: 1.7;">
<li>Downloads <code>peardock-server-VERSION-linux-ARCH.tar.gz</code> from the rolling release</li>
<li>Installs binary to <code>/opt/peardock/peardock-server</code></li>
<li>Creates system user <code>peardock</code> and adds it to the <strong>docker</strong> group (for <code>/var/run/docker.sock</code>)</li>
<li>Writes <code>/etc/systemd/system/peardock.service</code> and optionally enables it</li>
<li>State / seed in <code>/opt/peardock/.env</code> (mode 600)</li>
</ul>
<pre><code>sudo systemctl status peardock
sudo journalctl -u peardock -f
# Public key is printed on first start. Share it with clients.</code></pre>
<h4 class="mt-4">Client</h4>
<ul class="text-muted" style="font-size: 0.95rem; line-height: 1.7;">
<li>Downloads <code>peardock-client-VERSION-HOST.tar.gz</code></li>
<li><strong>macOS:</strong> <code>peardock.app</code> under <code>~/Applications</code> (clears quarantine via <code>xattr</code>)</li>
<li><strong>Linux:</strong> binary under <code>~/.local/share/peardock</code>, symlink in <code>~/.local/bin</code>, desktop entry</li>
</ul>
</div>
</div>
<div class="container">
<div class="download-grid">
<div class="download-card">
<h3>🖥 peardock-server</h3>
<p>Bare standalone HyperDHT control plane. Run on the host with Docker. Identity from <code>SERVER_SEED</code> / <code>.env</code>.</p>
<p class="text-muted" style="font-size: 0.85rem;">Asset pattern: <code>peardock-server-VERSION-HOST.tar.gz</code></p>
<div class="platform-list">
<div class="platform-row"><span>linux-x64</span><span class="badge-muted badge">.tar.gz</span></div>
<div class="platform-row"><span>linux-arm64</span><span class="badge-muted badge">.tar.gz</span></div>
<div class="platform-row"><span>darwin-x64</span><span class="badge-muted badge">.tar.gz</span></div>
<div class="platform-row"><span>darwin-arm64</span><span class="badge-muted badge">.tar.gz</span></div>
<div class="platform-row"><span>win32-x64</span><span class="badge-muted badge">.tar.gz</span></div>
<div class="platform-row"><span>win32-arm64</span><span class="badge-muted badge">.tar.gz</span></div>
</div>
</div>
<div class="download-card">
<h3>⌘ peardock-client</h3>
<p>Desktop GUI (Electron). Connect with the server public key. Multi-peer fleet, tunnels, terminals, deploy wizard.</p>
<p class="text-muted" style="font-size: 0.85rem;">Asset pattern: <code>peardock-client-VERSION-HOST.tar.gz</code></p>
<div class="platform-list">
<div class="platform-row"><span>linux-x64</span><span class="badge-muted badge">.tar.gz</span></div>
<div class="platform-row"><span>linux-arm64</span><span class="badge-muted badge">.tar.gz</span></div>
<div class="platform-row"><span>darwin-x64</span><span class="badge-muted badge">.app in tar</span></div>
<div class="platform-row"><span>darwin-arm64</span><span class="badge-muted badge">.app in tar</span></div>
<div class="platform-row"><span>win32-x64</span><span class="badge-muted badge">.tar.gz</span></div>
<div class="platform-row"><span>win32-arm64</span><span class="badge-muted badge">.tar.gz</span></div>
</div>
</div>
</div>
<div class="card" style="max-width: 900px; margin: 0 auto 4rem;">
<h3 class="mb-4">Manual download</h3>
<p class="text-muted mb-4" style="font-size: 0.95rem;">
Browse all assets on the
<a href="https://git.ssh.surf/snxraven/peardock/releases/tag/rolling" target="_blank" rel="noopener">rolling</a>
release. Each tarball has a sibling <code>.sha256</code> checksum.
</p>
<pre><code># Example: Linux x64 server
curl -fLO https://git.ssh.surf/snxraven/peardock/releases/download/rolling/peardock-server-2.0.1-linux-x64.tar.gz
curl -fLO https://git.ssh.surf/snxraven/peardock/releases/download/rolling/peardock-server-2.0.1-linux-x64.tar.gz.sha256
sha256sum -c peardock-server-*.sha256
tar -xzf peardock-server-*.tar.gz
# → peardock-server binary</code></pre>
</div>
<div class="card" style="max-width: 900px; margin: 0 auto 4rem;">
<h3 class="mb-4">Build from source</h3>
<pre><code>git clone https://git.ssh.surf/snxraven/peardock.git
cd peardock
npm ci
npm run server # control plane (needs Docker socket)
npm run start:client # Electron GUI
# or
npm run make # all 64-bit server + client hosts → out/</code></pre>
<p class="mt-4 text-muted" style="font-size: 0.92rem;">
Node.js ≥ 20 required. See <a href="docs/quickstart.html">Quick start</a> and
<a href="docs/operator.html">Operator guide</a> for production.
</p>
</div>
<div class="callout warn" style="max-width: 900px; margin: 0 auto 4rem;">
<div class="callout-icon">!</div>
<div class="callout-body">
<strong>macOS Gatekeeper.</strong> Darwin clients from Linux CI are ad-hoc signed.
If the app is blocked: right-click → Open, or
<code>xattr -cr ~/Applications/peardock.app</code>.
Developer ID re-sign: <code>npm run sign:macos -- out/peardock-darwin-arm64/peardock.app</code>
</div>
</div>
<div class="callout info" style="max-width: 900px; margin: 0 auto 4rem;">
<div class="callout-icon">i</div>
<div class="callout-body">
<strong>Docker access on the server.</strong> The service user <code>peardock</code> must reach
<code>/var/run/docker.sock</code> (usually group <code>docker</code>, mode 660).
The installer adds <code>peardock</code> to that group. If stats/start fail with permission errors:
<code>sudo usermod -aG docker peardock && sudo systemctl restart peardock</code>
(and restart Docker if the group was just created).
</div>
</div>
</div>
<div data-footer data-prefix=""></div>
<script type="module" src="/src/js/site.js"></script>
</body>
</html>