Self-Hosting

Deploy Parser Run to your own infrastructure.

Requirements

  • Node.js 22+ (or Docker)
  • PostgreSQL 14+ database
  • 1GB RAM minimum (2GB recommended)
  • OpenAI API key for the agent

Docker Deployment

The easiest way to deploy Parser Run is with Docker.

Docker Compose

docker-compose.yml
version: "3.8"

services:
  parserrun:
    image: parserrun/app:latest
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=postgresql://postgres:password@db:5432/parserrun
      - OPENAI_API_KEY=sk-...
      - AUTH_SECRET=your-secret-key
      - NODE_ENV=production
    depends_on:
      - db

  db:
    image: postgres:16-alpine
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=parserrun
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

Run

docker-compose up -d

Access Parser Run at http://localhost:3000

Vercel Deployment

Deploy to Vercel with a managed PostgreSQL database (Neon recommended).

1. Create Neon Database

Sign up at neon.tech and create a new project. Copy the connection string.

2. Deploy from GitHub

# Fork the repo, then:
vercel --prod

3. Add Environment Variables

In Vercel dashboard, add all required environment variables (see below).

Manual Node.js

Deploy on any server with Node.js.

# Clone repository
git clone https://github.com/parser-run/parser-mono
cd parser-mono

# Install dependencies
pnpm install

# Build
pnpm build

# Set environment variables
export DATABASE_URL="postgresql://..."
export OPENAI_API_KEY="sk-..."
export AUTH_SECRET="your-secret"
export NODE_ENV="production"

# Run migrations
pnpm db:push

# Start server
pnpm start

Environment Variables

VariableRequiredDescription
DATABASE_URLYesPostgreSQL connection string
OPENAI_API_KEYYesOpenAI API key for the agent
AUTH_SECRETYesSecret for session encryption
NODE_ENVNoEnvironment (production, development)
GOOGLE_CLIENT_IDNoGoogle OAuth client ID
GOOGLE_CLIENT_SECRETNoGoogle OAuth client secret
GITHUB_CLIENT_IDNoGitHub OAuth client ID
GITHUB_CLIENT_SECRETNoGitHub OAuth client secret
STRIPE_SECRET_KEYNoStripe key for billing
NEON_API_KEYNoNeon API for database provisioning

Database Setup

Parser Run uses Drizzle ORM for database management.

Initialize Tables

# Push schema to database (creates tables)
pnpm db:push

# Or generate and run migrations
pnpm db:generate
pnpm db:migrate

Database Tables

  • users — User accounts
  • api_keys — API key management
  • scrape_projects — Project configs
  • scrape_jobs — Job execution
  • scraped_records — Extracted data
  • html_archives — Page snapshots
  • chat_threads — Conversations
  • chat_messages — Message history

Health Check

Parser Run exposes a health endpoint for monitoring:

curl https://your-instance.com/api/health

# Response: { "status": "ok", "database": "connected" }

Scaling

For high-volume deployments:

  • Horizontal scaling — Run multiple instances behind a load balancer
  • Database — Use Neon's autoscaling or a dedicated PostgreSQL cluster
  • Background jobs — Scraping runs asynchronously, scale workers independently
  • HTML archives — Configure S3/R2 for storage instead of database