Files
trawl/apps/docs/getting-started/quick-start.md
T

136 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Quick Start
description: Get TRAWL running with Docker Compose in under two minutes.
---
# Quick Start
You need **Docker 24+** with the Compose plugin. That's the only prerequisite.
## 1. Clone the repository
```bash
git clone https://github.com/germondai/trawl.git
cd trawl
```
## 2. Create your `.env` file
```bash
cp .env.example .env
```
Everything has a working default. See [Configuration](/getting-started/configuration) for the full reference.
## 3. Start everything
```bash
docker compose up -d
```
This starts three containers:
| Container | Purpose | Port |
| --------- | ----------------------- | -------- |
| `redis` | Session cache backend | internal |
| `api` | Browser pool + HTTP API | 8191 |
| `web` | Landing page & docs UI | 3000 |
The API takes **15–30 seconds** on first boot while it launches the browser pool and downloads Camoufox (only on first build). Watch progress:
```bash
docker compose logs -f api
```
You'll see:
```
[api] TRAWL starting on :8191 (pool: 3 browsers)
[api] session cache connected (Tier 2 fast-path enabled)
[pool] browser 1/3 ready
[pool] browser 2/3 ready
[pool] browser 3/3 ready
[api] ready — all 3 browsers warm
```
## 4. Verify it works
```bash
curl -s http://localhost:8191/health | jq
```
Expected:
```json
{
"status": "ok",
"uptime": 28,
"pool": {
"total": 3,
"busy": 0,
"available": 3,
"restarts": 0,
"avgRestarts": 0
}
}
```
## 5. Send your first scrape request
```bash
curl -s -X POST http://localhost:8191/v1 \
-H "Content-Type: application/json" \
-d '{
"cmd": "request.get",
"url": "https://nowsecure.nl",
"maxTimeout": 60000
}' | jq '{status, url: .solution.url}'
```
A `status: "ok"` response confirms TRAWL is working. The **second request to the same domain** returns in ~500ms from the session cache.
::: tip First request is slow — that's expected
The first time TRAWL sees a domain it solves the Cloudflare challenge fresh (4–15s). Every subsequent request uses the cached session and returns in under 500ms. This is the whole point.
:::
## 6. Use the native API (optional)
The `/scrape` endpoint returns a richer response than `/v1` — includes `tier`, `timings`, `sessionCached`, and more:
```bash
curl -s -X POST http://localhost:8191/scrape \
-H "Content-Type: application/json" \
-d '{"url": "https://nowsecure.nl"}' | jq '{tier, totalMs}'
```
## 7. Connect Prowlarr or Jackett (optional)
In Prowlarr → **Settings → Indexers → FlareSolverr**, set:
```
http://localhost:8191
```
Done. No other configuration changes are needed. TRAWL implements the FlareSolverr v2 API exactly.
---
## What's running
```
localhost:8191 → TRAWL API (FlareSolverr-compatible + native endpoint)
localhost:3000 → Web UI (landing page, visible in your browser)
localhost:3001 → Docs (this documentation, served locally)
```
To stop everything:
```bash
docker compose down
```
To stop and wipe the session cache:
```bash
docker compose down -v
```