网络流量可视化分析面板Neko Master

简介

什么是 Neko Master ?

Neko Master 是一个开源的网络流量可视化分析面板,专为现代网关环境设计。它可以帮助用户清晰地查看和分析网络流量,支持 Clash/MihomoSurge 等多种网关类型。

Neko(ねこ)在日语中意为”猫”,发音为 /ˈneɪkoʊ/。就像猫一样,Neko Master 安静而精确地观察着网络流量。它是一个轻量级的分析仪表板,专为现代网关环境而设计。

主要特点

  • 实时监控:通过 WebSocket 实时采集流量数据,毫秒级延迟
  • 趋势分析:多维度流量趋势展示,支持 30 分钟/ 1 小时/ 24 小时时间窗口
  • 域名分析:查看每个域名的流量、关联 IP 和连接数
  • IP 分析:显示 ASN 信息、地理位置和关联域名
  • 代理节点统计:展示每个代理节点的流量分布和连接数
  • 多网关支持:同时监控多个 OpenClash 后端实例
  • PWA 支持:可安装为桌面应用,获得原生体验
  • 深色模式:支持浅色/深色/系统主题切换
  • 国际化:支持中英文无缝切换
  • Agent 部署:支持在远程设备(OpenWrtLinuxmacOS)上部署采集代理
  • ClickHouse 可选:支持大规模数据集的快速聚合查询
  • 开源免费:基于 MIT 协议开源,可免费使用和修改

应用场景

  • 家庭网络监控:实时监控家庭网关流量,了解各设备网络使用情况
  • 代理节点管理:查看各代理节点的流量分布,优化节点选择
  • 域名流量分析:分析哪些域名占用最多带宽,识别异常流量
  • 开发者调试:开发人员可以快速查看和调试网络请求
  • 多网关统一管理:同时监控多个网关实例,集中管理

Neko Master 是一个轻量级、现代化的网络流量分析工具,让网络流量可视化变得简单优雅。

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 neko-master,选择第二个 foru17/neko-master,版本选择 latest

本文写作时,latest 版本对应为最新 1.3.6 版本

docker 文件夹中,创建一个新文件夹 neko-master,并在其中建一个子文件夹 data

文件夹 装载路径 说明
docker/neko-master/data /app/data 存放 SQLite 数据库和配置文件
docker/neko-master/geoip /app/data/geoip 本地 MMDB 地理 IP 数据库(可选)

提示GeoIP 数据库文件需要从外部下载,推荐来源:https://github.com/P3TERX/GeoLite.mmdb
需要的文件:GeoLite2-City.mmdb(必需)、GeoLite2-ASN.mmdb(必需)、GeoLite2-Country.mmdb(可选)

端口

本地端口不冲突就行,不确定的话可以用命令查一下

1
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
3500 3000
3501 3001
3502 3002

端口说明

  • 3500Web UI 访问端口(必须)
  • 3501API 端口(可选,前端默认走同源 /api,一般无需对外开放)
  • 3502WebSocket 实时推送端口(可选,反向代理转发实时数据时需要)

环境

可变
NODE_ENV production(固定值)
COOKIE_SECRET 至少 32 位的随机字符串(推荐),可用 openssl rand -hex 32 生成
DB_PATH /app/data/stats.db(默认值)
GEOIP_LOOKUP_PROVIDER onlinelocal(可选)

环境变量说明

  • COOKIE_SECRET 用于会话 Cookie 签名,建议使用 openssl rand -hex 32 生成固定值,否则重启后可能导致会话失效
  • GEOIP_LOOKUP_PROVIDER 用于设置 IP 地理位置查询来源,online 为在线接口(默认),local 为本地 MMDB 文件

更多的环境变量请参考官方说明: https://github.com/foru17/neko-master?tab=readme-ov-file#environment-variables-deployment

docker cli 安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 新建文件夹 neko-master 和 子目录
mkdir -p /volume1/docker/neko-master/{data,geoip}

# 进入 neko-master 目录
cd /volume1/docker/neko-master

# 使用 openssl rand -hex 32 生成至少32位的随机字符串 COOKIE_SECRET

# 最小化安装(仅暴露 3000 端口)
docker run -d \
--name=neko-master \
--restart=unless-stopped \
-p 3500:3000 \
-v $(pwd)/data:/app/data \
-e NODE_ENV=production \
-e COOKIE_SECRET="5e12f68fa41c6ebbed133227f26819ef549353b091dc44e4070e6a2a28b32f6d" \
foru17/neko-master:latest

如果需要 WebSocket 实时推送(推荐配合反向代理使用):

