全球主机交流论坛
标题:
仅需两分钟 用docker启动一个hysteria2服务端
[打印本页]
作者:
岱岳之上的天
时间:
2024-12-5 16:54
标题:
仅需两分钟 用docker启动一个hysteria2服务端
本帖最后由 岱岳之上的天 于 2024-12-26 06:51 编辑
省流总结:
本文将教你如何在最短时间内,使用docker启动一个hysteria2服务端,以供客户端来使用。
本文适用于vps上已经存在使用docker启动其他服务,或者使用docker启动安装服务更方便的场景。
-----------------------------------------------------------
前言:
在跟随本文完成相应步骤之前,你需要确定你的vps已经安装了docker和docker compose(如果是官方渠道安装的,那么已经包含了compose组件了,但如果是通过linux系统自身的包管理器安装的,那么还需要额外安装一下docker-compose)
那么,如何通过官方脚本安装docker呢?
curl https://get.docker.com | bash
复制代码
-----------------------------------------------------------
具体步骤:
1.首先,需要先切换到一个合适的目录,比如你的ssh连接使用的是root用户登录的话,那就使用 /root 目录好了。
cd ~
复制代码
2.在此目录下创建一个文件夹并为其取一个合适的名字,如果没什么主意嘛,那就叫它hysteria好了。
mkdir hysteria
复制代码
3.随后,进入这个文件夹,新建一个文件名为 docker-compose.yml。
cd hysteria
vim docker-compose.yml
复制代码
在里面粘贴以下内容。
services:
hysteria:
image: 'tobyxdd/hysteria:latest'
container_name: hysteria-server
restart: always
network_mode: host
volumes:
- '$PWD/:/etc/hysteria'
environment:
- HYSTERIA_DISABLE_UPDATE_CHECK = 1
cap_add:
- NET_ADMIN
- NET_BIND_SERVICE
- SYS_PTRACE
- DAC_READ_SEARCH
devices:
- '/dev/net/tun:/dev/net/tun'
deploy:
resources:
limits:
cpus: '0.5'
memory: 256M
command: ["server", "-c", "/etc/hysteria/config.yaml"]
复制代码
正如你所看到的一样,这个compose文件为这个容器施加了一定的资源限制(0.5核心使用量,256M内存),若vps剩余资源充足(如2G以上运行内存的机器),则可以按需修改limits下的cpus和memory的值来为这个容器分配更多的资源。
如果没什么要修改的了,那就,保存,退出。
4.然后,再在当前目录下新建一个文件,名为 config.yaml。
vim config.yaml
复制代码
将以下内容粘贴到文件里(请在粘贴之前,暂时先将此处的内容放到一个文本编辑器里,按需修改文件中的值并删除以井号开头的汉字注释)
# 这是服务端所使用的端口号,可以按需修改(如可将443修改为所需要的其他端口号)
listen: :443
ignoreClientBandwidth: false
speedTest: false
disableUDP: false
udpIdleTimeout: 120s
# 此处的ssl证书和密钥需要放到上方步骤中提到的,已经新建的目录下
tls:
cert: /etc/hysteria/server.pem
key: /etc/hysteria/server.key
sniGuard: disable
# 如果你的vps剩余资源充裕,且您需要达到100mbps以上的速率,请直接删除此处的quic字段,或者参照官方文档修改具体值
quic:
initStreamReceiveWindow: 1048576
maxStreamReceiveWindow: 1048576
initConnReceiveWindow: 4194304
maxConnReceiveWindow: 4194304
maxIdleTimeout: 30s
maxIncomingStreams: 65535
disablePathMTUDiscovery: true
# brutal模式下的速度限制,可以按需修改
bandwidth:
up: 100 mbps
down: 100 mbps
# 此处的password字段为客户端连接时的认证密码,必须修改为别的值(不含特殊符号),请确保密码难以猜测
auth:
type: password
password: password1
# 如果需要让服务端程序直接使用系统的DNS解析,请直接删除此字段
resolver:
type: tls
tls:
addr: 208.67.220.220:853
timeout: 4s
sni: dns.opendns.com
insecure: true
# 服务端流量嗅探功能,默认为开启,目的是配合服务端分流或者acl使用
sniff:
enable: true
timeout: 2s
rewriteDomain: false
tcpPorts: 80,443,8000-9000
udpPorts: all
# 若无特殊需要,则无需额外修改此处的字段
outbounds:
- name: freedom
type: direct
direct:
mode: auto
# 伪装字段,若不需要可删除,若需要可按需修改
masquerade:
type: string
string:
content: Invalid request, please use correct method.
headers:
Server: quic-server
Content-Type: application/octet-stream; charset=UTF-8
Cache-Control: no-store
Content-Length: 8
Content-Encoding: compress
Connection: close
statusCode: 200
复制代码
如果没有什么需要修改的了,那就保存,退出即可。
5.请继续留在已经新建的目录下,让我们来生成一个自签名证书。
openssl req -x509 -sha256 -nodes -days 3650 -newkey rsa:4096 -keyout server.key -out server.pem
复制代码
命令运行后签发证书时会提示填写相应信息,按照自己的需要按需填写就好,如果不确定应该填写什么,可以全部填写nu这两个字母(意为null)或者在每个填空处按一下enter键,进行完这个步骤后,生成的证书会放在新建的目录下
6.此时就可以启动hysteria服务端来试试了
docker compose up -d
复制代码
若为通过linux源安装的docker-compose,只需要小小修改:
docker-compose up -d
复制代码
到此就结束了,此时就可以看看hysteria服务启动没有:
docker container ls
复制代码
如果返回输出为以下类似情形,则它就跑起来了,在确保防火墙放行相应端口号的情况下,就可以在本地客户端填写一下相应服务器的连接信息来测试一下了。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8ad83a750000 tobyxdd/hysteria:latest "hysteria server -c …" 1 min ago Up 1 mins hysteria-server
复制代码
-----------------------------------------------------
常见问题:
1.为什么启动后,当我查看结果时发现处于 restarting... 状态?
答:这说明刚才config文件填写有误,比如缩进错误(yml文件严格要求缩进格式),比如使用了不被允许的符号作为密码,比如生成证书的时候没有成功,比如其他设置项的值填写的不正确等等,可以挨个检查一下。
2.我怎么查看服务端运行状态呢?
答:
docker logs hysteria-server
复制代码
3.状态为Up,logs也没看出问题,我为什么就是连不上?
答:遇到这种情况可能是由于vps本身的防火墙,或者服务提供商的安全组规则没有放行对应端口导致的。具体可以根据vps本身所用的防火墙软件来查询怎么放行对应端口。或者查找相应的帮助文档来了解怎么在服务提供商的安全组里面放行对应端口。
除此之外还有可能是本地连接信息填写的不正确导致的,比如说连接密码,比如自签名证书要 允许不安全连接(意思是跳过证书验证),比如本地客户端填写的服务器端口不对等等可能的远因,可以挨个排查一下。
4.我以后要升级服务端版本怎么办?
首先,执行
docker image ls
复制代码
查看hysteria那个image的前四位image id,然后进入到当时建立的那个配置目录下,执行。
docker compose down && docker image rm 前四位id && docker compose up -d
复制代码
这样就能确保其重新拉取最新的镜像启动了。
5.为什么一定要为hysteria服务端(这个容器)设置资源限制?
答:这是因为目前它内存管理做的不够好,如果设置限制的话,在TCP或者UDP连接数达到一定数值的时候,这个程序会占用完所有机器上可用的运行内存。从而导致系统崩溃。
如果设置了限制的话,只是会导致这个程序出现oom错误,然后程序本身重启而已,这样更安全。
作者:
Ausxilia
时间:
2024-12-5 16:59
恩,写的很好,我用XUI
作者:
mhw188
时间:
2024-12-5 17:00
歇斯底里2,确实很好用。
作者:
adminii
时间:
2024-12-5 17:03
写的不错,我一直用 酸酸 1305
作者:
陶泥猴子
时间:
2024-12-5 17:04
新手给2小时也搞不定啊
作者:
llyy
时间:
2024-12-5 17:05
好复杂 sui有脚本1秒就好了
作者:
奔跑吧蜗牛cc
时间:
2024-12-5 17:14
llyy 发表于 2024-12-5 17:05
好复杂 sui有脚本1秒就好了
来个连接
作者:
雅丶涵
时间:
2024-12-5 17:14
为什么不一键代码,2秒都不用
作者:
lanlandezei
时间:
2024-12-5 17:16
我还得提前安装一个DOCKER
作者:
贰零贰零伍贰零
时间:
2024-12-5 17:17
真不错,先收藏
作者:
yaren
时间:
2024-12-5 17:17
hy2有可执行文件,一句话的事啊,还弄个docker?.....
作者:
虎谷
时间:
2024-12-5 17:34
学到了新知识,感谢大佬
作者:
三月七
时间:
2024-12-5 17:42
hy2一般都给垃圾线路便宜机器,最便宜的v6鸡。但是docker又不支持ipv6。而且docker内存太小跑不顺,所以用docker不是自废武功。
作者:
lsin
时间:
2024-12-5 18:04
用官方脚本也不要2分钟
作者:
Harbor
时间:
2024-12-5 18:11
可以 支持!
作者:
local
时间:
2024-12-5 18:12
什么玩意 完全看不懂 理解不了 在干什么?
作者:
ccuu
时间:
2024-12-5 18:19
感谢分享
作者:
崇拜技术大佬
时间:
2024-12-5 18:21
不错,2分钟搞不完
作者:
米尼科技
时间:
2024-12-5 18:22
一键脚本多省事啊。。我以为很简单。步骤好多 哈哈
作者:
fzaas
时间:
2024-12-5 18:24
卧槽。来个教程。
今天搞了hysteria2,确实比其他的快的多
欧美垃圾小鸡鸡,换春天了
作者:
lyh36279
时间:
2024-12-5 18:45
奔跑吧蜗牛cc 发表于 2024-12-5 17:14
来个连接
https://github.com/missuo/Hysteria2
作者:
aaq
时间:
2024-12-5 18:47
hy官方推荐这个也可以用啊 https://github.com/jonssonyan/h-ui 一行代码的事,整复杂了。
作者:
egge
时间:
2024-12-5 19:04
很復雜
作者:
海的那一边
时间:
2024-12-5 19:07
收藏备用!!
作者:
张小龙
时间:
2024-12-5 19:09
这一套下来感觉得要2小时
作者:
Kvm
时间:
2024-12-5 19:24
写个数组 生成 yaml 吧 简单省事
作者:
loclouis
时间:
2024-12-5 19:35
很棒
作者:
Jaywxl
时间:
2024-12-13 00:40
dc02,我的邻居都在搞什么,我用reality50kb,转到hy2平均6mb
欢迎光临 全球主机交流论坛 (https://lilynana.eu.org/)
Powered by Discuz! X3.4