剪藏#剪藏#各种折腾

自动端口检测和标注工具PortNote

2025 年 5 月 14 日1 分钟
分享Twitter / XTelegram微博
自动端口检测和标注工具PortNote 封面

简介

什么是 PortNote ?

PortNote 是一个用于跟踪和管理已使用端口的工具,旨在帮助用户清晰地了解其整个端口布局。它通过简洁的网页界面,允许用户添加服务器和虚拟机,并为各系统分配和记录端口使用情况,从而避免冲突。

主要特点

  1. 清晰的界面:直观的用户界面,便于管理和查看端口使用情况。

  2. 端口管理:允许用户为不同的服务分配端口,并记录其使用情况,避免重复分配。

  3. 随机端口生成器:内置功能,可以生成随机端口,便于快速分配。

  4. 与数据库集成:使用 PostgreSQLPrisma ORM 存储端口信息,确保数据的持久性和可靠性。

  5. 可扩展性:基于 Next.jsTypeScript,方便开发者进行自定义和扩展。

应用场景

  • 开发环境管理:开发人员可以使用 PortNote 来管理他们开发环境中的端口,确保不同服务之间不会发生冲突。

  • 服务器管理:系统管理员可以利用 PortNote 记录和管理生产环境中各服务器的端口使用情况。

  • 团队协作:在团队开发中,PortNote 使得团队成员能够共享端口使用信息,避免不必要的混淆和冲突。

Notion image

PortNote 为用户提供了一个结构化和高效的方式来管理其网络端口的使用,能在冲突发生前避免冲突。

安装

在群晖上以 Docker 方式安装。

本文写作时,

镜像 haedlessdev/portnotelatest 版本对应为 1.1.0

镜像 haedlessdev/portnote-agentlatest 版本对应为 1.1.0

Notion image

采用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

JAVASCRIPT
services:
  web:
    image:haedlessdev/portnote:latest
    container_name:portnote-web
    restart:unless-stopped
    ports:
      -"3233:3000"
    environment:
      JWT_SECRET:rec320jrTkUUwrKb+xbO2QJ1+xfPr4Ds0NrvIXGxuV0=
      USER_SECRET:juZg+GFe6YfJcxJWhk6pTrsQDxofGWGgDW3IZHNw3sI=
      LOGIN_USERNAME:laosu
      LOGIN_PASSWORD:123456
      DATABASE_URL:"postgresql://postgres:postgres@db:5432/postgres"

agent:
    image:haedlessdev/portnote-agent:latest
    container_name:portnote-agent
    restart:unless-stopped
    user:root
    environment:
      DATABASE_URL:"postgresql://postgres:postgres@db:5432/postgres"

db:
    image:postgres:17
    container_name:portnote-db
    restart:always
    volumes:
      -./data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER:postgres
      POSTGRES_PASSWORD:postgres
      POSTGRES_DB:postgres

关于环境变量的简单说明

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_SECRETUSER_SECRET 可以用 openssl rand -base64 32 命令生成

【关键点 1 】:agent 服务中,老苏增加了 user: root,否则容器可能因为报错导致启动失败

JAVASCRIPT
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

ERROR: for 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
ERROR: Encountered errors while bringing up the project.

然后执行下面的命令

JAVASCRIPT
# 新建文件夹 portnote 和 子目录
mkdir -p /volume1/docker/portnote/data

# 进入 portnote 目录
cd /volume1/docker/portnote

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

# 一键启动
docker-compose up -d

Notion image

运行

在浏览器中输入 http://群晖IP:3233 就能看到登录界面

Notion image

【关键点 2 】:在有些浏览器上会遇到问题,具体表现为停留在登录界面

浏览器的开发者工具中看到下面的错误

Notion image

具体的错误可以在这里找到: https://react.dev/errors/418?args[]=HTML&args[]=

Notion image

随机端口

登录成功后的主界面

Notion image

Generate random port 按钮,可以生成现在尚未使用的随机端口

Notion image

端口扫描

+ 号添加服务器,以本机 192.168.0.197 为例

Notion image

添加完成

Notion image

可自动扫描所有正在使用的端口,不再需要逐个输入它们

Notion image

扫描完成

Notion image

Refresh Data

Notion image

可以给端口添加备注,例如 22SSH 端口

Notion image

保存

Notion image

参考文档

crocofied/PortNote: Keep track of used ports 地址:https://github.com/crocofied/PortNote

PortNote v1.1.0 🖥️ - Auto Port Detection & more : r/selfhosted 地址:https://www.reddit.com/r/selfhosted/comments/1kk1nwh/portnote_v110_auto_port_detection_more/

@所有人:写文不易,如果你都看到了这里,请点个在看,分享给更多的朋友;为确保你能收到每一篇文章,请主页右上角设置星标。

原文地址: https://mp.weixin.qq.com/s?__biz=MzI1NTQxMzc3MA==&mid=2247508448&idx=1&sn=246c9caa4a57bbd7928cb99417a3e136&chksm=eb49f287c71d35caebeceb2f5a10748483c6489f861bc2d8d0a1a86edfd3b5cb11e72e14c712&mpshare=1&scene=1&srcid=0514SvMsBB2DgUhmGPj0pgOJ&sharer_shareinfo=3050516a694bdcf3e8e2c33b85c03491&sharer_shareinfo_first=3050516a694bdcf3e8e2c33b85c03491#rd

相关文章