Skip to content

Quickstart

Zero to a working Pulse install in about ten minutes on a Linux host with Docker.

Get from zero to a working install in about ten minutes on a Linux host with Docker.

Terminal window
git clone https://github.com/your-org/pulse.git /opt/pulse
cd /opt/pulse
cp .env.example .env
$EDITOR .env

Set at minimum:

PUBLIC_BASE_URL=https://pulse.example.com
API_CORS_ORIGINS=https://pulse.example.com
SESSION_SECRET=$(openssl rand -hex 32)
CSRF_SECRET=$(openssl rand -hex 32)
WORKER_ENROLLMENT_TOKEN=$(openssl rand -hex 24)

Leave DATABASE_URL and REDIS_URL at their compose defaults unless you point at managed services.

Terminal window
docker compose -f docker/docker-compose.yml up -d

The API applies migrations on boot. Verify:

Terminal window
curl -fsS https://pulse.example.com/api/v1/healthz
# {"service":"pulse-api","status":"ok",...}

Open https://pulse.example.com/signup. The bootstrap signup is open until exactly one user exists, then closes automatically.

In the app: Monitors → + New monitor. Pick HTTP, paste a URL (e.g. https://example.com), 60s interval, save. First check fires within seconds; you’ll see live status on the dashboard.

Settings → Channels → Add → Slack. Paste a Slack incoming-webhook URL, save.

Alerts → + New rule. Scope: All monitors. Trigger: Status becomes down for 3 consecutive checks. Channel: the one you just added. Save.

That’s a complete loop. Take the monitored target down for a minute and watch the alert fire in Slack.

  • Core concepts for the small set of terms the rest of the docs uses.
  • Self-hosting for production hardening — TLS, backups, upgrades.
  • Monitors for the full check configuration surface.