Dokploy

Open Notebook

Open Notebook with SurrealDB for data storage and AI-powered features.

Open Notebook logo

Configuration

version: "3.8"
services:
  surrealdb:
    image: surrealdb/surrealdb:v2
    ports:
      - 8000
    volumes:
      - ../files/surreal_data:/mydata
    command: start --user root --pass root rocksdb:/mydata/mydatabase.db
    pull_policy: always
    user: root

  open_notebook:
    image: lfnovo/open_notebook:latest
    ports:
      - 8502
    environment:
      - SURREAL_URL=ws://surrealdb:8000/rpc
      - SURREAL_USER=root
      - SURREAL_PASSWORD=root
      - SURREAL_NAMESPACE=open_notebook
      - SURREAL_DATABASE=staging
    depends_on:
      - surrealdb
    pull_policy: always
    volumes:
      - ../files/notebook_data:/app/data
[variables]
main_domain = "${domain}"
surrealdb_port = "8000"
open_notebook_port = "8502"

[config]

[[config.domains]]
serviceName = "surrealdb"
port = 8000
host = "surrealdb-${main_domain}"

[[config.domains]]
serviceName = "open_notebook"
port = 8502
host = "${main_domain}"

[config.env]
SURREAL_URL = "ws://surrealdb:8000/rpc"
SURREAL_USER = "root"
SURREAL_PASSWORD = "root"
SURREAL_NAMESPACE = "open_notebook"
SURREAL_DATABASE = "staging"
# OPEN_NOTEBOOK_PASSWORD = "" # Uncomment and set to protect Open Notebook with a password for public hosting
# OPENAI_API_KEY = "" # API key for OpenAI integration
# ANTHROPIC_API_KEY = "" # API key for Anthropic integration
# GOOGLE_API_KEY = "" # API key for Google Gemini (best for long context and podcast generation)
# VERTEX_PROJECT = "" # Google Cloud project name for Vertex AI
# GOOGLE_APPLICATION_CREDENTIALS = "./google-credentials.json" # Path to Google credentials file
# VERTEX_LOCATION = "us-east5" # Vertex AI location
# MISTRAL_API_KEY = "" # API key for Mistral integration
# DEEPSEEK_API_KEY = "" # API key for DeepSeek integration
# OLLAMA_API_BASE = "http://10.20.30.20:11434" # Base URL for Ollama API
# OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1" # Base URL for OpenRouter
# OPENROUTER_API_KEY = "" # API key for OpenRouter
# GROQ_API_KEY = "" # API key for Groq integration
# XAI_API_KEY = "" # API key for xAI integration
# ELEVENLABS_API_KEY = "" # API key for ElevenLabs (used for podcast feature)
# VOYAGE_API_KEY = "" # API key for Voyage AI
# OPENAI_COMPATIBLE_BASE_URL = "http://localhost:1234/v1" # Base URL for OpenAI-compatible endpoints
# OPENAI_COMPATIBLE_API_KEY = "" # API key for OpenAI-compatible endpoints
# AZURE_OPENAI_API_KEY = "" # API key for Azure OpenAI
# AZURE_OPENAI_ENDPOINT = "" # Endpoint for Azure OpenAI
# AZURE_OPENAI_API_VERSION = "2024-12-01-preview" # API version for Azure OpenAI
# AZURE_OPENAI_DEPLOYMENT_NAME = "" # Deployment name for Azure OpenAI
# LANGCHAIN_TRACING_V2 = "true" # Enable LangChain tracing for debugging
# LANGCHAIN_ENDPOINT = "https://api.smith.langchain.com" # LangChain endpoint for debugging
# LANGCHAIN_API_KEY = "" # API key for LangChain debugging
# LANGCHAIN_PROJECT = "Open Notebook" # LangChain project name
# FIRECRAWL_API_KEY = "" # API key for Firecrawl (obtain at https://firecrawl.dev/)
# JINA_API_KEY = "" # API key for Jina (obtain at https://jina.ai/)

[[config.mounts]]
filePath = "/files/surreal_data"
content = ""

[[config.mounts]]
filePath = "/files/notebook_data"
content = ""

Base64

To import this template in Dokploy: create a Compose service → AdvancedBase64 import and paste the content below:

