e99cacae8b
- Add JWT Bearer token validation to Rust API via OIDC provider JWKS with automatic key rotation and 1-hour cache - Remove x-api-key auth support and built-in web UI from furumi-web-player, leaving it as a pure API server - Add /auth/token endpoint to Node player server to expose OIDC access tokens to the frontend - Move Node player auth endpoints from /api/* to /auth/* to avoid path conflicts with Rust API - Add static file serving to Node Express server for production single-container deployment - Fix SameSite=Strict cookie issue breaking OIDC redirect flow (use Lax) - Add Dockerfile.node-player with multi-stage Node.js build - Add CI workflows for node-player Docker image (dev + release) - Optimize Rust Dockerfiles with dependency caching layer - Update docker-compose with OIDC env vars and OLLAMA_MODEL support - Cherry-pick agent LLM client fixes from DEV branch Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
69 lines
2.1 KiB
YAML
69 lines
2.1 KiB
YAML
services:
|
|
db:
|
|
image: postgres:17-alpine
|
|
container_name: furumi-db
|
|
environment:
|
|
POSTGRES_DB: ${POSTGRES_DB:-furumi}
|
|
POSTGRES_USER: ${POSTGRES_USER:-furumi}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-furumi}
|
|
volumes:
|
|
- pgdata:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U furumi -d furumi"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
agent:
|
|
build:
|
|
context: ..
|
|
dockerfile: docker/Dockerfile.agent
|
|
container_name: furumi-agent
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
ports:
|
|
- "8090:8090"
|
|
environment:
|
|
RUST_LOG: info
|
|
FURUMI_AGENT_DATABASE_URL: "postgres://${POSTGRES_USER:-furumi}:${POSTGRES_PASSWORD:-furumi}@db:5432/${POSTGRES_DB:-furumi}"
|
|
FURUMI_AGENT_INBOX_DIR: "/inbox"
|
|
FURUMI_AGENT_STORAGE_DIR: "/storage"
|
|
FURUMI_AGENT_OLLAMA_URL: "${OLLAMA_URL:-http://host.docker.internal:11434}"
|
|
FURUMI_AGENT_OLLAMA_MODEL: "${OLLAMA_MODEL:-qwen3:14b}"
|
|
FURUMI_AGENT_OLLAMA_AUTH: "${OLLAMA_AUTH:-CHANGE-ME}"
|
|
FURUMI_PLAYER_BIND: "0.0.0.0:8090"
|
|
FURUMI_AGENT_POLL_INTERVAL_SECS: 5
|
|
volumes:
|
|
- ./inbox:/inbox
|
|
- ./storage:/storage
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
restart: always
|
|
|
|
web-player:
|
|
build:
|
|
context: ..
|
|
dockerfile: docker/Dockerfile.web-player
|
|
container_name: furumi-web-player
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
ports:
|
|
- "8085:8085"
|
|
environment:
|
|
FURUMI_PLAYER_DATABASE_URL: "postgres://${POSTGRES_USER:-furumi}:${POSTGRES_PASSWORD:-furumi}@db:5432/${POSTGRES_DB:-furumi}"
|
|
FURUMI_PLAYER_STORAGE_DIR: "/storage"
|
|
FURUMI_PLAYER_BIND: "0.0.0.0:8085"
|
|
FURUMI_PLAYER_OIDC_ISSUER_URL: "${OIDC_ISSUER_URL}"
|
|
FURUMI_PLAYER_OIDC_CLIENT_ID: "${OIDC_CLIENT_ID}"
|
|
FURUMI_PLAYER_OIDC_CLIENT_SECRET: "${OIDC_CLIENT_SECRET}"
|
|
FURUMI_PLAYER_OIDC_REDIRECT_URL: "${OIDC_REDIRECT_URL}"
|
|
FURUMI_PLAYER_OIDC_SESSION_SECRET: "${OIDC_SESSION_SECRET}"
|
|
volumes:
|
|
- ./storage:/storage
|
|
restart: always
|
|
|
|
volumes:
|
|
pgdata:
|