Self-host - System requirements
CPU, RAM, disk, ports, and required services for running OpenQuok as a self-hosted social scheduler with Docker Compose.
Connect your agent today
Draft from chat, review in your calendar, and publish only what you approve.
Overview
Use these floors when you self-host OpenQuok with the Compose stack under infra/self-host/. Contributor machines that only run pnpm + local Supabase can be lighter; image builds for the full stack need more RAM.
Hardware floors
| Resource | Minimum | Notes |
|---|---|---|
| CPU | 2 cores | Prefer 4+ when building all images on the same host |
| RAM | 8 GB | 16 GB recommended for first docker compose … —build (web + backend TypeScript builds) |
| Disk | 20 GB free | Images, Redis AOF, and the local uploads volume |
Build memory
Dockerfiles set NODE_OPTIONS with a raised heap (for example --max-old-space-size=8192 on the web image). Give Docker enough memory so those builds do not OOM; on constrained hosts, build one service at a time or raise the Docker Desktop memory limit.
Required software
- Docker Engine (or Docker Desktop) with **Compose v2** (
docker compose) - Git, to clone this monorepo (images build from the repo root context; app images use Node 24 on
bookworm-slim) - A Supabase project — hosted cloud or
supabase starton the same host. App data and Auth go through Supabase; Compose does not bundle the Supabase multi-container stack in v1.
Network and outbound access
- Browser and operators need reachability to the web and API ports you publish (defaults below).
- The API and workers need outbound HTTPS to Supabase and to any social provider APIs you enable.
- Optional object storage (R2) and email providers need outbound access when configured.
Default ports (self-host Compose)
| Service | Host port (default) | Container | Purpose |
|---|---|---|---|
| Web UI | 4007 | 3000 | SvelteKit Node server — open http://localhost:4007 after Compose is up |
| API | 3000 | 3000 | Express backend — http://localhost:3000 |
| Worker health (integration refresh) | 3091 | 3091 | Optional health probe |
| Redis | not published | 6379 | Cache + BullMQ (debug publish optional) |
CLI auth server (profile cli) | 3111 | 3111 | Device-flow OAuth helper |
CLI Postgres (profile cli) | not published | 5432 | Auth-server state |
Override host maps with OPENQUOK_WEB_HOST_PORT, OPENQUOK_API_HOST_PORT, and related keys in infra/self-host/.env.example.
What Compose provides vs what you provide
| In Compose | Operator-provided |
|---|---|
| Redis | Supabase project (URL + keys); apply OpenQuok migrations |
| Backend API, web, three BullMQ workers | Social OAuth app credentials as needed |
| Local uploads volume | Optional object storage (default: local disk) |
Optional CLI Postgres + agent server (—profile cli) | Reverse proxy / TLS if you expose beyond localhost |