运行你自己的网络监控服务器

在 Linux、Windows 或 Docker 主机上安装无界面版,DeviceShelf 就成为一个本地收集器,用于设备发现、在线率/SLA、基础设施健康、服务检查、心跳、告警、报告、API 自动化、Prometheus 和 MCP。与桌面端和移动端同一份许可证。

监控设备、服务、检查、心跳和在线率历史。 基础设施SNMP、Docker、Proxmox、NAS 健康、syslog 和自定义传感器。 开放REST API、Prometheus 指标、只读访问和本地 MCP。
DeviceShelf server dashboard — 43 devices with vendors, open ports and response times
仪表盘:整个网络一目了然——每台设备都带厂商、类型、开放端口和响应时间。
DeviceShelf server SLA and uptime report
SLA 与在线率报告:长期可用性、响应时间和可导出的凭据。
DeviceShelf server infrastructure monitoring
基础设施监控:SNMP 健康、Docker、Proxmox、syslog 和自定义传感器,尽在一个服务器界面。

服务器版能做什么

常驻监控

无界面全天候 24/7 运行,持续盯着你在意的网络——即使你的桌面关机也照样。

在线率与 SLA 跟踪

按设备和服务的每日可用性,支持重试、依赖关系和 CSV 导出。

告警不泛滥

电子邮件/SMTP、ntfy、Gotify 和 webhook——支持按严重程度路由和摘要合并。

公开状态页

一个可选的只读健康页,任何人都能看到——无需登录。

跨子网发现

支持 SNMP 和多网卡,可触及本地网段之外的网络。

问你的 AI(MCP)

把你的实时清单开放给 AI 助手——严格本地、只读、默认关闭。

报告、状态和备份

在线率百分比、每日可用性柱状图、CSV 导出、公开只读状态页,以及配置的导入/导出。

REST API 和 Prometheus

一切都可通过受令牌保护的 API 编程调用,并提供 `/metrics` 供 Grafana 和自动化使用。

Home Assistant

通过 MQTT 把你的设备发布到 Home Assistant。在线状态、厂商和类型,外加自动化可以响应的网络事件。

Docker 最简单

把这段保存为 docker-compose.yml 并运行 docker compose up -dnetwork_mode: host 让它能看到你的局域网;下面解释这两个 capability。

services:
  deviceshelf:
    image: ghcr.io/wealthwallet/deviceshelf-server:1.9.12
    network_mode: host
    cap_add:
      - NET_RAW              # ARP scan (raw sockets)
      - NET_BIND_SERVICE     # passive DHCP fingerprinting (UDP/67) → Fingerbank
    volumes:
      - ./data:/data         # chown 10001:10001 ./data
    restart: unless-stopped
    # optional: environment: { DEVICESHELF_FINGERBANK_KEY: "<free key from fingerbank.org>" }

为什么需要这两个 capability?DeviceShelf Server 部分依靠设备的 DHCP 指纹来识别,并被动监听 UDP 67 端口。由于容器特意以非特权用户(uid 10001)运行,绑定该系统端口需要范围很窄的 NET_BIND_SERVICE——不需要 root,不需要 NET_ADMIN,只是开放低端口而已。没有它,服务器仍会正常启动,只是没有 DHCP/Fingerbank 识别。NET_RAW 用于 ARP 扫描。

Debian / Ubuntu(.deb)

请从终端安装——不要双击。在 Ubuntu 24.04 上,双击 .deb 会在 App Center 中打开,而它对第三方软件包可能会静默失败。终端会解析依赖并启动 deviceshelf-server 服务:

下载 .deb — amd64(Intel/AMD) 下载 .deb — arm64(Raspberry Pi)

sudo apt install ./DeviceShelf-Server-*.deb

在 ARM(Raspberry Pi、ARM 服务器)上,请使用 -arm64.deb 文件。

macOS Server(.pkg)

下载并打开通用安装包。它会把服务器安装为后台 LaunchDaemon,并在登录后保持运行。仪表盘可在端口 8088 访问;更新会保留服务器数据,并先创建一份经过校验的备份。

下载 macOS 版(通用)

Windows Server / Windows 11

下载 zip,解压,然后双击 install.bat——确认 Windows 管理员提示(UAC)。它会安装并启动 24/7 服务,然后显示仪表盘 URL 和访问令牌并打开仪表盘。用 uninstall.bat 卸载。

下载 Windows 版(amd64)

Windows 版本尚未代码签名,因此 Windows 可能会警告:在 SmartScreen 上点击 更多信息 → 仍要运行;如果开启了 Smart App Control,它会完全阻止未签名的应用,直到我们发布签名版本。解压前,你可以右键 zip → 属性 → 勾选 解除锁定。完整细节在 zip 内的 README 中(7 种语言)。被动 DHCP 指纹在 Windows 上不可用;其余一切——扫描、监控、SNMP、告警、仪表盘、API——都包含在内。

首次启动:访问令牌

首次启动时,服务器会在日志中打印一个自动生成的 API 令牌。取出它,然后在端口 8088 打开 Web 界面并粘贴:

# .deb / systemd:
journalctl -u deviceshelf-server | grep -iA1 auto-generated

# Docker:
docker logs deviceshelf-server | grep -iA1 auto-generated

然后在浏览器中打开 http://<host>:8088 并粘贴令牌。

