
aceberg/watchyourportsWatchYourPorts是一款本地服务器开放端口清单工具,主要用于监控和管理本地网络中的服务器开放端口状态,并支持将数据导出至InfluxDB2,结合Grafana实现可视化分析。通过Web界面可直观查看端口在线状态、历史记录及统计信息,适用于系统管理员和DevOps工程师跟踪服务可用性。
!Screenshot
shdocker run --name wyp \ -e "TZ=Asia/Shanghai" \ -v ~/.dockerdata/WatchYourPorts:/data/WatchYourPorts \ -p 8853:8853 \ aceberg/watchyourports
可参考项目仓库中的docker-compose.yml文件。
可通过ForAuth限制对WatchYourPorts的访问,示例配置见docker-compose-auth.yml。此外,Authelia等SSO工具也可正常工作。
$ADDR为服务器的IP或域名(不带http(s)://前缀,用于端口探测):
sh./docker-export.sh $ADDR
hosts.yaml文件中hosts.yaml中添加多个服务器配置可通过config.yaml文件、Web界面或环境变量进行,支持以下参数:
| 变量名 | 描述 | 默认值 |
|---|---|---|
| HOST | 监听地址 | 0.0.0.0 |
| PORT | Web界面端口 | 8853 |
| THEME | 主题名称(需为bootswatch.com中的小写名称或额外主题) | grass |
| COLOR | 背景颜色(light或dark) | dark |
| TIMEOUT | 端口扫描间隔(分钟) | 10 |
| HIST_TRIM | 内存中保存的端口状态记录数量 | 90 |
| TZ | 时区设置(用于正确显示时间) | "" |
以下配置需与Grafana的InfluxDB数据源配置匹配:
| 变量名 | 描述 | 默认值 | 示例 |
|---|---|---|---|
| INFLUX_ENABLE | 是否启用InfluxDB2导出 | false | true |
| INFLUX_SKIP_TLS | 是否跳过TLS验证 | false | true |
| INFLUX_ADDR | InfluxDB2服务器地址:端口 | [***] | |
| INFLUX_BUCKET | InfluxDB2存储桶 | test | |
| INFLUX_ORG | InfluxDB2组织 | home | |
| INFLUX_TOKEN | InfluxDB2生成的密钥 |
| 参数 | 描述 | 默认值 |
|---|---|---|
| -d | 配置目录路径 | /data/WatchYourPorts |
| -n | 本地JS和主题资源路径(需配合node-bootstrap使用) | "" |
默认情况下,应用会从互联网拉取主题、图标和字体。如需完全离线运行,可使用独立的node-bootstrap镜像提供本地资源:
启动node-bootstrap:
shdocker run --name node-bootstrap \ -v ~/.dockerdata/icons:/app/icons \ # 用于本地图片 -p 8850:8850 \ aceberg/node-bootstrap
启动WatchYourPorts并指定本地资源:
shdocker run --name wyp \ -v ~/.dockerdata/WatchYourPorts:/data/WatchYourPorts \ -p 8853:8853 \ aceberg/watchyourports -n "[***]"
也可使用项目仓库中的docker-compose-local.yml配置文件。
httpGET /api/all
返回所有已保存地址的详细数据(JSON格式)。
json{ "192.168.2.2": { "Name": "SomeAddrName", "Addr": "192.168.2.2", "PortMap": {}, // 所有已保存端口将显示于此 "Total": 0, "Watching": 0, "Online": 0, "Offline": 0 } }
httpGET /api/history
返回内存中的所有端口状态历史记录(JSON格式)。
json{ "192.168.2.3:8849": { "Name": "OS", "Addr": "192.168.2.3", "Port": 8849, "PortName": "MiniBoard", "State": [ { "Date": "2024-06-28 22:42:45", "State": true }, { "Date": "2024-06-28 22:52:45", "State": true } ], "NowState": true } }
httpGET /api/port/:addr
返回指定地址(:addr)的当前端口映射信息。
bashcurl [***]
json{ "8850": { "Name": "node-bootstrap", "Port": 8850, "State": true, "Watch": true }, "8851": { "Name": "Exercise Diary", "Port": 8851, "State": true, "Watch": true } }
httpGET /api/port/:addr/:port
返回指定地址(:addr)和端口(:port)的当前状态。
bashcurl [***]
json{ "Name": "git-syr", "Port": 8844, "State": true, "Watch": true }




探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务