- WP Advanced health_check uses aiohttp to /wp-json/ directly - SEO Bridge admin notice only on Plugins page - SEO Bridge README.md consolidated, changelog complete - OpenPanel Self-Hosted README.md created - Dashboard sidebar uses actual logo.svg - docker-compose: expose instead of ports for Coolify - README: version badge, wordpress_advanced endpoint, env var table - Docs: SSE references fixed to streamable-http Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
116 lines
3.8 KiB
YAML
116 lines
3.8 KiB
YAML
# ===================================
|
|
# MCP Hub — Docker Compose Configuration
|
|
# ===================================
|
|
#
|
|
# After starting:
|
|
# docker compose up -d
|
|
# curl http://localhost:8000/health # verify server is running
|
|
# open http://localhost:8000/dashboard # web dashboard
|
|
#
|
|
# Port mapping:
|
|
# - Coolify: Do NOT use 'ports' — Coolify's reverse proxy handles routing.
|
|
# The 'expose' directive below is sufficient.
|
|
# - Standalone Docker: Uncomment the 'ports' section below to bind to host.
|
|
# ===================================
|
|
|
|
services:
|
|
mcp-server:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: mcphub
|
|
restart: unless-stopped
|
|
|
|
# Container exposes port 8000 to linked services / Coolify proxy
|
|
expose:
|
|
- "8000"
|
|
|
|
# Standalone Docker: Uncomment below to access at http://localhost:8000
|
|
# Coolify: Leave commented — Coolify's reverse proxy handles routing
|
|
# ports:
|
|
# - "8000:8000"
|
|
|
|
# Environment variables
|
|
environment:
|
|
# Master API key
|
|
- MASTER_API_KEY=${MASTER_API_KEY}
|
|
|
|
# Logging
|
|
- LOG_LEVEL=${LOG_LEVEL:-INFO}
|
|
- PYTHONUNBUFFERED=1
|
|
|
|
# === OAuth 2.1 Configuration ===
|
|
# Required for OAuth authentication
|
|
- OAUTH_JWT_SECRET_KEY=${OAUTH_JWT_SECRET_KEY}
|
|
- OAUTH_JWT_ALGORITHM=${OAUTH_JWT_ALGORITHM:-HS256}
|
|
- OAUTH_ACCESS_TOKEN_TTL=${OAUTH_ACCESS_TOKEN_TTL:-3600}
|
|
- OAUTH_REFRESH_TOKEN_TTL=${OAUTH_REFRESH_TOKEN_TTL:-604800}
|
|
- OAUTH_STORAGE_TYPE=${OAUTH_STORAGE_TYPE:-json}
|
|
- OAUTH_STORAGE_PATH=${OAUTH_STORAGE_PATH:-/app/data}
|
|
|
|
# OAuth Authorization Security
|
|
# IMPORTANT: API Key is always required for authorization (OAuth manual mode)
|
|
# Use 'required' (recommended) to enforce API Key authentication
|
|
- OAUTH_AUTH_MODE=${OAUTH_AUTH_MODE:-required}
|
|
# OAUTH_TRUSTED_DOMAINS is deprecated - API Key always required for security
|
|
- OAUTH_BASE_URL=${OAUTH_BASE_URL}
|
|
|
|
# === WordPress Projects ===
|
|
# Configure WordPress sites in Coolify environment variables
|
|
# Format: WORDPRESS_{SITE_ID}_{CONFIG_KEY}
|
|
#
|
|
# Required variables for each site:
|
|
# WORDPRESS_SITE1_URL=https://your-site.com
|
|
# WORDPRESS_SITE1_USERNAME=admin
|
|
# WORDPRESS_SITE1_APP_PASSWORD=xxxx xxxx xxxx xxxx
|
|
#
|
|
# Optional (for WP-CLI tools):
|
|
# WORDPRESS_SITE1_CONTAINER=wordpress_container_name
|
|
# WORDPRESS_SITE1_ALIAS=myblog
|
|
#
|
|
# ⚠️ DO NOT add example values here - configure in Coolify!
|
|
# The server will auto-discover all WORDPRESS_* variables at startup.
|
|
|
|
# === Other Plugins ===
|
|
# Gitea, n8n, Supabase, OpenPanel, Appwrite, and Directus plugins
|
|
# auto-discover their environment variables at startup.
|
|
# Format: {PLUGIN_TYPE}_{SITE_ID}_{CONFIG_KEY}
|
|
# No need to pre-define them here.
|
|
|
|
# Health check
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-qO-", "http://localhost:8000/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
|
|
# Docker socket access for WP-CLI tools
|
|
# Required for: wp_cache_flush, wp_cache_type, wp_transient_*, etc.
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
- mcp-data:/app/data # Persistent storage for API keys
|
|
- mcp-logs:/app/logs # Persistent logs (audit, health)
|
|
|
|
# Grant access to Docker socket by adding user to docker group
|
|
# The GID varies by host (988, 999, 133 are common)
|
|
# Coolify typically uses 988
|
|
group_add:
|
|
- "988" # Docker group GID (adjust if needed)
|
|
|
|
# Network - Coolify will handle this
|
|
# networks:
|
|
# - coolify
|
|
|
|
# Named volumes for persistent data
|
|
volumes:
|
|
mcp-data:
|
|
driver: local
|
|
mcp-logs:
|
|
driver: local
|
|
|
|
# Networks managed by Coolify
|
|
# networks:
|
|
# coolify:
|
|
# external: true
|