运行 7×24 服务器版

用于持续、全天候监控的无界面构建——没有图形界面。可在 Docker 中运行,或安装到 Windows Server / Windows 11、Debian/Ubuntu(.deb)或 Fedora(.rpm)。已包含在你现有的授权中。

测试版
DeviceShelf server dashboard — 43 devices with vendors, open ports and response times
仪表板:一览整个网络——每台设备的厂商、类型、开放端口和响应时间。
DeviceShelf server security findings — exposed Docker API, VNC, SNMP and SMB
安全视图:按优先级排列的发现——暴露的服务、弱配置和默认凭据,各有严重级别。

服务器版能做什么

全天候监控

无界面全天候运行,持续监控你关心的网络——即使桌面端关闭。

正常运行时间与 SLA 跟踪

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

告警不泛滥

邮件/SMTP、ntfy、Gotify 和 webhook——按严重级别路由并批量摘要。

公开状态页

可选的只读健康状态页,任何人都能查看——无需登录。

跨子网发现

支持 SNMP 和多网卡,可覆盖本地网段以外的网络。

询问你的 AI(MCP)

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

Docker 最简单

将以下内容保存为 docker-compose.yml 并运行 docker compose up -dnetwork_mode: host 让它能看到你的局域网;两个 capability 在下方说明:

services:
  deviceshelf:
    image: ghcr.io/wealthwallet/deviceshelf-server:1.5.15
    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 会在应用中心打开,对第三方软件包可能会静默失败。终端会解析依赖并启动 deviceshelf-server 服务:

下载 .deb — amd64(Intel/AMD) 下载 .deb — arm64(树莓派)

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

在 ARM(树莓派、ARM 服务器)上请使用 -arm64.deb 文件。

Windows Server / Windows 11 测试版

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

下载 Windows 版(amd64)

此测试版尚未进行代码签名,因此 Windows 可能会警告:在 SmartScreen 上点击更多信息 → 仍要运行;若智能应用控制已开启,它会完全拦截未签名应用,直到我们发布签名版本。解压前可右键 zip → 属性 → 勾选解除锁定。完整说明见 zip 内的 README(7 种语言)。被动 DHCP 指纹识别在 Windows 上不可用;其余功能——扫描、监控、SNMP、告警、仪表盘、API——均包含在内。

首次启动:访问令牌

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

# .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 服务器、端口和安全性。之后,告警将通过你的账户发送给你列出的收件人。

用 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 地址。对于纯本地部署,建议使用上面的某个客户端。

这是测试版

服务器版是新功能——可能有一些粗糙之处。发现错误或想要某项功能?联系我们——你的反馈会塑造它。本次构建的内容见发布说明