【Hysteria】部署+测试
- 准备服务端代码和配置文件
必要文件:
服务端代码:确保项目代码完整,包含 main.go 和其他依赖文件。
配置文件:server-config.yaml,示例内容如下:
tls:
cert: /etc/hysteria/cert.pem
key: /etc/hysteria/key.pem
auth:
type: password
password: Se7RAuFZ8Lzg
masquerade:
type: proxy
proxy:
url: https://news.ycombinator.com/
rewriteHost: true
自签名证书,使用 OpenSSL 生成证书:openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
将生成的 cert.pem 和 key.pem 文件放在项目根目录。
- 编写 Dockerfile
以下是完整的 Dockerfile:
# 使用 Go 官方镜像作为构建阶段
FROM golang:1.24.1-bookworm AS builder
# 设置 Go 模块代理(可选)
ARG GOPROXY="https://goproxy.cn,direct"
ENV GOPROXY=${GOPROXY}
# 安装 CA 根证书
RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/*
# 将项目代码复制到容器中
COPY . /go/src/github.com/apernet/hysteria
# 将配置文件复制到容器中
COPY ./app/server-config.yaml /etc/hysteria/server-config.yaml
# 设置工作目录
WORKDIR /go/src/github.com/apernet/hysteria/app
# 在容器中编译可执行文件
RUN go build -o hysteria-server main.go
# 使用更小的基础镜像运行程序
FROM debian:bookworm-slim
# 安装 CA 根证书
RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/*
# 将编译好的可执行文件从构建阶段复制到运行阶段
COPY --from=builder /go/src/github.com/apernet/hysteria/app/hysteria-server /usr/local/bin/hysteria-server
# 将自签名证书复制到容器中
COPY ./cert.pem /etc/hysteria/cert.pem
COPY ./key.pem /etc/hysteria/key.pem
# 设置容器启动时运行的命令
CMD ["hysteria-server", "server", "--config", "/etc/hysteria/server-config.yaml"]
- 构建和运行 Docker 容器
构建镜像
在项目根目录运行以下命令:
docker build -t hysteria-server .
运行容器
运行以下命令启动服务端容器,并映射 443 端口:
docker run -d --name hysteria-server -p 443:443/udp hysteria-server
如果报配置有问题 运行以下命令(使用 -v 参数挂载配置文件)
docker run -d --name hysteria-server -p 443:443/udp \
-v $(pwd)/app/server-config.yaml:/etc/hysteria/server-config.yaml \
hysteria-server
验证容器是否运行
运行以下命令查看容器状态:
docker ps
确保 PORTS 列显示 0.0.0.0:443->443/udp。
- 测试服务端代理协议
配置客户端
创建 client-config.yaml 文件,示例如下:
server: 127.0.0.1:443
auth: Se7RAuFZ8Lzg
bandwidth:
up: 20 mbps
down: 100 mbps
socks5:
listen: 127.0.0.1:1080
http:
listen: 127.0.0.1:8080
tls:
insecure: true
在项目根目录运行以下命令:
go build -o hysteria-client ./app/main.go
编译完成后,你会在当前目录下看到 hysteria-client.exe 文件
运行客户端,在客户端主机上运行以下命令:
.\hysteria-client.exe --config c:\Users\xxx(用户名)\Desktop\hysteria\app\client-config.yaml
测试代理协议
测试 HTTP 代理:
curl -x http://127.0.0.1:8080 http://example.com
如果返回正常的 HTML 内容,说明 HTTP 代理工作正常。
测试 SOCKS5 代理:
curl --socks5 127.0.0.1:1080 http://example.com
如果返回正常的 HTML 内容,说明 SOCKS5 代理工作正常。