1
2
3
4
5
6
7
8
9
10
11
# 实时 WebSocket(推荐使用反向代理)
docker run -d \
--name=neko-master \
--restart=unless-stopped \
-p 3000:3000 \
-p 3002:3002 \
-v $(pwd)/data:/app/data \
-v $(pwd)/geoip:/app/data/geoip:ro \
-e NODE_ENV=production \
-e COOKIE_SECRET="5e12f68fa41c6ebbed133227f26819ef549353b091dc44e4070e6a2a28b32f6d" \
foru17/neko-master:latest

docker-compose 安装

将下面的内容保存为 docker-compose.yml 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
version: '3.8'

services:
neko-master:
image: foru17/neko-master:latest
container_name: neko-master
restart: unless-stopped
ports:
- "3500:3000" # Web UI
- "3502:3002" # WebSocket(可选,反向代理转发实时数据时需要)
volumes:
- ./data:/app/data # 数据持久化
- ./geoip:/app/data/geoip:ro # 本地 MMDB 数据库(可选)
environment:
- NODE_ENV=production
- DB_PATH=/app/data/stats.db
- COOKIE_SECRET=5e12f68fa41c6ebbed133227f26819ef549353b091dc44e4070e6a2a28b32f6d # 至少 32 位随机字符串
# - GEOIP_LOOKUP_PROVIDER=local # 使用本地 MMDB 查询

然后通过 SSH 登录到您的群晖,执行下面的命令:

1
2
3
4
5
6
7
8
9
10
11
12
# 新建文件夹 neko-master 和 子目录
mkdir -p /volume1/docker/neko-master/{data,geoip}

# 进入 neko-master 目录
cd /volume1/docker/neko-master

# 使用 openssl rand -hex 32 生成至少32位的随机字符串 COOKIE_SECRET

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

提示:如果只需要基本功能,仅暴露 3500 端口即可。如果 WebSocket 未路由,应用会自动降级为 HTTP 轮询(约 5 秒刷新)。为了获得完整的实时体验,建议通过反向代理将 /_cm_ws 路径路由到 3502 端口。

运行

在浏览器中访问 http://<群晖IP>:3500

  1. 首次访问会弹出网关配置对话框
  2. 填写网关连接信息:
    • Name:自定义名称(如”mihomo”)
    • Type:选择网关类型(Clash/MihomoSurge
    • Host:网关后端地址(如 192.168.0.199
    • Port:网关后端端口(如 9090
    • Token:如果网关设置了 Secret 则填写,否则留空
  3. 点击”添加后端”保存配置

按照 群晖上用Docker部署Mihomo实录config.yaml 中的设置

1
2
external-controller: 0.0.0.0:9090  
secret: "123456" # 可选,用于设置访问密码

如果设置无误,会看到连接成功的提示,并进入主界面

稍等一些就会有数据了

💡 获取网关地址:进入网关控制面板(如 Clash Verge)→ 启用”外部控制”→ 复制监听地址和 API 秘钥

注意事项

  1. 数据持久化:务必挂载 ./data 目录到宿主机,否则容器重启后数据会丢失
  2. Cookie 密钥:生产环境必须设置固定的 COOKIE_SECRET,否则重启后会话可能失效
  3. 端口冲突:如果默认端口被占用,可通过 .env 文件修改 WEB_EXTERNAL_PORTAPI_EXTERNAL_PORTWS_EXTERNAL_PORT
  4. GeoIP 数据库:MMDB 文件较大,未包含在镜像中,需自行下载并挂载到 ./geoip 目录
  5. 实时推送:仅暴露 3000 端口时,应用会降级为 HTTP 轮询(约 5 秒),如需实时体验需配置 WebSocket 路由
  6. 安全建议:不要在公网暴露 FORCE_ACCESS_CONTROL_OFF=true,仅在忘记 Token 时临时使用
  7. 架构支持:Docker 镜像支持 linux/amd64linux/arm64,群晖 ARM 架构机型也可使用
  8. Agent 部署:支持在远程设备上部署采集代理,实现集中式管理,详见官方 Agent 文档

参考文档

Neko Master: A modern and elegant dashboard for network traffic visualization and analysis
地址:https://github.com/foru17/neko-master

foru17/neko-master - Docker 镜像 | Docker Hub
地址:https://hub.docker.com/r/foru17/neko-master

Neko Master: 从 0 到 1K+ Star 的 Vibe Coding 实践 | 罗磊的独立博客
地址:https://luolei.org/neko-master-vibe-coding

系统架构文档
地址:https://github.com/foru17/neko-master/blob/main/docs/architecture.en.md