# Example Docker Compose — copy to docker-compose.yml and customise. # Build locally: docker compose build # Pull pre-built: docker compose pull # Run: docker compose up -d services: backend: # ── Pre-built image (pull from registry) ────────────────── image: gitea.kansaigaijin.com/Jamie/Nat20-Notes/backend:latest # ── Or build locally (uncomment below) ──────────────────── # build: # context: ./backend # target: runtime restart: unless-stopped environment: # ── Setup wizard ────────────────────────────────────── # "false" (or omit) to show the wizard on first run. # Set to "true" after onboarding completes. NAT20_ONBOARDING_COMPLETED: "false" # ── Transcription ───────────────────────────────────── # Model size: tiny | base | small | medium | large-v3 NAT20_WHISPER_MODEL: medium # Compute precision: int8 (fastest/least VRAM) # | float16 (more accurate) # | float32 (full precision, slowest) NAT20_WHISPER_COMPUTE_TYPE: int8 # Required for speaker diarization (accept HF gated-model terms first) # NAT20_HF_TOKEN: "hf_..." # ── LLM backend (Ollama — local) ────────────────────── NAT20_OLLAMA_HOST: http://localhost:11434 NAT20_OLLAMA_MODEL: qwen2.5:7b # ── LLM backend (API — OpenAI-compatible) ───────────── # Uncomment these to use a hosted API instead of Ollama # NAT20_API_BASE_URL: https://api.openai.com/v1 # NAT20_API_KEY: "sk-..." # NAT20_API_MODEL: gpt-4o-mini # ── Summarization ───────────────────────────────────── # Target words per chunk. Long transcripts are split into # chunks, each summarized separately. Lower = more LLM # calls but finer granularity. Higher = more context per # chunk but may exceed the model's context window. # Default 2500 works for most models (8K–128K context). # NAT20_CHUNK_WORD_TARGET: "2500" # Campaign context injected into every summarization prompt. # Inline string or path to a file inside the container. # NAT20_WORLD_CONTEXT: "" # NAT20_WORLD_CONTEXT_PATH: /data/campaign-context.txt # Player recap format: story | diary | bullets | custom # NAT20_PLAYER_RECAP_STYLE: story # NAT20_PLAYER_RECAP_CUSTOM_PROMPT: "" volumes: # ── Data persistence ────────────────────────────────── # Option A: Named volume (auto-managed, no host path needed) - app_data:/data # Option B: Host bind mount (replace with your path) # - /mnt/media/dnd-sessions:/data # HuggingFace + Torch model caches (avoid re-downloading) - hf_cache:/root/.cache/huggingface - torch_cache:/root/.cache/torch deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu] ports: - "8000:8000" frontend: image: gitea.kansaigaijin.com/Jamie/Nat20-Notes/frontend:latest # build: ./frontend restart: unless-stopped depends_on: - backend ports: - "8020:8020" volumes: app_data: hf_cache: torch_cache: