services: surrealdb: image: surrealdb/surrealdb:v2 restart: always pull_policy: always command: start --log info --user ${SURREAL_USER:-root} --pass ${SURREAL_PASSWORD:-root} rocksdb:/mydata/mydatabase.db user: root # Required for bind mounts on Linux environment: - SURREAL_EXPERIMENTAL_GRAPHQL=true ports: - "127.0.0.1:8000:8000" volumes: - ./surreal_data:/mydata open_notebook: image: lfnovo/open_notebook:v1-latest restart: always pull_policy: always depends_on: - surrealdb ports: - "127.0.0.1:8502:8502" - "127.0.0.1:5055:5055" environment: - OPEN_NOTEBOOK_ENCRYPTION_KEY=${OPEN_NOTEBOOK_ENCRYPTION_KEY} - SURREAL_URL=ws://surrealdb:8000/rpc - SURREAL_USER=${SURREAL_USER:-root} - SURREAL_PASSWORD=${SURREAL_PASSWORD:-root} - SURREAL_NAMESPACE=open_notebook - SURREAL_DATABASE=open_notebook - OLLAMA_BASE_URL=http://host.docker.internal:11434 - OPENROUTER_API_KEY=${OPENROUTER_API_KEY} extra_hosts: - "host.docker.internal:host-gateway" volumes: - ./notebook_data:/app/data # Podcast-Prompt-Vorlagen mit expliziter Sprachanweisung ({{ language }}) # und abgeschaltetem Thinking-Modus (/no_think), damit Podcasts in der # eingestellten Sprache erzeugt werden (statt Englisch) und das JSON bei # langen Segmenten nicht durch riesige Reasoning-Blöcke abgeschnitten wird. # Verzeichnis-Mount (nicht Einzeldateien), damit Edits ohne Inode-Probleme # nach einem Container-Neustart greifen. Der Ordner im Image enthält nur # genau diese zwei Vorlagen. - ./prompts/podcast:/app/prompts/podcast:ro