Files
lovdata-chat/README-setup.md

2.1 KiB

Lovdata Chat Development Environment

This setup creates a container-per-visitor architecture for the Norwegian legal research chat interface with secure TLS-based Docker communication.

Quick Start

  1. Generate TLS certificates for secure Docker communication:

    ./generate-certs.sh
    
  2. Set up environment variables:

    cp .env.example .env
    # Edit .env with your API keys and MCP server URL
    
  3. Start the services:

    docker-compose up --build
    
  4. Create a session:

    curl http://localhost/api/sessions -X POST
    
  5. Access the chat interface: Open the returned URL in your browser

Architecture

  • session-manager: FastAPI service managing container lifecycles with TLS-secured Docker communication
  • docker-daemon: Docker-in-Docker daemon with TLS certificates for secure container management
  • lovdata-mcp: External Norwegian legal research MCP server (configured via MCP_SERVER env var)
  • caddy: Reverse proxy with dynamic session-based routing

Security Features

  • TLS-secured Docker communication: No Docker socket exposure
  • Container isolation: Each visitor gets dedicated container with resource limits
  • Automatic cleanup: Sessions expire after 60 minutes of inactivity
  • Resource quotas: 4GB RAM, 1 CPU core per container, max 3 concurrent sessions

Development Notes

  • Session data persists in ./sessions/ directory
  • TLS certificates auto-generated for development
  • External MCP server configured via environment variables
  • Health checks ensure service reliability

API Endpoints

  • POST /api/sessions - Create new session
  • GET /api/sessions - List all sessions
  • GET /api/sessions/{id} - Get session info
  • DELETE /api/sessions/{id} - Delete session
  • POST /api/cleanup - Manual cleanup
  • GET /api/health - Health check
  • /{path} - Dynamic proxy routing (with X-Session-ID header)

Environment Variables

# Required
MCP_SERVER=http://your-lovdata-mcp-server:8001

# Optional LLM API keys
OPENAI_API_KEY=your_key
ANTHROPIC_API_KEY=your_key
GOOGLE_API_KEY=your_key