API Monitor 是一个自托管的 API 管理、云资源管理与主机监控面板。
集中管理服务器、DNS、对象存储、PaaS、文件分享等各种分散服务。
- 主机实例监控、实时指标、WebSocket 更新、终端与文件管理
- Docker、进程、网络质量、流量配额与告警
- Cloudflare、阿里云、腾讯云、Koyeb、Fly.io 等云服务管理
- OpenAI 兼容接口、模型调用记录与用量统计
- 可用性监测、公开状态页、自定义域名与首页快捷入口
- 文件中转、TOTP、备份、定时任务、通知模板与系统日志
- 还有很多待定功能>>>>>>
services:
api-monitor:
image: iwvw/api-monitor:latest
container_name: api-monitor
ports:
- "3000:3000"
volumes:
- ./data:/app/data
environment:
- APP_ENV=production
- SECURE_COOKIES=true
- ADMIN_PASSWORD=<CHANGE_ME>
- JWT_SECRET=<CHANGE_ME_TO_A_LONG_RANDOM_STRING>
- ENCRYPTION_KEY=<CHANGE_ME_TO_ANOTHER_LONG_RANDOM_STRING>
restart: unless-stoppeddocker run -d --name api-monitor \
-p 3000:3000 \
-v ./data:/app/data \
-e APP_ENV=production \
-e SECURE_COOKIES=true \
-e ADMIN_PASSWORD=<CHANGE_ME> \
-e JWT_SECRET=<CHANGE_ME_TO_A_LONG_RANDOM_STRING> \
-e ENCRYPTION_KEY=<CHANGE_ME_TO_ANOTHER_LONG_RANDOM_STRING> \
--restart unless-stopped \
iwvw/api-monitor:latest生产模式必须通过 HTTPS 反向代理访问;Secure 会话 Cookie 不会在普通 HTTP 页面中生效。本地开发保持默认的 APP_ENV=development,可直接使用 http://localhost:5173。
npm install
npm run dev常用命令:
npm run lint
npm run build
npm run backend-go:test
npm run backend-go:build可通过环境变量或 .env 文件配置。下表标注了必选与可选变量;未设置时使用默认值。
| 变量 | 必选 | 默认值 | 说明 |
|---|---|---|---|
ADMIN_PASSWORD |
首次部署必选 | - | 初始化管理员密码,仅首次初始化 / 设置密码时使用;一旦设置不可通过环境变量之外的方式修改 |
JWT_SECRET |
生产必选 | - | 启动安全校验项,APP_ENV=production 时要求至少 32 字符的长随机串 |
ENCRYPTION_KEY |
生产必选 | - | 敏感凭据(API 密钥、托管凭据等)AES 加密主密钥,生产要求至少 32 字符;变更会导致已加密数据无法解密,请妥善保管 |
| 变量 | 必选 | 默认值 | 说明 |
|---|---|---|---|
PORT |
可选 | 3000 |
服务端口(GO_PORT 优先于 PORT) |
GO_PORT |
可选 | - | 服务端口覆盖值,优先于 PORT |
GO_HOST |
可选 | 0.0.0.0 |
监听地址 |
APP_ENV |
可选 | development |
development 或 production;生产模式启用更严格的安全默认值(未设置时回退 NODE_ENV) |
NODE_ENV |
可选 | development |
APP_ENV 未设置时的回退值 |
DATA_DIR |
可选 | ./data |
数据目录(SQLite、备份、上传等) |
DB_NAME |
可选 | data.db |
SQLite 数据库文件名,位于 DATA_DIR 下 |
DIST_DIR |
可选 | ./dist |
前端构建产物目录 |
PUBLIC_DIR |
可选 | ./public |
静态资源目录 |
NODE_LEGACY_URL |
可选 | - | 旧 Node sidecar 后端地址(迁移期兼容用,当前版本无需设置) |
| 变量 | 必选 | 默认值 | 说明 |
|---|---|---|---|
SECURE_COOKIES |
可选 | 生产 true,开发 false |
会话 Cookie 是否仅通过 HTTPS 发送 |
ALLOW_LOCAL_SHELL_TASKS |
可选 | 非生产 true |
是否允许后台任务直接执行本机 Shell;生产默认关闭 |
TRUSTED_PROXY_CIDRS |
可选 | - | 允许提供真实客户端 IP 的反向代理 IP/CIDR 列表,逗号分隔 |
CORS_ALLOWED_ORIGINS |
可选 | - | 允许跨域访问 API 的 Origin 白名单,逗号分隔 |
DEMO_MODE |
可选 | false |
设为 true 启用演示模式(禁止修改密码等写操作) |
| 变量 | 默认值 |
|---|---|
CLOUDFLARE_API_BASE_URL |
https://api.cloudflare.com |
ALIYUN_DNS_ENDPOINT / ALIYUN_ECS_ENDPOINT / ALIYUN_SWAS_ENDPOINT / ALIYUN_CMS_ENDPOINT |
阿里云各产品官方端点 |
TENCENT_DNSPOD_ENDPOINT / TENCENT_CVM_ENDPOINT / TENCENT_LIGHTHOUSE_ENDPOINT / TENCENT_MONITOR_ENDPOINT |
腾讯云各产品官方端点 |
FLY_GRAPHQL_URL / FLY_MACHINES_URL / FLY_LOGS_URL |
Fly.io 官方 API 端点 |
KOYEB_API_BASE_URL |
https://app.koyeb.com |
M365_GRAPH_BASE_URL / M365_LOGIN_BASE_URL |
Microsoft 365 官方端点 |
通常无需设置;仅在内网隔离 / 自定义网关 / 镜像代理场景覆盖使用。
| 变量 | 必选 | 默认值 | 说明 |
|---|---|---|---|
API_MONITOR_MEMORY_GUARD |
可选 | 默认开启 | 内存守卫总开关,设为 false/off 关闭 |
API_MONITOR_MEMORY_LIMIT_MB |
可选 | 未设置时取 cgroup 内存限制的 70% | 内存使用上限(MB),超过触发主动 GC |
API_MONITOR_MEMORY_GC_TRIGGER_RATIO |
可选 | 0.85 |
内存使用达到上限的比例(0 < x <= 1)时触发 GC |
API_MONITOR_MEMORY_CHECK_SECONDS |
可选 | 15 |
内存检查周期(秒) |
API_MONITOR_UPTIME_HEARTBEAT_RETENTION_DAYS |
可选 | - | 可用性监测心跳历史保留天数 |
API_MONITOR_AGENT_PRESENCE_MODE |
可选 | - | Agent 在线状态判定模式 |
API_MONITOR_AGENT_OFFLINE_AFTER_MS / API_MONITOR_AGENT_SUSPECT_AFTER_MS / API_MONITOR_AGENT_STARTUP_GRACE_MS / API_MONITOR_AGENT_RECOVERY_SAMPLES |
可选 | - | Agent 在线状态判定调参 |
API_MONITOR_AGENT_METRICS_PERSIST_INTERVAL_MS |
可选 | - | Agent 指标持久化间隔(毫秒) |
API_MONITOR_AGENT_NETWORK_QUALITY_PERSIST_INTERVAL_MS |
可选 | - | Agent 网络质量采集持久化间隔(毫秒) |
| 变量 | 必选 | 说明 |
|---|---|---|
API_MONITOR_SERVER |
Agent 必填 | 后端服务地址 |
API_MONITOR_KEY |
Agent 必填 | Agent 配对密钥 |
API_MONITOR_SERVER_ID |
可选 | 所属主机实例 ID |
API_MONITOR_SING_BOX_BIN |
可选 | sing-box 运行时二进制路径(托管代理用) |
API_MONITOR_DOCKER_REGISTRY_MIRRORS |
可选 | Docker Hub 镜像加速地址,逗号分隔 |
- 后端:Go + SQLite
- 前端:React + Vite + Tailwind CSS + Kumo UI
- Agent:Rust
- 实时通信:Engine.IO / WebSocket