HY2 Panel
单机自托管的 Next 16 管理面板,面向 Hysteria 2 HTTP 鉴权与多节点流量聚合场景。
功能包括:
- 单管理员本地登录,基于 SQLite 持久化会话
- hy2 用户管理:启用/禁用、重置密码、到期时间、总流量上限、稳定
auth_id - 多节点管理:每节点独立鉴权 URL + token、
trafficStatsURL/secret、轮询间隔 - 公开 HTTP 鉴权接口:返回标准
200 + { ok, id } - 后台轮询
trafficStats、聚合用户流量、记录同步错误与鉴权审计 - 对禁用、过期、超额用户调用节点
kick做准实时断开
Environment
复制 .env.example 为 .env,至少设置:
APP_URL=http://127.0.0.1:3000
SESSION_SECRET=your-long-random-secret
SESSION_COOKIE_SECURE=auto
ADMIN_PASSWORD=your-strong-admin-password
说明:
ADMIN_USERNAME/ADMIN_PASSWORD是单管理员账号,启动时会同步到数据库中的唯一管理员记录SESSION_COOKIE_SECURE=auto时会按APP_URL协议决定是否开启Securecookie;如果你是直接用http://IP:3000访问,不要强制设成trueDATABASE_PATH默认是./data/hy2-panel.dbPOLLER_ENABLED=true时,Nextinstrumentation.ts会在 Node 进程启动后启动轮询器
Development
npm install
npm run dev
打开 http://127.0.0.1:3000。
Build
npm run lint
npm run build
这里将生产构建固定为 next build --webpack。原因是 Next 16 默认 Turbopack,但在部分受限环境下会触发构建期端口绑定问题;Webpack 构建已验证通过。
HY2 Node Access
面板里的每个节点都会生成独立鉴权 URL,例如:
auth:
type: http
http:
url: http://127.0.0.1:3000/api/hy2/nodes/tokyo-01/auth?token=YOUR_TOKEN
insecure: false
根据 Hysteria 官方文档,HTTP 鉴权回调请求体是:
{
"addr": "123.123.123.123:44556",
"auth": "username:password",
"tx": 123456
}
面板响应:
{
"ok": true,
"id": "immutable-auth-id"
}
多节点识别依赖“不同的 URL 路径”,不是依赖 hy2 自动附带节点 ID。
trafficStats
节点需启用:
trafficStats:
listen: :9999
secret: some_secret
面板会轮询:
GET /traffic?clear=1GET /onlineGET /dump/streamsPOST /kick
systemd
已提供示例单元文件 deploy/hy2-panel.service。
典型流程:
npm install
npm run build
sudo cp deploy/hy2-panel.service /etc/systemd/system/hy2-panel.service
sudo systemctl daemon-reload
sudo systemctl enable --now hy2-panel
Nginx 反代
已提供示例站点配置 deploy/nginx-hy2-panel.conf。
如果你的公网域名是 hy2.xn--876a.net,建议生产环境把 .env 中的 APP_URL 改成:
APP_URL=https://hy2.xn--876a.net
SESSION_COOKIE_SECURE=auto
示例配置默认反代到 127.0.0.1:3000,证书路径为:
/etc/nginx/ssl/hy2.xn--876a.net/fullchain.pem
/etc/nginx/ssl/hy2.xn--876a.net/privkey.pem
典型启用流程:
sudo mkdir -p /etc/nginx/ssl/hy2.xn--876a.net
sudo cp fullchain.pem /etc/nginx/ssl/hy2.xn--876a.net/fullchain.pem
sudo cp privkey.pem /etc/nginx/ssl/hy2.xn--876a.net/privkey.pem
sudo cp deploy/nginx-hy2-panel.conf /etc/nginx/sites-available/hy2-panel.conf
sudo ln -sf /etc/nginx/sites-available/hy2-panel.conf /etc/nginx/sites-enabled/hy2-panel.conf
sudo nginx -t
sudo systemctl reload nginx
如果你当前的 hy2 节点仍然直接访问 http://38.246.237.36:3000/api/hy2/... 作为鉴权地址,可以继续保留这一入口。上面的 Nginx 只接管 80/443 上的域名访问,不会替换或中断现有的 :3000 直连。
面板内部生成链接时会优先使用反代传入的 X-Forwarded-Host / X-Forwarded-Proto,如果是直接访问 http://38.246.237.36:3000,则会自动退回到当前请求的 Host。
Description
Languages
TypeScript
81.7%
CSS
18%
JavaScript
0.3%