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
i
Requirements. 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:

PathPurpose
/opt/peardock/peardock-serverBare standalone binary
/opt/peardock/.envSERVER_SEED / public key material
/etc/systemd/system/peardock.servicesystemd 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>
!
Docker socket. The installer adds user 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

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]
      
  1. Copy the server public key (64 hex chars) from journal logs.
  2. Open the client → Add peer / sidebar connection field.
  3. Paste the key (optional alias / invite token).
  4. Handshake negotiates protocol version, returns peerId and 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.