/* SYSTEM: 内网穿透管理平台 · BLUEPRINT REV 0.3.6 */
基于官方 frps / frpc v0.70.1 构建

内网穿透
管理起来更简单_

Hylintech FRP 是围绕官方 frps / frpc 构建的管理后台与客户端 Agent。 后台统一保存设备与隧道配置,Agent 主动连接后台并托管本机 frpc 进程—— FRP 数据流不经过后台 API,性能与官方一致。

AGENT v0.3.6 DESKTOP v0.2.0 FRP 0.70.1 NODE 22+ / 24+ TUNNEL TCP·UDP·HTTPS
FIG.01 — SYSTEM SCHEMATIC REV 0.3.6 SYS.WIDTH = 520u SERVER NODE.JS · PM2 ADMIN / API :12085 控制面 SQLITE frps :12086 数据面 GO 0.70.1 CLIENT / AGENT AGENT CLI / GUI / Tauri 自动注册设备 在线升级 sha256 frpc 本机托管 内网服务 192.168.1.10:8080 数据流 · 12086 控制流 · 12085 PUBLIC ⇄ 12087 / 31xxx / 32xxx
FIG.01 — 系统分解示意图SCALE 1:1 · UNIT: u
3
种隧道类型:TCP / UDP / HTTPS
4
平台单文件:Win / macOS / Linux ×2
0
运行时依赖:server 与 client 均零依赖
90
天流量与审计日志自动保留
SHEET 02/07
02Architecture · 架构

控制面与数据面,分离设计

Agent 通过 HTTPS 控制连接与后台通信;frpc → frps 的隧道数据流直连,不经过后台,保持官方 FRP 的原生转发能力。

公网用户
  • 浏览器 / App / 客户端
  • 通过 HTTPS 12087 访问站点
  • 通过 TCP 31000+ / UDP 32000+ 访问业务
隧道访问12087 / 31xxx
32xxx
服务器 ONLINE
  • 管理后台 Web + REST API(Node.js,零依赖)
  • Agent 控制连接:登录 / 同步 / 申请端口
  • frps 主进程:由 runner 生成 frps.toml 托管
  • SQLite 存储:设备、隧道、用户、流量、审计
frpc → frps数据流直连
12086/tcp
内网客户端机器
  • Agent:CLI / 本地 GUI / Tauri 桌面
  • 自动注册设备、托管本机 frpc 进程
  • 无需公网 IP、无需开放入站端口
  • 目标:本机或内网服务(如 192.168.1.10:8080)
◈ 控制流:Agent → 服务器 API(HTTPS 12085),用于登录换 Token、设备注册/同步、申请与删除隧道、流量上报;数据流始终走 frpc ↔ frps。
SHEET 03/07
03Featured · 精选能力

精选能力,一图看全

从后台管理到免安装分发,再到流量统计与在线升级,一条链路全部覆盖。

ADMIN · 管理端

集中管理后台

用户、设备、隧道一站式管理:创建用户与端口额度、重置密码、批量创建隧道、审计日志,全部通过自带 Web 后台完成。

  • 普通用户只能看到和管理自己的设备与隧道
  • 管理员可随时修改额度、重置密码或删除用户
  • 删除用户会级联删除其设备与隧道
用户列表 · USERS
用户额度状态
admin管理员
cokin普通
iot-ops普通
frp-lab普通
TRAFFIC · 流量

流量统计

每 5 分钟采样 frps 管理 API,按日归档并保留 90 天;后台 7/30 天趋势柱状图,客户端面板实时展示今日流量。

  • 防回跳抖动:重启后 3 轮采样仍低则判定计数重置并收敛
  • 全局与个人 ↑入 ↓出 今日流量双色展示
  • 按日期补零,跨天自然翻页,历史可查
流量趋势 · 7 DAYS
入站流量出站流量峰值 · 周六
SECURITY · 安全

安全加固

口令哈希 + 会话/设备 Token 鉴权、登录失败限流、安全响应头与 CSP、异常统一响应不泄露细节,SQLite 每日一致性快照备份。

  • 15 分钟窗口内 10 次失败即锁定,支持反向代理取真实 IP
  • 网页 CSP:default-src 'self',API 全量安全头
  • 审计日志、会话、流量自动过期清理(默认 90 天)
