Hysteria2怎么升级和卸载?官方脚本的版本管理与备份注意事项

Hysteria2 隔一阵子就有新版本,升级和卸载的方法其实很简单,但有两件事官方文档没有说清楚,贸然操作容易出问题:升级会不会动你的配置,卸载会不会连配置一起删。所以动手前先备份一次,花几秒钟就能避免大部分麻烦。这篇针对的是用官方脚本安装的情况,用面板的话版本由面板管理,不适用。

动手前先备份

1
cp -a /etc/hysteria /etc/hysteria.bak

这样配置文件和放在这个目录里的证书都有了备份。官方文档没有明确说明升级或卸载时这个目录会不会被保留,我这里不下结论,先备份是最稳妥的。服务端配置怎么写可以看config.yaml 最小配置,备份之后出了问题能直接还原。

先看当前版本,再看有没有更新

官方命令行自带两个子命令:

1
2
hysteria version
hysteria check-update

前者显示当前安装的版本,后者检查有没有新版本可用。也可以直接去 GitHub 上 Hysteria 的 Releases 页面看最新版本号和更新说明。跨好几个版本升级之前,建议先看一眼更新说明,确认有没有配置字段被改名或者废弃,这样升级后服务起不来的时候也知道往哪查。

升级:重新跑一遍安装脚本

官方文档里,安装和升级是同一条命令,页面上写的就是"Install or upgrade to the latest version":

1
bash <(curl -fsSL https://get.hy2.sh/)

想装指定版本,在后面加 --version:

1
bash <(curl -fsSL https://get.hy2.sh/) --version v2.12.3

这里的版本号只是官方文档里的示例,换成你要的版本。需要说明的是,官方文档写的是"升级到指定版本",没有专门说明能不能用这个参数降级到更旧的版本,要降级的话先自己在测试环境里确认一下,不要直接在正在用的服务器上试。

升级完成后,让服务用上新程序并确认状态:

1
2
3
systemctl restart hysteria-server.service
hysteria version
journalctl --no-pager -e -u hysteria-server.service

官方文档没有写脚本升级之后会不会自动重启服务,所以这里手动重启一次最保险。日志里没有报错,客户端能正常连上,升级就算完成了。

GitHub 访问不了怎么办

有些服务器直连 GitHub 很慢甚至连不上。官方脚本提供了 --local 参数,可以用你自己下载好的二进制文件来安装:

1
bash <(curl -fsSL https://get.hy2.sh/) --local /path/to/hysteria-linux-amd64

做法是先在能访问 GitHub 的机器上,从 Releases 页面下载对应架构的 hysteria-linux-amd64(或者 arm64 等),上传到服务器,再把路径填到命令里。注意这条命令里的安装脚本本身仍然是从 get.hy2.sh 下载的,这个地址同样需要能访问,只是省掉了下载程序本体这一步。

卸载

1
bash <(curl -fsSL https://get.hy2.sh/) --remove

官方文档只给了命令,没有说明卸载后配置目录会不会保留。卸载完建议自己检查:

1
2
ls /etc/hysteria
systemctl status hysteria-server

目录还在、不需要了,就手动删掉;想以后重装复用,就留着。如果之前设置了端口跳跃用的 iptables 手动规则(见端口跳跃配置),这些规则是你自己加的,卸载程序不会替你清理,需要自己删掉,同样别忘了回服务商安全组里把不用的 UDP 端口规则关掉。

升级后连不上,按这个顺序查

  1. 看日志:journalctl 的报错通常会直接指出是哪个配置字段有问题。
  2. 对照更新说明:看新版本有没有改动配置格式。
  3. 还原备份:配置出问题就用 /etc/hysteria.bak 里的文件还原,重启服务。
  4. 客户端和服务端版本差得太多:客户端也考虑更新到比较新的版本,连接参数怎么对应可以回头看客户端导入连接。

用面板管理节点的话,升级由面板负责,不需要手动处理 Hysteria2 本身,参考3x-ui配置Hysteria2节点教程。