Files
mcphub/docker-compose.coolify.yaml
airano-ir 43fd2201a0 feat(v3.13.0): settings live DB reads, remove Directus/Appwrite, admin stats
Settings fixes:
- MAX_SITES_PER_USER, USER_RATE_LIMIT_PER_MIN/HR now read from DB settings
  table (DB > ENV > default), so dashboard/settings changes apply without
  restart. Sync cache refreshed on every save or delete.
- /api/me reports the live DB value for max_sites_per_user.

Admin improvements:
- Admin users bypass per-user rate limiting entirely (role=admin or ADMIN_EMAILS).
- Admin Overview now shows platform stats: registered users, new users (7d),
  total user sites, available tools.

Plugin cleanup:
- Appwrite and Directus plugins removed from the active registry (8 plugins
  now: WordPress, WooCommerce, WordPress Specialist, Gitea, n8n, Supabase,
  OpenPanel, Coolify). Plugin code is retained for future re-enabling.
- Settings page plugin visibility list updated to match.

Mobile onboarding:
- Stepper steps on narrow viewports stack vertically with correct full border
  and rounded corners on each step.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 23:33:20 +02:00

94 lines
3.0 KiB
YAML

# ===================================
# MCP Hub — Docker Compose (Coolify)
# ===================================
#
# Coolify auto-reads the 'environment' block below and shows
# each variable in the UI for editing. Just deploy and fill values.
#
# Setup:
# 1. New Resource → Docker Compose → point to this file
# 2. Fill environment variables in Coolify UI
# 3. Set domain (e.g., mcp.yourdomain.com)
# 4. Deploy
#
# Source mirror note (2026-04-16):
# Primary repo: github.com/airano-ir/coolify-mcp-hub (public)
# Gitea mirror: gitea.palebluedot.live/atlatl/mcphub-internal (private)
#
# If Coolify cannot reach api.github.com (e.g. cURL error 28 on the
# api.github.com/zen health probe), point the Coolify Source at the
# Gitea mirror instead. Revert the source back to GitHub once the
# GitHub App connection is restored.
# ===================================
services:
mcp-server:
build:
context: .
dockerfile: Dockerfile
container_name: mcphub
restart: unless-stopped
# No 'ports' — Coolify reverse proxy routes traffic via EXPOSE 8000
environment:
- PYTHONUNBUFFERED=1
# === REQUIRED ===
- MASTER_API_KEY=${MASTER_API_KEY}
- ENCRYPTION_KEY=${ENCRYPTION_KEY}
- DASHBOARD_SESSION_SECRET=${DASHBOARD_SESSION_SECRET}
# === OAUTH SOCIAL LOGIN (for user registration) ===
- GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID:-}
- GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET:-}
- GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID:-}
- GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET:-}
- PUBLIC_URL=${PUBLIC_URL:-}
- SESSION_EXPIRY_HOURS=${SESSION_EXPIRY_HOURS:-168}
# === ADMIN SYSTEM (F.4) ===
- ADMIN_EMAILS=${ADMIN_EMAILS:-}
- DISABLE_MASTER_KEY_LOGIN=${DISABLE_MASTER_KEY_LOGIN:-false}
# === LOGGING ===
- LOG_LEVEL=${LOG_LEVEL:-INFO}
# === SITE MANAGEMENT (E.3) ===
- MAX_SITES_PER_USER=${MAX_SITES_PER_USER:-10}
- USER_RATE_LIMIT_PER_MIN=${USER_RATE_LIMIT_PER_MIN:-30}
- USER_RATE_LIMIT_PER_HR=${USER_RATE_LIMIT_PER_HR:-500}
# === ANALYTICS (dashboard SPA) ===
# All four are optional — leave unset to disable that provider's tag.
- UMAMI_WEBSITE_ID=${UMAMI_WEBSITE_ID:-}
- UMAMI_URL=${UMAMI_URL:-}
- OPENPANEL_API_URL=${OPENPANEL_API_URL:-}
- OPENPANEL_CLIENT_ID=${OPENPANEL_CLIENT_ID:-}
# === SITES ===
# Sites are managed via the web dashboard (DB-based).
# After deployment, open the dashboard to add sites.
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:8000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
volumes:
- mcp-data:/app/data # SQLite DB, API keys, OAuth data
- mcp-logs:/app/logs # Audit logs, health reports
- /var/run/docker.sock:/var/run/docker.sock:ro
# Coolify uses GID 988 for Docker socket
group_add:
- "988"
volumes:
mcp-data:
driver: local
mcp-logs:
driver: local