Skip to content

openworkers/openworkers-infra

Repository files navigation

OpenWorkers Infrastructure

Self-hosted Cloudflare Workers runtime.

Getting Started

Stack

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

Architecture

                         ┌─────────────────┐
                         │  nginx (proxy)  │
                         └────────┬────────┘
                                  │
         ┌───────────────┬────────┴──┬───────────────┐
         │               │           │               │
         │               │           │               │
┌────────┸────────┐ ┌────┸────┐ ┌────┸────┐ ┌────────┸────────┐
│   dashboard     │ │  api    │ │ logs *  │ │  runner (x3) *  │
└─────────────────┘ └────┬────┘ └────┰────┘ └────────┰────────┘
                         │           │               │
                         │           │               │
                ┌────────┸────────┐  │      ┌────────┸────────┐
                │   postgate *    │  └──────┥      nats       │
                └─────────────────┘         └────────┰────────┘
                                                     │
                                                     │
                ┌─────────────────┐           ┌──────┴───────┐
         * ─────┥   PostgreSQL    │           │ scheduler *  │
                └─────────────────┘           └──────────────┘

How Database Access Works

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

CLI

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

Scripts

# Database backup/restore
./database.sh backup
./database.sh restore <file>
./database.sh psql

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published

Languages