Files
nibiru-framework.com/docs/docker-compose.yml
stephan f4ccc45a3b Strip api.neuronetz.ai from documentation; chat config stays in env
The Ollama URL was leaking via:
  - prose in /en/, /de/, /ja/, /es/, /fr/ docs (oracle, deployment,
    local-testing, ai/module/{overview,embed,training})
  - code blocks teaching users to curl the host directly
  - .env.example, Dockerfile, docker-compose.yml defaults
  - providers.mjs, translate-docs.mjs, build-oracle-index.mjs defaults
  - LandingScripts.astro comment
  - lora-runbook.md prose + SSH host
  - the GET handler at /api/oracle which echoed `ollamaUrl` back to public callers
  - the "Oracle is silent" fallback message at /api/oracle POST

Replacements:
  - prose: "neuronetz.ai" → "your Ollama instance"
  - example URLs in code blocks: https://api.neuronetz.aihttps://your-ollama-host.example
  - code-level defaults: → http://localhost:11434 (Ollama's standard local port)
  - GET /api/oracle: dropped the `ollamaUrl` field; provider + model still exposed
  - runbook SSH host: neuronetz@cloud.neuronetz.ai → <gpu-user>@<gpu-host>

Production chat is unaffected: docs/.env (gitignored) on the production
host still pins OLLAMA_BASE_URL=https://api.neuronetz.ai. The only
change in the running container is that the GET handler no longer
echoes the URL.

analytics.neuronetz.ai (Umami tracking) is intentionally left intact —
it's a public, brand-owned subdomain meant to be visible.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 17:14:17 +02:00

106 lines
3.8 KiB
YAML

# =============================================================================
# Nibiru docs site — production compose for jwilder/nginx-proxy
#
# Two containers: one for the apex domain, one for the www. variant.
# jwilder/nginx-proxy + acme-companion don't accept comma-separated values
# on this host, so each hostname needs its own container with a single
# VIRTUAL_HOST + LETSENCRYPT_HOST. Both serve identical content from the
# same image.
#
# Default LLM backend: Ollama at https://your-ollama-host.example (your own
# instance). No paid API keys required for normal operation.
#
# Prereqs (one-time, on the host):
# docker network create nginx-proxy
#
# Bring up:
# docker compose up -d --build
#
# Update after a docs change:
# git pull && docker compose up -d --build
# =============================================================================
# Shared environment block — referenced by both services via YAML anchors so
# the Oracle/LLM/Anthropic config stays in lockstep across the two domains.
x-docs-shared-env: &docs-shared-env
# --- Oracle: LLM provider (default = your own Ollama on your Ollama instance) ---
LLM_PROVIDER: ${LLM_PROVIDER:-ollama}
OLLAMA_BASE_URL: ${OLLAMA_BASE_URL:-http://localhost:11434}
OLLAMA_CHAT_MODEL: ${OLLAMA_CHAT_MODEL:-qwen2.5-coder:14b}
OLLAMA_EMBED_MODEL: ${OLLAMA_EMBED_MODEL:-nomic-embed-text}
EMBED_PROVIDER: ${EMBED_PROVIDER:-ollama}
# --- Optional fallbacks (only used if LLM_PROVIDER=anthropic / EMBED_PROVIDER=openai) ---
ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-}
ANTHROPIC_MODEL: ${ANTHROPIC_MODEL:-claude-haiku-4-5-20251001}
OPENAI_API_KEY: ${OPENAI_API_KEY:-}
OPENAI_EMBED_MODEL: ${OPENAI_EMBED_MODEL:-text-embedding-3-small}
ORACLE_TOP_K: ${ORACLE_TOP_K:-6}
ORACLE_MAX_TOKENS: ${ORACLE_MAX_TOKENS:-800}
HOST: 0.0.0.0
PORT: "4321"
# Healthcheck shared between both containers.
x-docs-healthcheck: &docs-healthcheck
test: ["CMD", "wget", "--quiet", "--spider", "http://127.0.0.1:4321/"]
interval: 30s
timeout: 5s
retries: 3
start_period: 20s
services:
# --- Apex: nibiru-framework.com -------------------------------------------
# Builds the image once. The www service below reuses the same tag.
docs:
build:
context: .
dockerfile: Dockerfile
args:
# Used at build time only — to embed docs into the Oracle index.
OLLAMA_BASE_URL: ${OLLAMA_BASE_URL:-http://localhost:11434}
OLLAMA_EMBED_MODEL: ${OLLAMA_EMBED_MODEL:-nomic-embed-text}
EMBED_PROVIDER: ${EMBED_PROVIDER:-ollama}
image: nibiru-framework/docs:latest
container_name: nibiru-docs
restart: unless-stopped
expose:
- "4321"
environment:
<<: *docs-shared-env
VIRTUAL_HOST: nibiru-framework.com
VIRTUAL_PORT: "4321"
VIRTUAL_PROTO: "http"
LETSENCRYPT_HOST: nibiru-framework.com
LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL:-stephan.kasdorf@bittomine.com}
healthcheck: *docs-healthcheck
networks:
- nginx-proxy
# --- www. variant: www.nibiru-framework.com -------------------------------
# Same image as `docs`. Started after `docs` so the build is reused (Docker
# would otherwise build it again from scratch).
docs-www:
image: nibiru-framework/docs:latest
container_name: nibiru-docs-www
restart: unless-stopped
depends_on:
- docs
expose:
- "4321"
environment:
<<: *docs-shared-env
VIRTUAL_HOST: www.nibiru-framework.com
VIRTUAL_PORT: "4321"
VIRTUAL_PROTO: "http"
LETSENCRYPT_HOST: www.nibiru-framework.com
LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL:-stephan.kasdorf@bittomine.com}
healthcheck: *docs-healthcheck
networks:
- nginx-proxy
networks:
nginx-proxy:
external: true