Quickstart
Run Epure locally, point a Sentry JS/TS SDK at the DSN, and open the first issue.
Host up → copy a DSN → capture one exception → Issues. Epure does not ship a client SDK. This walkthrough uses JS fixtures (@sentry/browser / @sentry/node 7.120.0). Other runtimes: Pick your SDK.
First issue in five steps
Copy a DSN, call Sentry.init, then captureException. Ingest returns 202 before the Issues row appears.
| App surface | Package | Doc |
|---|---|---|
| SPA in the browser (React, Vue, …) | @sentry/browser | Browser |
| Node API / worker | @sentry/node | Node |
| Next.js | @sentry/nextjs | Next.js |
| Python | sentry-sdk | Python |
| Go | sentry-go | Go |
| Ruby | sentry-ruby | Ruby |
| PHP | sentry-php | PHP |
| Java (JVM, not Android) | sentry-java | Java |
| .NET | Sentry | .NET |
Match the environment filter to the SDK tag (local in the examples).
Already have a host?
Skip step 1. Copy the DSN from Settings → SDK connection and start at step 2.
Start the two containers
Compose files live at the public product repo root.
Clone and compose up
command
git clone https://github.com/epure-sh/epure.git cd epure docker compose up
8080 taken? cp .env.example .env and set EPURE_PORT plus EPURE_PUBLIC_URL. Configuration.
Wait until health is ok:
curl -sS http://localhost:8080/health{"status":"ok"}Open http://localhost:8080. Register, or for local smoke only:
./scripts/seed-dev.shLogin: dev@epure.local / devpassword. Full install notes: Installation.
Copy a DSN
Dashboard → Settings → SDK connection (or the setup checklist). Create a key if none exists. Secret is shown once.
http://{public_key}@localhost:8080/{project_id}After seed-dev, you can skip the UI and use the seed DSN in Try ingest below.
Install the SDK
npm install @sentry/browser@7.120.0Init once, then throw
Call Sentry.init at startup. Set unused sample rates to 0. Transactions, replay, and profiles are discarded.
import * as Sentry from "@sentry/browser";
Sentry.init({
dsn: "http://YOUR_PUBLIC_KEY@localhost:8080/YOUR_PROJECT_ID",
environment: "local",
release: "my-app@0.0.0",
tracesSampleRate: 0,
profilesSampleRate: 0,
replaysSessionSampleRate: 0,
replaysOnErrorSampleRate: 0,
});
Sentry.captureException(new Error("Epure quickstart test"));Migrating from Sentry SaaS: keep the same init options; replace only dsn.
Confirm 202, then Issues
Ingest returns 202 before the row appears. Locally the worker usually flushes in under a second.
Expected ingest body:
{ "id": "660e8400-e29b-41d4-a716-446655440001" }Refresh http://localhost:8080. Match the environment filter to Sentry.init (local). You should see an unresolved issue for Error / Epure quickstart test.
Empty feed copy: 0 UNRESOLVED EXCEPTIONS. If that is you after a 202, open Verify.
Try ingest without an SDK
POST legacy store JSON for the same 202. Seed fields match ./scripts/seed-dev.sh.
Try ingest
Build a store POST for a host you already run. Seed defaults match ./scripts/seed-dev.sh. Change host if EPURE_PORT is not 8080. Fields persist in this tab.
store curl
curl -sS -D - -o /tmp/epure-ingest.json -X POST
"http://localhost:8080/api/550e8400-e29b-41d4-a716-446655440000/store/"
-H "X-Sentry-Auth: Sentry sentry_version=7, sentry_key=a1b2c3d4e5f6g7h8i9j0, sentry_secret=supersecretdevkey"
-H "Content-Type: application/json"
-d '{
"platform": "javascript",
"exception": {
"values": [{ "type": "Error", "value": "Epure try-it" }]
}
}'Expected
HTTP/1.1 202 Accepted
{ "id": "<event-uuid>" }
Then open Issues. This panel does not POST from the browser. CORS and your DSN stay on your machine.
Envelope fixture from the repo root:
curl -sS -D - -o /tmp/epure-envelope.json -X POST \
"http://localhost:8080/api/550e8400-e29b-41d4-a716-446655440000/envelope/" \
-H "X-Sentry-Auth: Sentry sentry_version=7, sentry_key=a1b2c3d4e5f6g7h8i9j0, sentry_secret=supersecretdevkey" \
-H "Content-Type: application/x-sentry-envelope" \
--data-binary @fixtures/sentry/browser/envelope.txtExpect HTTP/1.1 202 and {"id":"..."}.
Next
FAQ
Does Sentry JS 8.x work?
Often yes, though CI fixtures are 7.120.0. On v8+, set enableTracing: false when the option exists, and keep traces, profiles, and replay sample rates at 0. Pin 7.120.0 if you want the same line the docs exercise. Confirm a throw with Verify.
Can I use Python or curl only?
Yes. Envelope and store accept official Sentry SDKs and raw JSON, with store as the smallest wire path. Use Other runtimes or the Try ingest panel above. Demangle stays JS/TS only, so frames stay as sent.
Why is Issues empty after a 202?
Accept is non-blocking. Wait about a second, then match the environment chip to the SDK tag (local in these examples). Confirm you opened the project that owns the DSN. If the feed still says 0 UNRESOLVED EXCEPTIONS, follow the table on Verify.