Deployment
This guide covers how to deploy the OmniBoxes browser automation infrastructure.
For installation prerequisites (Python, Redis, Playwright, etc.), see Rollout Server Env.
Quick Start
Local Development
cd omniboxes/deploy
python deploy.py 10
Access at: http://localhost:7000
Production (External API Server)
cd omniboxes/deploy
python deploy.py 10 --master-port 7000
Access at: http://your-server-ip:7000
Deployment Options
python deploy.py [instances] [options]
Arguments:
instances- Number of browser instances (required)
Options:
--nginx- Setup nginx reverse proxy (requiressudoandnginx)--master-port PORT- Master server port (default: 7000)--node-port PORT- Node server port (default: 8080)--instance-start-port PORT- First instance port (default: 9000)--redis-port PORT- Redis port (default: 6379)--max-parallel N- Maximum parallel instance starts (default: auto)--disable-recovery- Disable automatic process recovery
Architecture
Master Server (port 7000) → Node Server (port 8080) → Instance Servers (9000+)
Orchestrates sessions Manages instances Individual Playwright browsers
↓
Redis (port 6379)
State coordination
Starting Components Individually
# 1. Redis
redis-server --port 6379
# 2. Instance servers
for port in $(seq 9000 9049); do
python -m omniboxes.node.instance_server --port $port &
done
# 3. Node server
python -m omniboxes.node.server --port 8080 --workers 50
# 4. Master server
python -m omniboxes.master.server --port 7000 --nodes http://localhost:8080
Verifying the Server
# Health check
curl -H "x-api-key: default_key" http://localhost:7000/info
# Allocate a browser instance
curl -X POST -H "x-api-key: default_key" http://localhost:7000/get
API Usage
All requests require the x-api-key: default_key header and go to the master server.
# Get server info
curl -H "x-api-key: default_key" http://YOUR_IP:7000/info
# Get a new browser instance
curl -X POST -H "x-api-key: default_key" "http://YOUR_IP:7000/get?lifetime_mins=60"
# Screenshot
curl -H "x-api-key: default_key" \
"http://YOUR_IP:7000/screenshot?instance_id=UUID:9000&node=NODE_HASH" > screenshot.png
# Execute a command
curl -X POST -H "x-api-key: default_key" \
-H "Content-Type: application/json" \
-d '{"instance_id":"UUID:9000","node":"NODE_HASH","visit_page":{"url":"https://example.com"}}' \
http://YOUR_IP:7000/execute
# Reset an instance
curl -X POST -H "x-api-key: default_key" \
"http://YOUR_IP:7000/reset?instance_id=UUID:9000&node=NODE_HASH"
Security
Default API key is
default_key— change this in productionConsider using environment variables for secrets management
Troubleshooting
# Port conflicts
sudo lsof -i :7000 && sudo kill -9 <PID>
# Redis issues
redis-cli -p 6379 ping
redis-cli -p 6379 shutdown
Deployment Files
deploy.py - Single-node deployment
deploy_multinode.py - Multi-node deployment
process_manager.py - Core launcher class
multinode_manager.py - Multi-node launcher class
nginx_manager.py - Nginx reverse proxy configuration
Next Steps
See Rollout Server Code Details (Optional Read) for detailed architecture and API documentation
See Rollout Collection for integration with WebGym environments