ewogICJjb21wb3NlIjogInZlcnNpb246IFwiMy44XCJcbnNlcnZpY2VzOlxuICBzdXJyZWFsZGI6XG4gICAgaW1hZ2U6IHN1cnJlYWxkYi9zdXJyZWFsZGI6djJcbiAgICBwb3J0czpcbiAgICAgIC0gODAwMFxuICAgIHZvbHVtZXM6XG4gICAgICAtIC4uL2ZpbGVzL3N1cnJlYWxfZGF0YTovbXlkYXRhXG4gICAgY29tbWFuZDogc3RhcnQgLS11c2VyIHJvb3QgLS1wYXNzIHJvb3Qgcm9ja3NkYjovbXlkYXRhL215ZGF0YWJhc2UuZGJcbiAgICBwdWxsX3BvbGljeTogYWx3YXlzXG4gICAgdXNlcjogcm9vdFxuXG4gIG9wZW5fbm90ZWJvb2s6XG4gICAgaW1hZ2U6IGxmbm92by9vcGVuX25vdGVib29rOmxhdGVzdFxuICAgIHBvcnRzOlxuICAgICAgLSA4NTAyXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICAtIFNVUlJFQUxfVVJMPXdzOi8vc3VycmVhbGRiOjgwMDAvcnBjXG4gICAgICAtIFNVUlJFQUxfVVNFUj1yb290XG4gICAgICAtIFNVUlJFQUxfUEFTU1dPUkQ9cm9vdFxuICAgICAgLSBTVVJSRUFMX05BTUVTUEFDRT1vcGVuX25vdGVib29rXG4gICAgICAtIFNVUlJFQUxfREFUQUJBU0U9c3RhZ2luZ1xuICAgIGRlcGVuZHNfb246XG4gICAgICAtIHN1cnJlYWxkYlxuICAgIHB1bGxfcG9saWN5OiBhbHdheXNcbiAgICB2b2x1bWVzOlxuICAgICAgLSAuLi9maWxlcy9ub3RlYm9va19kYXRhOi9hcHAvZGF0YVxuIiwKICAiY29uZmlnIjogIlt2YXJpYWJsZXNdXG5tYWluX2RvbWFpbiA9IFwiJHtkb21haW59XCJcbnN1cnJlYWxkYl9wb3J0ID0gXCI4MDAwXCJcbm9wZW5fbm90ZWJvb2tfcG9ydCA9IFwiODUwMlwiXG5cbltjb25maWddXG5cbltbY29uZmlnLmRvbWFpbnNdXVxuc2VydmljZU5hbWUgPSBcInN1cnJlYWxkYlwiXG5wb3J0ID0gODAwMFxuaG9zdCA9IFwic3VycmVhbGRiLSR7bWFpbl9kb21haW59XCJcblxuW1tjb25maWcuZG9tYWluc11dXG5zZXJ2aWNlTmFtZSA9IFwib3Blbl9ub3RlYm9va1wiXG5wb3J0ID0gODUwMlxuaG9zdCA9IFwiJHttYWluX2RvbWFpbn1cIlxuXG5bY29uZmlnLmVudl1cblNVUlJFQUxfVVJMID0gXCJ3czovL3N1cnJlYWxkYjo4MDAwL3JwY1wiXG5TVVJSRUFMX1VTRVIgPSBcInJvb3RcIlxuU1VSUkVBTF9QQVNTV09SRCA9IFwicm9vdFwiXG5TVVJSRUFMX05BTUVTUEFDRSA9IFwib3Blbl9ub3RlYm9va1wiXG5TVVJSRUFMX0RBVEFCQVNFID0gXCJzdGFnaW5nXCJcbiMgT1BFTl9OT1RFQk9PS19QQVNTV09SRCA9IFwiXCIgIyBVbmNvbW1lbnQgYW5kIHNldCB0byBwcm90ZWN0IE9wZW4gTm90ZWJvb2sgd2l0aCBhIHBhc3N3b3JkIGZvciBwdWJsaWMgaG9zdGluZ1xuIyBPUEVOQUlfQVBJX0tFWSA9IFwiXCIgIyBBUEkga2V5IGZvciBPcGVuQUkgaW50ZWdyYXRpb25cbiMgQU5USFJPUElDX0FQSV9LRVkgPSBcIlwiICMgQVBJIGtleSBmb3IgQW50aHJvcGljIGludGVncmF0aW9uXG4jIEdPT0dMRV9BUElfS0VZID0gXCJcIiAjIEFQSSBrZXkgZm9yIEdvb2dsZSBHZW1pbmkgKGJlc3QgZm9yIGxvbmcgY29udGV4dCBhbmQgcG9kY2FzdCBnZW5lcmF0aW9uKVxuIyBWRVJURVhfUFJPSkVDVCA9IFwiXCIgIyBHb29nbGUgQ2xvdWQgcHJvamVjdCBuYW1lIGZvciBWZXJ0ZXggQUlcbiMgR09PR0xFX0FQUExJQ0FUSU9OX0NSRURFTlRJQUxTID0gXCIuL2dvb2dsZS1jcmVkZW50aWFscy5qc29uXCIgIyBQYXRoIHRvIEdvb2dsZSBjcmVkZW50aWFscyBmaWxlXG4jIFZFUlRFWF9MT0NBVElPTiA9IFwidXMtZWFzdDVcIiAjIFZlcnRleCBBSSBsb2NhdGlvblxuIyBNSVNUUkFMX0FQSV9LRVkgPSBcIlwiICMgQVBJIGtleSBmb3IgTWlzdHJhbCBpbnRlZ3JhdGlvblxuIyBERUVQU0VFS19BUElfS0VZID0gXCJcIiAjIEFQSSBrZXkgZm9yIERlZXBTZWVrIGludGVncmF0aW9uXG4jIE9MTEFNQV9BUElfQkFTRSA9IFwiaHR0cDovLzEwLjIwLjMwLjIwOjExNDM0XCIgIyBCYXNlIFVSTCBmb3IgT2xsYW1hIEFQSVxuIyBPUEVOUk9VVEVSX0JBU0VfVVJMID0gXCJodHRwczovL29wZW5yb3V0ZXIuYWkvYXBpL3YxXCIgIyBCYXNlIFVSTCBmb3IgT3BlblJvdXRlclxuIyBPUEVOUk9VVEVSX0FQSV9LRVkgPSBcIlwiICMgQVBJIGtleSBmb3IgT3BlblJvdXRlclxuIyBHUk9RX0FQSV9LRVkgPSBcIlwiICMgQVBJIGtleSBmb3IgR3JvcSBpbnRlZ3JhdGlvblxuIyBYQUlfQVBJX0tFWSA9IFwiXCIgIyBBUEkga2V5IGZvciB4QUkgaW50ZWdyYXRpb25cbiMgRUxFVkVOTEFCU19BUElfS0VZID0gXCJcIiAjIEFQSSBrZXkgZm9yIEVsZXZlbkxhYnMgKHVzZWQgZm9yIHBvZGNhc3QgZmVhdHVyZSlcbiMgVk9ZQUdFX0FQSV9LRVkgPSBcIlwiICMgQVBJIGtleSBmb3IgVm95YWdlIEFJXG4jIE9QRU5BSV9DT01QQVRJQkxFX0JBU0VfVVJMID0gXCJodHRwOi8vbG9jYWxob3N0OjEyMzQvdjFcIiAjIEJhc2UgVVJMIGZvciBPcGVuQUktY29tcGF0aWJsZSBlbmRwb2ludHNcbiMgT1BFTkFJX0NPTVBBVElCTEVfQVBJX0tFWSA9IFwiXCIgIyBBUEkga2V5IGZvciBPcGVuQUktY29tcGF0aWJsZSBlbmRwb2ludHNcbiMgQVpVUkVfT1BFTkFJX0FQSV9LRVkgPSBcIlwiICMgQVBJIGtleSBmb3IgQXp1cmUgT3BlbkFJXG4jIEFaVVJFX09QRU5BSV9FTkRQT0lOVCA9IFwiXCIgIyBFbmRwb2ludCBmb3IgQXp1cmUgT3BlbkFJXG4jIEFaVVJFX09QRU5BSV9BUElfVkVSU0lPTiA9IFwiMjAyNC0xMi0wMS1wcmV2aWV3XCIgIyBBUEkgdmVyc2lvbiBmb3IgQXp1cmUgT3BlbkFJXG4jIEFaVVJFX09QRU5BSV9ERVBMT1lNRU5UX05BTUUgPSBcIlwiICMgRGVwbG95bWVudCBuYW1lIGZvciBBenVyZSBPcGVuQUlcbiMgTEFOR0NIQUlOX1RSQUNJTkdfVjIgPSBcInRydWVcIiAjIEVuYWJsZSBMYW5nQ2hhaW4gdHJhY2luZyBmb3IgZGVidWdnaW5nXG4jIExBTkdDSEFJTl9FTkRQT0lOVCA9IFwiaHR0cHM6Ly9hcGkuc21pdGgubGFuZ2NoYWluLmNvbVwiICMgTGFuZ0NoYWluIGVuZHBvaW50IGZvciBkZWJ1Z2dpbmdcbiMgTEFOR0NIQUlOX0FQSV9LRVkgPSBcIlwiICMgQVBJIGtleSBmb3IgTGFuZ0NoYWluIGRlYnVnZ2luZ1xuIyBMQU5HQ0hBSU5fUFJPSkVDVCA9IFwiT3BlbiBOb3RlYm9va1wiICMgTGFuZ0NoYWluIHByb2plY3QgbmFtZVxuIyBGSVJFQ1JBV0xfQVBJX0tFWSA9IFwiXCIgIyBBUEkga2V5IGZvciBGaXJlY3Jhd2wgKG9idGFpbiBhdCBodHRwczovL2ZpcmVjcmF3bC5kZXYvKVxuIyBKSU5BX0FQSV9LRVkgPSBcIlwiICMgQVBJIGtleSBmb3IgSmluYSAob2J0YWluIGF0IGh0dHBzOi8vamluYS5haS8pXG5cbltbY29uZmlnLm1vdW50c11dXG5maWxlUGF0aCA9IFwiL2ZpbGVzL3N1cnJlYWxfZGF0YVwiXG5jb250ZW50ID0gXCJcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuZmlsZVBhdGggPSBcIi9maWxlcy9ub3RlYm9va19kYXRhXCJcbmNvbnRlbnQgPSBcIlwiIgp9

Tags

notebook, ai, database, surrealdb


Version: latest

On this page