mirror of
https://github.com/hansjone/netx.git
synced 2026-10-09 00:50:46 +08:00
137 lines
6.7 KiB
Text
137 lines
6.7 KiB
Text
NETX_DATABASE_URL=postgresql+psycopg://netx:netx@127.0.0.1:5432/netx
|
||
# Fernet key for managed NE passwords (python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())")
|
||
NETX_CREDENTIAL_SECRET_KEY=
|
||
NETX_NE_CONNECT_MAX_WORKERS=5
|
||
NETX_NE_CONNECT_TIMEOUT_SEC=30
|
||
# Managed NE CLI: max commands per exec request (default 5, hard cap 50). Lab can set 10+.
|
||
NETX_NE_EXEC_MAX_COMMANDS=5
|
||
# Opt-in: show/allow per-NE exec_policy (linux_shell|unrestricted). Default false.
|
||
NETX_NE_EXEC_POLICY_ENABLED=false
|
||
NETX_HOST=127.0.0.1
|
||
NETX_PORT=8890
|
||
NETX_VENDOR=ZTE
|
||
NETX_SOURCE_TYPE=gateway_export_excel
|
||
NETX_PARSER_CONFIG=netx_api/config/parsers/zte_alarm_monitor_v1.yaml
|
||
NETX_OCLAW_ANALYZE_URL=http://127.0.0.1:8787/admin/api/ops-ai/analyze-sync
|
||
NETX_OCLAW_ANALYZE_TOKEN=
|
||
NETX_OCLAW_HEALTH_URL=http://127.0.0.1:8787/admin/api/ops-ai/health
|
||
NETX_UME_BASE_URL=https://10.227.157.143:18014
|
||
NETX_UME_USERNAME=
|
||
NETX_UME_PASSWORD=
|
||
NETX_UME_AUTH_HEADER=accessToken
|
||
NETX_UME_CONTENT_TYPE=application/yang-data+json;charset=UTF-8
|
||
NETX_UME_TOKEN_TTL_S=1800
|
||
NETX_UME_TOKEN_REFRESH_SKEW_S=60
|
||
NETX_UME_TOKEN_PATH=/restconf/operations/zte-security:oauth_token
|
||
NETX_UME_TOKEN_HANDSHAKE_PATH=/restconf/operations/zte-security:oauth_handshake
|
||
NETX_UME_TOKEN_LOGOUT_PATH=/restconf/operations/zte-security:oauth_token
|
||
NETX_UME_NE_PATH=/restconf/data/zte-resources-module:network-elements
|
||
NETX_UME_ALARMS_PATH=/restconf/data/zte-alarms:alarms/alarm-list
|
||
NETX_UME_TOPO_NODES_PATH=/restconf/data/zte-resources-module:TopoNodes
|
||
NETX_UME_TOPOLOGICAL_LINKS_PATH=/restconf/data/zte-resources-module:TopologicalLinks
|
||
NETX_UME_SYNC_TOPOLOGY_AUTO_ENABLED=true
|
||
NETX_UME_SYNC_TOPOLOGY_EVERY_HOURS=24
|
||
# Topology dump: 0 = no read timeout (wait while TCP stays up). Set e.g. 3600 to cap.
|
||
# NETX_UME_TOPOLOGY_TIMEOUT_S=0
|
||
# Reap stuck topology jobs only after this many seconds (default 24h).
|
||
# NETX_UME_SYNC_TOPOLOGY_STALE_RUNNING_SEC=86400
|
||
NETX_UME_SYNC_ALARMS_CURRENT_ENABLED=true
|
||
NETX_UME_SYNC_ALARMS_CURRENT_INTERVAL_S=18000
|
||
NETX_UME_SYNC_ALARMS_CURRENT_SKIP_WHEN_WS=true
|
||
NETX_UME_STARTUP_SYNC_ALARMS_BEFORE_WS=true
|
||
NETX_UME_ALARM_CLEARED_TOMBSTONE_S=300
|
||
NETX_UME_ALARM_WS_ENABLED=true
|
||
NETX_UME_NOTIFICATION_ESTABLISH_PATH=/restconf/operations/zte-notifications:establish-subscription
|
||
NETX_UME_NOTIFICATION_DELETE_PATH=/restconf/operations/zte-notifications:delete-subscription
|
||
NETX_UME_NOTIFICATION_TOPIC=ALARM
|
||
# TLS verify for UME (default false for lab self-signed). Production: set true or pin a CA.
|
||
# NETX_UME_VERIFY_TLS=false
|
||
# Auth (lab defaults: admin/admin123 + data/auth/mcp_token)
|
||
# NETX_AUTH_ENABLED=true
|
||
# Leave NETX_AUTH_SECRET empty to auto-create data/auth/jwt_secret on first boot.
|
||
# NETX_AUTH_SECRET=
|
||
# NETX_AUTH_SECRET_FILE=data/auth/jwt_secret
|
||
# NETX_BOOTSTRAP_ADMIN_USERNAME=admin
|
||
# NETX_BOOTSTRAP_ADMIN_PASSWORD=admin123
|
||
# NETX_API_TOKEN= # MCP: leave empty to auto-read data/auth/mcp_token
|
||
# API docs (/docs, /redoc, /openapi.json); default false. Lab: set true.
|
||
# NETX_DOCS_ENABLED=true
|
||
# NETX_ALLOW_INSECURE_DEFAULTS=false
|
||
# Schema: Alembic auto-upgrades on API start (defaults on). Override only if needed:
|
||
# NETX_ALEMBIC_UPGRADE_ON_START=false
|
||
# NETX_SKIP_LEGACY_STARTUP_DDL=false
|
||
# NETX_SQL_READONLY_DATABASE_URL=postgresql+psycopg://netx_ro:xxx@127.0.0.1:5432/netx
|
||
# Device collectors run inline with the API by default (frontend+backend start is enough).
|
||
# Production split only: NETX_RUN_INLINE_SCHEDULERS=false and run `python -m netx_api.worker`
|
||
# (start_netx.ps1/.sh do this automatically). Worker writes heartbeat for API /metrics.
|
||
# NETX_RUN_INLINE_SCHEDULERS=false
|
||
# NETX_SCHEDULER_HEARTBEAT_PATH=data/runtime/scheduler_heartbeat.json
|
||
# Biz-state dedicated workers (default on with split start): claim queued batches via PG.
|
||
# Rule of thumb: NETX_BIZ_STATE_MAX_CONCURRENT_TASKS * 2 <= NETX_CLI_MAX_CONCURRENT
|
||
# NETX_BIZ_STATE_DEDICATED_WORKERS=true
|
||
# NETX_BIZ_STATE_MAX_CONCURRENT_TASKS=16
|
||
# NETX_BIZ_STATE_WORKER_COLLECT_THREADS=8
|
||
# NETX_BIZ_STATE_PERSIST_WORKERS=4
|
||
# NETX_BIZ_STATE_WORKER_REPLICAS=2
|
||
# NETX_BIZ_STATE_SPOOL_DIR=data/biz_state_spool
|
||
# NETX_BIZ_STATE_PERSIST_EVERY_CMDS=8
|
||
# Parse TextFSM off SSH threads (overlap with next CLI). Default on.
|
||
# NETX_BIZ_STATE_PARSE_ASYNC=true
|
||
# NETX_BIZ_STATE_PARSE_WORKERS=8
|
||
# Dual-lane CLI timeouts (light = shared SSH; heavy = interface/route/MAC etc.):
|
||
# READ = per-command wait; RUN_TIMEOUT_CAP = whole-lane wall clock (often the ~40min abort).
|
||
# Light lane reuses NE collect defaults below (read 120s / cap 600s ≈ 10min).
|
||
# NETX_NE_COLLECT_READ_TIMEOUT_SEC=120
|
||
# NETX_NE_COLLECT_RUN_TIMEOUT_CAP_SEC=600
|
||
# Heavy lane defaults (raise CAP if batches end around 40min as partial/timeout):
|
||
# NETX_BIZ_STATE_HEAVY_READ_TIMEOUT_SEC=1500
|
||
# NETX_BIZ_STATE_HEAVY_RUN_TIMEOUT_CAP_SEC=2400
|
||
# NETX_BIZ_STATE_HEAVY_WORKERS=4
|
||
# --- Multi-user shared-server capacity (defaults in Settings already match these) ---
|
||
# NETX_DB_POOL_SIZE=40
|
||
# NETX_DB_MAX_OVERFLOW=40
|
||
# NETX_DB_POOL_RECYCLE_SEC=1800
|
||
# NETX_DB_POOL_TIMEOUT_SEC=30
|
||
# NETX_CLI_MAX_CONCURRENT=24
|
||
# NETX_CLI_FEATURE_HARD_CAP=32
|
||
# NETX_CLI_TIMEOUT_POOL_WORKERS=24
|
||
# NETX_PORT_TRAFFIC_DISPATCH_WORKERS=6
|
||
# NETX_NE_CONNECT_MAX_WORKERS=8
|
||
# NETX_NE_COLLECT_MAX_WORKERS=8
|
||
# NETX_NE_COLLECT_RUN_TIMEOUT_CAP_SEC=600
|
||
# NETX_NE_COLLECT_MAX_OUTPUT_BYTES=8388608
|
||
# NETX_WEBCRT_MAX_SESSIONS=40
|
||
# NETX_WEBCRT_KEEPALIVE_SEC=30
|
||
# NETX_WEBCRT_OUT_QUEUE_MAX=2000
|
||
# NETX_WEBCRT_SESSION_LOG_MAX_BYTES=4194304
|
||
# NETX_WEBCRT_SFTP_MAX_FILE_BYTES=536870912
|
||
# NETX_WEBCRT_SFTP_LIST_MAX_ENTRIES=5000
|
||
# NETX_AUDIT_ASYNC=true
|
||
# NETX_AUDIT_SAMPLE_N=5
|
||
# NETX_AUDIT_QUEUE_MAX=5000
|
||
# NETX_OCLAW_FORWARD_QUEUE_MAX=5000
|
||
# NETX_OCLAW_FORWARD_MAX_RETRIES=3
|
||
# NETX_UME_RAW_JSON_MAX_BYTES=65536
|
||
# NETX_NE_COLLECTION_KEEP_DAYS=14
|
||
# Optional: serve built UI from API (same origin). Default web/dist; empty disables.
|
||
# NETX_UI_DIST_DIR=web/dist
|
||
# --- Windows packaging only (Linux ignores; always use NETX_DATABASE_URL) ---
|
||
# NETX_DB_MODE=external
|
||
# bundled | external; unset = external (compatible with existing deploys)
|
||
# NETX_BUNDLED_PG_PORT=15432
|
||
# NETX_BUNDLED_PG_DATA_DIR=
|
||
# Update sources: forgejo primary + github fallback (recommended for internal Forgejo)
|
||
# NETX_UPDATE_FORGEJO_URL=https://git.example.com/api/v1/repos/ops/netx/releases/latest
|
||
# NETX_UPDATE_SOURCES=forgejo,github
|
||
# NETX_UPDATE_GITHUB_REPO=hansjone/netx
|
||
# NETX_UPDATE_URL=https://cdn.example.com/netx/manifest.json
|
||
# NETX_UPDATE_FALLBACK_URL=
|
||
# NETX_UPDATE_TOKEN=
|
||
# NETX_UPDATE_CHANNEL=stable
|
||
# NETX_UPDATE_AUTO=false
|
||
# When true: tray/scheduled task may download+apply zip updates silently.
|
||
# Heavier fleets: raise CLI/DB together; also ensure Postgres max_connections and bastion session limits.
|
||
# One-click start (recommended): .\scripts\start_netx.ps1 -Background -WithWeb
|
||
# -> API + netx_api.worker + N× netx_api.biz_state_worker + optional Vite
|
||
# Legacy single-process: add -InlineSchedulers
|
||
# Stop all: .\scripts\stop_netx.ps1
|