Quick start, operator, security, FAQ, download, home, and learn pages now point operators at /opt/peardock/.env for public key and seed, and document viewer / admin / pd1. invite roles.
297 lines
14 KiB
HTML
297 lines
14 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>Quick start · PearDock Docs</title>
|
|
<meta name="description" content="Install PearDock with install.sh, run the HyperDHT server, and connect the desktop client." />
|
|
<meta name="keywords" content="PearDock quick start, install, connect, public key" />
|
|
<meta name="author" content="HoneyPeer, LLC" />
|
|
<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1" />
|
|
<meta name="googlebot" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1" />
|
|
<meta name="theme-color" content="#2dd4bf" />
|
|
<meta name="color-scheme" content="dark light" />
|
|
<meta name="application-name" content="PearDock" />
|
|
<meta name="apple-mobile-web-app-title" content="PearDock" />
|
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
<meta name="mobile-web-app-capable" content="yes" />
|
|
<meta name="msapplication-TileColor" content="#2dd4bf" />
|
|
<meta name="msapplication-config" content="/assets/favicons/browserconfig.xml" />
|
|
<meta name="format-detection" content="telephone=no" />
|
|
<link rel="canonical" href="https://peardock.boats/docs/quickstart" />
|
|
<link rel="alternate" hreflang="en" href="https://peardock.boats/docs/quickstart" />
|
|
<link rel="alternate" hreflang="x-default" href="https://peardock.boats/docs/quickstart" />
|
|
|
|
<!-- Open Graph -->
|
|
<meta property="og:type" content="article" />
|
|
<meta property="og:site_name" content="PearDock" />
|
|
<meta property="og:locale" content="en_US" />
|
|
<meta property="og:url" content="https://peardock.boats/docs/quickstart" />
|
|
<meta property="og:title" content="Quick start · PearDock Docs" />
|
|
<meta property="og:description" content="Install PearDock with install.sh, run the HyperDHT server, and connect the desktop client." />
|
|
<meta property="og:image" content="https://peardock.boats/assets/brand/og-image.png" />
|
|
<meta property="og:image:secure_url" content="https://peardock.boats/assets/brand/og-image.png" />
|
|
<meta property="og:image:type" content="image/png" />
|
|
<meta property="og:image:width" content="1200" />
|
|
<meta property="og:image:height" content="630" />
|
|
<meta property="og:image:alt" content="PearDock: decentralized Docker management on HyperDHT" />
|
|
|
|
<!-- Twitter / X -->
|
|
<meta name="twitter:card" content="summary_large_image" />
|
|
<meta name="twitter:title" content="Quick start · PearDock Docs" />
|
|
<meta name="twitter:description" content="Install PearDock with install.sh, run the HyperDHT server, and connect the desktop client." />
|
|
<meta name="twitter:image" content="https://peardock.boats/assets/brand/twitter-card.png" />
|
|
<meta name="twitter:image:alt" content="PearDock: decentralized Docker management" />
|
|
|
|
<!-- Icons & PWA -->
|
|
<link rel="icon" href="/assets/favicons/favicon.ico" sizes="any" />
|
|
<link rel="icon" type="image/png" sizes="32x32" href="/assets/favicons/favicon-32x32.png" />
|
|
<link rel="icon" type="image/png" sizes="16x16" href="/assets/favicons/favicon-16x16.png" />
|
|
<link rel="icon" type="image/png" sizes="48x48" href="/assets/favicons/favicon-48x48.png" />
|
|
<link rel="apple-touch-icon" sizes="180x180" href="/assets/favicons/apple-touch-icon.png" />
|
|
<link rel="manifest" href="/assets/favicons/site.webmanifest" />
|
|
<link rel="mask-icon" href="/assets/logo/peardock-wordmark.svg" color="#2dd4bf" />
|
|
|
|
<!-- Article -->
|
|
<meta property="article:section" content="Documentation" />
|
|
<meta property="article:author" content="HoneyPeer, LLC" />
|
|
<meta property="article:publisher" content="HoneyPeer, LLC" />
|
|
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": [
|
|
"WebPage",
|
|
"TechArticle"
|
|
],
|
|
"name": "Quick start \u00b7 PearDock Docs",
|
|
"description": "Install PearDock with install.sh, run the HyperDHT server, and connect the desktop client.",
|
|
"url": "https://peardock.boats/docs/quickstart",
|
|
"isPartOf": {
|
|
"@type": "WebSite",
|
|
"name": "PearDock",
|
|
"url": "https://peardock.boats"
|
|
},
|
|
"publisher": {
|
|
"@type": "Organization",
|
|
"name": "HoneyPeer, LLC",
|
|
"url": "https://peardock.boats"
|
|
},
|
|
"inLanguage": "en-US",
|
|
"primaryImageOfPage": {
|
|
"@type": "ImageObject",
|
|
"url": "https://peardock.boats/assets/brand/og-image.png",
|
|
"width": 1200,
|
|
"height": 630
|
|
},
|
|
"headline": "Quick start \u00b7 PearDock Docs"
|
|
}
|
|
</script>
|
|
|
|
<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>
|
|
|
|
<div class="docs-layout">
|
|
<aside class="docs-sidebar" data-docs-nav data-prefix="../"></aside>
|
|
<button type="button" class="docs-sidebar-toggle" aria-label="Docs menu">☰</button>
|
|
|
|
<article class="docs-main">
|
|
<h1>Quick start</h1>
|
|
<p class="docs-lead">
|
|
Fastest path: the one-line installer (rolling binaries).
|
|
After install you connect with a <strong>public key</strong>. No ports to open, no VPN, no public Docker API.
|
|
Alternative: run from source with Node.js ≥ 20.
|
|
</p>
|
|
|
|
<nav class="toc">
|
|
<strong>On this page</strong>
|
|
<ol>
|
|
<li><a href="#installer">One-line installer</a></li>
|
|
<li><a href="#after-server">After server install</a></li>
|
|
<li><a href="#after-client">After client install</a></li>
|
|
<li><a href="#connect">Connect</a></li>
|
|
<li><a href="#source">From source</a></li>
|
|
<li><a href="#binaries">Build binaries</a></li>
|
|
</ol>
|
|
</nav>
|
|
|
|
<h2 id="installer">1. One-line installer (recommended)</h2>
|
|
<p>
|
|
Detects OS/arch, downloads matching assets from the
|
|
<a href="https://git.ssh.surf/snxraven/peardock/releases/tag/rolling" target="_blank" rel="noopener">rolling</a>
|
|
release, and installs either a <strong>Linux systemd server</strong> or a <strong>desktop client</strong>.
|
|
</p>
|
|
<pre><code>curl -fsSL https://install.peardock.boats | bash</code></pre>
|
|
<p>Non-interactive:</p>
|
|
<pre><code># Server on Linux (systemd → peardock.service)
|
|
curl -fsSL https://install.peardock.boats | bash -s -- --server --yes
|
|
|
|
# Desktop client (Linux or macOS)
|
|
curl -fsSL https://install.peardock.boats | bash -s -- --client --yes
|
|
|
|
# Both (Linux host that also runs the GUI)
|
|
curl -fsSL https://install.peardock.boats | bash -s -- --both --yes</code></pre>
|
|
|
|
<div class="callout info">
|
|
<div class="callout-icon">i</div>
|
|
<div class="callout-body">
|
|
<strong>Requirements.</strong> <code>curl</code> or <code>wget</code>, <code>tar</code>.
|
|
Server install needs root/sudo, Docker installed, and Linux for systemd.
|
|
Windows: grab tarballs from the rolling release (bash installer is not for win32).
|
|
</div>
|
|
</div>
|
|
|
|
<h2 id="after-server">2. After server install</h2>
|
|
<p>Default layout:</p>
|
|
<div class="table-wrap">
|
|
<table>
|
|
<thead>
|
|
<tr><th>Path</th><th>Purpose</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr><td><code>/opt/peardock/peardock-server</code></td><td>Bare standalone binary</td></tr>
|
|
<tr><td><code>/opt/peardock/.env</code></td><td><strong>Check this file</strong> for <code>SERVER_PUBLIC_KEY</code> and <code>SERVER_SEED</code> (mode 600)</td></tr>
|
|
<tr><td><code>/etc/systemd/system/peardock.service</code></td><td>systemd unit (user <code>peardock</code>, group <code>docker</code>)</td></tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<pre><code>sudo systemctl enable --now peardock
|
|
sudo systemctl status peardock
|
|
sudo journalctl -u peardock -f</code></pre>
|
|
|
|
<h3 id="keys">Keys live in <code>.env</code></h3>
|
|
<p>
|
|
After the first successful start, the server writes identity into
|
|
<code>/opt/peardock/.env</code>. <strong>Open that file</strong> (or grep it) before connecting:
|
|
</p>
|
|
<pre><code># Preferred — both keys after first start
|
|
sudo grep -E '^(SERVER_PUBLIC_KEY|SERVER_SEED)=' /opt/peardock/.env
|
|
# or: sudo cat /opt/peardock/.env
|
|
|
|
# Also printed in the journal on boot
|
|
sudo journalctl -u peardock -n 80 --no-pager | grep -i 'public key'</code></pre>
|
|
<div class="table-wrap">
|
|
<table>
|
|
<thead>
|
|
<tr><th>Variable</th><th>Who</th><th>In the client</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td><code>SERVER_PUBLIC_KEY</code></td>
|
|
<td>Safe to share</td>
|
|
<td>Paste alone → <strong>viewer</strong> (read-only)</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>SERVER_SEED</code></td>
|
|
<td><strong>Admins only</strong> — never give to operators</td>
|
|
<td>Paste with the public key → <strong>admin</strong></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<p>Boot log shape:</p>
|
|
<pre><code> peardock server ready
|
|
Public key (viewer / read-only by default):
|
|
<64 hex characters>
|
|
Admin: paste public key + SERVER_SEED in the client.
|
|
Operators: create a pd1. invite from Access (never share SERVER_SEED).</code></pre>
|
|
|
|
<div class="callout warn">
|
|
<div class="callout-icon">!</div>
|
|
<div class="callout-body">
|
|
<strong>Docker socket.</strong> The installer adds user <code>peardock</code> to the docker group so
|
|
<code>/var/run/docker.sock</code> is usable. If list/start fails with permission errors:
|
|
<code>sudo usermod -aG docker peardock && sudo systemctl restart peardock</code>.
|
|
Back up <code>SERVER_SEED</code> in <code>.env</code>. Rotating it changes the public key.
|
|
</div>
|
|
</div>
|
|
|
|
<h2 id="after-client">3. After client install</h2>
|
|
<ul>
|
|
<li><strong>macOS:</strong> <code>~/Applications/peardock.app</code>. Open from Finder or Spotlight.</li>
|
|
<li><strong>Linux:</strong> <code>peardock-client</code> on <code>PATH</code> if <code>~/.local/bin</code> is configured; desktop entry under <code>~/.local/share/applications</code>.</li>
|
|
</ul>
|
|
<p>Dev/source alternative (Electron):</p>
|
|
<pre><code>npm run start:client
|
|
# builds electron/app.bundle.cjs then launches Electron</code></pre>
|
|
<p>Pear development:</p>
|
|
<pre><code>export PATH="$HOME/Library/Application Support/pear/bin:$PATH" # macOS
|
|
npm run dev</code></pre>
|
|
|
|
<h2 id="connect">4. Connect</h2>
|
|
<pre class="mermaid">
|
|
flowchart LR
|
|
A[Install server] --> B["Read keys from /opt/peardock/.env"]
|
|
B --> C[Install / open client]
|
|
C --> D[Add peer · key / seed / pd1 invite]
|
|
D --> E[Handshake · role · live UI]
|
|
</pre>
|
|
<ol>
|
|
<li>On the Docker host, read keys from <code>/opt/peardock/.env</code> (<code>SERVER_PUBLIC_KEY</code>, and <code>SERVER_SEED</code> if you need admin).</li>
|
|
<li>Open the client → <strong>Add peer</strong>.</li>
|
|
<li>Paste one of the options below (optional alias).</li>
|
|
<li>Handshake returns <code>peerId</code> and role; the live UI loads.</li>
|
|
</ol>
|
|
<div class="table-wrap">
|
|
<table>
|
|
<thead>
|
|
<tr><th>Paste in Add peer</th><th>Access</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr><td>Public key only (<code>SERVER_PUBLIC_KEY</code>)</td><td><strong>Viewer</strong> (read-only)</td></tr>
|
|
<tr><td>Public key + <code>SERVER_SEED</code> (from the same <code>.env</code>)</td><td><strong>Admin</strong></td></tr>
|
|
<tr><td>Full <code>pd1.…</code> invite (from Access → Create invite)</td><td>Role in the invite — <strong>no seed sharing</strong></td></tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<p>
|
|
Default peer role is <strong>viewer</strong> (public key alone). Elevate with seed proof or a
|
|
<code>pd1.</code> invite. Multi-operator fleets: <a href="/docs/operator">operator guide</a>
|
|
and <a href="/docs/security">threat model</a>.
|
|
</p>
|
|
<p>
|
|
Saved peers reconnect automatically (retry every 5s if a peer drops).
|
|
Last active peer is restored on client launch.
|
|
</p>
|
|
|
|
<h2 id="source">5. From source</h2>
|
|
<pre><code>git clone https://git.ssh.surf/snxraven/peardock.git
|
|
cd peardock
|
|
npm install # or: npm ci
|
|
npm run server # host with Docker
|
|
npm run start:client # Electron GUI
|
|
# npm run dev # Pear desktop (dev)</code></pre>
|
|
<p>Production server host from source:</p>
|
|
<pre><code>npm ci --omit=dev
|
|
# copy deploy/peardock.service, create user peardock, add to docker group
|
|
# or use install.sh for the binary path instead</code></pre>
|
|
|
|
<h2 id="binaries">6. Standalone binaries (local make)</h2>
|
|
<p>64-bit only: <code>linux-x64</code>, <code>linux-arm64</code>, <code>darwin-x64</code>, <code>darwin-arm64</code>, <code>win32-x64</code>, <code>win32-arm64</code>.</p>
|
|
<pre><code>npm run make # all server + client hosts
|
|
npm run make:server:linux-x64
|
|
npm run make:client:darwin-arm64</code></pre>
|
|
<p>
|
|
Outputs under <code>out/</code>. CI publishes tag <strong>rolling</strong>.
|
|
See <a href="/docs/release">Releases</a> and <a href="/download">Download</a>.
|
|
</p>
|
|
|
|
<div class="docs-pager">
|
|
<a href="/docs/index"><span>Previous</span><strong>← Overview</strong></a>
|
|
<a class="next" href="/docs/architecture"><span>Next</span><strong>Architecture →</strong></a>
|
|
</div>
|
|
</article>
|
|
</div>
|
|
|
|
<div data-footer data-prefix="../"></div>
|
|
<script type="module" src="/src/js/site.js"></script>
|
|
</body>
|
|
</html>
|