[simpleflied chinese] 使用docker启动一个hysteria服务端仅需两分钟 #1248
smateoliu
started this conversation in
Show and tell
Replies: 1 comment 2 replies
-
想问下resolver字段里的208.67.220.220:853是啥啊🤔,208.67.220.220是你服务器的IP地址吗 |
Beta Was this translation helpful? Give feedback.
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
在跟随本文完成相应步骤之前,您需要确定您的服务器已经安装了docker和docker compose。
(如果是官方渠道安装的,那么已经包含了compose,但如果您是通过linux系统自身的包管理器安装的,那么您还需要额外安装一下docker-compose)
噢,伙计们,我觉得这应该是最简单的,启动hysteria服务端的做法了。
没错,正如您看到的标题所述。对于一个在使用linux方面有经验的人来说,完成这些操作仅需两分钟。
具体步骤:
1.请您切换到一个合适的目录,比如当使用root用户登录服务器时,那就使用 /root 目录好了。
2.在此目录下创建一个文件夹并为其命名,如果您没什么主意嘛,那就叫hysteria好了。
3.随后,让我们进入这个文件夹,新建一个文件名为 docker-compose.yml。
在里面粘贴以下内容。
正如您所看到的一样,这个compose file为这个容器施加了一定的资源限制(0.5CPU核心使用量,256M内存),您可以在保存之前,根据相应服务器的实际资源剩余量通过编辑位于deploy字段下相应值的方式,按需分配能够使用的资源。
让我们保存,退出。
4.然后,我们再新建一个文件,名为 config.yaml。
将以下内容粘贴到文件里(请在粘贴之前,暂时先将此处的内容放到一个文本编辑器里,按需修改文件中的值并以井号开头的删除汉字注释)
让我们保存并退出。
5.请继续停留在新建的目录下,让我们来生成一个自签名证书。
(命令运行后会提示填写相应信息,按照自己的需要按需填写就好,如果没有什么主意,则可以在每个填空处按一次Enter跳过,进行完这个步骤后,生成的证书会放在新建的目录下)
6.hysteria,启动!
若为通过linux源安装的docker-compose,只需要小小修改:
噢,到此就结束了,让我们看看hysteria服务启动没有:
如果返回输出为以下类似情形,则它就跑起来了,在确保防火墙放行相应端口号的情况下,请在本地填写连接信息,测试一下吧,让它带你飞!
常见问题:
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
这样就能确保其重新拉取最新的image启动了。
5.为什么要为容器设置内存和CPU使用量限制?
答:这是因为目前(截至文本编辑时)hysteria服务端程序内存管理方面做的不好,如果不设置限制的话,在TCP或者UDP连接数一定数量的情况下,会直接把整个机器的可用RAM占完,从而导致系统崩溃。如果设置了限制的话,最多也就是这个程序出现oom,然后重启而已。
6.docker-compose 和 config 这两个yaml文件是什么关系?
答:前者是一个用于运行容器的配置文件,里面所填写的参数是被docker所使用的。后者是一个hysteria程序本身的配置文件,被程序本身所使用,用于启动一个服务端。
7.为什么要写伪装字段到配置文件里呢?
答:通过精心构造的报文回复,可以隐藏相应端口开放了一个hysteria服务端的事实。
只要构造的响应报文足够细致,那么在使用正确的认证密码连接服务端之前,谁都不会觉得这是一个hysteria服务端。
8.使用这种方式手动搭建的服务端,本地客户端连接时到底要填写服务端配置文件中的哪些信息?
答:最少只需要填写 认证密码、服务端程序所使用的端口号、服务器自身的IP地址 就可以了,对于自签名证书来说,还需要在本地客户端 允许不安全连接(又名跳过证书验证)
踩坑经验/注意事项:
1.若本地客户端填写的服务器地址为域名而不是IP地址,那么请记得一定要单独设置一下SNI一项的值(因为这一项会显示在QUIC的Client Hello里)。
2.如果运行的是命令行程序,请记得开启Lazy start,不然由于网络问题,程序频繁自动退出还是很折磨人的。
3.虽然hysteria能抵御一定的线路丢包所带来的传输速度不稳定和下降,但如果线路本身的丢包率超过25%且丢包顺序不规律,那么hysteria也救不了。(比如从伊朗德黑兰的数据中心到美国洛杉矶的reliablesite数据中心、中国大陆到荷兰等)
Beta Was this translation helpful? Give feedback.
All reactions