Deploy Browserless
Browserless 2.62 headless Chrome for Puppeteer and Playwright, token-gated.
Browserless
Just deployed
Deploy and Host Browserless on Railway
Browserless runs headless Chromium as a service. Puppeteer, Playwright and other CDP clients connect to it over a WebSocket, and REST endpoints return screenshots, PDFs, page content and scraped data. Your code doesn't need a local Chrome install: one shared browser service handles your apps, scripts and agents.
About Hosting Browserless
This template runs Browserless v2.62.0 (Chromium 158) from the official image, pinned by digest. Every request needs a generated 48-character TOKEN. STRICT_TOKEN_USE is forced on, so only the static docs page answers without it, and the service refuses to start if the token is missing. Chromium uses a lot of memory, and each open session needs a few hundred MB, so CONCURRENT (5), QUEUED (10) and TIMEOUT (60 s) keep a burst of jobs from exhausting the instance. Sessions are ephemeral, so no volume is attached. Browserless is dual-licensed under SSPL-1.0 or a commercial licence. It is free for open-source and non-commercial use, but closed-source commercial use needs a licence from browserless.io.
Common Use Cases
- Render screenshots and PDFs (invoices, reports, social cards) from URLs or HTML
- Scrape and test JavaScript-heavy sites with Puppeteer or Playwright, without installing Chrome in every app or CI job
- Give AI agents and automation tools (n8n, Flowise, custom agents) a shared headless browser over the private network
Dependencies for Browserless Hosting
- The official
ghcr.io/browserless/chromiumimage (v2.62.0, Chromium 158, Puppeteer 25.16 and Playwright 1.61 to 1.65 supported) - No database or volume is needed. Plan on roughly 300 to 500 MB of RAM per concurrent session.
Deployment Dependencies
- Browserless on GitHub and release v2.62.0
- Browserless documentation (Docker configuration, connection URLs, REST API)
- Licence (SSPL-1.0 or commercial)
Implementation Details
The service variables hold ready-made connection URLs that already include the token:
BROWSER_WS_ENDPOINT:wss://YOUR-DOMAIN?token=…for Puppeteerconnect({ browserWSEndpoint })and PlaywrightconnectOverCDP()BROWSER_PLAYWRIGHT_ENDPOINT:wss://YOUR-DOMAIN/chromium/playwright?token=…for Playwrightchromium.connect()BROWSER_WS_ENDPOINT_PRIVATE: the same CDP URL over Railway's private network, for other services in the project, for example${{Browserless.BROWSER_WS_ENDPOINT_PRIVATE}}
const browser = await puppeteer.connect({ browserWSEndpoint: process.env.BROWSER_WS_ENDPOINT });
REST example: POST https://YOUR-DOMAIN/chromium/screenshot?token=YOUR_TOKEN with {"url":"https://example.com"}. The health check uses /docs/. Raise CONCURRENT only after you give the service more memory.
Why Deploy Browserless on Railway?
Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.
By deploying Browserless on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.
Template Content
Browserless
ghcr.io/browserless/chromium:v2.62.0