N8N-DASHBOARD/README.md

39 lines
2.4 KiB
Markdown
Raw Normal View History

# n8n Workflow Monitor
Read-only dashboard: n8n → PocketBase → shadcn-style React dashboard.
## What's in here
- `n8n Monitoring Dashboard - Poller` — already created in your n8n instance (draft, not yet activated). Polls `/api/v1/workflows` and `/api/v1/executions` every 5 minutes and upserts into PocketBase.
- `pocketbase_schema.json` — importable PocketBase collections (`workflows`, `executions`).
- `dashboard/` — the React + Tailwind + shadcn-style dashboard, reads from PocketBase with realtime updates.
## Setup
### 1. PocketBase
1. In your PocketBase Admin UI, go to **Settings → Import collections** and upload `pocketbase_schema.json`. This creates `workflows` and `executions` with public read access and admin-only write access.
2. Create an **API token / auth for a superuser (or an app-level API key)** the poller workflow can use to write — the poller authenticates with a plain Bearer token in the `PocketBase Admin` credential (see below).
### 2. n8n poller workflow
The workflow is already created: **n8n Monitoring Dashboard - Poller** (in your personal project). Before activating it:
1. Create credential **"n8n API Key"** (type: HTTP Header Auth) — header `X-N8N-API-KEY`, value: an n8n API key from Settings → API.
2. Create credential **"PocketBase Admin"** (type: HTTP Header Auth) — header `Authorization`, value: `Bearer <your PocketBase superuser token>`.
3. Every HTTP node in the workflow uses `https://pocketbase.apphub.co.za` as a guessed placeholder base URL — find/replace with your real PocketBase URL if different.
4. Activate the workflow.
### 3. Dashboard
```bash
cd dashboard
npm install
```
Edit `src/lib/pocketbase.ts` and set `POCKETBASE_URL` to your real PocketBase instance.
```bash
npm run dev
```
Open the printed local URL. For production, `npm run build` and serve the `dist/` folder (e.g. behind the same reverse proxy/Cloudflare Tunnel setup you use for your other self-hosted tools).
## Notes
- The dashboard is **read-only** — it only ever calls PocketBase's list/realtime endpoints, never n8n directly, and never writes.
- All writes to PocketBase happen from the poller workflow only, authenticated as admin — the dashboard's PocketBase access can stay on the public read rules set in the schema.
- Realtime: the dashboard subscribes to PocketBase's realtime feed, so it updates within moments of the poller's next 5-minute sync — no page refresh needed.