自动端口检测和标注工具PortNote
简介
什么是 PortNote ?
PortNote
是一个用于跟踪和管理已使用端口的工具,旨在帮助用户清晰地了解其整个端口布局。它通过简洁的网页界面,允许用户添加服务器和虚拟机,并为各系统分配和记录端口使用情况,从而避免冲突。
主要特点
- 清晰的界面:直观的用户界面,便于管理和查看端口使用情况。
- 端口管理:允许用户为不同的服务分配端口,并记录其使用情况,避免重复分配。
- 随机端口生成器:内置功能,可以生成随机端口,便于快速分配。
- 与数据库集成:使用
PostgreSQL
和Prisma ORM
存储端口信息,确保数据的持久性和可靠性。 - 可扩展性:基于
Next.js
和TypeScript
,方便开发者进行自定义和扩展。
应用场景
- 开发环境管理:开发人员可以使用
PortNote
来管理他们开发环境中的端口,确保不同服务之间不会发生冲突。 - 服务器管理:系统管理员可以利用
PortNote
记录和管理生产环境中各服务器的端口使用情况。 - 团队协作:在团队开发中,
PortNote
使得团队成员能够共享端口使用信息,避免不必要的混淆和冲突。
PortNote
为用户提供了一个结构化和高效的方式来管理其网络端口的使用,能在冲突发生前避免冲突。
安装
在群晖上以 Docker 方式安装。
本文写作时,
- 镜像
haedlessdev/portnote
的latest
版本对应为1.1.0
;- 镜像
haedlessdev/portnote-agent
的latest
版本对应为1.1.0
;
采用 docker-compose
安装,将下面的内容保存为 docker-compose.yml
文件
1 | services: |
关于环境变量的简单说明
服务 | 环境变量 | 描述 |
---|---|---|
web | JWT_SECRET |
用于生成和验证 JSON Web Token 的密钥 |
USER_SECRET |
用户认证所需的安全密钥 | |
LOGIN_USERNAME |
登录所需的用户名。 | |
LOGIN_PASSWORD |
登录所需的密码 | |
DATABASE_URL |
PostgreSQL 数据库的连接字符串,用于连接数据库 |
|
agent | DATABASE_URL |
PostgreSQL 数据库的连接字符串,用于连接数据库 |
db | POSTGRES_USER |
PostgreSQL 数据库的用户名 |
POSTGRES_PASSWORD |
PostgreSQL 数据库的密码 |
|
POSTGRES_DB |
PostgreSQL 数据库的名称 |
JWT_SECRET
和 USER_SECRET
可以用 openssl rand -base64 32
命令生成
【关键点 1 】:
agent
服务中,老苏增加了user: root
,否则容器可能因为报错导致启动失败
1 | ERROR: for portnote-agent Cannot start service agent: OCI runtime create failed: container_linux.go:367: starting container process caused: chdir to cwd ("/root") set in config.json failed: permission denied: unknown |
然后执行下面的命令
1 | # 新建文件夹 portnote 和 子目录 |
运行
在浏览器中输入 http://群晖IP:3233
就能看到登录界面
【关键点 2 】:在有些浏览器上会遇到问题,具体表现为停留在登录界面
浏览器的开发者工具中看到下面的错误
具体的错误可以在这里找到: https://react.dev/errors/418?args[]=HTML&args[]=
随机端口
登录成功后的主界面
点 Generate random port
按钮,可以生成现在尚未使用的随机端口
端口扫描
点 +
号添加服务器,以本机 192.168.0.197
为例
添加完成
可自动扫描所有正在使用的端口,不再需要逐个输入它们
扫描完成
点 Refresh Data
可以给端口添加备注,例如 22
是 SSH 端口
保存
参考文档
crocofied/PortNote: Keep track of used ports
地址:https://github.com/crocofied/PortNotePortNote v1.1.0 🖥️ - Auto Port Detection & more : r/selfhosted
地址:https://www.reddit.com/r/selfhosted/comments/1kk1nwh/portnote_v110_auto_port_detection_more/