再见了端口冲突!一站式端口记录、扫描与分配神器!


大家好,我是热爱开源的了不起!

在开发和运维日常里,你是否经常忘记某个服务用了哪个端口?是否因为端口冲突而浪费时间定位问题?是否为文档分散难查而抓狂?

今天给大家介绍一款专门解决这个的工具- PortNote,它让端口管理变得简单、直观、自动化。

项目简介

PortNote是一个专注于端口管理与分配的开源工具,通过简洁直观的Web界面帮助用户记录和追踪服务端口使用情况,有效避免端口冲突问题。它支持自动端口扫描、随机端口生成、多服务器集中管理等功能,适用于个人开发者、中小团队乃至IT运维人员。项目基于Next.js与TypeScript构建,使用PostgreSQL作为底层数据库,配合Prisma ORM确保数据的稳定性与持久化。

功能特点

  • 可视化端口管理:以清晰的界面展示所有服务器和虚拟机的端口使用情况,一目了然
  • 自动端口扫描:支持自动扫描指定服务器上当前已使用的端口,省去人工录入步骤
  • 随机端口生成器:一键生成未使用的随机端口,方便快捷分配

  • 端口使用记录管理:用户可为不同主机、服务分配端口,避免团队成员或多项目间的冲突
  • 多系统集中管理:可统一管理多个服务器与VM的端口信息,支持标签与分类功能
  • 权限控制与协作:支持多用户访问与权限设置,适合团队协作使用

安装方式和使用

PortNote支持Docker快速部署,只需简单的几步即可完成安装:

  1. 创建项目目录并进入:

    1
    2
    mkdir -p /volume1/docker/portnote/data
    cd /volume1/docker/portnote
  2. 创建.env配置文件,设置数据库连接和登录信息:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # PostgreSQL配置
    POSTGRES_USER=postgres
    POSTGRES_PASSWORD=postgres
    POSTGRES_DB=postgres

    # Web/Agent使用的数据库连接
    DATABASE_URL=postgresql://postgres:postgres@db:5432/postgres

    # Web登录及加密配置
    JWT_SECRET=your_jwt_secret
    USER_SECRET=your_user_secret
    LOGIN_USERNAME=your_username
    LOGIN_PASSWORD=your_password
  3. 创建docker-compose.yml文件:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    version: "3.8"
    services:
    web:
    image: registry.cn-shanghai.aliyuncs.com/study-03/portnote:latest
    container_name: portnote-web
    restart: unless-stopped
    ports:
    - "3233:3000"
    environment:
    JWT_SECRET: ${JWT_SECRET}
    USER_SECRET: ${USER_SECRET}
    LOGIN_USERNAME: ${LOGIN_USERNAME}
    LOGIN_PASSWORD: ${LOGIN_PASSWORD}
    DATABASE_URL: ${DATABASE_URL}

    agent:
    image: registry.cn-shanghai.aliyuncs.com/study-03/portnote-agent:latest
    container_name: portnote-agent
    restart: unless-stopped
    user: root
    environment:
    DATABASE_URL: ${DATABASE_URL}

    db:
    image: registry.cn-shanghai.aliyuncs.com/study-03/postgres:17
    container_name: portnote-db
    restart: always
    volumes:
    - ./data:/var/lib/postgresql/data
    environment:
    POSTGRES_USER: ${POSTGRES_USER}
    POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    POSTGRES_DB: ${POSTGRES_DB}
  4. 启动服务:

    1
    docker-compose --env-file .env up -d
  5. 访问服务:在浏览器中输入 http://服务器IP:3233 即可访问PortNote界面

小结

PortNote确实是一款好用的端口管理工具,它将传统的基于电子表格或文档的端口管理方式,转变为一个现代化、可视化的Web应用。无论是个人开发者管理本地开发环境,还是运维团队管理生产服务器集群,PortNote都能提供清晰、有序的端口管理解决方案。

1
Github地址:https://github.com/crocofied/PortNote

  目录