Skip to content

Repository files navigation

S-Hy2 Manager

Hysteria2 代理服务器一键部署与管理工具

当前版本:v2.0.2

作者:陌涛

项目地址:https://github.com/motao123/S-Hy2-Manager

快速安装 · 功能概览 · CLI 用法 · 项目结构 · 开发


功能概览

分类 功能
部署 一键安装 / 卸载、快速配置 / 手动配置、部署后自动检查
用户 多用户管理(userpass 认证)、批量添加 / 删除
导出 客户端 YAML / URI 链接 / 二维码 / 订阅链接
证书 ACME 自动证书、自签名证书、自定义证书上传
出站 Direct / SOCKS5 / HTTP 代理规则管理
运维 配置备份恢复、日志管理、流量统计、速度测试
网络 防火墙自动配置、端口跳跃、DNS 管理、ACL 规则、带宽限制
安全 输入注入防护、安全临时文件、SHA256 完整性校验、安全下载、Tar Slip 防护、安全 YAML 写入
更新 Hysteria2 二进制更新 + 脚本自身更新

快速安装

curl -fsSL --proto '=https' --tlsv1.2 \
  -o quick-install.sh \
  https://raw.githubusercontent.com/motao123/S-Hy2-Manager/main/quick-install.sh
bash -n quick-install.sh
sudo bash quick-install.sh
sudo s-hy2

手动安装

