Hysteria 是一个强大、快速、抗审查的代理工具。
可能也是最可爱的。
—— Hysteria 官方页面
此页面仅针对 GNU/Linux 给出解决方案,我使用的系统环境为 Debian GNU/Linux,在 Ubuntu GNU/Linux 上也可以正常使用。此页面内容仅作技术交流使用。Hysteria 的官方文档中阐述了在 Docker 中部署 Hysteria 的流程,但是并没有很详细(可能是我没找到详细的文档?),特此记录。
警告:下面的部分操作需要根据实际情况来进行,请根据自身情况修改命令,部分命令需要在具有 root 权限的情况下使用。如果因为误操作造成任何损失,本文作者不承担任何责任。在运行任何命令之前,我认为最好考虑一下这条命令在执行后会发生什么,再按下 Enter 执行它。
准备工作
需要准备的东西:
- 一个域名,并且解析到你的服务器上
- 上面那个域名的 SSL 证书,分为证书(certificate.crt)和私钥(private.key)。或者你也可以选择使用 ACME,这需要一个有效的电子邮件地址。
- Docker
- 重要文件的备份
- 清醒的大脑
首先,我们需要 Docker 才能在 Docker 容器中运行 Hysteria。
如果你不知道这是什么,请先访问 Manuals | Docker Docs 学习 Docker 的安装与基本使用方法后再继续阅读此文章。
我们需要 Hysteria 的 Docker 镜像才能运行 Hysteria,使用以下命令拉取 Hysteria 的镜像:
docker pull tobyxdd/hysteria:latest
由于某些原因,在大陆地区拉取镜像可能会失败,这时候需要配置镜像加速来解决此问题(参考:DockerPull 镜像加速 )。在镜像拉取完成后,使用以下命令可以查看本地所有的 Docker 镜像:
docker images
如果一切正常,可以在输出中找到 tobyxdd/hysteria。
完成上述步骤后,我们需要创建几个文件夹,用于存储 Hysteria 的配置文件及 SSL 证书。下面的文件夹仅作示例,可以根据实际情况进行修改,也可以直接 CtrlCV。
mkdir /usr/local/etc/hysteria
如果你选择使用自有证书的话,需要再执行一条:
mkdir /usr/local/etc/hysteria/secret
其中,Hysteria 的配置文件 config.json 放置在 hysteria 目录下,SSL 证书放置在 secret 目录下。
创建容器
这里先解释一下 Docker 中的几个网络模式:
- host:(主机模式)直接将容器的网络堆栈与主机共享,性能比 Bridge 更好。通俗易懂的来说,就是容器与主机公用一个 IP 地址。这一方式不需要过多配置,适合刚使用 Docker 的新手。
- bridge:(桥接模式)是 Docker 默认的网络模式,创建了一个虚拟的交换机,用于连接各个容器。每个容器都能分配单独的 IP 地址,容器之间可以直接通过这个 IP 地址或者容器名称进行通信。在不暴露任何端口的情况下,外部网络不能直接与容器进行通信,而容器可以通过 bridge 的 NAT 地址转换来与外界通信(没错,就是臭名昭著的那个 NAT 网络)。由于这个模式类似于创建了一个虚拟交换机,因此性能会比 host 模式稍差,但是几乎可以忽略不计。
- none:(与世隔绝模式)容器不使用任何网络服务,一般来说根本用不着这玩意。
根据自己的实际情况来选择网络模式,这里以 bridge 模式为例,开放 16384 端口,之后会同时配置 Hysteria 的监听端口为 16384。下面是一个创建容器的示例,可以根据实际情况进行修改,也可以直接 CtrlCV:
docker create --name hysteria --network bridge --publish 16384:16384 --volume /usr/local/etc/hysteria:/etc/hysteria tobyxdd/hysteria server
- “–name hysteria” 指定了容器的名称为 hysteria
- “–network bridge” 指定了容器的网络模式为 bridge 模式(如果使用 bridge 模式的话,通常可以省略该选项,因为 bridge 是默认的网络模式)
- “–publish 16384:16384” 指定了映射容器内的 16384 端口到主机的 16384 端口(注意,需要确保主机的 16384 端口没有被占用)
- “–volume /usr/local/etc/hysteria:/etc/hysteria” 指定了挂载主机的 “/usr/local/etc/hysteria” 目录(也就是我们上面创建的那个)到容器内的 “/etc/hysteria”
- “tobyxdd/hysteria” 为镜像名称
- “server” 指定了 Hysteria 以服务端模式运行,而不是默认的客户端
创建容器后,使用以下命令查看容器列表:
docker ps --all
如果一切正常,可以在输出中找到容器 hysteria。
创建并编辑配置文件&配置证书
Hysteria 配置文件的完全体可以在其官方文档上看到,这里仅写出基本的配置,其他高级用法可以自行研究。根据下面的方法创建 Hysteria 服务端的配置文件:
cd /usr/local/etc/hysteria
sudo nano config.json
进入 nano 编辑器之后,将下面的内容粘贴到编辑器中,需要自行修改相关内容。
使用 ACME 的配置文件如下:
# listen: :16384
acme:
domains:
- www.example.com(修改成你的服务器的域名地址)
email: [email protected] (修改成你的电子邮件地址)
auth:
type: password
password: 你的密码
使用自有证书的配置文件如下:
# listen: :16384
tls:
cert: /etc/hysteria/secret/certificate.crt
key: /etc/hysteria/secret/private.key
auth:
type: password
password: 你的密码
将密码更改为你自己的密码之后,依次按下 Ctrl+X,Y,Enter 来保存并退出 nano 编辑器。如果你选择使用 ACME 的话,你需要修改配置文件中的域名和电子邮件地址。如果你选择使用自有证书的话,将你准备的域名证书和私钥分别重命名为 certificate.crt 和 private.key,并且上传到主机的 “/usr/local/etc/hysteria/secret/” 目录下。
运行容器
使用以下命令来启动容器并查看运行日志:
docker start hysteria
docker logs hysteria
如果一切正常,输出中应该会显示 server up and running。
连接到服务器
使用你的客户端(例如 v2RayN 或者 Sing-Box)连接到服务器,地址为 你的域名:16384。
大功告成。
发表回复