Skip to content
repoless

Getting started

From zero to streaming in five minutes.

The shortest path through Pier + Beacon: sign up, register a host, push a deploy, watch its logs in real time.

1. Sign up

Head to pier.repoless.com/signup and enter your email. We'll send a 6-digit OTP code. Same session works for both Pier and Beacon — you don't need to sign in twice.

First-time signups create a workspace owned by your email. Invite teammates from Admin → Team; they sign in with the same OTP flow and start with no project access until you grant it.

2. Install the agent on a host

Pier needs at least one Linux host to deploy to. The agent installs in one curl: it hardens the box (UFW, fail2ban, unattended-upgrades), joins the Wireguard mesh, and registers with the control plane.

Mint a bootstrap token

Open Admin → Servers → Add server. Pick a label, copy the rendered install one-liner.

shell
# On the new host (Ubuntu/Debian, root or sudo):
$ curl -fsSL https://pier.repoless.com/install \
    | sudo BOOTSTRAP_TOKEN=dwb_••••• LABEL=fra-1 sh

The script:

  • Downloads the agent binary (SHA256-verified) into /opt/deploywatch/agent
  • Writes a systemd service deploywatch-agent.service + watchdog
  • Exchanges the bootstrap token for a long-lived host token (dwh_*) stored in /etc/deploywatch/agent.env
  • Runs the hardening tasks (UFW, fail2ban, unattended-upgrades)
  • Joins the Wireguard mesh and reports back

Verify

Within ~10 seconds the host appears at /admin/servers with a green dot. Disk, CPU, RAM, kernel, and Docker versions show on its detail page.

3. Create a project

Projects group apps that share a namespace, RBAC, and (importantly) a Beacon project for log routing. From Projects → Create a project, pick a slug — this is the canonical name used by both Pier and Beacon.

Slug matters

The project slug must match the Beacon project for log routing to work automatically. Pick something stable like acme — apps inside it become acme-api, acme-web, etc.

4. Deploy your first app

Inside a project, click New app. Pier supports four build modes:

  • Compose — point at a docker-compose.yml in your repo
  • Dockerfile — Pier builds with BuildKit + cache
  • Static — public-folder static sites
  • Nixpacks — auto-detect language + build

Connect your GitHub account, pick a repo, choose a branch, and the first deploy starts. Push to main and Pier health-gates a blue-green swap — old containers keep serving traffic until the new ones probe healthy.

yaml
# Example app.yml (committed to your repo root)
app: api
build:
  mode: dockerfile
  dockerfile: ./Dockerfile
processes:
  web:
    cmd: ./bin/server
    health: { path: /healthz, port: 8080 }
  worker:
    cmd: ./bin/jobs
domain: api.acme.com
env:
  NODE_ENV: production

5. Stream logs into Beacon

Stdout from every container deployed by Pier is forwarded to Beacon automatically — the agent attaches a host token at install time and tags every line with the deploy revision that produced it.

For hosts you provisioned outside Pier, install Vector with the provided vector.yaml config in deploy/vector/. Each container's service identity is derived from Compose labels + container-name role prefix:

service = <serviceName>[-<role>][-pr-<id>]
# web-bgyb…           → acme-api-web
# worker-bgyb…        → acme-api-worker
# web-bgyb…-pr-163    → acme-api-web-pr-163

6. Install the Beacon CLI

For local development and live-tailing:

shell
$ curl -fsSL https://beacon.repoless.com/install | sh
$ logwatch login                    # browser OTP → ~/.logwatch/token
$ logwatch apps                     # list every service + line count
$ logwatch tail acme-api-web        # live tail
The CLI binary is still named logwatch for backward compatibility with existing shell aliases and scripts. See CLI reference.

Next