https://github.com/synacktraa/patchright-headless-server
Patchright Headless Server
https://github.com/synacktraa/patchright-headless-server
Last synced: 10 months ago
JSON representation
Patchright Headless Server
- Host: GitHub
- URL: https://github.com/synacktraa/patchright-headless-server
- Owner: synacktraa
- License: mit
- Created: 2025-08-07T09:41:03.000Z (11 months ago)
- Default Branch: master
- Last Pushed: 2025-08-07T12:56:24.000Z (11 months ago)
- Last Synced: 2025-08-07T14:44:30.412Z (11 months ago)
- Language: JavaScript
- Homepage: https://hub.docker.com/r/synacktra/patchright-headless-server
- Size: 5.86 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Patchright Headless Server
A containerized headless Chromium server powered by [patchright](https://github.com/Kaliiiiiiiiii-Vinyzu/patchright). This server provides a WebSocket endpoint for remote browser automation, perfect for testing, scraping, and automation tasks in containerized environments.
## Quick Start
### Docker (Recommended)
```bash
# Pull and run from Docker Hub
docker run -p 5678:5678 synacktra/patchright-headless-server
# The server will be available at ws://localhost:5678/patchright
```
### Local Development
```bash
# Clone and setup
git clone https://github.com/synacktraa/patchright-headless-server.git
cd patchright-headless-server/server
npm install
# Install Chromium browser
npx patchright-core install chromium-headless-shell
# Run the server
node index.mjs
```
## Usage
Once the server is running, connect to the WebSocket endpoint:
- **Default endpoint**: `ws://localhost:5678/patchright`
- **Health check**: The server logs the WebSocket endpoint URL on startup
Example with Playwright/Patchright client:
```javascript
import { chromium } from 'playwright-core'; // or 'patchright-core'
const browser = await chromium.connect('ws://localhost:5678/patchright');
const page = await browser.newPage();
await page.goto('https://example.com');
// ... your automation code
await browser.close();
```
## Configuration
Configure the server behavior using environment variables:
| Variable | Default | Description |
|----------|---------|-------------|
| `BROWSER_PORT` | `5678` | Server port |
| `BROWSER_WS_PATH` | `/patchright` | WebSocket endpoint path |
| `BROWSER_TIMEOUT` | - | Connection timeout (milliseconds) |
| `BROWSER_ARGS` | See defaults* | Space-separated browser arguments |
| `BROWSER_PROXY_SERVER` | - | Proxy server URL |
| `BROWSER_PROXY_BYPASS` | - | Proxy bypass patterns |
| `BROWSER_PROXY_USERNAME` | - | Proxy authentication username |
| `BROWSER_PROXY_PASSWORD` | - | Proxy authentication password |
*Default browser arguments: `--no-sandbox --disable-dev-shm-usage --disable-gpu --disable-web-security --disable-features=VizDisplayCompositor`
### Example with Custom Configuration
```bash
docker run -p 8080:8080 \
-e BROWSER_PORT=8080 \
-e BROWSER_WS_PATH=/browser \
-e BROWSER_TIMEOUT=30000 \
synacktra/patchright-headless-server
```
## Docker Build
Build your own image:
```bash
docker build -t patchright-headless-server .
docker run -p 5678:5678 patchright-headless-server
```
## License
MIT License - see [LICENSE](LICENSE) file for details.