全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 1283|回复: 27

仅需两分钟 用docker启动一个hysteria2服务端

  [复制链接]
发表于 2024-12-5 16:54:01 | 显示全部楼层 |阅读模式
本帖最后由 岱岳之上的天 于 2024-12-26 06:51 编辑

省流总结:

本文将教你如何在最短时间内,使用docker启动一个hysteria2服务端,以供客户端来使用。
本文适用于vps上已经存在使用docker启动其他服务,或者使用docker启动安装服务更方便的场景。

-----------------------------------------------------------

前言:

在跟随本文完成相应步骤之前,你需要确定你的vps已经安装了docker和docker compose(如果是官方渠道安装的,那么已经包含了compose组件了,但如果是通过linux系统自身的包管理器安装的,那么还需要额外安装一下docker-compose)

那么,如何通过官方脚本安装docker呢?

  1. curl https://get.docker.com | bash
复制代码


-----------------------------------------------------------
具体步骤:

1.首先,需要先切换到一个合适的目录,比如你的ssh连接使用的是root用户登录的话,那就使用 /root 目录好了。

  1. cd ~
复制代码


2.在此目录下创建一个文件夹并为其取一个合适的名字,如果没什么主意嘛,那就叫它hysteria好了。

  1. mkdir hysteria
复制代码


3.随后,进入这个文件夹,新建一个文件名为 docker-compose.yml。

  1. cd hysteria
  2. vim docker-compose.yml
复制代码


在里面粘贴以下内容。

  1. services:
  2.   hysteria:
  3.     image: 'tobyxdd/hysteria:latest'
  4.     container_name: hysteria-server
  5.     restart: always
  6.     network_mode: host
  7.     volumes:
  8.       - '$PWD/:/etc/hysteria'
  9.     environment:
  10.       - HYSTERIA_DISABLE_UPDATE_CHECK = 1
  11.     cap_add:
  12.       - NET_ADMIN
  13.       - NET_BIND_SERVICE
  14.       - SYS_PTRACE
  15.       - DAC_READ_SEARCH
  16.     devices:
  17.       - '/dev/net/tun:/dev/net/tun'
  18.     deploy:
  19.       resources:
  20.         limits:
  21.           cpus: '0.5'
  22.           memory: 256M
  23.     command: ["server", "-c", "/etc/hysteria/config.yaml"]
复制代码


正如你所看到的一样,这个compose文件为这个容器施加了一定的资源限制(0.5核心使用量,256M内存),若vps剩余资源充足(如2G以上运行内存的机器),则可以按需修改limits下的cpus和memory的值来为这个容器分配更多的资源。

如果没什么要修改的了,那就,保存,退出。

4.然后,再在当前目录下新建一个文件,名为 config.yaml。

  1. vim config.yaml
复制代码


将以下内容粘贴到文件里(请在粘贴之前,暂时先将此处的内容放到一个文本编辑器里,按需修改文件中的值并删除以井号开头的汉字注释)


  1. # 这是服务端所使用的端口号,可以按需修改(如可将443修改为所需要的其他端口号)
  2. listen: :443

  3. ignoreClientBandwidth: false
  4. speedTest: false
  5. disableUDP: false
  6. udpIdleTimeout: 120s

  7. # 此处的ssl证书和密钥需要放到上方步骤中提到的,已经新建的目录下
  8. tls:
  9.   cert: /etc/hysteria/server.pem  
  10.   key: /etc/hysteria/server.key
  11.   sniGuard: disable

  12. # 如果你的vps剩余资源充裕,且您需要达到100mbps以上的速率,请直接删除此处的quic字段,或者参照官方文档修改具体值
  13. quic:
  14.   initStreamReceiveWindow: 1048576  
  15.   maxStreamReceiveWindow: 1048576
  16.   initConnReceiveWindow: 4194304
  17.   maxConnReceiveWindow: 4194304
  18.   maxIdleTimeout: 30s
  19.   maxIncomingStreams: 65535
  20.   disablePathMTUDiscovery: true

  21. # brutal模式下的速度限制,可以按需修改
  22. bandwidth:
  23.   up: 100 mbps  
  24.   down: 100 mbps

  25. # 此处的password字段为客户端连接时的认证密码,必须修改为别的值(不含特殊符号),请确保密码难以猜测
  26. auth:
  27.   type: password
  28.   password: password1

  29. # 如果需要让服务端程序直接使用系统的DNS解析,请直接删除此字段
  30. resolver:
  31.   type: tls
  32.   tls:
  33.     addr: 208.67.220.220:853
  34.     timeout: 4s
  35.     sni: dns.opendns.com
  36.     insecure: true

  37. # 服务端流量嗅探功能,默认为开启,目的是配合服务端分流或者acl使用
  38. sniff:
  39.   enable: true
  40.   timeout: 2s
  41.   rewriteDomain: false
  42.   tcpPorts: 80,443,8000-9000
  43.   udpPorts: all

  44. # 若无特殊需要,则无需额外修改此处的字段
  45. outbounds:
  46.   - name: freedom
  47.     type: direct
  48.     direct:
  49.       mode: auto

  50. # 伪装字段,若不需要可删除,若需要可按需修改
  51. masquerade:
  52.   type: string
  53.   string:
  54.     content: Invalid request, please use correct method.
  55.     headers:
  56.       Server: quic-server
  57.       Content-Type: application/octet-stream; charset=UTF-8
  58.       Cache-Control: no-store
  59.       Content-Length: 8
  60.       Content-Encoding: compress
  61.       Connection: close
  62.     statusCode: 200
