# NotebookLM MCP Server - Docker Compose Configuration
#
# Start: docker-compose up -d
# Stop: docker-compose down
# Logs: docker-compose logs -f
# Rebuild: docker-compose build --no-cache
version: '3.8'
services:
notebooklm-mcp:
build:
context: .
dockerfile: Dockerfile
image: notebooklm-mcp:latest
container_name: notebooklm-mcp
# Port mapping
ports:
- '${HTTP_PORT:-3000}:3000'
- '6080:6080' # noVNC web interface for visual auth
# Persistent data storage
volumes:
# Main data directory (cookies, library, accounts, browser state)
# Using local directory with existing auth data
- ./deploy-package/data:/data
# Optional: mount local library.json for development
# - ./library.json:/data/library.json:ro
# Environment configuration
environment:
# Server settings
- NODE_ENV=production
- HTTP_PORT=3000
- HTTP_HOST=0.0.0.0
# Browser settings
- HEADLESS=true
- STEALTH_ENABLED=true
# Data directory (inside container)
- DATA_DIR=/data
# Optional: NotebookLM URL (if you have a default notebook)
# - NOTEBOOKLM_URL=https://notebooklm.google.com/notebook/YOUR_NOTEBOOK_ID
# Optional: UI locale (fr or en)
- NOTEBOOKLM_UI_LOCALE=fr
# Optional: Auto-login settings
# - AUTO_LOGIN_ENABLED=true
# - AUTO_LOGIN_TIMEOUT_MS=120000
# Resource limits
deploy:
resources:
limits:
memory: 2G
reservations:
memory: 512M
# Restart policy
restart: unless-stopped
# Health check
healthcheck:
test: ['CMD', 'wget', '--no-verbose', '--tries=1', '--spider', 'http://localhost:3000/health']
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
# Logging
logging:
driver: 'json-file'
options:
max-size: '10m'
max-file: '3'
# Named volumes for persistence
volumes:
notebooklm-data:
name: notebooklm-mcp-data