80d73d1b74
- redis/client.py: use BlockingConnectionPool.from_url() (fixes 'url' kwarg error) - database/engine_compat.py: patch aiomysql do_ping to satisfy pool_pre_ping - database/session.py: apply engine_compat patch before create_async_engine - requirements.txt: SQLAlchemy 2.0.49 (fixes aiomysql ping() reconnect signature) - .env.example: document NEXUS_REDIS_URL format - scripts/wsl_ensure_venv.sh: create project .venv (PEP 668 safe) - scripts/wsl_start_dev.sh: use .venv python, validate Redis before start - scripts/wsl_integration_smoke.sh: code-only verification mode - scripts/wsl_check_mysql.py / bootstrap_database.py: MySQL setup helpers - scripts/sync_frontend_vendor.py: vendor asset sync utility Co-authored-by: Cursor <cursoragent@cursor.com>
64 lines
2.1 KiB
Bash
64 lines
2.1 KiB
Bash
# Nexus Environment Configuration
|
|
# Copy this file to .env and modify values for your deployment.
|
|
# Or run the web installer at /app/install.html to auto-generate this file.
|
|
#
|
|
# Generate secret keys: openssl rand -hex 32
|
|
|
|
# ── Brand ──
|
|
NEXUS_SYSTEM_NAME=Nexus
|
|
NEXUS_SYSTEM_TITLE=Nexus — 服务器运维管理平台
|
|
|
|
# ── Server ──
|
|
NEXUS_HOST=0.0.0.0
|
|
NEXUS_PORT=8600
|
|
|
|
# ── Deployment (auto-set by installer) ──
|
|
NEXUS_DEPLOY_PATH=/opt/nexus
|
|
# Comma-separated frontend origins for CORS
|
|
NEXUS_CORS_ORIGINS=http://localhost:8600
|
|
# Base URL for Agent heartbeat reporting
|
|
NEXUS_API_BASE_URL=http://localhost:8600
|
|
|
|
# ── Database (MySQL, REQUIRED) ──
|
|
NEXUS_DATABASE_URL=mysql+aiomysql://root:password@127.0.0.1:3306/nexus
|
|
# Pool params: auto-calculated by installer from MySQL max_connections
|
|
# Formula: pool_size = max(20, maxConn*0.4), overflow = max(20, maxConn*0.3)
|
|
# Default below matches MySQL max_connections=400 (160+120=280 max)
|
|
# install wizard will overwrite these with values tuned to your MySQL instance
|
|
NEXUS_DB_POOL_SIZE=160
|
|
NEXUS_DB_MAX_OVERFLOW=120
|
|
|
|
# ── Security (REQUIRED — generate with: openssl rand -hex 32) ──
|
|
NEXUS_SECRET_KEY=change-me-use-openssl-rand-hex-32
|
|
NEXUS_API_KEY=change-me-use-openssl-rand-hex-32
|
|
NEXUS_ENCRYPTION_KEY=
|
|
|
|
# ── Redis (REQUIRED) ──
|
|
NEXUS_REDIS_URL=redis://127.0.0.1:6379/0
|
|
|
|
# ── SSH ──
|
|
NEXUS_SSH_STRICT_HOST_CHECKING=false
|
|
|
|
# ── Alert Thresholds (%) ──
|
|
NEXUS_CPU_ALERT_THRESHOLD=80
|
|
NEXUS_MEM_ALERT_THRESHOLD=80
|
|
NEXUS_DISK_ALERT_THRESHOLD=80
|
|
|
|
# ── Health Check ──
|
|
NEXUS_HEALTH_CHECK_INTERVAL=60
|
|
|
|
# ── Telegram Alerts (optional — configure in Settings UI) ──
|
|
NEXUS_TELEGRAM_BOT_TOKEN=
|
|
NEXUS_TELEGRAM_CHAT_ID=
|
|
|
|
# ── MySQL MCP (@yclenove/mysql-mcp-server — run: python scripts/sync_mysql_mcp_env.py) ──
|
|
# Cursor 从项目根 .env 读取;与 NEXUS_DATABASE_URL 保持一致;默认只读
|
|
# MYSQL_HOST=127.0.0.1
|
|
# MYSQL_PORT=3306
|
|
# MYSQL_USER=root
|
|
# MYSQL_PASSWORD=password
|
|
# MYSQL_DATABASE=nexus
|
|
# MYSQL_READONLY=true # production / MCP read-only
|
|
# MYSQL_READONLY=false # local dev: full DML/DDL via MCP
|
|
# MYSQL_DATABASE_ALLOWLIST=nexus
|