WebSocket server for IP monitoring
npm install ip-report-server
ip-report/
├── server/ # Node.js WebSocket 服务器项目
├── client/ # 客户端项目(Node.js)
└── web/ # Web 监控界面项目
└── docs/ # 构建输出目录
`
快速开始
$3
`bash
启动服务器(需要先安装依赖)
npm run server
启动客户端(需要先安装依赖)
npm run client
启动 Web 界面(需要先安装依赖)
npm run web
`
$3
部署到服务器机器上,用于接收客户端报告和向Web客户端广播。
前置要求: 需要安装 Node.js (版本 18+)
从根目录运行:
`bash
npm run server
`
或进入 server 目录运行:
`bash
cd server
开发模式(WS,端口 8000)
npm run run:dev
生产模式(WSS,端口 443)
npm run run:prod
`
服务器将在开发模式下启动 ws://0.0.0.0:8000,生产模式下启动 wss://0.0.0.0:443。
$3
部署到每台客户端机器上,定期向服务器报告IP信息。
使用 npx(推荐,无需安装):
`bash
直接运行(默认连接 wss://li.feng3d.com)
npx ip-report
自定义客户端名称
CLIENT_NAME="客户端A" npx ip-report
`
或本地安装后运行:
`bash
cd client
npm install
开发模式
npm run run:dev
生产模式
npm run run:prod
`
$3
Web 监控界面,用于查看所有连接的客户端信息。此项目为私有包,不发布到 npm。
本地运行:
`bash
cd web
npm install
开发模式
npm run dev
生产模式
npm run run:prod
`
部署架构
`
┌─────────────┐
│ 服务器机器 │ ← 运行 server/ 项目 (Node.js)
│ (端口8000/443) │ 提供 WebSocket 服务
│ │ 开发: ws://服务器IP:8000
│ │ 生产: wss://服务器IP:443
└──────┬──────┘
│
├──────────────┬──────────────┐
│ │ │
┌──────▼──────┐ ┌─────▼─────┐ ┌─────▼─────┐
│ 客户端机器1 │ │ 客户端机器2│ │ 客户端机器N│
│ 运行client/ │ │ 运行client/│ │ 运行client/│
│ (Node.js) │ │ (Node.js) │ │ (Node.js) │
└─────────────┘ └────────────┘ └────────────┘
`
详细文档
每个项目目录下都有独立的 README.md 文件,包含详细的安装和使用说明。
环境变量说明
$3
- PORT: WebSocket服务器端口(开发模式默认:8000,生产模式默认:443)
- HOST: 服务器监听地址(默认:0.0.0.0)
- NODE_ENV: 运行环境(development 或 production)
- SSL_KEY_PATH: SSL 密钥文件路径(可选,默认自动查找 ~/ssl/ 目录)
- SSL_CERT_PATH: SSL 证书文件路径(可选,默认自动查找 ~/ssl/ 目录)
$3
- CLIENT_NAME: 客户端名称(可选,默认使用主机名)
$3
- PORT: HTTP服务器端口(默认:3000)
- HOST: HTTP服务器监听地址(默认:localhost)
注意事项
1. 服务器要求:
- 需要安装 Node.js 运行时(版本 18+)
- 生产环境需要配置 SSL 证书(用于 WSS)
- 服务器仅提供 WebSocket 服务,不提供 HTTP 页面服务
2. 防火墙配置:
- 确保防火墙允许 WebSocket 端口的访问(开发:8000,生产:443)
3. 客户端连接:
- 服务器需要同时允许客户端和Web客户端的连接
- Web监控界面会自动连接 WebSocket 服务器(页面加载时)
4. 部署建议:
- 生产环境必须使用 WSS(WebSocket Secure)以确保安全
5. SSL 证书:
- 生产环境需要有效的 SSL 证书
- 将证书放置在用户目录的 ssl 文件夹中(如 ~/ssl/example.com.key 和 ~/ssl/example.com.pem)
- 系统会自动从证书文件名识别域名并打印正确的访问地址
- 也可通过 SSL_KEY_PATH 和 SSL_CERT_PATH` 环境变量指定路径