mirror of
https://github.com/lfnovo/open-notebook.git
synced 2026-07-31 18:48:42 +00:00
The worker processes all queued tasks up to a fixed concurrency of 5, which overloads single-GPU / local-LLM setups and triggers rate limits (#893). The surreal-commands worker already accepts --max-tasks; wire it to a new OPEN_NOTEBOOK_WORKER_MAX_TASKS env var (default 5, set 1 for sequential) at every launch point. - Makefile (worker-start, start-all): --max-tasks "$${VAR:-5}" (Make-escaped) - dev-init.sh: POSIX ${VAR:-5} default expansion - supervisord.conf: wrap in sh -c so the shell expands the var (command= does not run through a shell) - docker-compose.yml: commented environment example - .env.example + environment-reference.md: document it, incl. the launch-time sourcing behavior Also fixes a phantom doc entry: SURREAL_COMMANDS_MAX_TASKS was documented but is not read anywhere (the worker's --max-tasks Typer option has no envvar); replaced with the real OPEN_NOTEBOOK_WORKER_MAX_TASKS. Closes #893
61 lines
2.9 KiB
YAML
61 lines
2.9 KiB
YAML
services:
|
|
surrealdb:
|
|
image: surrealdb/surrealdb:v2
|
|
# Credentials default to root:root for a zero-config local setup. Before
|
|
# exposing this instance to a network, set SURREAL_USER / SURREAL_PASSWORD
|
|
# in a .env file (see .env.example) — they are applied here and to the
|
|
# open_notebook service below, so the two always stay in sync.
|
|
# List (exec) form so each interpolated value stays a single argument —
|
|
# a password containing spaces would otherwise be split into several.
|
|
command: ["start", "--log", "info", "--user", "${SURREAL_USER:-root}", "--pass", "${SURREAL_PASSWORD:-root}", "rocksdb:/mydata/mydatabase.db"]
|
|
user: root # Required for bind mounts on Linux
|
|
ports:
|
|
# Bound to localhost only: the open_notebook service reaches this over
|
|
# the internal compose network regardless, so the host port is purely
|
|
# for local debugging (e.g. Surrealist, `surreal sql`). Exposing this
|
|
# on 0.0.0.0 would let anyone who can reach the host connect with the
|
|
# default root:root credentials.
|
|
- "127.0.0.1:8000:8000"
|
|
volumes:
|
|
- ./surreal_data:/mydata
|
|
environment:
|
|
- SURREAL_EXPERIMENTAL_GRAPHQL=true
|
|
restart: always
|
|
pull_policy: always
|
|
|
|
open_notebook:
|
|
image: lfnovo/open_notebook:v1-latest
|
|
ports:
|
|
- "8502:8502" # Web UI
|
|
- "5055:5055" # REST API
|
|
environment:
|
|
# REQUIRED: Change this to your own secret string
|
|
# This encrypts your API keys in the database
|
|
- OPEN_NOTEBOOK_ENCRYPTION_KEY=change-me-to-a-secret-string
|
|
|
|
# Database connection. SURREAL_USER / SURREAL_PASSWORD default to root:root
|
|
# for local use; override them in a .env file before exposing the instance
|
|
# (the same values configure the surrealdb service above).
|
|
- SURREAL_URL=ws://surrealdb:8000/rpc
|
|
- SURREAL_USER=${SURREAL_USER:-root}
|
|
- SURREAL_PASSWORD=${SURREAL_PASSWORD:-root}
|
|
- SURREAL_NAMESPACE=open_notebook
|
|
- SURREAL_DATABASE=open_notebook
|
|
|
|
# OPTIONAL: heavy extraction runtimes, installed on first startup when
|
|
# enabled (downloads are cached on the ./notebook_data volume, so only the
|
|
# first boot is slow). See docs/5-CONFIGURATION/environment-reference.md.
|
|
# - OPEN_NOTEBOOK_ENABLE_DOCLING=true # Docling engine + OCR + image sources (large ML stack)
|
|
# - OPEN_NOTEBOOK_ENABLE_CRAWL4AI=true # local Crawl4AI (bundles a Chromium browser)
|
|
# - CRAWL4AI_API_URL=http://crawl4ai:11235 # use a remote Crawl4AI server instead (no local install)
|
|
|
|
# OPTIONAL: max concurrent background tasks the worker processes at once
|
|
# (default 5). Set to 1 for sequential processing on single-GPU / local
|
|
# LLM setups to avoid overloading the model with parallel requests.
|
|
# - OPEN_NOTEBOOK_WORKER_MAX_TASKS=1
|
|
volumes:
|
|
- ./notebook_data:/app/data
|
|
depends_on:
|
|
- surrealdb
|
|
restart: always
|
|
pull_policy: always
|