电子邮件通知(SMTP)

在仪表盘的告警设置里,把你自己的邮箱账户添加为发件人。对于常见服务商——Gmail、Yahoo、Outlook/Hotmail、iCloud、GMX 等——把 SMTP 服务器字段留空;DeviceShelf 会自动检测正确的服务器。由于两步验证,Gmail、Yahoo 和 Outlook 需要应用专用密码(在你邮箱账户的安全设置中创建),而不是你的常规密码。对于任何其他或自托管的服务商,请填写 SMTP 服务器、端口和安全方式。告警随后会通过你的账户发送给你列出的收件人。

外部看门狗

DeviceShelf 的所有告警都在你自己的机器上发出,所以当出问题的正是这台机器时——断电、崩溃、线路中断——一条也送不到你手上。外部看门狗正是为这种情况准备的。在设置 → 外部看门狗中粘贴某个监控服务的心跳网址,DeviceShelf 每 60 秒发送一次心跳;一旦心跳中断,那个服务就会通知你。可以用 Healthchecks.io、UptimeRobot(Heartbeat 监控)、Better Stack、Cronitor,或者你自建的接收端——它们的免费额度都足够一个家庭网络使用。把那边的宽限时间设为心跳间隔的三倍左右,再按一次发送测试心跳确认线路通畅。

这项服务我们刻意不自己运营。看门狗必须比它监视的对象更可靠,而且必须待在你的网络之外——这与 DeviceShelf 的设计初衷正好相反。

就你的网络问你的 AI MCP

服务器可以通过 Model Context Protocol 把你的实时清单开放给 AI 助手——于是你可以问 「现在有什么在线?」「哪些证书快到期了?」「什么有漏洞?」,并从你自己的数据中得到答案。它严格本地:端点在你的服务器内运行,受同一个令牌保护,只能在你的局域网内访问——没有 DeviceShelf 云连接器。默认关闭、只读,并包含在你的许可证中(试用期也能用)。

# enable in /etc/deviceshelf/server.env (or your Docker env):
DEVICESHELF_MCP_ENABLE=true

# then point Claude Desktop at it via the mcp-remote bridge:
#   http://<host>:8088/mcp   (Authorization: Bearer <your-token>)

完整的工具列表和设置见公告。写操作(重命名设备、确认告警、触发扫描)保持关闭,除非你明确选择开启。

连接你的 AI 代理 MCP

先启用 MCP(见上),然后用你的 API 令牌把 AI 客户端指向服务器的 /mcp 端点。替换下面的 <host><token>。大多数客户端原生支持 Streamable HTTP:

Claude Code

claude mcp add --transport http deviceshelf http://<host>:8088/mcp \
  --header "Authorization: Bearer <token>"

Cursor~/.cursor/mcp.json

{ "mcpServers": { "deviceshelf": {
  "url": "http://<host>:8088/mcp",
  "headers": { "Authorization": "Bearer <token>" }
} } }

VS Code (Copilot agent) — .vscode/mcp.json

{ "servers": { "deviceshelf": {
  "type": "http",
  "url": "http://<host>:8088/mcp",
  "headers": { "Authorization": "Bearer <token>" }
} } }

Windsurf~/.codeium/windsurf/mcp_config.json (note: serverUrl)

{ "mcpServers": { "deviceshelf": {
  "serverUrl": "http://<host>:8088/mcp",
  "headers": { "Authorization": "Bearer <token>" }
} } }

Clinecline_mcp_settings.json ("type": "streamableHttp" is required, else it falls back to SSE and fails)

{ "mcpServers": { "deviceshelf": {
  "type": "streamableHttp",
  "url": "http://<host>:8088/mcp",
  "headers": { "Authorization": "Bearer <token>" }
} } }

Gemini CLI~/.gemini/settings.json (note: httpUrl)

{ "mcpServers": { "deviceshelf": {
  "httpUrl": "http://<host>:8088/mcp",
  "headers": { "Authorization": "Bearer <token>" }
} } }

Claude Desktopclaude_desktop_config.json. It has no native static-token remote support, so bridge it with mcp-remote (keep --allow-http for plain http; the token goes in an env var to avoid a Windows arg-quoting bug). Fully quit and relaunch after saving.

{ "mcpServers": { "deviceshelf": {
  "command": "npx",
  "args": ["-y", "mcp-remote", "http://<host>:8088/mcp",
           "--transport", "http-only", "--allow-http",
           "--header", "Authorization:${AUTH}"],
  "env": { "AUTH": "Bearer <token>" }
} } }

ChatGPT 连接器运行在 OpenAI 的云端,无法直接访问局域网服务器。要使用它们,请把服务器放在一个公开的 HTTPS 隧道后面(OpenAI 的 Secure MCP Tunnel、ngrok 或 Cloudflare Tunnel),让它拥有一个 https://…/mcp 地址。若想严格本地,请优先使用上面的客户端。

可用于常驻运行

服务器版现在已是 DeviceShelf 常规产品线的一部分。它仍在快速迭代,但定位很简单:持续运行、把数据留在本地,并使用与桌面端和移动端相同的许可证密钥。本次构建的变更见发布说明

想了解全貌,自托管网络监控介绍了在自己的硬件上运行监控相比云端面板能带来什么。