Self-Hosting Steel Browser
FreshRun Steel Browser on your own infrastructure for full control, data privacy, and no usage limits.
Deployment Options
| Platform | Complexity | Best For |
|---|---|---|
| Docker | Low | Local development, CI/CD |
| Railway | Low | Quick cloud deployment |
| Render | Low | Managed containers |
| Clustering | High | High-volume production |
Steel Local vs Steel Cloud
| Feature | Steel Local | Steel Cloud |
|---|---|---|
| Concurrency | 1 session | 100+ sessions |
| Stealth | Limited | Advanced stealth |
| CAPTCHA Solving | Not available | Supported |
| Proxies | BYOP only | BYOP + Steel managed |
| Multi-Region | Host it yourself | Built-in (lax, ord, iad) |
| Credentials API | Not supported | Full support |
| Extensions | Local folder loading | Extensions API |
| Files API | Not supported | Full support |
Key Difference
The defining factor is concurrency. Steel Local is limited to 1 concurrent session. Steel Cloud supports 100+ concurrent sessions with advanced stealth and anti-detection.
Extensions in Steel Local
Place extension folders in api/src/extensions/ and Steel Local will automatically build and inject them into sessions:
steel-browser/
└── api/
└── src/
└── extensions/
├── my-extension/
│ ├── manifest.json
│ └── content.js
└── another-extension/
├── manifest.json
└── background.jsRailway
Deploy Steel Browser to Railway with one click.
Deploy Link: railway.com/deploy/steelbrowser
Post-Deployment
- Navigate to the Railway-provided public domain
- Verify health:
curl https://your-domain.railway.app/v1/health - Connect your application:
import { chromium } from "playwright";
import Steel from "steel-sdk";
const client = new Steel({
baseUrl: `https://${process.env.RAILWAY_PUBLIC_DOMAIN}`,
});
const session = await client.sessions.create();
const browser = await chromium.connectOverCDP(session.websocketUrl);Railway Benefits
- Automatic HTTPS/SSL
- Built-in health monitoring
- Easy scaling
- Simple environment variable management
Security Considerations
- Add authentication if exposing publicly
- Monitor for unusual traffic patterns
- Set up rate limiting for production use
Render
Deploy using Render's Blueprint mechanism with the Steel Docker image (steeldev/steel).
- Sign into Render
- Use Blueprint deployment with image
steeldev/steel - Configure environment variables
- Deploy
Clustering
Coming Soon
Clustering documentation for running multiple Steel Browser instances is being developed. Check back for updates on load balancing and high-availability configurations.
WebRTC Configuration
Steel's headful sessions use WebRTC for real-time browser streaming:
- 25 fps video at H.264
- Low-latency OS-level capture
- Full visual fidelity
For self-hosted deployments, ensure your infrastructure supports WebRTC traffic (UDP ports, TURN/STUN configuration).
Profiles in Self-Hosted
Coming Soon
Self-hosted profile management documentation is being developed. For now, use Steel Cloud for persistent browser profiles.