Docker结合 最新版本Gost 搭建代理服务器 | 实现多级加密中转,优化上网高峰期的网速和稳定性

在科学上网的时候搭建自己的节点的时候,有些人会使用xui这种面板工具,有些人会用一键脚本,今天我给大家分享一个使用docker 搭配gost 搭建一个稳定的自建节点,最安全、最稳定的专属节点搭建方法,晚高峰高速稳定,4K秒开的科学上网线路体验。本文需要一定的技术基础及动手能力,但是好处是搭建好了,不受外部环境影响,使用非常稳定。

阅读时长: 4 分钟
共 1866字
作者: eimoon.com

在科学上网的时候搭建自己的节点的时候,有些人会使用xui这种面板工具,有些人会用一键脚本,今天我给大家分享一个使用docker 搭配gost 搭建一个稳定的自建节点,最安全、最稳定的专属节点搭建方法,晚高峰高速稳定,4K秒开的科学上网线路体验。本文需要一定的技术基础及动手能力,但是好处是搭建好了,不受外部环境影响,使用非常稳定。这种方法也是左耳朵耗子在github推荐的一种方法。

一 主机选择

你可以选择大厂的免费主机或者购买主机,你可以使用像甲骨文,谷歌,亚马逊这种大厂提供的试用主机,但是注意设置账单或者信用卡限制,以免过期还继续扣费。像server00,infinityfree这种免费主机或者虚拟机,不能提供sudo权限的不适合我们这种情况。

二 域名注册

首先你需要一个域名,可以使用免费的,也可以付费的。免费的可以参考我的这篇文章或者youtube视频注册us.kg的域名,付费的如果不做他用,也有很多非常便宜的,可以按照最低价格购买一个便宜的域名。注册完成后你可以把它托管到cloudflare。

三 域名托管与解析

域名托管到cloudflare比较简单,如果是us.kg免费域名,先在cloud添加你的域名,会生成两个ns服务器,把它这两个服务器,添加到us.kg的后台就可以了。 alt text 等待一会生效。 然后你可以添加一个子域名,绑定到你的服务器。

四 nginx安装

我们使用certbot 申请安装证书,所以我们先安装一个nginx,我使用的ubuntu22,他的默认安装版本1.18有点低,你可以从官网安装最新版,当然你也可以直接sudo apt install nginx1.18版本,版本高低对于我们的项目也没有影响。

五 域名配置

复制一个etc/nginx/conf.d/default.conf 这个文件,重命名为为gost.conf, 把server_name 修改为你刚才绑定的域名。

server {
    listen       80;
    ## 只需要修改下面一行 为你的域名 例如:gost.youdoamin.us.kg
    server_name  gost.youdoamin.us.kg; 

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}

六 证书申请

证书申请我们使用certbot,可以参考我的这个视频

七 docker 安装

现在我们来安装docker,参考文档

1.设置 Docker 的apt存储库。

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

2.安装 Docker 包。

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

3.通过运行映像来验证 Docker Engine 安装是否成功 hello-world。

sudo docker run hello-world

八 定义sh文件

我们可以直接使用docker 来启动gost服务了,但是涉及的变量很多,为了方便,我们可以定义一个sh文件。当开启的时候直接运行这个sh文件就可以了。

#!/bin/bash

# 根据自己配置更改下面参数 
DOMAIN="你的域名"
USER="user"
PASS="password"
PORT=8443
AUTH=$(echo -n ${USER}:${PASS} | base64)

BIND_IP=0.0.0.0
CERT_DIR=/etc/letsencrypt
CERT=${CERT_DIR}/live/${DOMAIN}/fullchain.pem
KEY=${CERT_DIR}/live/${DOMAIN}/privkey.pem
sudo docker run -d --restart always --name gost \
    -v ${CERT_DIR}:${CERT_DIR}:ro \
    --net=host gogost/gost \
    -L "mwss://${BIND_IP}:${PORT}?auth=${AUTH}&cert=${CERT}&key=${KEY}&probe_resist=file:/usr/share/nginx/html&knock=www.google.com"

这里注意一下,你可以随意定义 PORT=8443,端口,但是必须保证你的服务器的防火墙打开端口。

九 服务器/本地 运行

在服务器运行刚刚定义的脚本文件。 可以使用下面的命令测试服务是否启动

curl -v "https://www.google.com" --proxy "https://DOMAIN" --proxy-user 'USER:PASS'

或者查看docker 日志

docker logs gost

十 本地配置

在本地打开命令行工具,运行

gost -L ss://chacha20-ietf-poly1305:pass@:8337 -F mwss://user:[email protected]:8443

其中user,password,youdomain.com,8443 和你脚本定义的变量一致。 然后在你的服务v2ray 或者clash 添加节点信息使用了,下面是clash的一个例子:

  - {
      'type': 'ss',
      'name': '🇦🇺yt',
      'server': '127.0.0.1',
      'port': 8337,
      'cipher': 'chacha20-ietf-poly1305',
      'password': 'pass',

    }

十一 不使用docker的方式

安装gost

如果你的服务器配置比较低,可能不适合使用docker,可以在服务器直接安装gost使用,安装方式见github,我这里采用

bash <(curl -fsSL https://github.com/go-gost/gost/raw/master/install.sh) --install

这个脚本,安装最新的gost.

安装完成后,我们可以使用

gost -V

来查看安装版本。

修改脚本文件

安装好gost的后,我们修改我们的脚本文件,使用服务器上的gost运行。把docker run 的部分替换为gost 即可。

#!/bin/bash

# 根据自己配置更改下面参数 
DOMAIN="你的域名"
USER="user"
PASS="password"
PORT=8443
AUTH=$(echo -n ${USER}:${PASS} | base64)

BIND_IP=0.0.0.0
CERT_DIR=/etc/letsencrypt
CERT=${CERT_DIR}/live/${DOMAIN}/fullchain.pem
KEY=${CERT_DIR}/live/${DOMAIN}/privkey.pem
gost -L "mwss://${BIND_IP}:${PORT}?auth=${AUTH}&cert=${CERT}&key=${KEY}&probe_resist=file:/usr/share/nginx/html&knock=www.google.com"

重新测试一下,我发现在我的小服务器上直接运行gost比docker上快多了,说明小服务器还是不适合使用docker~

后台运行

为了使用脚本在后台运行,我们还需要修改一下,把gost运行部分修改如下

nohup gost -L "mwss://${BIND_IP}:${PORT}?auth=${AUTH}&cert=${CERT}&key=${KEY}&probe_resist=file:/usr/share/nginx/html&knock=www.google.com" >gost.log 2>&1 &

这样我们可以随意关闭窗口,也可以在当前目录查看log日志,如果你不想查看日志,可以去掉gost.log 2>&1 部分,如果保留,记得定期删除日志,或者设置一个定时删除日志任务,这里就不讨论了。

微信公众号

使用 Hugo 构建
主题 StackJimmy 设计