安全基线 · CHECKLIST
  • Token 鉴权 · 会话 8h
  • 失败限流 · 锁定 15min
  • CSP + 安全响应头
  • 每日快照备份
  • 审计日志 90 天
DEPLOY · 分发

免安装单文件

esbuild + postject 打包为免 Node.js 的单文件,内嵌 frpc,覆盖 linux-amd64 / arm64、macOS、Windows;目标机器零安装。

  • 首次运行自动生成配置模板,支持 --apply-tunnel 等单次操作
  • Tauri 桌面应用:双击图标,窗口内直接登录注册
  • 构建:npm run build:all 一键产出单文件 + 安装包
hylintech-agent · linux-x64
$ ./dist/hylintech-agent-linux-x64
 生成 config.json 模板(JSONC)
# 编辑后重启
 登录 ds.hylintech.com:12085 → 注册设备 AAA01
 frpc 0.70.1 已解压到 agent-data/bin/
 隧道 ssh-01 已上线 → tcp://12086 → 31001
# 单次操作
$ ./hylintech-agent --apply-tunnel --name web-1 \
    --type tcp --local-port 8080
SHEET 04/07
04More · 更多能力

更多能力,逐项核验

完整能力清单,像图纸明细表一样逐项核对。

01

设备自动注册

按「用户名 + 计算机名」自动注册 / 复用设备;同名机器重登即刷新 Token,旧 Token 立即失效。

Auto Register多端登录
02

零入站端口

客户端只需能主动访问 12085 / 12086,内网无需公网 IP,无需开放任何入站端口与防火墙规则。

内网友好Outbound Only
03

在线升级

启动 8 秒后自动检查更新,之后每 24 小时轮询;SHA-256 校验后替换并自动重启,支持 CLI 与桌面内嵌版。

Auto UpdateSHA-256
04

三种隧道 + 额度

TCP / UDP / HTTPS 统一管理;公网端口由系统自动分配,普通用户不可自定义,额度用完即拒绝。

TCP · UDP · HTTPSQuota
05

批量创建隧道

单次最多 100 条(默认),任一条失败整批不生效并返回 400/409;HTTPS 域名全局唯一。

Batch最多 100 条
06

本地 GUI 与桌面

本地控制面板仅 127.0.0.1 可访问并带随机 Token 鉴权;Tauri 桌面应用双击即用,窗口内完成登录注册。

Local GUITauri
SHEET 05/07
05Quick Start · 快速开始

最快 3 步 跑起来

服务端部署、客户端接入、单文件与桌面应用构建,任选其一。

server/ — 安装 frps 并启动REV A
# 1. 安装官方 frps(在 server/ 目录执行)
cd server
node scripts/install-frp.mjs --target server --version 0.70.1

# 2. 配置 server/config/config.json(模板见 config.example.json)
#    至少修改:admin.password、frp.authToken、frp.adminPassword、TLS 证书路径

# 3. PM2 启动两个应用:hylintech-frp-api + hylintech-frps
pm2 start server/ecosystem.config.cjs
pm2 save
pm2 status
TIPS后台默认监听 12085/tcp;也可放在 Nginx / Caddy 之后由它终止 TLS,参考 server/deploy/ 下的示例配置。
client/ — 安装 frpc 并启动 AgentREV A
# 1. 安装官方 frpc(在 client/ 目录执行)
cd client
node scripts/install-frp.mjs --target client --version 0.70.1

# 2. 复制配置模板并填写账号
cp agent/config.example.json agent/config.json
#    serverUrl / username / password 必填;name 留空默认用计算机名

