Self-hosted Cloudflare Workers runtime.
- Docker Compose - Self-hosted deployment
- Local Development - Contributing to OpenWorkers
| Service | Description |
|---|---|
| postgres | PostgreSQL database |
| nats | Message queue for worker communication |
| postgate | HTTP proxy for PostgreSQL (query validation, multi-tenant) |
| openworkers-api | REST API |
| openworkers-runner | Worker runtime (V8 isolates) |
| openworkers-logs | Log aggregator |
| openworkers-scheduler | Cron job scheduler |
| openworkers-dash | Dashboard UI |
| openworkers-cli | CLI for migrations & worker management |
| openworkers-proxy | Nginx reverse proxy |
┌─────────────────┐
│ nginx (proxy) │
└────────┬────────┘
│
┌───────────────┬────────┴──┬───────────────┐
│ │ │ │
│ │ │ │
┌────────┸────────┐ ┌────┸────┐ ┌────┸────┐ ┌────────┸────────┐
│ dashboard │ │ api │ │ logs * │ │ runner (x3) * │
└─────────────────┘ └────┬────┘ └────┰────┘ └────────┰────────┘
│ │ │
│ │ │
┌────────┸────────┐ │ ┌────────┸────────┐
│ postgate * │ └──────┥ nats │
└─────────────────┘ └────────┰────────┘
│
│
┌─────────────────┐ ┌──────┴───────┐
* ─────┥ PostgreSQL │ │ scheduler * │
└─────────────────┘ └──────────────┘
Worker JS code Runner (Rust) Postgate (lib) PostgreSQL
│ │ │ │
│ env.DB.query(sql) │ │ │
├─────────────────────►│ │ │
│ │ postgate::execute(sql) │ │
│ ├──────────────────────────►│ │
│ │ │ SQL query │
│ │ ├───────────────────►│
│ │ │◄───────────────────┤
│ │◄──────────────────────────┤ │
│◄─────────────────────┤ │ │
- Workers use bindings (
env.DB.query()) provided by the runner - Runner uses Postgate as a Rust library for query validation and execution
- Postgate HTTP is only used by the OpenWorkers API for admin operations
Use the CLI for database migrations and worker management:
# Install CLI
cargo install --git https://github.com/openworkers/openworkers-cli
# Or use Docker
docker run --rm ghcr.io/openworkers/openworkers-cli --help
# Run migrations
ow alias set infra --db postgres://user:pass@localhost/openworkers
ow infra db migrate
ow infra db status# Database backup/restore
./database.sh backup
./database.sh restore <file>
./database.sh psql