复制代码


如果没有什么需要修改的了,那就保存,退出即可。

5.请继续留在已经新建的目录下,让我们来生成一个自签名证书。

  1. openssl req -x509 -sha256 -nodes -days 3650 -newkey rsa:4096 -keyout server.key -out server.pem
复制代码


命令运行后签发证书时会提示填写相应信息,按照自己的需要按需填写就好,如果不确定应该填写什么,可以全部填写nu这两个字母(意为null)或者在每个填空处按一下enter键,进行完这个步骤后,生成的证书会放在新建的目录下

6.此时就可以启动hysteria服务端来试试了

  1. docker compose up -d
复制代码


若为通过linux源安装的docker-compose,只需要小小修改:

  1. docker-compose up -d
复制代码


到此就结束了,此时就可以看看hysteria服务启动没有:

  1. docker container ls
复制代码


如果返回输出为以下类似情形,则它就跑起来了,在确保防火墙放行相应端口号的情况下,就可以在本地客户端填写一下相应服务器的连接信息来测试一下了。

  1. CONTAINER ID   IMAGE                     COMMAND                  CREATED      STATUS        PORTS     NAMES
  2. 8ad83a750000   tobyxdd/hysteria:latest   "hysteria server -c …"   1 min ago   Up 1 mins             hysteria-server
复制代码



-----------------------------------------------------

常见问题:

1.为什么启动后,当我查看结果时发现处于 restarting... 状态?
答:这说明刚才config文件填写有误,比如缩进错误(yml文件严格要求缩进格式),比如使用了不被允许的符号作为密码,比如生成证书的时候没有成功,比如其他设置项的值填写的不正确等等,可以挨个检查一下。

2.我怎么查看服务端运行状态呢?
答:

  1. docker logs hysteria-server
复制代码


3.状态为Up,logs也没看出问题,我为什么就是连不上?
答:遇到这种情况可能是由于vps本身的防火墙,或者服务提供商的安全组规则没有放行对应端口导致的。具体可以根据vps本身所用的防火墙软件来查询怎么放行对应端口。或者查找相应的帮助文档来了解怎么在服务提供商的安全组里面放行对应端口。
除此之外还有可能是本地连接信息填写的不正确导致的,比如说连接密码,比如自签名证书要 允许不安全连接(意思是跳过证书验证),比如本地客户端填写的服务器端口不对等等可能的远因,可以挨个排查一下。

4.我以后要升级服务端版本怎么办?

首先,执行
  1. docker image ls
复制代码
查看hysteria那个image的前四位image id,然后进入到当时建立的那个配置目录下,执行。

  1. docker compose down && docker image rm 前四位id && docker compose up -d
复制代码


这样就能确保其重新拉取最新的镜像启动了。

5.为什么一定要为hysteria服务端(这个容器)设置资源限制?
答:这是因为目前它内存管理做的不够好,如果设置限制的话,在TCP或者UDP连接数达到一定数值的时候,这个程序会占用完所有机器上可用的运行内存。从而导致系统崩溃。
如果设置了限制的话,只是会导致这个程序出现oom错误,然后程序本身重启而已,这样更安全。
发表于 2024-12-5 17:14:40 来自手机 | 显示全部楼层
为什么不一键代码,2秒都不用
发表于 2024-12-5 16:59:01 | 显示全部楼层
恩,写的很好,我用XUI
发表于 2024-12-5 17:00:15 | 显示全部楼层
歇斯底里2,确实很好用。
发表于 2024-12-5 17:03:51 来自手机 | 显示全部楼层
写的不错,我一直用 酸酸 1305
发表于 2024-12-5 17:04:06 | 显示全部楼层
新手给2小时也搞不定啊
发表于 2024-12-5 17:05:33 来自手机 | 显示全部楼层
好复杂 sui有脚本1秒就好了
发表于 2024-12-5 17:14:08 | 显示全部楼层
llyy 发表于 2024-12-5 17:05
好复杂 sui有脚本1秒就好了

来个连接
发表于 2024-12-5 17:16:38 | 显示全部楼层
我还得提前安装一个DOCKER
发表于 2024-12-5 17:17:06 | 显示全部楼层
真不错,先收藏
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2025-1-15 19:42 , Processed in 0.070957 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表