自托管端口管理系统Portall

老苏一直在折腾各种开源软件,但总是记不清哪些应用占用了哪些端口,每次都是先随机想一个端口,然后在笔记中搜索,看有没有被占用过。Portall 就是用来解决老苏遇到的这种情况的,当然,excel 也是可以的 😂

什么是 Portall ?

Portall 是一个自托管端口管理系统,它提供了一个直观的 Web 界面,用于生成、跟踪和组织跨多个主机的端口和服务。它旨在让您更轻松地管理自托管应用和服务。

软件主要特征:

  • 轻松的端口管理:添加、删除和分配端口到不同的服务和主机
  • 端口号生成:为您的应用程序快速生成唯一的端口号
  • 导入工具:CaddyfileDocker-ComposeJSON 数据导入现有配置
  • 自定义规则:定义您自己的端口范围并为端口生成器设置排除项
  • 块级设计:拖放元素来组织端口并在主机之间移动应用程序
  • 主题:包括明暗模式,计划推出更多主题
  • CSS Playground:使用自定义 CSS 支持修改外观
  • 移动响应:从任何地方管理您的端口

技术栈

  • 后端: Flask(Python)
  • 数据库: SQLAlchemy 和 SQLite
  • 前端: HTML、CSS、JavaScript

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 portall ,选择第一个 need4swede/portall:,版本选择 latest

本文写作时, latest 版本对应为 1.0.3

docker 文件夹中,创建一个新文件夹 portall,并在其中建一个子文件夹 data

文件夹 装载路径 说明
docker/portall/data /app/instance 存放数据库文件

端口

本地端口不冲突就行,不确定的话可以用命令查一下

1
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
8855 8080

环境

可变
PORT 容器端口设置,默认设为 8080
SECRET_KEY 用于加密和安全认证的密钥,根据需要进行修改

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 新建文件夹 portall 和 子目录
mkdir -p /volume1/docker/portall/data

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

# 运行容器
docker run -d \
--restart unless-stopped \
--name portall \
-p 8855:8080 \
-v $(pwd)/data:/app/instance \
-e PORT=8080 \
-e SECRET_KEY=<your_secret_key> \
need4swede/portall:latest

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: '3'

services:
rediary:
image: need4swede/portall:latest
container_name: portall
restart: unless-stopped
ports:
- 8855:8080
volumes:
- ./data:/app/instance
environment:
- PORT=8080
- SECRET_KEY=<your_secret_key>

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 portall 和 子目录
mkdir -p /volume1/docker/portall/data

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

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

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:8855 就能看到主界面

Add IP 添加 IP address

加个描述

Generate ,会随机生成了一个端口

Settings –> General ,点 Save 将这个地址保存为缺省的 IP

Ports 会看到之前生成的端口

+ 号可以添加一些之前已经使用的端口

添加完成之后

官方的动图更直观

参考文档

need4swede/Portall: Port Management Interface
地址:https://github.com/need4swede/Portall

Introducing Portall: A Self-Hosted Port Management System : r/selfhosted
地址:https://www.reddit.com/r/selfhosted/comments/1dyack6/introducing_portall_a_selfhosted_port_management/