Production-ready browser automation API powered by Playwright Chromium
1.4K
Official Docker Image:
browserautos/browser-autos
Production-ready browser automation API powered by Playwright Chromium. Provides REST APIs and WebSocket CDP proxy for screenshots, PDF generation, content extraction, and web scraping.
docker run -d \
--name browser-autos \
-p 3001:3001 \
-e JWT_SECRET=your-secret-key \
-e DEFAULT_ADMIN_USERNAME=browserautos \
-e DEFAULT_ADMIN_PASSWORD=browser.autos \
--shm-size=2gb \
--memory=4g \
browserautos/browser-autos:latest
# Test it
curl http://localhost:3001/health
# Check logs to see default credentials
docker logs browser-autos | grep "Default credentials"
Note: All API endpoints require authentication. First, get an access token by logging in.
# Login to get access token
TOKEN=$(curl -s -X POST http://localhost:3001/auth/login \
-H "Content-Type: application/json" \
-d '{"username": "browserautos", "password": "browser.autos"}' \
| jq -r '.data.accessToken')
echo "Token: $TOKEN"
curl -X POST http://localhost:3001/screenshot \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com", "fullPage": true}' \
-o screenshot.png
curl -X POST http://localhost:3001/pdf \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com", "format": "A4"}' \
-o document.pdf
curl -X POST http://localhost:3001/scrape \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"elements": [
{"selector": "h1", "property": "textContent"},
{"selector": ".price", "property": "textContent"}
]
}'
curl -X POST http://localhost:3001/content \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com", "includeMetadata": true}'
For testing without authentication:
# Start container with auth disabled (NOT recommended for production)
docker run -d \
--name browser-autos \
-p 3001:3001 \
-e JWT_SECRET=your-secret \
-e REQUIRE_AUTH=false \
--shm-size=2gb \
browserautos/browser-autos:latest
Note: WebSocket connections also require authentication. Pass the token as a URL parameter.
const puppeteer = require('puppeteer-core');
const axios = require('axios');
// Get access token
const { data } = await axios.post('http://localhost:3001/auth/login', {
username: 'browserautos',
password: 'browser.autos'
});
const token = data.data.accessToken;
// Connect with token
const browser = await puppeteer.connect({
browserWSEndpoint: `ws://localhost:3001/ws?token=${token}`
});
const page = await browser.newPage();
await page.goto('https://example.com');
await browser.close();
const { chromium } = require('playwright');
const axios = require('axios');
// Get access token
const { data } = await axios.post('http://localhost:3001/auth/login', {
username: 'browserautos',
password: 'browser.autos'
});
const token = data.data.accessToken;
// Connect with token
const browser = await chromium.connect({
wsEndpoint: `ws://localhost:3001/ws?token=${token}`
});
const page = await browser.newPage();
await page.goto('https://example.com');
await browser.close();
Default Users:
browserautos / browser.autosapi-user / browser.autosGet Access Token:
curl -X POST http://localhost:3001/auth/login \
-H "Content-Type: application/json" \
-d '{"username": "browserautos", "password": "browser.autos"}'
Use Token:
# With JWT
curl -H "Authorization: Bearer YOUR_TOKEN" http://localhost:3001/screenshot
# With API Key
curl -H "X-API-Key: YOUR_KEY" http://localhost:3001/screenshot
version: '3.8'
services:
browser-autos:
image: browserautos/browser-autos:latest
ports:
- "3001:3001"
environment:
- JWT_SECRET=your-secret-key
- ENABLE_QUEUE=false
shm_size: '2gb'
mem_limit: 4g
restart: unless-stopped
redis:
image: redis:7-alpine
volumes:
- redis-data:/data
volumes:
redis-data:
Required Environment Variables:
JWT_SECRET=your-secret-key # Required for authentication
Optional Settings:
# Queue System
ENABLE_QUEUE=false
REDIS_URL=redis://redis:6379
# Browser Pool
BROWSER_POOL_MIN=2
BROWSER_POOL_MAX=10
# Logging
LOG_LEVEL=info
Resource Requirements:
| Minimum | Recommended | |
|---|---|---|
| Memory | 2GB | 4GB |
| CPU | 1 core | 2 cores |
| Shared Memory | 2GB (required) | 2GB |
Important: Always set
--shm-size=2gbfor Chromium stability
browser.autos provides multiple tags for different use cases:
| Tag | Base Image | Size | Use Case |
|---|---|---|---|
latest | Debian Bookworm | ~1.4GB | Recommended for production |
1.0.0 | Debian Bookworm | ~1.4GB | Version locked |
debian | Debian Bookworm | ~1.4GB | Stable baseline |
alpine | Alpine Linux | ~800MB | Lightweight (coming soon) |
Multi-Architecture:
linux/amd64 - Intel/AMDlinux/arm64 - Apple Silicon, AWS Graviton, Azure ARM# Pull specific version
docker pull browserautos/browser-autos:latest
docker pull browserautos/browser-autos:1.0.0
docker pull browserautos/browser-autos:debian
| Endpoint | Method | Description |
|---|---|---|
/health | GET | Health check and system info |
/screenshot | POST | Generate screenshot |
/pdf | POST | Generate PDF |
/content | POST | Extract page content |
/scrape | POST | Scrape data with selectors |
/ws | WebSocket | CDP protocol proxy |
/metrics | GET | Prometheus metrics |
/docs | GET | Interactive API documentation |
Tested on 4 vCPU, 8GB RAM
| Operation | Cold Start | With Pool | Improvement |
|---|---|---|---|
| Screenshot | 7.6s | 1.2s | 85% faster |
| 8.0s | 2.0s | 75% faster | |
| Content | 4.5s | 1.5s | 67% faster |
browser.autos powers diverse automation workflows:
Chromium won't start:
# Ensure shared memory is set
docker run --shm-size=2gb browserautos/browser-autos:latest
Out of memory:
# Increase memory limit
docker run --memory=4g browserautos/browser-autos:latest
Check logs:
docker logs browser-autos
docker logs -f browser-autos # Follow mode
Authentication errors:
# Disable auth for testing (not recommended for production)
docker run -e REQUIRE_AUTH=false browserautos/browser-autos:latest
browser.autos follows semantic versioning:
Check version:
docker run --rm browserautos/browser-autos:latest \
node -e "console.log(require('./package.json').version)"
browser.autos is an open-source browser automation platform for developers, testers, and businesses.
Why browser.autos?
Maintained by the browser.autos Team
Image: browserautos/browser-autos (stable, unchanged)
Version: 1.0.0
Chromium: 141.0.7390.37 (Playwright)
Updated: 2025-10-11
โญ Star us on GitHubโ !
MIT License - Free for commercial use
Content type
Image
Digest
sha256:7e5e158ccโฆ
Size
478.7 MB
Last updated
11 months ago
docker pull browserautos/browser-autos