git clone https://github.com/motao123/S-Hy2-Manager.git
cd S-Hy2-Manager
chmod +x hy2-manager.sh scripts/*.sh modules/*.sh
sudo ./hy2-manager.sh

系统要求

  • Ubuntu 18.04+ / Debian 9+ / CentOS 7+ / Fedora 30+
  • root 或 sudo 权限
  • systemd

最近更新

v2.0.2(2026-06-20)

  • 修复备份恢复前未校验 tar 成员路径的问题,阻止绝对路径与 .. 路径遍历覆盖系统文件。
  • 统一远程安装、卸载、更新脚本执行入口,下载后执行语法检查与 SHA256 记录校验。
  • 将 ACME、自签名和快速配置生成统一改为安全 YAML 写入,避免特殊字符破坏配置结构。
  • 将参考配置加载器改为只解析受支持的赋值语句,不再 source 执行配置文件。
  • 将端口跳跃相关 iptables 规则删除改为数组参数执行,并补充 ShellCheck CI。

v2.0.1(2026-04-29)

  • 修复 DNS 配置管理中“使用推荐 DNS 配置”在交互菜单内选择后可能异常返回/退出的问题。
  • 优化推荐 DNS 写入流程,统一复用安全 YAML 写入与配置替换逻辑。
  • 增强 DNS 配置写入时的备份与权限处理,继续保留修改前配置快照。
  • 验证主菜单与子菜单基础入口:域名、证书、服务、客户端导出、出站、防火墙、用户、ACL、带宽、DNS、备份、日志等菜单均可正常返回。
  • 验证服务器部署目录 /opt/s-hy2,并同步最新模块化脚本结构到服务器安装目录。

CLI 用法

sudo s-hy2                          # 交互菜单(默认)
sudo s-hy2 --install                # 安装 Hysteria2
sudo s-hy2 --uninstall              # 卸载
sudo s-hy2 --status                 # 服务状态
sudo s-hy2 --restart                # 重启服务
sudo s-hy2 --stop                   # 停止服务
sudo s-hy2 --start                  # 启动服务

# 用户管理
sudo s-hy2 --list-users             # 列出用户
sudo s-hy2 --add-user alice         # 添加用户(自动生成密码)
sudo s-hy2 --del-user alice         # 删除用户

# 导出
sudo s-hy2 --export                 # 导出客户端 YAML
sudo s-hy2 --export-uri             # 导出 URI 链接
sudo s-hy2 --export-sub             # 导出订阅链接

# 运维
sudo s-hy2 --backup                 # 创建备份
sudo s-hy2 --restore                # 恢复最新备份
sudo s-hy2 --validate               # 验证配置文件
sudo s-hy2 --speed-test             # 速度测试
sudo s-hy2 --update                 # 检查更新
sudo s-hy2 -v                       # 显示版本

交互菜单

── 基础操作 ──
 1  安装 Hysteria2       2  快速配置        3  手动配置
 4  修改配置              5  域名管理        6  证书管理
 7  服务管理              8  订阅链接 / 客户端导出

── 高级功能 ──
 9  出站规则             10  防火墙管理     11  多用户管理
12  ACL 规则管理         13  带宽限制       14  DNS 配置管理

── 运维工具 ──
15  配置备份与恢复       16  日志管理       17  速度测试
18  流量统计             19  检查更新

20  卸载服务             21  关于脚本        0  退出

项目结构

S-Hy2-Manager/
├── hy2-manager.sh              # 主入口(菜单 + CLI 分发 + 核心函数)
├── install.sh                  # 安装 / 卸载脚本
├── quick-install.sh            # 一键安装脚本
│
├── modules/                    # 功能模块(由主脚本 source 加载)
│   ├── install.sh              #   安装逻辑
│   ├── domain.sh               #   域名管理(ACME + 伪装域名)
│   ├── certificate.sh          #   证书管理
│   ├── port-hopping.sh         #   端口跳跃
│   ├── config-edit.sh          #   配置修改(密码 / 端口 / 混淆)
│   ├── user-manager.sh         #   多用户管理
│   ├── client-export.sh        #   客户端导出(YAML / URI / QR / 订阅)
│   ├── backup.sh               #   配置备份与恢复
│   ├── acl-manager.sh          #   ACL 规则管理
│   ├── bandwidth.sh            #   带宽限制
│   ├── traffic-stats.sh        #   流量统计
│   ├── log-manager.sh          #   日志管理
│   ├── auto-update.sh          #   自动更新(SHA256 变更检测)
│   ├── speed-test.sh           #   速度测试
│   ├── dns-manager.sh          #   DNS 配置管理
│   ├── outbound-core.sh        #   出站规则 — 核心初始化
│   ├── outbound-add.sh         #   出站规则 — 添加
│   ├── outbound-modify.sh      #   出站规则 — 修改
│   ├── outbound-delete.sh      #   出站规则 — 删除
│   ├── outbound-apply.sh       #   出站规则 — 应用配置
│   └── outbound-view.sh        #   出站规则 — 查看展示
│
├── scripts/                    # 公共库与辅助脚本
│   ├── common.sh               #   公共函数(日志 / 错误处理 / 路径常量 / 密码生成)
│   ├── config.sh               #   配置生成(快速 / 手动)
│   ├── service.sh              #   服务管理
│   ├── input-validation.sh     #   输入验证与注入防护
│   ├── secure-download.sh      #   安全下载 + SHA256 校验
│   ├── firewall-manager.sh     #   防火墙管理
│   ├── outbound-manager.sh     #   出站规则加载入口
│   ├── domain-test.sh          #   伪装域名优选测试
│   ├── node-info.sh            #   节点信息展示
│   └── post-deploy-check.sh    #   部署后检查
│
├── templates/                  # YAML 配置模板
│   ├── acme-config.yaml        #   ACME 证书配置
│   ├── client-config.yaml      #   客户端配置
│   └── self-cert-config.yaml   #   自签名证书配置
│
├── config/                     # 应用配置
│   └── app.conf                #   全局参数(端口 / 超时 / 安全开关等)
│
├── contrib/                    # 参考材料(非生产代码)
│
└── .github/workflows/
    ├── pages.yml               # GitHub Pages 部署
    └── shellcheck.yml          # CI — ShellCheck 代码检查

开发

添加模块

  1. modules/ 下创建 .sh 文件
  2. 头部加 #!/bin/bash 和模块说明
  3. 使用 common.sh 提供的公共函数(日志、错误处理、路径常量等)
  4. hy2-manager.shload_new_modules() 中追加模块名
  5. print_menu()main() 的 case 中添加菜单入口

代码规范

  • ShellCheck 核心脚本检查通过(CI 强制)
  • 变量双引号包裹:"$var" 而非 $var
  • local 声明与赋值分开:
    local result
    result=$(some_command)
  • 路径使用 common.sh 中的常量,不硬编码
  • 临时文件用 create_temp_file() / create_temp_dir()(权限 600/700)
  • YAML 写入用 yaml_write_kv() / replace_config_file_securely()

路径常量

常量
HYSTERIA_DIR /etc/hysteria
HYSTERIA_CONFIG /etc/hysteria/config.yaml
HYSTERIA_DOMAIN_CONF /etc/hysteria/server-domain.conf
HYSTERIA_PORT_HOPPING_CONF /etc/hysteria/port-hopping.conf
HYSTERIA_SERVICE hysteria-server.service

更新日志

v2.0.2

  • 安全修复:备份恢复增加 Tar Slip 路径校验并收紧备份目录权限
  • 安全修复:远程脚本执行统一走下载、语法检查、SHA256 记录校验入口
  • 安全修复:配置生成统一使用 yaml_write_kv() / replace_config_file_securely()
  • 安全修复:contrib/config-loader.sh 改为安全解析配置,不再 source 执行
  • 工程化:补充 ShellCheck GitHub Actions,并同步 Pages/README 安全说明

v2.0.1

  • 版本号更新为 v2.0.1
  • 修复 DNS 推荐配置交互流程异常
  • 补充最近更新说明与服务器验证记录
  • 完成菜单冒烟测试与 shell 语法检查

v2.0.0

  • 架构重构:主脚本拆分为 21 个功能模块
  • 安全加固:输入注入防护、安全临时文件、SHA256 完整性校验、安全下载
  • YAML 安全写入:集中化 yaml_write_kv() / yaml_quote_scalar()
  • 自动更新:MD5 → SHA256 变更检测 + 版本记录
  • CI:ShellCheck 自动检查

v1.1.2

  • 修复安装 Hysteria2 异常报错

v1.1.1

  • 修复安装模块路径异常、出站规则删除闪退
  • 优化伪装域名优选、出站规则状态检查

v1.1.0

  • 新增智能出站规则管理、防火墙自动检测

v1.0.0

  • 初始版本

贡献

  1. Fork → 创建功能分支 → 提交 → PR
  2. 确保 ShellCheck 通过
  3. 新功能附对应测试

赞助

如果这个项目对你有帮助,可以请作者喝杯咖啡

赞助

赞助商

棉花云

棉花云 — 高性能云服务器

购买云服务器 · 官网


如果这个项目对你有帮助,请给个 Star ⭐

报告问题 · 提建议

About

Hysteria2 一键部署与管理脚本 | One-stop Hysteria2 deployment & management

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages