Quick start
Fastest path: the one-line installer (rolling binaries). After install you connect with a public key. No ports to open, no VPN, no public Docker API. Alternative: run from source with Node.js ≥ 20.
1. One-line installer (recommended)
Detects OS/arch, downloads matching assets from the rolling release, and installs either a Linux systemd server or a desktop client.
curl -fsSL https://install.peardock.boats | bash
Non-interactive:
# 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
curl or wget, tar.
Server install needs root/sudo, Docker installed, and Linux for systemd.
Windows: grab tarballs from the rolling release (bash installer is not for win32).
2. After server install
Default layout:
| Path | Purpose |
|---|---|
/opt/peardock/peardock-server | Bare standalone binary |
/opt/peardock/.env | SERVER_SEED / public key material |
/etc/systemd/system/peardock.service | systemd unit (user peardock, group docker) |
sudo systemctl enable --now peardock
sudo systemctl status peardock
sudo journalctl -u peardock -f
On first start the logs print:
peardock server ready
Public key (paste into the client):
<64 hex characters>
peardock to the docker group so
/var/run/docker.sock is usable. If list/start fails with permission errors:
sudo usermod -aG docker peardock && sudo systemctl restart peardock.
Back up SERVER_SEED in .env. Rotating it changes the public key.
3. After client install
- macOS:
~/Applications/peardock.app. Open from Finder or Spotlight. - Linux:
peardock-clientonPATHif~/.local/binis configured; desktop entry under~/.local/share/applications.
Dev/source alternative (Electron):
npm run start:client
# builds electron/app.bundle.cjs then launches Electron
Pear development:
export PATH="$HOME/Library/Application Support/pear/bin:$PATH" # macOS
npm run dev
4. Connect
flowchart LR
A[Install server] --> B[Copy public key from journal]
B --> C[Install / open client]
C --> D[Add peer · paste key]
D --> E[Handshake · role · live UI]
- Copy the server public key (64 hex chars) from journal logs.
- Open the client → Add peer / sidebar connection field.
- Paste the key (optional alias / invite token).
- Handshake negotiates protocol version, returns
peerIdand role.
Default role is admin for a single operator. Harden multi-operator fleets via the operator guide and threat model.
Saved peers reconnect automatically (retry every 5s if a peer drops). Last active peer is restored on client launch.
5. From source
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)
Production server host from source:
npm ci --omit=dev
# copy deploy/peardock.service, create user peardock, add to docker group
# or use install.sh for the binary path instead
6. Standalone binaries (local make)
64-bit only: linux-x64, linux-arm64, darwin-x64, darwin-arm64, win32-x64, win32-arm64.
npm run make # all server + client hosts
npm run make:server:linux-x64
npm run make:client:darwin-arm64
Outputs under out/. CI publishes tag rolling.
See Releases and Download.