# 3. 启动(Node.js 22+),Ctrl+C 同时停止 Agent 与 frpc
node agent/index.mjs --config agent/config.json
agent/config.jsonJSONC
{
  "serverUrl": "https://ds.hylintech.com:12085",
  "username":  "cokin",
  "password":  "用户密码",
  "name":      "AAA01"
}
TIPS登录后自动注册 / 复用设备并保存 Token,之后无需账号密码即可持续同步;支持 --list-tunnels--apply-tunnel--delete-tunnel 等单次操作。
client/ — 构建免 Node.js 单文件REV A
cd client
npm install          # 首次构建前安装 esbuild / postject
npm run build:agent  # 产物:dist/hylintech-agent-<平台>

# 目标机器直接运行,首次运行自动生成 config.json 模板
./dist/hylintech-agent-linux-x64
client/ — 一键构建 CLI 单文件 + Tauri 桌面应用REV A
npm run build:all
# macOS : dist/hylintech-agent-darwin-* + Hylintech FRP.app / dmg
# Windows: dist/hylintech-agent-win32-x64.exe + msi / nsis exe
# Linux : dist/hylintech-agent-linux-* + deb 包
TIPS单文件内嵌 frpc,目标机器无需安装 Node.js;桌面应用基于 Tauri,双击图标即可打开内置控制面板并登录注册本机。
SHEET 06/07
06Ports & Ops · 端口与运维

端口规划与运维保障

默认端口

端口用途
12085/tcp后台网页、API、Agent 控制连接
12086/tcpfrps 主连接端口(数据流)
12087/tcpHTTPS 隧道入口
31000–31999/tcpTCP 隧道
32000–32999/udpUDP 隧道

安全与运维

  • 所有 API 响应带安全头,网页额外启用 CSP(default-src 'self'
  • 登录失败限流:15 分钟窗口锁定,支持反向代理下的真实 IP
  • SQLite 启动时与每日 VACUUM INTO 一致性快照备份,自动保留最近 N 份
  • 会话、审计日志、流量数据自动过期清理(默认保留 90 天)
  • 服务端异常统一返回 Internal server error,不泄露内部细节
  • PM2 守护 API 与 frps,日志、重启、开机自启开箱即用
SHEET 06/07 · B
06BTech Stack · 技术栈

精简而现代的技术栈

服务端与客户端运行时均为零依赖;构建期只引入必要的打包工具。

NODE
Node.js 22+ / 24+
server(≥24)与 client(≥22),零运行时依赖
SQL
SQLite(node:sqlite)
内置同步驱动,设备/隧道/用户/流量/审计
FRP
frps / frpc 0.70.1
官方 Go 版 FRP,数据流性能与官方一致
TAU
Tauri 2 + Rust
macOS / Windows 桌面应用,体积小启动快
ESB
esbuild + postject
单文件 Agent 打包,内嵌 frpc 与运行时
PM2
PM2
API 与 frps 双进程守护、日志、开机自启
JS
原生 HTML / CSS / JS
后台前端无框架,趋势图用原生 Canvas
TST
node:test
端到端测试:真实 HTTP + 真实 CLI Agent
SHEET 07/07
07Repository · 目录结构

客户端 / 服务端分离的目录结构

两个项目独立开发、独立 npm install、独立测试;根目录的 npm run check / test / build:all 统一调度。

hylintech-frp/
├── server/                  # 服务端:管理后台 + API + Agent 控制连接
│   ├── index.mjs            # HTTP(S) API 与 Agent 控制连接
│   ├── db.mjs               # SQLite 存储、备份、流量归档
│   ├── frp.mjs              # frps / frpc 配置生成
│   ├── security.mjs         # 口令哈希、Token、限流
│   ├── public/              # 后台网页(index.html / app.js / styles.css)
│   ├── scripts/             # frps-runner、install-frp
│   ├── deploy/              # systemd / nginx 部署示例
│   ├── ecosystem.config.cjs # PM2:hylintech-frp-api + hylintech-frps
│   └── test/
└── client/                  # 客户端:Agent(CLI / GUI / 桌面)
    ├── agent/               # Agent 守护进程 + 本地控制面板
    ├── client-cli/          # 最小分发包(不含服务器配置/数据)
    ├── desktop/             # Tauri 桌面应用
    ├── scripts/             # 构建、安装 frpc、生成升级清单
    ├── dist/                # 构建产物
    └── test/